{"version":3,"sources":["webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/tonweb/src/boc/Cell.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/length-of-array-like.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/tonweb/src/contract/token/nft/NftMarketplace.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/tonweb/src/contract/dns/DnsUtils.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/tonweb/src/providers/blockSubscription/InMemoryBlockStorage.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/node-libs-browser/mock/process.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/to-primitive.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/modules/es.array.push.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/@ledgerhq/hw-transport-webusb/lib-es/webusb.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/does-not-exceed-safe-integer.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/object-get-prototype-of.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/is-pure.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/Subscriber.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/@ledgerhq/devices/lib/ble/sendAPDU.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/tonweb/src/contract/lockup/index.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/array-with.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/util/UnsubscriptionError.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/semver/functions/valid.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/modules/es.typed-array.to-reversed.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/util/subscribeToPromise.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/util/subscribeToIterable.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/util/subscribeToObservable.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/util/subscribeTo.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/an-object.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/tonweb/src/contract/wallet/WalletContractSimple.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/proxy-accessor.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/util/isObject.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/function-uncurry-this-accessor.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/uid.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/util/toSubscriber.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/Observable.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/array-includes.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/tonweb/src/utils/index.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/function-bind-context.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/semver/internal/constants.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/object-get-own-property-symbols.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/@kurkle/color/dist/color.esm.js","webpack:///../../src/helpers/helpers.core.ts","webpack:///../../src/helpers/helpers.math.ts","webpack:///../../src/helpers/helpers.collection.ts","webpack:///../../src/helpers/helpers.extras.ts","webpack:///../../src/helpers/helpers.easing.ts","webpack:///../../src/helpers/helpers.color.ts","webpack:///../../src/core/core.animations.defaults.js","webpack:///../../src/core/core.layouts.defaults.js","webpack:///../../src/helpers/helpers.intl.ts","webpack:///../../src/core/core.ticks.js","webpack:///../../src/core/core.scale.defaults.js","webpack:///../../src/core/core.defaults.js","webpack:///../../src/helpers/helpers.canvas.ts","webpack:///../../src/helpers/helpers.options.ts","webpack:///../../src/helpers/helpers.config.ts","webpack:///../../src/helpers/helpers.curve.ts","webpack:///../../src/helpers/helpers.dom.ts","webpack:///../../src/helpers/helpers.interpolation.ts","webpack:///../../src/helpers/helpers.rtl.ts","webpack:///../../src/helpers/helpers.segment.js","webpack:///../src/core/core.animator.js","webpack:///../src/core/core.animation.js","webpack:///../src/core/core.animations.js","webpack:///../src/core/core.datasetController.js","webpack:///../src/controllers/controller.bar.js","webpack:///../src/controllers/controller.bubble.js","webpack:///../src/controllers/controller.doughnut.js","webpack:///../src/controllers/controller.line.js","webpack:///../src/controllers/controller.polarArea.js","webpack:///../src/controllers/controller.pie.js","webpack:///../src/controllers/controller.radar.js","webpack:///../src/controllers/controller.scatter.js","webpack:///../src/core/core.adapters.ts","webpack:///../src/core/core.interaction.js","webpack:///../src/core/core.layouts.js","webpack:///../src/platform/platform.base.js","webpack:///../src/platform/platform.basic.js","webpack:///../src/platform/platform.dom.js","webpack:///../src/platform/index.js","webpack:///../src/core/core.element.ts","webpack:///../src/core/core.scale.autoskip.js","webpack:///../src/core/core.scale.js","webpack:///../src/core/core.typedRegistry.js","webpack:///../src/core/core.registry.js","webpack:///../src/core/core.plugins.js","webpack:///../src/core/core.config.js","webpack:///../src/core/core.controller.js","webpack:///../src/elements/element.arc.ts","webpack:///../src/elements/element.line.js","webpack:///../src/elements/element.point.ts","webpack:///../src/elements/element.bar.js","webpack:///../src/plugins/plugin.filler/filler.segment.js","webpack:///../src/plugins/plugin.filler/filler.helper.js","webpack:///../src/plugins/plugin.filler/filler.options.js","webpack:///../src/plugins/plugin.filler/filler.target.stack.js","webpack:///../src/plugins/plugin.filler/simpleArc.js","webpack:///../src/plugins/plugin.filler/filler.target.js","webpack:///../src/plugins/plugin.filler/filler.drawing.js","webpack:///../src/plugins/plugin.filler/index.js","webpack:///../src/plugins/plugin.legend.js","webpack:///../src/plugins/plugin.title.js","webpack:///../src/plugins/plugin.subtitle.js","webpack:///../src/plugins/plugin.tooltip.js","webpack:///../src/scales/scale.category.js","webpack:///../src/scales/scale.linearbase.js","webpack:///../src/scales/scale.linear.js","webpack:///../src/scales/scale.logarithmic.js","webpack:///../src/scales/scale.radialLinear.js","webpack:///../src/scales/scale.time.js","webpack:///../src/scales/scale.timeseries.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/@babel/runtime/helpers/toPropertyKey.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/operators/map.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/util/subscribeToArray.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/modules/es.typed-array.find-last.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/@babel/runtime/helpers/defineProperty.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/modules/es.array.reduce.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/to-string.js","webpack:///../services/node_modules/bn.js/lib/bn.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/tonweb/src/utils/Utils.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/@ledgerhq/devices/lib/hid-framing.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/axios/lib/helpers/null.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/make-built-in.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/Subscription.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/operators/groupBy.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/Notification.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/BehaviorSubject.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/scheduler/Action.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/scheduler/AsyncAction.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/scheduler/QueueAction.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/Scheduler.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/scheduler/AsyncScheduler.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/scheduler/QueueScheduler.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/scheduler/queue.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/observable/of.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/observable/throwError.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/operators/observeOn.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/ReplaySubject.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/AsyncSubject.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/util/Immediate.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/scheduler/AsapAction.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/scheduler/AsapScheduler.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/scheduler/asap.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/scheduler/async.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/scheduler/AnimationFrameAction.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/scheduler/AnimationFrameScheduler.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/scheduler/animationFrame.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/scheduler/VirtualTimeScheduler.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/util/isObservable.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/util/TimeoutError.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/observable/bindCallback.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/observable/bindNodeCallback.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/OuterSubscriber.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/InnerSubscriber.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/util/subscribeToResult.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/observable/combineLatest.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/operators/concatAll.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/observable/concat.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/observable/forkJoin.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/observable/fromEvent.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/observable/fromEventPattern.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/observable/generate.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/observable/iif.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/util/isNumeric.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/observable/interval.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/observable/never.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/observable/onErrorResumeNext.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/observable/pairs.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/util/not.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/observable/partition.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/observable/race.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/observable/range.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/observable/timer.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/observable/using.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/observable/zip.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/to-offset.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/tonweb/src/contract/dns/Dns.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/semver/ranges/to-comparators.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/semver/functions/parse.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/isomorphic-webcrypto/src/webcrypto-shim.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/is-big-int-array.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/shared-key.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/semver/functions/lt.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/semver/functions/gt.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/to-indexed-object.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/to-object.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/util/isPromise.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/tonweb/src/contract/token/nft/NftUtils.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/tonweb/src/boc/index.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/semver/functions/sort.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/semver/functions/prerelease.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/classnames/index.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/semver/functions/compare.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/is-callable.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/to-string-tag-support.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/axios/lib/utils.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/semver/ranges/ltr.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/weak-map-basic-detection.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/util/isArrayLike.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/function-bind-native.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/define-global-property.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/tonweb/src/utils/AdnlAddress.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/isarray/index.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/@ledgerhq/hw-transport/lib-es/Transport.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/semver/ranges/valid.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/@ledgerhq/logs/lib-es/index.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/try-to-string.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/tonweb/src/ledger/AppTon.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/to-big-int.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/tonweb/src/contract/token/nft/index.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/tonweb/src/contract/payments/PaymentChannel.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/number-to-bn/src/index.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/an-instance.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/shared.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/tonweb/src/contract/token/nft/NftCollection.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/use-symbol-as-uid.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/tonweb/src/contract/dns/DnsCollection.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/@babel/runtime/helpers/typeof.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/tonweb/src/contract/wallet/WalletContractV2.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/engine-v8-version.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/semver/internal/identifiers.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/semver/ranges/intersects.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/tonweb/src/utils/StorageBagId.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/ethjs-unit/node_modules/bn.js/lib/bn.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/tonweb/src/contract/subscription/index.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/array-set-length.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/operators/tap.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/get-built-in.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/function-uncurry-this-clause.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/semver/classes/semver.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/install-error-cause.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/operators/mergeMap.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/operators/mergeAll.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/semver/ranges/min-satisfying.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/deepmerge/dist/cjs.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/create-non-enumerable-property.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/number-to-bn/node_modules/bn.js/lib/bn.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/ethjs-unit/lib/index.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/semver/functions/cmp.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/get-method.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/tonweb/src/contract/lockup/LockupWalletV1.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/a-callable.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/engine-user-agent.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/semver/functions/patch.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/delete-property-or-throw.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/is-null-or-undefined.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/tonweb/src/contract/token/ft/JettonMinter.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/tonweb/src/contract/wallet/WalletContractV3.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/object-get-own-property-names.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/tonweb/src/utils/Address.js","webpack:///(webpack)/buildin/module.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/classof-raw.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/export.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/semver/functions/gte.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/semver/functions/rcompare.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/tonweb/src/contract/wallet/WalletQueryParser.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/tonweb/src/providers/blockSubscription/BlockSubscription.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/@ledgerhq/hw-transport-web-ble/lib-es/monitorCharacteristic.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/function-uncurry-this.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/fails.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/require-object-coercible.js","webpack:///(webpack)/buildin/harmony-module.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/base64-js/index.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/semver/functions/coerce.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/is-object.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/semver/internal/parse-options.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/tonweb/src/boc/Slice.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/observable/empty.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/array-iteration-from-last.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/has-own-property.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/modules/es.reflect.to-string-tag.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/symbol/iterator.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/tonweb/node_modules/bn.js/lib/bn.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/ie8-dom-define.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/Subject.js","webpack:///(webpack)/buildin/global.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/well-known-symbol.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/operators/multicast.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/operators/share.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/semver/functions/major.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/tonweb/src/providers/index.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/tonweb/src/contract/token/nft/NftItem.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/array-method-is-strict.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/tonweb/src/contract/payments/index.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/correct-prototype-getter.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/observable/merge.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/math-trunc.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/error-stack-clear.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/tonweb/src/providers/blockSubscription/index.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/indexed-object.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/util/ArgumentOutOfRangeError.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/semver/functions/eq.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/util/ObjectUnsubscribedError.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/tonweb/src/contract/dns/index.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/observable/from.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/SubjectSubscription.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/operators/ignoreElements.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/wrap-error-constructor-with-cause.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/semver/classes/comparator.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/@tonconnect/sdk/lib/cjs/index.cjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/semver/functions/inc.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/util/identity.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/inherit-if-required.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/lru-cache/index.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/util/EmptyError.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/config.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/tonweb/src/contract/wallet/index.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/@ledgerhq/hw-transport-webhid/lib-es/TransportWebHID.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/tonweb/src/contract/token/ft/JettonWallet.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/modules/web.self.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/Observer.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/semver/ranges/simplify.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/to-integer-or-infinity.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/create-property-descriptor.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/semver/internal/re.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/modules/es.typed-array.to-sorted.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/dom-exception-constants.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/semver/functions/lte.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/vue/dist/vue.runtime.esm.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/semver/ranges/outside.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/tonweb/src/contract/lockup/VestingWalletV1.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/array-reduce.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/to-absolute-index.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/vuex/dist/vuex.esm.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/semver/functions/diff.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/own-keys.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/path-browserify/index.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/normalize-string-argument.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/array-buffer-view-core.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/object-define-property.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/tonweb/src/contract/wallet/WalletContract.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/util/pipe.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/array-to-reversed.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/modules/web.dom-exception.stack.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/tonweb/src/contract/wallet/WalletContractV4R2.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/symbol/observable.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/semver/ranges/min-version.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/modules/es.typed-array.find-last-index.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/axios/lib/core/AxiosError.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/events/events.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/@tonconnect/ui/lib/index.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/enum-bug-keys.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/observable/fromArray.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/util/isArray.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/util/isScheduler.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/tonweb/node_modules/tweetnacl/nacl-fast.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/to-length.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/function-call.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/copy-constructor-properties.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/yallist/iterator.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/yallist/yallist.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/semver/functions/clean.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/tonweb/src/contract/token/ft/index.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/axios/lib/helpers/bind.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/modules/es.typed-array.with.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/document-all.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/semver/functions/compare-loose.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/object-set-prototype-of.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/semver/ranges/subset.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/shared-store.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/is-array.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/tweetnacl-util/nacl-util.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/object-keys-internal.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/array-from-constructor-and-list.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/strip-hex-prefix/src/index.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/tonweb/src/contract/token/nft/NftSale.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/util/canReportError.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/semver/ranges/gtr.js","webpack:///../src/props.ts","webpack:///../src/utils.ts","webpack:///../src/chart.ts","webpack:///../src/typedCharts.ts","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/symbol-constructor-detection.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/internal-state.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/@babel/runtime/helpers/esm/typeof.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/define-built-in-accessor.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/tonweb/src/providers/HttpProviderUtils.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/operators/filter.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/util/hostReportError.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/is-symbol.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/@ledgerhq/devices/lib/ble/receiveAPDU.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/semver/classes/range.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/symbol/rxSubscriber.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/semver/index.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/function-name.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/@babel/runtime/helpers/toPrimitive.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/tonweb/src/contract/dns/DnsItem.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/descriptors.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/ieee754/index.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/function-apply.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/scheduled/scheduleArray.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/toDate.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/constructFrom.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/_lib/defaultOptions.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/getDefaultOptions.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/locale/en-US/_lib/formatDistance.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/locale/_lib/buildFormatLongFn.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/locale/en-US/_lib/formatLong.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/locale/en-US/_lib/formatRelative.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/locale/_lib/buildLocalizeFn.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/locale/en-US/_lib/localize.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/locale/_lib/buildMatchFn.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/locale/_lib/buildMatchPatternFn.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/locale/en-US/_lib/match.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/locale/en-US.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/_lib/format/longFormatters.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/_lib/protectedTokens.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/transpose.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/parse/_lib/Setter.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/parse/_lib/Parser.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/parse/_lib/parsers/EraParser.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/constants.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/parse/_lib/constants.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/parse/_lib/utils.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/parse/_lib/parsers/YearParser.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/startOfWeek.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/getWeekYear.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/parse/_lib/parsers/LocalWeekYearParser.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/startOfISOWeek.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/parse/_lib/parsers/ISOWeekYearParser.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/parse/_lib/parsers/ExtendedYearParser.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/parse/_lib/parsers/QuarterParser.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/parse/_lib/parsers/StandAloneQuarterParser.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/parse/_lib/parsers/MonthParser.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/parse/_lib/parsers/StandAloneMonthParser.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/startOfWeekYear.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/getWeek.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/setWeek.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/parse/_lib/parsers/LocalWeekParser.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/getISOWeekYear.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/startOfISOWeekYear.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/getISOWeek.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/setISOWeek.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/parse/_lib/parsers/ISOWeekParser.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/parse/_lib/parsers/DateParser.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/parse/_lib/parsers/DayOfYearParser.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/addDays.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/setDay.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/parse/_lib/parsers/DayParser.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/parse/_lib/parsers/LocalDayParser.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/parse/_lib/parsers/StandAloneLocalDayParser.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/getISODay.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/setISODay.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/parse/_lib/parsers/ISODayParser.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/parse/_lib/parsers/AMPMParser.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/parse/_lib/parsers/AMPMMidnightParser.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/parse/_lib/parsers/DayPeriodParser.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/parse/_lib/parsers/Hour1to12Parser.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/parse/_lib/parsers/Hour0to23Parser.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/parse/_lib/parsers/Hour0To11Parser.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/parse/_lib/parsers/Hour1To24Parser.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/parse/_lib/parsers/MinuteParser.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/parse/_lib/parsers/SecondParser.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/parse/_lib/parsers/FractionOfSecondParser.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/parse/_lib/parsers/ISOTimezoneWithZParser.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/parse/_lib/parsers/ISOTimezoneParser.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/parse/_lib/parsers/TimestampSecondsParser.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/parse/_lib/parsers/TimestampMillisecondsParser.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/parse/_lib/parsers.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/parse.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/parseISO.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/isDate.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/isValid.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/startOfDay.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/differenceInCalendarDays.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/startOfYear.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/getDayOfYear.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/_lib/addLeadingZeros.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/_lib/format/lightFormatters.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/_lib/format/formatters.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/format.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/addMilliseconds.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/addSeconds.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/addMinutes.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/addHours.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/addWeeks.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/addMonths.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/addQuarters.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/addYears.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/differenceInMilliseconds.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/_lib/getRoundingMethod.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/differenceInSeconds.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/differenceInMinutes.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/differenceInHours.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/differenceInDays.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/differenceInWeeks.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/compareAsc.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/differenceInCalendarMonths.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/endOfDay.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/endOfMonth.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/isLastDayOfMonth.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/differenceInMonths.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/differenceInQuarters.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/differenceInCalendarYears.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/differenceInYears.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/startOfSecond.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/startOfMinute.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/startOfHour.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/startOfMonth.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/startOfQuarter.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/endOfSecond.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/endOfMinute.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/endOfHour.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/endOfWeek.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/endOfQuarter.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/date-fns/endOfYear.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/chartjs-adapter-date-fns/dist/chartjs-adapter-date-fns.esm.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/hidden-keys.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/node_modules/tslib/tslib.es6.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/util/noop.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/operators/take.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/operators/defaultIfEmpty.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/operators/throwIfEmpty.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/operators/first.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/semver/ranges/max-satisfying.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/classof.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/@ledgerhq/devices/lib-es/index.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/@tonconnect/protocol/node_modules/tweetnacl/nacl-fast.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/modules/es.typed-array.at.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/is-hex-prefixed/src/index.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/ua-parser-js/src/ua-parser.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/tonweb/src/contract/payments/PaymentUtils.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/array-buffer-basic-detection.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/innerSubscribe.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/inspect-source.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/to-positive-integer.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/tonweb/src/contract/wallet/WalletContractV4.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/object-property-is-enumerable.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/modules/es.array.unshift.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/operators/refCount.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/semver/functions/minor.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/modules/es.typed-array.set.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/error-stack-installable.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/ordinary-to-primitive.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/is-forced.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/define-built-in.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/semver/functions/satisfies.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/observable/defer.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/scheduled/scheduleObservable.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/scheduled/schedulePromise.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/scheduled/scheduleIterable.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/util/isInteropObservable.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/util/isIterable.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/scheduled/scheduled.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/engine-is-node.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/@tonconnect/protocol/lib/esm/index.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/tonweb/src/index.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/axios/lib/helpers/AxiosURLSearchParams.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/axios/lib/helpers/buildURL.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/axios/lib/core/InterceptorManager.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/axios/lib/defaults/transitional.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/axios/lib/platform/browser/classes/FormData.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/axios/lib/platform/browser/classes/Blob.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/axios/lib/platform/browser/index.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/axios/lib/helpers/toURLEncodedForm.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/axios/lib/helpers/formDataToJSON.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/axios/lib/defaults/index.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/axios/lib/helpers/parseHeaders.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/axios/lib/core/AxiosHeaders.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/axios/lib/core/transformData.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/axios/lib/cancel/isCancel.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/axios/lib/cancel/CanceledError.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/axios/lib/core/settle.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/axios/lib/helpers/cookies.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/axios/lib/helpers/combineURLs.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/axios/lib/core/buildFullPath.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/axios/lib/helpers/parseProtocol.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/axios/lib/helpers/speedometer.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/axios/lib/adapters/xhr.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/axios/lib/adapters/adapters.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/axios/lib/core/dispatchRequest.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/axios/lib/core/mergeConfig.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/axios/lib/env/data.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/axios/lib/helpers/validator.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/axios/lib/core/Axios.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/axios/lib/cancel/CancelToken.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/axios/lib/helpers/spread.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/axios/lib/helpers/isAxiosError.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/axios/lib/helpers/HttpStatusCode.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/axios/lib/axios.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/error-stack-install.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/document-create-element.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/modules/es.error.cause.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/a-possible-prototype.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/global.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/semver/functions/compare-build.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/tonweb/src/contract/index.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/util/isFunction.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/node-libs-browser/node_modules/buffer/index.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/@ledgerhq/hw-transport-webusb/lib-es/TransportWebUSB.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/set-to-string-tag.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/tonweb/src/boc/BitString.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/object-is-prototype-of.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/@ledgerhq/errors/dist/index.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/@ledgerhq/hw-transport-web-ble/lib-es/TransportWebBLE.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/semver/functions/rsort.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/axios/lib/helpers/toFormData.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/semver/internal/debug.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/isomorphic-webcrypto/src/browser.mjs","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/semver/functions/neq.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/to-property-key.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/core-js/internals/v8-prototype-define-bug.js","webpack:///C:/GitLab-Runners/builds/oVhr4kJMq/0/united-finance-group/web-js/node_modules/rxjs/_esm5/internal/observable/ConnectableObservable.js"],"names":["BitString","require","bytesToBase64","compareBytes","concatBytes","crc32c","hexToBytes","readNBytesUIntFromArray","sha256","bytesToHex","Slice","reachBocMagicPrefix","leanBocMagicPrefix","leanBocMagicPrefixCRC","Cell","constructor","this","bits","refs","isExotic","serializedBoc","deserializeBoc","cells","length","Error","writeCell","anotherCell","writeBitString","concat","getMaxLevel","maxLevel","k","i","isExplicitlyStoredHashes","getMaxDepth","maxDepth","getMaxDepthAsArray","d","Uint8Array","from","Math","floor","getRefsDescriptor","d1","getBitsDescriptor","d2","ceil","cursor","getDataWithDescriptors","tuBits","getTopUppedArray","reprArray","push","hash","x","getRepr","beginParse","map","ref","array","slice","print","indent","s","toHex","has_idx","hash_crc32","has_cache_bits","flags","root_cell","allcells","treeWalk","topologicalOrder","cellsIndex","cells_num","toString","s_bytes","min","full_size","sizeIndex","cell_info","bocSerializationSize","offset_bits","offset_bytes","max","serialization","writeBytes","writeBitArray","writeUint","writeUint8","forEach","cell_data","index","refcell_ser","serializeForBoc","ser_arr","refSize","refHash","refIndexInt","refIndexHex","reference","async","moveToTheEnd","indexHashmap","topologicalOrderArray","target","targetIndex","h","data","splice","subCell","cell","parentHash","cellHash","res","parseBocHeader","inputData","prefix","size_bytes","flags_byte","roots_num","absent_num","tot_cells_size","root_list","c","cells_data","off_bytes","deserializeCellData","cellData","referenceIndexSize","refNum","dataBytesize","fullfilledBytes","setTopUppedArray","r","residue","header","cells_array","ci","dd","ri","root_cells","module","exports","toLength","obj","Contract","Address","parseAddress","NftMarketplace","provider","options","wc","code","oneFromBoc","super","createDataCell","writeAddress","ownerAddress","AdnlAddress","StorageBagId","BN","DNS_CATEGORY_NEXT_RESOLVER","DNS_CATEGORY_WALLET","DNS_CATEGORY_SITE","DNS_CATEGORY_STORAGE","categoryToBN","category","categoryBytes","TextEncoder","encode","categoryHash","createSmartContractAddressRecord","smartContractAddress","createAdnlAddressRecord","adnlAddress","bytes","createStorageBagIdRecord","storageBagId","createNextResolverRecord","parseSmartContractAddressImpl","prefix0","prefix1","parseSmartContractAddressRecord","parseNextResolverRecord","parseAdnlAddressRecord","parseStorageBagIdRecord","parseSiteRecord","dnsResolveImpl","dnsAddress","rawDomainBytes","oneStep","len","domainCell","categoryBN","result","call2","toBoc","resultLen","toNumber","Array","nextAddress","domainToBytes","domain","toLowerCase","charCodeAt","substring","String","fromCharCode","arr","split","part","rawDomain","reverse","join","dnsResolve","rootDnsAddress","InMemoryBlockStorage","logFunction","masterchainBlocks","shardchainBlocks","shardBlockNumbers","workchain","shardId","shardBlockNumber","undefined","mcBlockNumber","insertShardBlocks","blockNumbers","Object","keys","Number","sort","a","b","prevShardBlocks","key","nextTick","fn","args","prototype","call","arguments","shift","setTimeout","apply","platform","arch","execPath","title","pid","browser","env","argv","binding","name","path","cwd","chdir","dir","resolve","exit","kill","umask","dlopen","uptime","memoryUsage","uvCounters","features","isObject","isSymbol","getMethod","ordinaryToPrimitive","wellKnownSymbol","$TypeError","TypeError","TO_PRIMITIVE","input","pref","exoticToPrim","$","toObject","lengthOfArrayLike","setArrayLength","doesNotExceedSafeInteger","fails","INCORRECT_TO_LENGTH","properErrorOnNonWritableLength","defineProperty","writable","error","FORCED","proto","arity","forced","item","O","argCount","ledgerDevices","vendorId","requestLedgerDevice","device","navigator","usb","requestDevice","filters","getLedgerDevices","devices","getDevices","filter","getFirstLedgerDevice","existingDevices","isSupported","Promise","MAX_SAFE_INTEGER","it","hasOwn","isCallable","sharedKey","CORRECT_PROTOTYPE_GETTER","IE_PROTO","$Object","ObjectPrototype","getPrototypeOf","object","Subscriber","_super","destinationOrNext","complete","_this","syncErrorValue","syncErrorThrown","syncErrorThrowable","isStopped","destination","add","SafeSubscriber","create","next","subscriber","value","_next","err","_error","_complete","unsubscribe","closed","_unsubscribeAndRecycle","_parentOrParents","_parentSubscriber","observerOrNext","context","bind","_context","useDeprecatedSynchronousErrorHandling","__tryOrSetError","__tryOrUnsub","wrappedComplete","parent","_unsubscribe","sendAPDU","_rxjs","_logs","TagId","chunkBuffer","buffer","sizeForIndex","chunks","size","write","apdu","mtuSize","head","Buffer","alloc","writeUInt8","writeUInt16BE","Observable","o","terminated","main","chunk","then","e","log","LockupWalletV1","VestingWalletV1","default","all","list","toIntegerOrInfinity","$RangeError","RangeError","C","relativeIndex","actualIndex","A","UnsubscriptionErrorImpl","errors","message","UnsubscriptionError","parse","valid","version","v","arrayToReversed","ArrayBufferViewCore","aTypedArray","exportTypedArrayMethod","getTypedArrayConstructor","subscribeToPromise","promise","hostReportError","subscribeToIterable","iterable","iterator","done","return","subscribeToObservable","obs","subscribe","subscribeTo","isArrayLike","subscribeToArray","isPromise","msg","$String","argument","WalletContract","SimpleWalletContractR1","getName","SimpleWalletContractR2","SimpleWalletContractR3","f","Target","Source","configurable","get","set","DESCRIPTORS","propertyIsEnumerableModule","createPropertyDescriptor","toIndexedObject","toPropertyKey","IE8_DOM_DEFINE","$getOwnPropertyDescriptor","getOwnPropertyDescriptor","P","uncurryThis","aCallable","method","id","postfix","random","toSubscriber","nextOrObserver","rxSubscriber","_isScalar","_subscribe","lift","operator","observable","source","sink","config","_trySubscribe","canReportError","console","warn","promiseCtor","getPromiseCtor","reject","subscription","pipe","operations","_i","toPromise","toAbsoluteIndex","createMethod","IS_INCLUDES","$this","el","fromIndex","includes","indexOf","nacl","fromNano","toNano","stringToBytes","crc16","base64ToBytes","base64toString","stringToBase64","keyPairFromSeed","newKeyPair","newSeed","parseTransferUrl","url","PREFIX","startsWith","address","isValid","rest","pairs","pair","amount","bn","isNeg","text","decodeURIComponent","formatTransferUrl","params","encodeURIComponent","NATIVE_BIND","that","SEMVER_SPEC_VERSION","MAX_LENGTH","MAX_SAFE_COMPONENT_LENGTH","MAX_SAFE_BUILD_LENGTH","RELEASE_TYPES","FLAG_INCLUDE_PRERELEASE","FLAG_LOOSE","getOwnPropertySymbols","lim","l","p2b","n2b","b2n","n2p","map$1","0","1","2","3","4","5","6","7","8","9","B","D","E","F","hex","h1","h2","eq","isShort","g","hexParse","str","ret","hexString","HUE_RE","hsl2rgbn","n","hsv2rgbn","hwb2rgbn","w","rgb","hueValue","rgb2hsl","range","calln","isArray","hsl2rgb","hwb2rgb","hsv2rgb","hue","hueParse","m","exec","p1","p2","rotate","deg","hslString","Z","Y","X","W","V","U","T","S","R","Q","N","M","L","K","G","H","I","J","names$1","OiceXe","antiquewEte","aqua","aquamarRe","azuY","beige","bisque","black","blanKedOmond","Xe","XeviTet","bPwn","burlywood","caMtXe","KartYuse","KocTate","cSO","cSnflowerXe","cSnsilk","crimson","cyan","xXe","xcyan","xgTMnPd","xWay","xgYF","xgYy","xkhaki","xmagFta","xTivegYF","xSange","xScEd","xYd","xsOmon","xsHgYF","xUXe","xUWay","xUgYy","xQe","xviTet","dAppRk","dApskyXe","dimWay","dimgYy","dodgerXe","fiYbrick","flSOwEte","foYstWAn","fuKsia","gaRsbSo","ghostwEte","gTd","gTMnPd","Way","gYF","gYFLw","gYy","honeyMw","hotpRk","RdianYd","Rdigo","ivSy","khaki","lavFMr","lavFMrXsh","lawngYF","NmoncEffon","ZXe","ZcSO","Zcyan","ZgTMnPdLw","ZWay","ZgYF","ZgYy","ZpRk","ZsOmon","ZsHgYF","ZskyXe","ZUWay","ZUgYy","ZstAlXe","ZLw","lime","limegYF","lRF","magFta","maPon","VaquamarRe","VXe","VScEd","VpurpN","VsHgYF","VUXe","VsprRggYF","VQe","VviTetYd","midnightXe","mRtcYam","mistyPse","moccasR","navajowEte","navy","Tdlace","Tive","TivedBb","Sange","SangeYd","ScEd","pOegTMnPd","pOegYF","pOeQe","pOeviTetYd","papayawEp","pHKpuff","peru","pRk","plum","powMrXe","purpN","YbeccapurpN","Yd","Psybrown","PyOXe","saddNbPwn","sOmon","sandybPwn","sHgYF","sHshell","siFna","silver","skyXe","UXe","UWay","UgYy","snow","sprRggYF","stAlXe","tan","teO","tEstN","tomato","Qe","viTet","JHt","wEte","wEtesmoke","Lw","LwgYF","unpack","unpacked","tkeys","j","ok","nk","replace","parseInt","nameParse","transparent","RGB_RE","rgbParse","rgbString","pow","interpolate","rgb1","rgb2","t","modHSL","ratio","tmp","clone","assign","fromObject","functionParse","charAt","Color","type","_rgb","_valid","color","weight","c1","c2","w2","p","w1","val","noop","uid","isNullOrUndef","isNumberFinite","isFinite","finiteOrDefault","defaultValue","valueOrDefault","toPercentage","dimension","endsWith","parseFloat","toDimension","callback","thisArg","each","loopable","_elementsEqual","a0","a1","ilen","v0","v1","datasetIndex","klen","isValidKey","_merger","tval","sval","merge","sources","merger","current","mergeIf","_mergerIf","hasOwnProperty","keyResolvers","y","_splitKey","parts","_getKeyResolver","resolveObjectKey","resolver","_capitalize","toUpperCase","defined","isFunction","setsEqual","has","_isClickEvent","PI","TAU","PITAU","INFINITY","POSITIVE_INFINITY","RAD_PER_DEG","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","log10","sign","almostEquals","epsilon","abs","niceNum","roundedRange","round","niceRange","fraction","niceFraction","_factorize","sqrt","pop","isNumber","isNaN","almostWhole","rounded","_setMinAndMaxByKey","property","toRadians","degrees","toDegrees","radians","_decimalPlaces","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","angle","atan2","distance","distanceBetweenPoints","pt1","pt2","_angleDiff","_normalizeAngle","_angleBetween","start","end","sameAngleIsFullCircle","angleToStart","angleToEnd","startToAngle","endToAngle","_limitValue","_int16Range","_isBetween","_lookup","table","cmp","mid","hi","lo","_lookupByKey","last","ti","_rlookupByKey","_filterBetween","values","arrayEvents","listenArrayEvents","listener","_chartjs","listeners","enumerable","base","unlistenArrayEvents","stub","_arrayUnique","items","Set","requestAnimFrame","window","requestAnimationFrame","throttled","argsToUse","ticking","debounce","delay","timeout","clearTimeout","_toLeftRightCenter","align","_alignStartEnd","_textX","left","right","rtl","check","_getStartAndCountOfVisiblePoints","meta","points","animationsDisabled","pointCount","count","_sorted","iScale","_parsed","axis","minDefined","maxDefined","getUserBounds","getPixelForValue","_scaleRangesChanged","xScale","yScale","_scaleRanges","newRanges","xmin","xmax","ymin","ymax","changed","atEdge","elasticIn","sin","elasticOut","effects","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","cos","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","isPatternOrGradient","getHoverColor","saturate","darken","numbers","colors","applyAnimationsDefaults","defaults","duration","easing","loop","to","describe","_fallback","_indexable","_scriptable","properties","active","animation","resize","show","animations","visible","hide","applyLayoutsDefaults","autoPadding","padding","top","bottom","intlCache","Map","getNumberFormat","locale","cacheKey","JSON","stringify","formatter","Intl","NumberFormat","formatNumber","num","format","formatters","numeric","tickValue","ticks","chart","notation","delta","maxTick","calculateDelta","logDelta","numDecimal","minimumFractionDigits","maximumFractionDigits","logarithmic","remain","significand","Ticks","applyScaleDefaults","display","offset","beginAtZero","bounds","clip","grace","grid","lineWidth","drawOnChartArea","drawTicks","tickLength","tickWidth","_ctx","tickColor","border","dash","dashOffset","width","minRotation","maxRotation","mirror","textStrokeWidth","textStrokeColor","autoSkip","autoSkipPadding","labelOffset","minor","major","crossAlign","showLabelBackdrop","backdropColor","backdropPadding","route","overrides","descriptors","getScope$1","node","root","scope","Defaults","_descriptors","_appliers","backgroundColor","borderColor","datasets","devicePixelRatio","getDevicePixelRatio","elements","events","font","family","style","lineHeight","hover","hoverBackgroundColor","ctx","hoverBorderColor","hoverColor","indexAxis","interaction","mode","intersect","includeInvisible","maintainAspectRatio","onHover","onClick","parsing","plugins","responsive","scale","scales","showLine","drawActiveElementsOnTop","override","targetScope","targetName","scopeObject","targetScopeObject","privateName","defineProperties","local","appliers","toFontString","_measureText","gc","longest","string","textWidth","measureText","_longestText","arrayOfThings","cache","garbageCollect","save","jlen","thing","nestedThing","restore","gcLen","_alignPixel","pixel","currentDevicePixelRatio","halfWidth","clearCanvas","canvas","getContext","resetTransform","clearRect","height","drawPoint","drawPointLegend","xOffset","yOffset","cornerRadius","xOffsetW","yOffsetW","pointStyle","rotation","radius","rad","translate","drawImage","beginPath","ellipse","arc","closePath","moveTo","lineTo","SQRT1_2","rect","fill","borderWidth","stroke","_isPointInArea","point","area","margin","clipArea","unclipArea","_steppedLineTo","previous","flip","midpoint","_bezierCurveTo","bezierCurveTo","cp1x","cp2x","cp1y","cp2y","setRenderOpts","opts","translation","fillStyle","textAlign","textBaseline","decorateText","line","strikethrough","underline","metrics","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","yDecoration","strokeStyle","decorationWidth","drawBackdrop","oldColor","fillRect","renderText","lines","strokeWidth","strokeColor","backdrop","strokeText","maxWidth","fillText","addRoundedRectPath","topLeft","bottomLeft","bottomRight","topRight","LINE_HEIGHT","FONT_STYLE","toLineHeight","matches","match","numberOrZero","_readValueToProps","props","objProps","read","prop","toTRBL","toTRBLCorners","toPadding","toFont","fallback","inputs","info","cacheable","_addGrace","minmax","change","keepZero","createContext","parentContext","_createResolver","scopes","prefixes","rootScopes","getTarget","finalRootScopes","_resolve","Symbol","toStringTag","_cacheable","_scopes","_rootScopes","_getTarget","Proxy","deleteProperty","_keys","_cached","_resolveWithPrefixes","Reflect","getKeysFromAllScopes","ownKeys","storage","_storage","_attachContext","proxy","subProxy","descriptorDefaults","_proxy","_subProxy","_stack","setContext","receiver","_resolveWithContext","allKeys","scriptable","indexable","_allKeys","isScriptable","isIndexable","readKey","needsSubResolver","_resolveScriptable","_resolveArray","getValue","delete","createSubResolver","resolveFallback","getScope","addScopes","parentScopes","parentFallback","allScopes","addScopesFromKey","subGetTarget","resolveKeysFromAllScopes","_parseObjectDataRadialScale","_parsing","parsed","EPSILON","getPoint","skip","getValueAxis","splineCurve","firstPoint","middlePoint","afterPoint","d01","d12","s01","s12","fa","fb","monotoneAdjust","deltaK","mK","pointsLen","alphaK","betaK","tauK","squaredMagnitude","pointCurrent","pointAfter","monotoneCompute","valueAxis","pointBefore","iPixel","vPixel","splineCurveMonotone","slopeDelta","capControlPoint","pt","capBezierPoints","inArea","inAreaPrev","inAreaNext","_updateBezierControlPoints","controlPoints","spanGaps","cubicInterpolationMode","prev","tension","_isDomSupported","document","_getParentNode","domNode","parentNode","host","parseMaxStyle","styleValue","parentProperty","valueInPixels","getComputedStyle","element","ownerDocument","defaultView","getStyle","getPropertyValue","positions","getPositionedStyle","styles","suffix","pos","useOffsetPos","shadowRoot","getCanvasPosition","touches","offsetX","offsetY","box","getBoundingClientRect","clientX","clientY","getRelativePosition","event","borderBox","boxSizing","paddings","borders","getContainerSize","maxHeight","container","containerStyle","containerBorder","containerPadding","clientWidth","clientHeight","round1","getMaximumSize","bbWidth","bbHeight","aspectRatio","margins","containerSize","maintainHeight","retinaScale","forceRatio","forceStyle","pixelRatio","deviceHeight","deviceWidth","setTransform","supportsEventListenerOptions","passiveSupported","addEventListener","removeEventListener","readUsedSize","_pointInLine","_steppedInterpolation","_bezierInterpolation","cp1","cp2","getRightToLeftAdapter","rectX","setWidth","xPlus","leftForLtr","itemWidth","getLeftToRightAdapter","_itemWidth","getRtlAdapter","overrideTextDirection","direction","original","getPropertyPriority","setProperty","prevTextDirection","restoreTextDirection","propertyFn","between","compare","normalize","normalizeSegment","getSegment","segment","startBound","endBound","_boundSegment","prevValue","inside","subStart","startIsBefore","endIsBefore","shouldStart","shouldStop","_boundSegments","segments","sub","findStartAndEnd","solidSegments","cur","stop","_computeSegments","segmentOptions","_loop","splitByStyles","completeLoop","_fullLoop","doSplitByStyles","chartContext","_chart","baseStyle","readStyle","_datasetIndex","prevStyle","addStyle","st","p0","p0DataIndex","p1DataIndex","styleChanged","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","replacer","Animator","_request","_charts","_running","_lastDate","_notify","anims","date","callbacks","numSteps","initial","currentStep","_refresh","_update","Date","now","remaining","running","draw","_active","_total","tick","_getAnims","charts","progress","listen","cb","reduce","acc","_duration","cancel","remove","animator","interpolators","boolean","factor","c0","mix","number","Animation","cfg","currentValue","_fn","_easing","_start","_target","_prop","_from","_to","_promises","update","elapsed","wait","promises","rej","resolved","Animations","_properties","configure","animationOptions","animatedProps","getOwnPropertyNames","option","_animateOptions","newOptions","resolveTargetOptions","_createAnimations","$shared","awaitAll","$animations","anim","scaleClip","allowedOverflow","defaultClip","toClip","disabled","getSortedDatasetIndices","filterVisible","metasets","_getSortedDatasetMetas","applyStack","stack","dsIndex","singleMode","otherValue","convertObjectDataToArray","adata","isStacked","stacked","getStackKey","indexScale","valueScale","NEGATIVE_INFINITY","getOrCreateStack","stacks","stackKey","indexValue","subStack","getLastIndexInStack","vScale","positive","getMatchingVisibleMetas","updateStacks","controller","_cachedMeta","_stacks","iAxis","vAxis","itemStacks","_top","_bottom","visualValues","_visualValues","getFirstScaleId","createDatasetContext","dataset","createDataContext","dataIndex","raw","clearStacks","isDirectUpdateMode","cloneIfNotShared","cached","shared","createStack","canStack","hidden","_stacked","DatasetController","_cachedDataOpts","getMeta","_type","_data","_objectData","_sharedOptions","_drawStart","_drawCount","enableOptionSharing","supportsDecimation","$context","_syncList","datasetElementType","dataElementType","initialize","linkScales","addElements","isPluginEnabled","updateIndex","getDataset","chooseId","xid","xAxisID","yid","yAxisID","rid","rAxisID","iid","iAxisID","vid","vAxisID","getScaleForId","rScale","getDatasetMeta","scaleID","_getOtherScale","reset","_destroy","_dataCheck","isExtensible","buildOrUpdateElements","resetNewElements","stackChanged","oldStacked","_resyncElements","scopeKeys","datasetScopeKeys","getOptionScopes","createResolver","sorted","parseArrayData","parseObjectData","parsePrimitiveData","isNotInOrderComparedToPrev","labels","getLabels","singleScale","xAxisKey","yAxisKey","getParsed","getDataElement","updateRangeFromParsed","parsedValue","NaN","getMinMax","otherScale","otherMin","otherMax","_skip","getAllParsedValues","getMaxOverflow","getLabelAndValue","label","getLabelForValue","_clip","chartArea","resolveDatasetElementOptions","resolveDataElementOptions","_resolveElementOptions","elementType","sharing","datasetElementScopeKeys","names","resolveNamedOptions","freeze","_resolveAnimations","transition","datasetAnimationScopeKeys","getSharedOptions","includeOptions","sharedOptions","_animationsDisabled","_getSharedOptions","firstOpts","previouslySharedOptions","updateSharedOptions","updateElement","_setStyle","removeHoverStyle","setHoverStyle","_removeDatasetHoverStyle","_setDatasetHoverStyle","arg1","arg2","numMeta","numData","_insertElements","_removeElements","move","updateElements","removed","_sync","_dataChanges","_onDataPush","_onDataPop","_onDataShift","_onDataSplice","newCount","_onDataUnshift","getAllScaleValues","_cache","$bar","visibleMetas","computeMinSampleSize","curr","_length","updateMinAndPrev","getPixelForTick","computeFitCategoryTraits","ruler","stackCount","thickness","barThickness","categoryPercentage","barPercentage","pixels","computeFlexCategoryTraits","percent","parseFloatBar","entry","startValue","endValue","barStart","barEnd","_custom","parseValue","parseArrayOrPrimitive","isFloatBar","custom","barSign","actualBase","isHorizontal","borderProps","horizontal","setBorderSkipped","edge","borderSkipped","enableBorderRadius","parseEdge","swap","startEnd","orig","v2","setInflateAmount","inflateAmount","_defineProperty","BarController","iAxisKey","vAxisKey","bars","getBasePixel","_getRuler","vpixels","_calculateBarValuePixels","ipixels","_calculateBarIndexPixels","center","_getStacks","grouped","skipNull","_getStackCount","_getStackIndex","_startPixel","_endPixel","baseValue","minBarLength","floating","getDataVisibility","startPixel","getPixelForDecimal","endPixel","getValueForPixel","halfGrid","getLineWidthForValue","maxBarThickness","Infinity","stackIndex","rects","_index_","_value_","BubbleController","getRatioAndOffset","circumference","cutout","ratioX","ratioY","startAngle","endAngle","startX","startY","endX","endY","calcMax","calcMin","maxX","maxY","minX","minY","DoughnutController","innerRadius","outerRadius","getter","_getRotation","_getCircumference","_getRotationExtents","isDatasetVisible","arcs","spacing","getMaxBorderWidth","getMaxOffset","maxSize","chartWeight","_getRingWeight","maxRadius","radiusLength","_getVisibleDatasetWeightTotal","total","calculateTotal","_getRingWeightOffset","_circumference","animateRotate","calculateCircumference","animationOpts","centerX","centerY","animateScale","metaData","borderAlign","hoverBorderWidth","hoverOffset","ringWeightOffset","legend","generateLabels","fontColor","legendItem","toggleDataVisibility","LineController","_dataset","_decimated","animated","maxGapLength","directUpdate","pointsCount","prevParsed","nullData","lastPoint","updateControlPoints","PolarAreaController","_updateRadius","minSize","cutoutPercentage","getVisibleDatasetCount","xCenter","yCenter","datasetStartAngle","getIndexAngle","defaultAngle","countVisibleElements","_computeAngle","getDistanceFromCenterForValue","angleLines","circular","pointLabels","PieController","RadarController","pointPosition","getPointPositionForValue","ScatterController","registry","getElement","abstract","DateAdapterBase","members","init","formats","diff","startOf","endOf","adapters","_date","binarySearch","metaset","lookupMethod","_reversePixels","getRange","evaluateInteractionItems","position","handler","getSortedVisibleDatasetMetas","getDistanceMetricForAxis","useX","useY","deltaX","deltaY","getIntersectItems","useFinalPosition","isPointInArea","evaluationFunc","inRange","getNearestRadialItems","getProps","getNearestCartesianItems","distanceMetric","minDistance","getCenterPoint","pointInArea","getNearestItems","getAxisItems","rangeMethod","intersectsItem","Interaction","modes","nearest","STATIC_POSITIONS","filterByPosition","filterDynamicPositionByAxis","sortByWeight","wrapBoxes","boxes","layoutBoxes","stackWeight","buildStacks","layouts","wrap","placed","setLayoutDims","vBoxMaxWidth","hBoxMaxHeight","layout","fullSize","availableWidth","availableHeight","buildLayoutBoxes","centerHorizontal","centerVertical","leftAndTop","rightAndBottom","vertical","getCombinedMax","maxPadding","updateMaxPadding","boxPadding","updateDims","getPadding","newWidth","outerWidth","newHeight","outerHeight","widthChanged","heightChanged","same","other","handleMaxPadding","updatePos","getMargins","marginForPositions","fitBoxes","refitBoxes","refit","setBoxDims","placeBoxes","userPadding","addBox","_layers","z","removeBox","layoutItem","minPadding","verticalBoxes","horizontalBoxes","beforeLayout","visibleVerticalBoxCount","BasePlatform","acquireContext","releaseContext","isAttached","updateConfig","BasicPlatform","EXPANDO_KEY","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","isNullOrEmpty","initCanvas","renderHeight","getAttribute","renderWidth","displayWidth","displayHeight","eventListenerOptions","passive","addListener","removeListener","fromNativeEvent","native","nodeListContains","nodeList","contains","createAttachObserver","observer","MutationObserver","entries","trigger","addedNodes","removedNodes","observe","childList","subtree","createDetachObserver","drpListeningCharts","oldDevicePixelRatio","onWindowResize","dpr","listenDevicePixelRatioChanges","unlistenDevicePixelRatioChanges","createResizeObserver","ResizeObserver","contentRect","releaseObserver","disconnect","createProxyAndListen","DomPlatform","removeAttribute","setAttribute","proxies","$proxies","handlers","attach","detach","isConnected","_detectPlatform","OffscreenCanvas","Element","tooltipPosition","hasValue","final","tickOpts","determinedMaxTicks","determineMaxTicks","ticksLimit","maxTicksLimit","majorIndices","enabled","getMajorIndices","numMajorIndices","first","newTicks","skipMajors","calculateSpacing","avgMajorSpacing","_tickSize","maxScale","maxChart","_maxLength","evenMajorSpacing","getEvenSpacing","factors","majorStart","majorEnd","reverseAlign","offsetFromEdge","getTicksLimit","ticksLength","sample","numItems","increment","getPixelForGridLine","offsetGridLines","validIndex","lineValue","caches","getTickMarkLength","getTitleHeight","createScaleContext","createTickContext","titleAlign","titleArgs","titleX","titleY","positionAxisID","Scale","_margins","paddingTop","paddingBottom","paddingLeft","paddingRight","labelRotation","_range","_gridLineItems","_labelItems","_labelSizes","_longestTextCache","_userMax","_userMin","_suggestedMax","_suggestedMin","_ticksLength","_borderValue","_dataLimitsCached","suggestedMin","suggestedMax","metas","getTicks","xLabels","yLabels","getLabelItems","_computeLabelItems","beforeUpdate","sampleSize","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","beforeBuildTicks","buildTicks","afterBuildTicks","samplingEnabled","_convertTicksToLabels","beforeCalculateLabelRotation","calculateLabelRotation","afterCalculateLabelRotation","afterAutoSkip","beforeFit","fit","afterFit","afterUpdate","reversePixels","_alignToPixels","alignToPixels","_callHooks","notifyPlugins","beforeTickToLabelConversion","generateTickLabels","afterTickToLabelConversion","numTicks","maxLabelDiagonal","_isVisible","labelSizes","_getLabelSizes","maxLabelWidth","widest","maxLabelHeight","highest","asin","titleOpts","gridOpts","titleHeight","tickPadding","angleRadians","labelHeight","labelWidth","_calculatePadding","_handleMargins","isRotated","labelsBelowTicks","offsetLeft","offsetRight","isFullSize","_computeLabelSizes","widths","heights","tickFont","fontString","nestedLabel","widestLabelSize","highestLabelSize","_resolveTickFontOptions","valueAt","idx","decimal","getDecimalForPixel","getBaseValue","optionTicks","rot","_computeGridLineItems","tl","borderOpts","axisWidth","axisHalfWidth","alignBorderValue","borderValue","alignedLineValue","tx1","ty1","tx2","ty2","x1","y1","x2","y2","limit","step","optsAtIndex","optsAtIndexBorder","lineColor","tickBorderDash","tickBorderDashOffset","tickAndPadding","hTickAndPadding","lineCount","textOffset","_getXAxisLabelAlignment","_getYAxisLabelAlignment","halfCount","tickTextAlign","labelPadding","_computeLabelArea","drawBackground","findIndex","drawGrid","drawLine","setLineDash","lineDashOffset","drawBorder","lastLineWidth","drawLabels","renderTextOptions","drawTitle","tz","gz","bz","axisID","_maxDigits","fontSize","TypedRegistry","isForType","isPrototypeOf","register","parentScope","isIChartComponent","registerDefaults","unregister","itemDefaults","defaultRoutes","routeDefaults","routes","propertyParts","sourceName","sourceScope","Registry","controllers","_typedRegistries","_each","addControllers","addPlugins","addScales","getController","_get","getPlugin","getScale","removeControllers","removeElements","removePlugins","removeScales","typedRegistry","arg","reg","_getRegistryForType","_exec","itemReg","component","camelMethod","PluginService","_init","notify","hook","_createDescriptors","descriptor","plugin","cancelable","invalidate","_oldCache","_notifyStateChanges","allPlugins","createDescriptors","previousDescriptors","some","localIds","getOpts","pluginOpts","pluginScopeKeys","getIndexAxis","datasetDefaults","datasetOptions","getAxisFromDefaultScaleID","getDefaultScaleIDFromAxis","idMatchesAxis","axisFromPosition","determineAxis","scaleOptions","getAxisFromDataset","retrieveAxisFromDatasets","boundDs","mergeScaleConfig","chartDefaults","configScales","chartIndexAxis","scaleConf","defaultId","defaultScaleOptions","defaultID","initOptions","initData","initConfig","keyCache","keysCached","cachedKeys","generate","addIfFound","Config","_config","_scopeCache","_resolverCache","clearCache","clear","datasetType","additionalOptionScopes","_cachedScopes","mainScope","resetCache","keyLists","chartOptionScopes","subPrefixes","getResolver","needContext","subResolver","resolverCache","hasFunction","KNOWN_POSITIONS","positionIsHorizontal","compare2Level","l1","l2","onAnimationsComplete","onComplete","onAnimationProgress","onProgress","getCanvas","getElementById","instances","getChart","moveNumericKeys","intKey","determineLastEvent","lastEvent","inChartArea","isClick","getSizeForArea","field","getDatasetArea","Chart","invalidatePlugins","userConfig","initialCanvas","existingChart","_options","_aspectRatio","_metasets","_lastEvent","_listeners","_responsiveListeners","_sortedMetasets","_plugins","_hiddenIndices","attached","_doResize","resizeDelay","_initialize","bindEvents","_resizeBeforeDraw","_resize","newSize","newRatio","onResize","render","ensureScalesHaveIDs","scalesOptions","axisOptions","buildOrUpdateScales","scaleOpts","updated","isRadial","dposition","dtype","scaleType","scaleClass","hasUpdated","_updateMetasets","_destroyDatasetMeta","_removeUnreferencedMetasets","buildOrUpdateControllers","newControllers","order","ControllerClass","_resetElements","animsDisabled","_updateScales","_checkEventBindings","_updateHiddenIndices","_minPadding","_updateLayout","_updateDatasets","_eventHandler","_updateHoverStyles","existingEvents","newEvents","unbindEvents","changes","_getUniformDataChanges","datasetCount","makeSet","changeSet","noArea","_idx","_updateDataset","layers","_drawDatasets","_drawDataset","useClip","getElementsAtEventForMode","setDatasetVisibility","_updateVisibility","_stop","destroy","toBase64Image","toDataURL","bindUserEvents","bindResponsiveEvents","_add","_remove","detached","updateHoverStyle","getActiveElements","setActiveElements","activeElements","lastActive","pluginId","replay","hoverOptions","deactivated","activated","eventFilter","_handleEvent","_getActiveElements","clipArc","pixelMargin","angleMargin","toRadiusCorners","parseBorderRadius$1","angleDelta","borderRadius","halfThickness","innerLimit","computeOuterLimit","outerArcLimit","outerStart","outerEnd","innerStart","innerEnd","rThetaToXY","theta","pathArc","innerR","spacingOffset","alpha","noSpacingInnerRadius","noSpacingOuterRadius","avNogSpacingRadius","adjustedAngle","beta","angleOffset","outerStartAdjustedRadius","outerEndAdjustedRadius","outerStartAdjustedAngle","outerEndAdjustedAngle","innerStartAdjustedRadius","innerEndAdjustedRadius","innerStartAdjustedAngle","innerEndAdjustedAngle","outerMidAdjustedAngle","pCenter","p4","innerMidAdjustedAngle","p8","outerStartX","outerStartY","outerEndX","outerEndY","drawArc","fullCircles","inner","lineJoin","ArcElement","chartX","chartY","rAdjust","betweenAngles","withinRadius","halfAngle","halfRadius","fix","radiusOffset","setStyle","lineCap","getLineMethod","stepped","pathVars","paramsStart","paramsEnd","segmentStart","segmentEnd","outside","pathSegment","lineMethod","fastPathSegment","prevX","lastY","avgX","countX","pointIndex","drawX","truncX","_getSegmentMethod","useFastPath","_getInterpolationMethod","strokePathWithCache","_path","Path2D","strokePathDirect","segmentMethod","usePath2D","LineElement","_points","_segments","_pointsUpdated","_interpolate","interpolated","inRange$1","hitRadius","PointElement","mouseX","mouseY","inXRange","inYRange","hoverRadius","getBarBounds","bar","half","skipOrLimit","parseBorderWidth","maxW","maxH","parseBorderRadius","maxR","enableBorder","boundingRects","outer","skipX","skipY","skipBoth","hasRadius","addNormalRectPath","inflateRect","refRect","BarElement","addRectPath","tpoints","_findSegmentEnd","_getBounds","targetSegments","tgt","subBounds","fillSources","fillSource","_getEdge","_pointsFromSegments","boundary","linePoints","_createBoundaryLine","_shouldApplyFill","_resolveTarget","propagate","visited","_decodeFill","parseFillOption","decodeTargetIndex","firstCh","_getTargetPixel","_getTargetValue","fillOption","_buildStackLine","sourcePoints","linesBelow","getLinesBelow","addPointsBelow","below","unshift","sourcePoint","postponed","findPoint","pointValue","firstValue","lastValue","simpleArc","getLineByIndex","computeBoundary","computeCircularBoundary","computeLinearBoundary","_drawfill","lineOpts","above","doFill","clipVertical","clipY","lineLoop","src","notShape","clipBounds","interpolatedLineTo","targetLoop","interpolatedPoint","afterDatasetsUpdate","_args","$filler","beforeDraw","drawTime","beforeDatasetsDraw","beforeDatasetDraw","getBoxSize","labelOpts","boxHeight","boxWidth","usePointStyle","pointStyleWidth","itemHeight","itemsEqual","Legend","_added","legendHitBoxes","_hoveredItem","doughnutMode","legendItems","columnSizes","lineWidths","buildLabels","labelFont","_computeTitleHeight","_fitRows","_fitCols","hitboxes","totalHeight","row","_itemHeight","heightLimit","totalWidth","currentColWidth","currentColHeight","col","calculateItemSize","adjustHitBoxes","rtlHelper","hitbox","_draw","defaultColor","halfFontSize","drawLegendBox","lineDash","drawOptions","SQRT2","yBoxTop","xBoxLeft","textDirection","realX","fontLineHeight","calculateLegendItemHeight","titleFont","titlePadding","topPaddingPlusHalfFontSize","_getLegendItemAt","hitBox","lh","handleEvent","isListened","hoveredItem","sameItem","onLeave","calculateItemWidth","calculateItemHeight","legendItemText","plugin_legend","_element","afterEvent","useBorderRadius","Title","_padding","textSize","_drawArgs","fontOpts","createTitle","titleBlock","plugin_title","WeakMap","positioners","average","eventPosition","nearestElement","tp","pushOrConcat","toPush","splitNewlines","createTooltipItem","formattedValue","getTooltipSize","tooltip","body","footer","bodyFont","footerFont","titleLineCount","footerLineCount","bodyLineItemCount","combinedBodyLength","bodyItem","before","after","beforeBody","afterBody","titleSpacing","titleMarginBottom","bodyLineHeight","displayColors","bodySpacing","footerMarginTop","footerSpacing","widthPadding","maxLineWidth","determineYAlign","doesNotFitWithAlign","xAlign","caret","caretSize","caretPadding","determineXAlign","yAlign","chartWidth","determineAlignment","alignX","alignY","paddingAndSize","getBackgroundPoint","alignment","getAlignedX","getBeforeAfterBodyLines","createTooltipContext","tooltipItems","overrideCallbacks","defaultCallbacks","beforeTitle","labelCount","afterTitle","beforeLabel","tooltipItem","labelColor","labelTextColor","bodyColor","labelPointStyle","afterLabel","beforeFooter","afterFooter","invokeCallbackWithFallback","Tooltip","opacity","_eventPosition","_size","_cachedAnimations","_tooltipItems","dataPoints","caretX","caretY","labelColors","labelPointStyles","labelTextColors","getTitle","getBeforeBody","getBody","bodyItems","scoped","getAfterBody","getFooter","_createItems","itemSort","positionAndSize","backgroundPoint","external","drawCaret","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","titleColor","_drawColorBox","colorX","rtlColorX","yOffSet","colorY","multiKeyBackground","outerX","innerX","strokeRect","drawBody","bodyAlign","xLinePadding","fillLineOfText","bodyAlignForCalculation","textColor","drawFooter","footerAlign","footerColor","tooltipSize","quadraticCurveTo","_updateAnimationTarget","animX","animY","_willRender","hasTooltipContent","globalAlpha","positionChanged","_positionChanged","_ignoreReplayEvents","plugin_tooltip","afterInit","afterDraw","addIfString","addedLabels","findOrAddLabel","lastIndexOf","_getLabelForValue","CategoryScale","_startValue","_valueRange","_addedLabels","added","generateTicks$1","generationOptions","dataRange","MIN_SPACING","precision","maxTicks","maxDigits","includeBounds","unit","maxSpaces","rmin","rmax","countDefined","minSpacing","niceMin","niceMax","numSpaces","decimalPlaces","relativeLabelSize","LinearScaleBase","_endValue","handleTickRangeOptions","setMin","setMax","minSign","maxSign","getTickLimit","stepSize","computeTickLimit","numericGeneratorOptions","LinearScale","log10Floor","changeExponent","isMajor","tickVal","steps","rangeExp","rangeStep","startExp","generateTicks","minExp","exp","lastTick","LogarithmicScale","_zero","getTickBackdropHeight","measureLabelSize","determineLimits","fitWithPointLabels","limits","valueCount","_pointLabels","pointLabelOpts","additionalAngle","centerPointLabels","getPointLabelContext","getPointPosition","drawingArea","plFont","hLimits","vLimits","updateLimits","setCenterPoint","_pointLabelItems","buildPointLabelItems","createPointLabelItem","itemOpts","outerDistance","extra","pointLabelPosition","yForAngle","getTextAlignForAngle","leftForTextAlign","isNotOverlapped","apexesInArea","drawPointLabelBox","backdropLeft","backdropTop","backdropWidth","backdropHeight","drawPointLabels","pathRadiusLine","drawRadiusLine","gridLineOpts","createPointLabelContext","RadialLinearScale","leftMovement","rightMovement","topMovement","bottomMovement","angleMultiplier","scalingFactor","getValueForDistanceFromCenter","scaledDistance","pointLabel","distanceFromCenter","getBasePosition","getPointLabelPosition","animate","INTERVALS","millisecond","common","second","minute","hour","day","week","month","quarter","year","UNITS","sorter","adapter","_adapter","parser","isoWeekday","_parseOpts","determineUnitForAutoTicks","minUnit","capacity","interval","determineUnitForFormatting","determineMajorUnit","addTick","time","timestamps","timestamp","setMajorTicks","majorUnit","ticksFromTimestamps","TimeScale","_unit","_majorUnit","_offsets","_normalized","displayFormats","normalized","_applyBounds","_getLabelBounds","getLabelTimestamps","timeOpts","_generate","_getLabelCapacity","initOffsets","offsetAfterAutoskip","getDecimalForValue","weekday","hasWeekday","getDataTimestamps","tooltipFormat","datetime","fmt","_tickFormatFunction","minorFormat","majorFormat","offsets","_getLabelSize","ticksOpts","tickLabelWidth","cosRotation","sinRotation","tickFontSize","exampleTime","exampleLabel","prevSource","nextSource","prevTarget","nextTarget","span","TimeSeriesScale","_table","_minPos","_tableRange","_getTimestampsForTable","buildLookupTable","_typeof","toPrimitive","_toPropertyKey","__esModule","project","MapOperator","MapSubscriber","$findLast","findLast","predicate","$reduce","arrayMethodIsStrict","CHROME_VERSION","IS_NODE","CHROME_BUG","callbackfn","classof","assert","inherits","ctor","superCtor","super_","TempCtor","endian","isBN","negative","words","red","wordSize","parseHex4Bits","parseHexByte","lowerBound","parseBase","mul","dest","_initNumber","_initArray","_parseHex","_parseBase","toArray","off","_strip","parseLength","limbLen","limbPow","mod","word","imuln","_iaddn","copy","_move","_expand","_normSign","for","inspect","zeros","groupSizes","groupBases","out","carry","groupSize","groupBase","isZero","modrn","idivn","toJSON","toBuffer","toArrayLike","allocate","ArrayType","allocUnsafe","toBitArray","bitLength","bit","wbit","smallMulTo","self","ncarry","rword","maxJ","byteLength","reqLength","_toArrayLikeLE","_toArrayLikeBE","clz32","_countBits","_zeroBits","zeroBits","toTwos","inotn","iaddn","fromTwos","testn","notn","ineg","neg","iuor","ior","or","uor","iuand","iand","and","uand","iuxor","ixor","xor","uxor","bytesNeeded","bitsLeft","setn","iadd","isub","comb10MulTo","al0","ah0","al1","ah1","a2","al2","ah2","a3","al3","ah3","a4","al4","ah4","a5","al5","ah5","a6","al6","ah6","a7","al7","ah7","a8","al8","ah8","a9","al9","ah9","b0","bl0","bh0","b1","bl1","bh1","b2","bl2","bh2","b3","bl3","bh3","b4","bl4","bh4","b5","bl5","bh5","b6","bl6","bh6","b7","bl7","bh7","b8","bl8","bh8","b9","bl9","bh9","imul","w0","w3","w4","w5","w6","w7","w8","w9","w10","w11","w12","w13","w14","w15","w16","w17","w18","bigMulTo","hncarry","jumboMulTo","FFTM","mulTo","makeRBT","revBin","rb","permute","rbt","rws","iws","rtws","itws","transform","rtwdf","itwdf","rtwdf_","itwdf_","re","ie","ro","io","rx","guessLen13b","odd","conjugate","normalize13b","ws","convert13b","ph","mulp","_","rwst","iwst","nrws","nrwst","niwst","rmws","mulf","isNegNum","muln","sqr","isqr","q","iushln","carryMask","newCarry","ishln","iushrn","hint","extended","mask","maskedWords","ishrn","shln","ushln","shrn","ushrn","imaskn","maskn","isubn","addn","subn","iabs","_ishlnsubmul","_wordDiv","bhi","bhiBits","qj","div","divmod","divn","umod","divRound","dm","r2","andln","modn","egcd","isEven","yp","xp","im","isOdd","jm","gcd","_invmp","cmpn","invm","bincn","ucmp","gtn","gt","gten","gte","ltn","lt","lten","lte","eqn","Red","toRed","convertTo","_forceRed","fromRed","convertFrom","forceRed","redAdd","redIAdd","redSub","redISub","redShl","shl","redMul","_verify2","redIMul","redSqr","_verify1","redISqr","redSqrt","redInvm","redNeg","redPow","primes","k256","p224","p192","p25519","MPrime","_tmp","K256","P224","P192","P25519","prime","_prime","Mont","imod","rinv","minv","ireduce","rlen","imulK","strip","output","outLen","mod3","one","nOne","lpow","inv","windowSize","wnd","currentLen","mont","u","ethunit","isCryptoAvailable","crypto","subtle","myCrypto","digest","toWei","fromWei","to_hex_array","to_byte_map","ord","hex_array","length2","i2","buf","bufView","ArrayBuffer","Uint16Array","Uint32Array","strLen","_crc32c","crc","POLY","int_crc","view","DataView","setUint32","poly","byte","base64abc","abc","base64","atob","btoa","binary_string","ui8array","seed","keyPair","fromSeed","secretKey","_errors","Tag","asUInt16BE","initialAcc","dataLength","sequence","createHIDframing","channel","packetSize","blockSize","nbBlocks","blocks","readUInt16BE","TransportError","readUInt8","chunkData","_default","CONFIGURABLE_FUNCTION_NAME","CONFIGURABLE","inspectSource","InternalStateModule","enforceInternalState","enforce","getInternalState","stringSlice","CONFIGURABLE_LENGTH","TEMPLATE","makeBuiltIn","setter","state","Function","Subscription","_subscriptions","_ctorUnsubscribe","_a","parent_1","flattenUnsubscriptionErrors","teardown","EMPTY","subscriptions","subscriptionIndex","empty","errs","NotificationKind","GroupDurationSubscriber","group","removeGroup","GroupedObservable","groupSubject","refCountSubscription","InnerRefCountSubscription","attemptedToUnsubscribe","BehaviorSubject","_value","hasError","thrownError","ObjectUnsubscribedError","Subject","Action","scheduler","work","schedule","AsyncAction","pending","recycleAsyncId","requestAsyncId","setInterval","flush","clearInterval","execute","_execute","errored","errorValue","actions","QueueAction","Scheduler","SchedulerAction","AsyncScheduler","delegate","scheduled","action","QueueScheduler","queueScheduler","queue","of","isScheduler","scheduleArray","fromArray","throwError","dispatch","Notification","kind","do","accept","toObservable","createNext","undefinedValueNotification","createError","createComplete","completeNotification","ObserveOnSubscriber","notification","scheduleMessage","ObserveOnMessage","ReplaySubject","bufferSize","windowTime","_events","_infiniteTimeWindow","_bufferSize","_windowTime","nextInfiniteTimeWindow","nextTimeWindow","ReplayEvent","_getNow","_trimBufferThenGetEvents","observers","SubjectSubscription","eventsCount","spliceCount","AsyncSubject","hasNext","hasCompleted","nextHandle","RESOLVED","activeHandles","findAndClearHandle","handle","Immediate","setImmediate","clearImmediate","AsapAction","AsapScheduler","asapScheduler","asap","asyncScheduler","AnimationFrameAction","cancelAnimationFrame","AnimationFrameScheduler","animationFrameScheduler","animationFrame","VirtualTimeScheduler","maxFrames","frame","frameTimeFactor","VirtualAction","sortActions","isObservable","TimeoutErrorImpl","TimeoutError","bindCallback","callbackFunc","resultSelector","subject","innerArgs","dispatchNext","bindNodeCallback","OuterSubscriber","notifyNext","outerValue","innerValue","outerIndex","innerIndex","innerSub","notifyError","notifyComplete","InnerSubscriber","subscribeToResult","outerSubscriber","innerSubscriber","NONE","combineLatest","observables","CombineLatestOperator","CombineLatestSubscriber","toRespond","unused","_outerValue","oldVal","_tryResultSelector","concatAll","mergeAll","forkJoin","first_1","forkJoinInternal","resultSelector_1","completed","emitted","_loop_1","fromEvent","eventName","setupSubscription","sourceObj","isEventTarget","source_1","isJQueryStyleEventEmitter","source_2","on","isNodeStyleEventEmitter","source_3","fromEventPattern","addHandler","removeHandler","retValue","initialStateOrOptions","condition","iterate","resultSelectorOrObservable","initialState","identity","conditionResult","needIterate","iif","trueResult","falseResult","defer","isNumeric","period","counter","NEVER","never","onErrorResumeNext","remainder","subNext","not","pred","notPred","partition","race","RaceOperator","RaceSubscriber","hasFirst","timer","dueTime","periodOrScheduler","due","using","resourceFactory","observableFactory","resource","zip","ZipOperator","ZipSubscriber","iterators","StaticIterator","stillUnsubscribed","notifyInactive","checkIterators","shouldComplete","_tryresultSelector","nextResult","Boolean","StaticArrayIterator","ZipBufferIterator","isComplete","innerSubscribe","toPositiveInteger","BYTES","Dns","getConfigParam","byteArray","getRootDnsAddress","getWalletAddress","getSiteAddress","Range","toComparators","comp","trim","SemVer","throwErrors","er","global","factory","define","_crypto","msCrypto","_subtle","webkitSubtle","_Crypto","Crypto","_SubtleCrypto","SubtleCrypto","isEdge","CryptoKey","Key","userAgent","isIE","isWebkit","oid2str","str2oid","ka","kx","ku","op","alg","b2jwk","jwkAlg","key_ops","kty","isPrvKeyUse","isPubKeyUse","jwk2b","_key","importKey","getRandomValues","modulusLength","generateKey","exportKey","publicKey","privateKey","s2b","a2s","pkcs2jwk","decrypt","onabort","onerror","oncomplete","algorithm","search","publicExponent","unescape","encrypt","usages","s2a","b2s","jwk2pkcs","tagLength","tag","AesGcmEncryptResult","ciphertext","_digest","SyntaxError","escape","jwk","ext","extractable","b2der","prv","rsaComp","rsaKey","subarray","der2b","rv","xlen","oid","use","klass","loose","IndexedObject","requireObjectCoercible","SNAKE_DATA_PREFIX","CHUNK_DATA_PREFIX","ONCHAIN_CONTENT_PREFIX","OFFCHAIN_CONTENT_PREFIX","serializeUri","uri","encodeURI","parseUri","TextDecoder","decode","createOffchainUriCell","parseOffchainUriCell","readIntFromBitString","bs","BigInt","hashPart","padStart","getRoyaltyParams","royaltyFactor","royaltyBase","royalty","royaltyAddress","compareBuild","prerelease","classNames","classes","argType","$documentAll","documentAll","IS_HTMLDDA","TO_STRING_TAG","test","kindOf","kindOfTest","typeOfTest","isUndefined","isBuffer","isArrayBuffer","isArrayBufferView","isView","isString","isBoolean","isPlainObject","isDate","isFile","isBlob","isFileList","isStream","isFormData","FormData","append","isURLSearchParams","allOwnKeys","findKey","_global","globalThis","isContextDefined","caseless","assignValue","targetKey","extend","stripBOM","content","superConstructor","toFlatObject","destObj","propFilter","merged","searchString","lastIndex","isTypedArray","TypedArray","forEachEntry","generator","matchAll","regExp","isHTMLForm","toCamelCase","isRegExp","reduceDescriptors","reducer","getOwnPropertyDescriptors","reducedDescriptors","freezeMethods","toObjectSet","arrayOrString","delimiter","toFiniteNumber","ALPHA","DIGIT","ALPHABET","ALPHA_DIGIT","generateString","alphabet","isSpecCompliantForm","toJSONObject","visit","reducedValue","isAsyncFn","isThenable","catch","hasOwnProp","ltr","anyForm","Transport","exchangeTimeout","unresponsiveTimeout","deviceModel","send","cla","ins","statusList","OK","response","exchange","sw","exchangeBusyPromise","exchangeAtomicImpl","resolveBusy","busyPromise","unresponsiveReached","emit","_appAPIlock","_apdu","openTimeout","listenTimeout","found","listenTimeoutId","open","ErrorMessage_NoDeviceFound","ErrorMessage_ListenTimeout","methods","scrambleKey","methodName","decorateAppAPIMethod","setScrambleKey","validRange","subscribers","__ledgerLogsListen","AppTon","transport","ton","ADDRESS_FORMAT_HEX","ADDRESS_FORMAT_USER_FRIENDLY","ADDRESS_FORMAT_URL_SAFE","ADDRESS_FORMAT_BOUNCEABLE","ADDRESS_FORMAT_TEST_ONLY","accountNumber","isDisplay","writeInt32BE","addressFormat","addressHex","accountNumberBuffer","signBuffer","signature","wallet","toAddress","seqno","sendMode","query","createTransferMessage","msgBuffer","signingMessage","signatureBuffer","stateInit","deploy","createStateInit","selfAddress","getAddress","createExternalMessageHeader","resultMessage","createCommonMsgInfo","resultPromise","prim","NftCollection","NftItem","NftSale","writePublicKey","writeSignature","createSignatureCell","tag_init","tag_cooperative_close","tag_cooperative_commit","tag_start_uncooperative_close","tag_challenge_state","tag_settle_conditionals","tag_state","op_top_up_balance","op_init_channel","op_cooperative_close","op_cooperative_commit","op_start_uncooperative_close","op_challenge_quarantined_state","op_settle_conditionals","op_finish_uncooperative_close","op_channel_closed","createTopUpBalance","createInitChannelBody","createCooperativeCloseChannelBody","createCooperativeCommitBody","createConditionalPayment","createSemiChannelBody","createSemiChannelState","createSignedSemiChannelState","createStartUncooperativeCloseBody","createChallengeQuarantinedStateBody","createSettleConditionalsBody","createFinishUncooperativeClose","createOneSignature","createTwoSignature","PAYMENT_CHANNEL_CODE_HEX","PaymentChannel","publicKeyA","isA","myKeyPair","hisPublicKey","publicKeyB","_this$options$closing","_this$options$closing2","_this$options$closing3","writeBit","writeCoins","channelId","closingConfig","quarantineDuration","misbehaviorFine","conditionalCloseDuration","paymentConfig","excessFee","addressA","addressB","cellForSigning","hisSignature","signatureA","signatureB","semiChannelBody","mySeqno","sentCoins","mySentCoins","conditionals","counterpartySemiChannelBody","hisSeqno","hisSentCoins","seqnoA","seqnoB","sentCoinsA","initBalanceA","balanceA","sentCoinsB","initBalanceB","balanceB","verify","createCooperativeCloseChannel","myAddress","bnToBytes","quarantine","fromWallet","transfer","payloadPromise","needStateInit","createPromise","payload","estimateFee","createInitChannel","topUp","close","commit","createCooperativeCommit","startUncooperativeClose","createStartUncooperativeClose","challengeQuarantinedState","createChallengeQuarantinedState","settleConditionals","createSettleConditionals","finishUncooperativeClose","codeHex","stripHexPrefix","multiplier","formattedString","isHexPrefixed","substr","stringArg","dividedToIntegerBy","Prototype","IS_PURE","store","copyright","license","getCollectionData","getNftItemAddressByIndex","getNftItemContent","createContentCell","collectionContentCell","collectionContentUri","commonContentCell","nftItemContentBaseUri","contentCell","createRoyaltyCell","royaltyCell","nftItemCodeHex","createMintBody","queryId","itemIndex","nftItemContent","itemOwnerAddress","uriContent","itemContentUri","createGetRoyaltyParamsBody","createChangeOwnerBody","newOwnerAddress","createEditContentBody","itemsCount","nextItemIndex","nftItem","nftData","getData","isInitialized","contentUri","NATIVE_SYMBOL","sham","DnsCollection","collectionContent","dnsItemCodeHex","WalletV2ContractBase","createSigningMessage","expireAt","WalletV2ContractR1","WalletV2ContractR2","process","Deno","versions","v8","compareIdentifiers","anum","bnum","rcompareIdentifiers","intersects","r1","parseHex","littleEndian","fftm","SubscriptionContract","pay","createPayExternalMessage","getSubscriptionData","beneficiary","writeGrams","startAt","subscriptionId","createBody","createSelfDestructBody","tuple","lastPayment","lastRequest","failedAttempts","SILENT_ON_NON_WRITABLE_LENGTH_SET","tap","DoOperator","TapSubscriber","_tapNext","_tapError","_tapComplete","aFunction","namespace","classofRaw","debug","safeRe","parseOptions","includePrerelease","LOOSE","FULL","patch","build","compareMain","comparePre","release","identifier","identifierBase","inc","createNonEnumerableProperty","cause","mergeMap","concurrent","ii","MergeMapOperator","MergeMapSubscriber","_tryNext","_innerSub","ish","innerSubscription","minSatisfying","minSV","rangeObj","isMergeableObject","isNonNullObject","isSpecial","stringValue","isReactElement","canUseSymbol","REACT_ELEMENT_TYPE","$$typeof","emptyTarget","cloneUnlessOtherwiseSpecified","deepmerge","defaultArrayMerge","getMergeFunction","customMerge","getEnumerableOwnPropertySymbols","symbol","propertyIsEnumerable","getKeys","propertyIsOnObject","propertyIsUnsafe","mergeObject","arrayMerge","sourceIsArray","targetIsArray","sourceAndTargetTypesMatch","deepmerge_1","definePropertyModule","numberToBN","zero","negative1","unitMap","getValueOfUnit","unitInput","unitValue","numberToString","toPrecision","weiInput","optionsInput","wei","baseLength","pad","whole","commify","etherInput","ether","comps","neq","isNullOrUndefined","func","WALLET_ID_BASE","walletId","getPublicKey","getWalletId","getLiquidBalance","getNominalRestrictedBalance","getNominalLockedBalance","withoutOp","config_public_key","allowed_destinations","balances","getBalances","tryToString","JettonMinter","adminAddress","jettonContentUri","jettonWalletCodeHex","transferBody","jettonAmount","createChangeAdminBody","newAdminAddress","totalSupply","isMutable","jettonContentCell","jettonWalletCode","parseWalletV3TransferQuery","parseWalletV3TransferBody","WalletV3ContractBase","WalletV3ContractR1","parseTransferQuery","parseTransferBody","WalletV3ContractR2","internalObjectKeys","enumBugKeys","hiddenKeys","bounceable_tag","non_bounceable_tag","test_flag","parseFriendlyAddress","addressString","addr","calcedCrc","isTestOnly","isBounceable","isUserFriendly","isUrlSafe","parseResult","Int8Array","addressWithChecksum","addressBase64","webpackPolyfill","deprecate","paths","children","defineBuiltIn","defineGlobalProperty","copyConstructorProperties","isForced","targetProperty","sourceProperty","TARGET","GLOBAL","STATIC","stat","dontCallGetSet","rcompare","loadBits","loadUint","loadRef","loadBit","bounce","sourceAddress","loadAddress","destAddress","loadCoins","ihrFees","fwdFees","createdLt","createdAt","getFreeBits","payloadBytes","externalSourceAddress","externalDestAddress","externalImportFee","bodySlice","fromAddress","MC_INTERVAL","SHARDS_INTERVAL","parseShardBlockNumber","shard","BlockSubscription","onBlock","startMcBlockNumber","mcInterval","shardsInterval","getMasterchainInfo","startMcBlockHeader","getMasterchainBlockHeader","startLT","end_lt","isMcProcessing","mcTick","lastSavedMcBlock","getLastMasterchainBlockNumber","lastMcBlock","blockShards","getBlockShards","blockHeader","insertBlocks","shards","mcIntervalId","isShardsProcessing","shardsTick","shardBlock","getUnprocessedShardBlock","getBlockHeader","setBlockProcessed","prevBlocks","prev_blocks","shardsIntervalId","monitorCharacteristic","characteristic","onCharacteristicValueChanged","uuid","startNotifications","stopNotifications","FunctionPrototype","uncurryThisWithBind","originalModule","toByteArray","fromByteArray","lookup","revLookup","Arr","getLens","b64","validLen","placeHoldersLen","lens","_byteLength","curByte","tripletToBase64","encodeChunk","uint8","extraBytes","maxChunkLength","len2","coerce","COERCERTL","COERCE","looseOption","emptyOpts","readCursor","refCursor","checkRange","loadInt","nb","loadVarUint","emptyScheduled","TYPE","IS_FIND_LAST_INDEX","boundFunction","findLastIndex","setToStringTag","getSymbolIterator","createElement","SubjectSubscriber","AnonymousSubject","asObservable","USE_SYMBOL_AS_UID","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","multicast","subjectOrSubjectFactory","selector","subjectFactory","MulticastOperator","connectable","shareSubjectFactory","share","refCount","HttpProviderUtils","fetch","SHARD_ID_ALL","HttpProvider","sendImpl","apiUrl","request","headers","apiKey","json","jsonrpc","to_lt","archival","parseResponse","configParamId","rawResult","config_id","masterchainBlockNumber","getBlockTransactions","NFT_ITEM_CODE_HEX","collectionAddress","responseAddress","forwardAmount","forwardPayload","createGetStaticDataBody","METHOD_NAME","Payments","createChannel","trunc","$Error","TEST","V8_OR_CHAKRA_STACK_ENTRY","IS_V8_OR_CHAKRA_STACK","dropEntries","prepareStackTrace","ArgumentOutOfRangeErrorImpl","ArgumentOutOfRangeError","ObjectUnsubscribedErrorImpl","DnsItem","subscriberIndex","ignoreElements","IgnoreElementsOperator","IgnoreElementsSubscriber","getBuiltIn","setPrototypeOf","proxyAccessor","inheritIfRequired","normalizeStringArgument","installErrorCause","installErrorStack","FULL_NAME","wrapper","IS_AGGREGATE_ERROR","STACK_TRACE_LIMIT","OPTIONS_POSITION","ERROR_NAME","OriginalError","OriginalErrorPrototype","BaseError","WrappedError","ANY","Comparator","semver","COMPARATORLOOSE","COMPARATOR","__webpack_amd_options__","protocol","__rest","__awaiter","_arguments","adopt","fulfilled","rejected","TonConnectError","DappMetadataError","ManifestContentErrorError","ManifestNotFoundError","WalletAlreadyConnectedError","WalletNotConnectedError","isWalletConnectionSourceJS","UserRejectsError","BadRequestError","UnknownAppError","WalletNotInjectedError","LocalstorageNotFoundError","FetchWalletsError","WrongAddressError","ParseHexError","UnknownError","connectEventErrorsCodes","CONNECT_EVENT_ERROR_CODES","UNKNOWN_ERROR","USER_REJECTS_ERROR","BAD_REQUEST_ERROR","UNKNOWN_APP_ERROR","MANIFEST_NOT_FOUND_ERROR","MANIFEST_CONTENT_ERROR","ConnectErrorsParser","ErrorConstructor","connectErrorsParser","RpcParser","sendTransactionErrors","SEND_TRANSACTION_ERROR_CODES","SendTransactionParser","rpcResponse","boc","sendTransactionParser","HttpBridgeGatewayStorage","bridgeUrl","storeKey","lastEventId","setItem","removeItem","stored","getItem","removeUrlLastSlash","addPathToUrl","isTelegramUrl","link","URL","hostname","encodeTelegramUrlParameters","parameters","replaceAll","BridgeGateway","sessionId","errorsListener","ssePath","postPath","heartbeatMessage","defaultTtl","isClosed","bridgeGatewayStorage","searchParams","getLastEventId","eventSource","EventSource","openingDeadlineMS","readyState","OPEN","onopen","errorsHandler","onmessage","messagesHandler","topic","ttl","Base64","registerSession","_b","CLOSED","CONNECTING","storeLastEventId","bridgeIncomingMessage","isPendingConnectionHttp","connection","BridgeConnectionStorage","rawSession","sessionKeyPair","session","sessionCrypto","stringifyKeypair","walletPublicKey","rawConnection","connectEvent","lastWalletEventId","nextRpcRequestId","connectionSource","SessionCrypto","getConnection","storeConnection","lastId","PROTOCOL_VERSION","logDebug","logError","logWarning","BridgeProvider","walletConnectionSource","standardUniversalLink","pendingRequests","gateway","pendingGateways","connectionStorage","bridgeConnectionStorage","getHttpConnection","closeGateways","openGateways","universalLink","generateUniversalLink","storedConnection","gatewayListener","gatewayErrorsListener","onRequestSent","getNextRpcRequestId","increaseNextRpcRequestId","encodedRequest","hexToByteArray","called","removeBridgeAndSession","sendRequest","pause","bridge","unPause","except","setErrorsListener","setListener","walletMessage","toUint8Array","getLastWalletEventId","storeLastWalletEventId","updateSession","tonAddrItem","find","connectEventToSave","closeConnection","removeConnection","generateTGUniversalLink","generateRegularUniversalLink","urlToWrap","linkParams","startattach","pendingGatewaysListener","allSettled","hasProperty","propertyKey","hasProperties","propertyKeys","every","isJSBridgeWithMetadata","tonconnect","walletInfo","InMemoryStorage","instance","getWindow","tryGetWindowKeys","getDocument","getWebPageManifest","origin","location","tryGetLocalStorage","isLocalStorageAvailable","localStorage","isNodeJs","getInstance","InjectedProvider","injectedWalletKey","unsubscribeCallback","listenSubscriptions","isWindowContainsWallet","injectedWallet","getInjectedConnection","jsBridgeKey","isWalletBrowser","windowKeys","wallets","appName","app_name","aboutUrl","about_url","imageUrl","image","tondns","injected","embedded","platforms","_connect","restoreConnection","makeSubscriptions","closeAllListeners","eventsCallback","protocolVersion","connect","connectEventError","DefaultStorage","isWalletInfoCurrentlyInjected","isWalletInfoInjectable","isWalletInfoCurrentlyEmbedded","isWalletInfoRemote","isWalletInfoInjected","FALLBACK_WALLETS_LIST","universal_url","WalletsListManager","walletsListCache","walletsListCacheCreationTimestamp","walletsListSource","cacheTTLMs","fetchWalletsList","walletsList","getWallets","embeddedWallets","walletsResponse","wrongFormatWallets","isCorrectWalletConfigDTO","currentlyInjectedWallets","getCurrentlyInjectedWallets","mergeWalletsLists","walletConfigDTOListToWalletConfigList","walletConfigDTO","walletConfigBase","walletConfig","deepLink","isWalletInjected","isInsideWalletBrowser","list1","list2","list1Item","list2Item","containsName","containsAppName","containsImage","containsAbout","containsPlatforms","sseBridge","jsBridge","WalletNotSupportFeatureError","checkSendTransactionSupport","supportsDeprecatedSendTransactionFeature","sendTransactionFeature","feature","maxMessages","requiredMessagesNumber","TonConnect","_wallet","statusChangeSubscriptions","statusChangeErrorSubscriptions","dappSettings","manifestUrl","walletsListCacheTTLMs","disableAutoPauseConnection","addWindowFocusAndBlurSubscriptions","account","connected","createProvider","createConnectRequest","bridgeConnectionType","embeddedWallet","storedConnectionType","getEmbeddedWallet","fromStorage","walletEventsListener","transaction","checkConnection","messages","validUntil","tx","network","chain","convertToRpcRequest","valid_until","isError","parseAndThrowError","convertFromRpcResponse","onWalletDisconnected","pauseConnection","unPauseConnection","onWalletConnected","onWalletConnectError","tonAccountItem","tonProofItem","walletStateInit","connectItems","tonProof","parseError","walletJSKey","noBounceableTag","testOnlyTag","toUserFriendlyAddress","hexAddress","testOnly","parseHexAddress","toByteMap","doubled","hexSubstring","CHAIN","CONNECT_ITEM_ERROR_CODES","dummy","Wrapper","NewTarget","NewTargetPrototype","Yallist","MAX","LENGTH","LENGTH_CALCULATOR","ALLOW_STALE","MAX_AGE","DISPOSE","NO_DISPOSE_ON_SET","LRU_LIST","CACHE","UPDATE_AGE_ON_GET","naiveLength","LRUCache","lc","stale","maxAge","dispose","noDisposeOnSet","updateAgeOnGet","mL","allowStale","mA","lC","hit","thisp","walker","tail","forEachStep","isStale","del","Entry","expiresAt","doUse","unshiftNode","removeNode","EmptyErrorImpl","EmptyError","_enable_super_gross_mode_that_will_cause_bad_things","WalletV4ContractR1","WalletV4ContractR2","ALL","LIST","Wallets","defaultVersion","hid","getHID","requestLedgerDevices","TransportWebHID","inputCallback","success","onInputReport","_disconnectEmitted","_emitDisconnect","framing","makeBlocks","sendReport","getReducedResult","reduceResponse","productId","onDisconnect","unsubscribed","JETTON_WALLET_CODE_HEX","JettonWallet","balance","jettonMinterAddress","defineBuiltInAccessor","INCORRECT_VALUE","simple","satisfies","included","ranges","simplified","bitmap","LETTERDASHNUMBER","safeRegexReplacements","makeSafeRegex","token","createToken","isGlobal","safe","RegExp","NUMERICIDENTIFIER","NUMERICIDENTIFIERLOOSE","NONNUMERICIDENTIFIER","PRERELEASEIDENTIFIER","PRERELEASEIDENTIFIERLOOSE","BUILDIDENTIFIER","MAINVERSION","PRERELEASE","BUILD","FULLPLAIN","MAINVERSIONLOOSE","PRERELEASELOOSE","LOOSEPLAIN","XRANGEIDENTIFIER","XRANGEIDENTIFIERLOOSE","GTLT","XRANGEPLAIN","XRANGEPLAINLOOSE","LONETILDE","tildeTrimReplace","LONECARET","caretTrimReplace","comparatorTrimReplace","arrayFromConstructorAndList","TypedArrayPrototype","compareFn","IndexSizeError","DOMStringSizeError","HierarchyRequestError","WrongDocumentError","InvalidCharacterError","NoDataAllowedError","NoModificationAllowedError","NotFoundError","NotSupportedError","InUseAttributeError","InvalidStateError","InvalidModificationError","NamespaceError","InvalidAccessError","ValidationError","TypeMismatchError","SecurityError","NetworkError","AbortError","URLMismatchError","QuotaExceededError","InvalidNodeTypeError","DataCloneError","emptyObject","isUndef","isDef","isTrue","isFalse","isPrimitive","_toString","isValidArrayIndex","makeMap","expectsLowerCase","isReservedAttribute","remove$2","camelizeRE","camelize","capitalize","hyphenateRE","hyphenate","polyfillBind","boundFn","nativeBind","no","looseEqual","isObjectA","isObjectB","isArrayA","isArrayB","getTime","keysA","keysB","looseIndexOf","once","hasChanged","SSR_ATTR","ASSET_TYPES","LIFECYCLE_HOOKS","optionMergeStrategies","silent","productionTip","devtools","performance","errorHandler","warnHandler","ignoredElements","keyCodes","isReservedTag","isReservedAttr","isUnknownElement","getTagNamespace","parsePlatformTagName","mustUseProp","_lifecycleHooks","unicodeRegExp","isReserved","def","bailRE","parsePath","hasProto","inBrowser","UA","isIE9","isIOS","_isServer","isFF","nativeWatch","watch","supportsPassive","isServerRendering","VUE_ENV","__VUE_DEVTOOLS_GLOBAL_HOOK__","isNative","Ctor","_Set","hasSymbol","currentInstance","setCurrentInstance","vm","_scope","VNode","elm","componentOptions","asyncFactory","ns","fnContext","fnOptions","fnScopeId","componentInstance","isStatic","isRootInsert","isComment","isCloned","isOnce","asyncMeta","isAsyncPlaceholder","createEmptyVNode","createTextVNode","cloneVNode","vnode","cloned","uid$2","pendingCleanupDeps","cleanupDeps","dep","subs","_pending","Dep","addSub","removeSub","depend","addDep","targetStack","pushTarget","popTarget","arrayProto","arrayMethods","methodsToPatch","inserted","ob","__ob__","observeArray","arrayKeys","NO_INIITIAL_VALUE","shouldObserve","toggleObserving","mockDep","Observer","shallow","mock","vmCount","__proto__","defineReactive","ssrMockReactivity","__v_skip","isRef","customSetter","childOb","dependArray","newVal","isReadonly","_isVue","shallowReactive","makeReactive","isReactive","isShallow","__v_isShallow","__v_isReadonly","isProxy","toRaw","observed","RefFlag","__v_isRef","ref$1","createRef","shallowRef","rawValue","proxyWithRefUnwrap","oldValue","WATCHER","WATCHER_CB","WATCHER_GETTER","WATCHER_CLEANUP","activeEffectScope","INITIAL_WATCHER_VALUE","doWatch","immediate","deep","_c","onTrack","onTrigger","cleanup","invokeWithErrorHandling","forceTrigger","isMultiSource","traverse","_isDestroyed","onCleanup","baseGetter_1","watcher","onStop","Watcher","lazy","noRecurse","run","newValue","post","queueWatcher","_isMounted","_preWatchers","$once","EffectScope","cleanups","currentEffectScope","fromParent","recordEffectScope","effect","resolveProvided","existing","_provided","parentProvides","$parent","normalizeEvent","capture","createFnInvoker","fns","invoker","updateListeners","oldOn","createOnceHandler","old","mergeVNodeHook","hookKey","oldHook","wrappedHook","extractPropsFromVNodeData","propOptions","attrs","altKey","checkProp","preserve","simpleNormalizeChildren","normalizeChildren","normalizeArrayChildren","isTextNode","nestedIndex","_isVList","renderList","renderSlot","fallbackRender","bindObject","nodes","scopedSlotFn","$scopedSlots","$slots","slot","$createElement","resolveFilter","resolveAsset","$options","isKeyNotMatch","expect","actual","checkKeyCodes","eventKeyCode","builtInKeyCode","eventKeyName","builtInKeyName","mappedKeyCode","bindObjectProps","asProp","isSync","domProps","camelizedKey","hyphenatedKey","$event","renderStatic","isInFor","_staticTrees","tree","staticRenderFns","_renderProxy","markStatic","markOnce","markStaticNode","bindObjectListeners","ours","resolveScopedSlots","hasDynamicKeys","contentHashKey","$stable","$key","bindDynamicKeys","baseObj","prependModifier","installRenderHelpers","_o","_n","_s","_l","_t","_q","_m","_f","_k","_v","_e","_u","_g","_d","_p","resolveSlots","slots","child","name_1","name_2","isWhitespace","normalizeScopedSlots","ownerVm","scopedSlots","normalSlots","prevScopedSlots","hasNormalSlots","isStable","$hasNormal","key_1","normalizeScopedSlot","key_2","proxyNormalSlot","initSetup","setup","_setupContext","createSetupContext","setupResult","_props","_setupState","__sfc","_setupProxy","_attrsProxy","syncSetupProxy","$attrs","_listenersProxy","$listeners","initSlotsProxy","$emit","expose","exposed","defineProxyAttr","_slotsProxy","syncSetupSlots","initRender","_vnode","parentVnode","$vnode","_parentVnode","renderContext","_renderChildren","createElement$1","parentData","_parentListeners","currentRenderingInstance","renderMixin","Vue","$nextTick","_render","handleError","ensureCtor","createAsyncPlaceholder","resolveAsyncComponent","baseCtor","errorComp","owner","owners","loading","loadingComp","owners_1","sync_1","timerLoading_1","timerTimeout_1","$on","forceRender_1","renderCompleted","$forceUpdate","reject_1","reason","res_1","getFirstComponentChild","SIMPLE_NORMALIZE","ALWAYS_NORMALIZE","normalizationType","alwaysNormalize","_createElement","is","pre","createComponent","applyNS","registerDeepBindings","force","class","hooks","errorCaptured","globalHandleError","_handled","timerFunc","isUsingMicroTask","flushCallbacks","copies","p_1","counter_1","textNode_1","createTextNode","characterData","createLifeCycle","hookName","injectHook","mergeLifecycleHook","onMounted","onBeforeUnmount","defineComponent","seenObjects","_traverse","seen","isFrozen","depId","target$1","uid$1","expOrFn","isRenderWatcher","_vm","_watcher","user","sync","dirty","deps","newDeps","depIds","newDepIds","expression","evaluate","_isBeingDestroyed","initEvents","_hasHookEvent","updateComponentListeners","add$1","remove$1","$off","createOnceHandler$1","onceHandler","oldListeners","eventsMixin","hookRE","i_1","cbs","activeInstance","setActiveInstance","prevActiveInstance","initLifecycle","$children","$root","$refs","_inactive","_directInactive","lifecycleMixin","hydrating","prevEl","$el","prevVnode","restoreActiveInstance","__patch__","__vue__","$destroy","callHook$1","mountComponent","updateComponent","watcherOptions","preWatchers","updateChildComponent","propsData","renderChildren","newScopedSlots","oldScopedSlots","hasDynamicScopedSlot","needsForceUpdate","prevVNode","prevListeners","propKeys","_propKeys","validateProp","isInInactiveTree","activateChildComponent","direct","deactivateChildComponent","activatedChildren","waiting","flushing","resetSchedulerState","currentFlushTimestamp","getNow","performance_1","createEvent","timeStamp","sortCompareFn","flushSchedulerQueue","activatedQueue","updatedQueue","callActivatedHooks","callUpdatedHooks","queueActivatedComponent","initProvide","provideOption","provide","provided","initInjections","resolveInject","inject","provideKey","provideDefault","FunctionalRenderContext","contextVm","_original","isCompiled","_compiled","needNormalization","injections","_scopeId","createFunctionalComponent","mergeProps","cloneAndMarkFunctionalResult","vnodes","getComponentName","__name","_componentTag","componentVNodeHooks","keepAlive","mountedNode","prepatch","createComponentInstanceForVnode","$mount","oldVnode","insert","hooksToMerge","_base","cid","resolveConstructorOptions","model","transformModel","functional","nativeOn","installComponentHooks","_isComponent","inlineTemplate","toMerge","_merged","mergeHook","f1","f2","strats","mergeData","recursive","toVal","fromVal","mergeDataOrFn","parentVal","childVal","instanceData","defaultData","dedupeHooks","mergeAssets","computed","defaultStrat","normalizeProps","normalizeInject","normalizeDirectives$1","dirs","directives","mergeOptions","extends","mixins","mergeField","strat","warnMissing","assets","camelizedId","PascalCaseId","absent","booleanIndex","getTypeIndex","stringIndex","getPropDefaultValue","prevShouldObserve","getType","functionTypeCheckRE","isSameType","expectedTypes","sharedPropertyDefinition","sourceKey","initState","initProps$1","initMethods","initComputed$1","initWatch","propsOptions","isRoot","computedWatcherOptions","watchers","_computedWatchers","isSSR","userDef","defineComputed","shouldCache","createComputedGetter","createGetterInvoker","createWatcher","$watch","stateMixin","dataDef","propsDef","$set","$delete","initMixin$1","_uid","initInternalComponent","_self","vnodeComponentOptions","superOptions","cachedSuperOptions","modifiedOptions","resolveModifiedOptions","extendOptions","components","modified","latest","sealed","sealedOptions","initUse","installedPlugins","_installedPlugins","install","initMixin","mixin","initExtend","Super","SuperId","cachedCtors","_Ctor","Sub","initProps","initComputed","Comp","initAssetRegisters","definition","_getComponentName","pattern","pruneCache","keepAliveInstance","pruneCacheEntry","patternTypes","KeepAlive","include","exclude","cacheVNode","vnodeToCache","keyToCache","created","destroyed","mounted","builtInComponents","initGlobalAPI","configDef","util","ssrContext","acceptValue","attr","isEnumeratedAttr","isValidContentEditableValue","convertEnumeratedValue","isFalsyAttrValue","isBooleanAttr","xlinkNS","isXlink","getXlinkProp","genClassForVnode","childNode","mergeClassData","renderClass","staticClass","dynamicClass","stringifyClass","stringifyArray","stringifyObject","stringified","namespaceMap","svg","math","isHTMLTag","isSVG","unknownElementCache","HTMLUnknownElement","HTMLElement","isTextInputType","selected","querySelector","tagName","multiple","createElementNS","createComment","insertBefore","newNode","referenceNode","removeChild","appendChild","nextSibling","setTextContent","textContent","setStyleScope","scopeId","nodeOps","registerRef","isRemoval","refValue","$refsValue","isFor","refInFor","_isString","_isRef","setSetupRef","emptyNode","sameVnode","sameInputType","typeA","typeB","createKeyToOldIdx","beginIdx","endIdx","createPatchFunction","backend","modules","emptyNodeAt","createRmCb","childElm","createElm","insertedVnodeQueue","parentElm","refElm","nested","ownerArray","setScope","createChildren","invokeCreateHooks","isReactivated","initComponent","reactivateComponent","pendingInsert","isPatchable","innerNode","activate","i_2","ancestor","addVnodes","startIdx","invokeDestroyHook","removeVnodes","ch","removeAndInvokeRemoveHook","rm","i_3","updateChildren","oldCh","newCh","removeOnly","oldKeyToIdx","idxInOld","vnodeToMove","oldStartIdx","newStartIdx","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","canMove","patchVnode","findIdxInOld","i_5","hydrate","postpatch","invokeInsertHook","i_6","isRenderedModule","inVPre","hasChildNodes","innerHTML","childrenMatch","firstChild","i_7","fullInvoke","isInitialPatch","isRealElement","nodeType","hasAttribute","oldElm","_leaveCb","patchable","i_8","i_9","insert_1","i_10","updateDirectives","oldDir","isCreate","isDestroy","oldDirs","normalizeDirectives","newDirs","dirsWithInsert","dirsWithPostpatch","oldArg","callHook","componentUpdated","callInsert","emptyModifiers","modifiers","getRawDirName","setupDef","rawName","baseModules","updateAttrs","inheritAttrs","oldAttrs","_v_attr_proxy","setAttr","removeAttributeNS","isInPre","baseSetAttr","setAttributeNS","__ieph","blocker_1","stopImmediatePropagation","updateClass","oldData","cls","transitionClass","_transitionClasses","_prevClass","RANGE_TOKEN","CHECKBOX_RADIO_TOKEN","normalizeEvents","event_1","useMicrotaskFix","attachedTimestamp_1","original_1","_wrapper","currentTarget","updateDOMListeners","svgContainer","updateDOMProps","oldProps","childNodes","strCur","shouldUpdateValue","checkVal","composing","isNotInFocusAndDirty","isDirtyWithModifiers","notInFocus","activeElement","_vModifiers","parseStyleText","cssText","listDelimiter","propertyDelimiter","normalizeStyleData","normalizeStyleBinding","staticStyle","bindingStyle","checkChild","styleData","emptyStyle","cssVarRE","importantRE","setProp","normalizedName","vendorNames","capName","updateStyle","oldStaticStyle","oldStyleBinding","normalizedStyle","oldStyle","newStyle","whitespaceRE","addClass","classList","removeClass","tar","resolveTransition","css","autoCssTransition","enterClass","enterToClass","enterActiveClass","leaveClass","leaveToClass","leaveActiveClass","hasTransition","TRANSITION","ANIMATION","transitionProp","transitionEndEvent","animationProp","animationEndEvent","ontransitionend","onwebkittransitionend","onanimationend","onwebkitanimationend","raf","nextFrame","addTransitionClass","transitionClasses","removeTransitionClass","whenTransitionEnds","expectedType","getTransitionInfo","propCount","ended","onEnd","transformRE","transitionDelays","transitionDurations","transitionTimeout","getTimeout","animationDelays","animationDurations","animationTimeout","hasTransform","delays","durations","toMs","enter","toggleDisplay","cancelled","_enterCb","appearClass","appearToClass","appearActiveClass","beforeEnter","afterEnter","enterCancelled","beforeAppear","appear","afterAppear","appearCancelled","transitionNode","isAppear","startClass","activeClass","toClass","beforeEnterHook","enterHook","afterEnterHook","enterCancelledHook","explicitEnterDuration","expectsCSS","userWantsControl","getHookArgumentsLength","pendingNode","isValidDuration","leave","beforeLeave","afterLeave","leaveCancelled","delayLeave","explicitLeaveDuration","performLeave","invokerFns","_enter","platformModules","vmodel","directive","_vOptions","setSelected","onCompositionStart","onCompositionEnd","prevOptions_1","curOptions_1","needReset","hasNoMatchingOption","actuallySetSelected","isMultiple","selectedIndex","initEvent","dispatchEvent","locateNode","originalDisplay","__vOriginalDisplay","unbind","platformDirectives","transitionProps","getRealChild","compOptions","extractTransitionData","placeholder","rawChild","hasParentTransition","isSameChild","oldChild","isNotTextNode","isVShowDirective","Transition","_leaving","oldRawChild","delayedLeave_1","moveClass","TransitionGroup","beforeMount","kept","prevChildren","rawChildren","transitionData","hasMove","callPendingCbs","recordPosition","applyTranslation","_reflow","offsetHeight","moved","el_1","WebkitTransform","transitionDuration","_moveCb","propertyName","_hasMove","cloneNode","newPos","oldPos","dx","dy","platformComponents","hilo","gtfn","ltefn","ltfn","ecomp","comparators","high","low","comparator","CODE_HEX","getLockedAmount","getVestingData","getWhitelist","vestingStartTime","vestingTotalDuration","unlockPeriod","cliffDuration","durationMod","cliffMod","vestingTotalAmount","vestingSenderAddress","vestingCell","createAddWhitelistBody","addresses","newCell","createInternalTransfer","createOutMsg","whitelistCell","IS_RIGHT","argumentsLength","memo","integer","applyMixin","beforeCreate","vuexInit","$store","devtoolHook","devtoolPlugin","_devtoolHook","targetState","replaceState","mutation","prepend","subscribeAction","deepCopy","forEachValue","partial","Module","rawModule","runtime","_children","_rawModule","rawState","prototypeAccessors","namespaced","addChild","getChild","hasChild","mutations","getters","forEachChild","forEachGetter","forEachAction","forEachMutation","ModuleCollection","rawRootModule","targetModule","newModule","getNamespace","this$1","rawChildModule","isRegistered","Store","strict","_committing","_actions","_actionSubscribers","_mutations","_wrappedGetters","_modules","_modulesNamespaceMap","_subscribers","_watcherVM","_makeLocalGettersCache","installModule","resetStoreVM","useDevtools","prototypeAccessors$1","genericSubscribe","resetStore","hot","oldVm","wrappedGetters","$$state","enableStrictMode","_withCommit","rootState","parentState","getNestedState","moduleName","makeLocalContext","namespacedType","registerMutation","registerAction","registerGetter","noNamespace","_payload","unifyObjectStyle","makeLocalGetters","gettersProxy","splitPos","localType","rootGetters","rawGetter","_Vue","registerModule","preserveState","unregisterModule","hasModule","hotUpdate","committing","mapState","normalizeNamespace","states","normalizeMap","getModuleByNamespace","vuex","mapMutations","mapGetters","mapActions","createNamespacedHelpers","isValidMap","helper","createLogger","collapsed","stateBefore","stateAfter","transformer","mutationTransformer","mut","actionFilter","actionTransformer","act","logMutations","logActions","logger","prevState","nextState","formattedTime","getFormattedTime","formattedMutation","startMessage","endMessage","formattedAction","groupCollapsed","groupEnd","getHours","getMinutes","getSeconds","getMilliseconds","repeat","times","maxLength","version1","version2","comparison","v1Higher","highVersion","lowVersion","highHasPre","lowHasPre","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","anObject","normalizeArray","allowAboveRoot","up","basename","matchedSlash","xs","resolvedPath","resolvedAbsolute","isAbsolute","trailingSlash","relative","fromParts","toParts","samePartsLength","outputParts","sep","dirname","hasRoot","extname","startDot","startPart","preDotState","$default","NAME","Constructor","NATIVE_ARRAY_BUFFER","Int8ArrayPrototype","Uint8ClampedArray","Uint8ClampedArrayPrototype","TYPED_ARRAY_TAG","TYPED_ARRAY_CONSTRUCTOR","NATIVE_ARRAY_BUFFER_VIEWS","opera","TYPED_ARRAY_TAG_REQUIRED","TypedArrayConstructorsList","Int16Array","Int32Array","Float32Array","Float64Array","BigIntArrayConstructorsList","BigInt64Array","BigUint64Array","aTypedArrayConstructor","KEY","ARRAY","TypedArrayConstructor","error2","exportTypedArrayStaticMethod","V8_PROTOTYPE_DEFINE_BUG","$defineProperty","ENUMERABLE","WRITABLE","Attributes","transfers","createTransferMessages","createInitExternalMessage","fromSecretKey","externalMessage","dummySignature","createExternalMessage","pipeFromArray","anInstance","DOMExceptionConstants","clearErrorStack","DOM_EXCEPTION","NativeDOMException","$DOMException","DOMExceptionPrototype","ERROR_HAS_STACK","DOM_EXCEPTION_HAS_STACK","BUGGY_DESCRIPTOR","FORCED_CONSTRUCTOR","DOMException","PolyfilledDOMException","PolyfilledDOMExceptionPrototype","constant","constantName","deployAndInstallPlugin","installPlugin","removePlugin","isPluginInstalled","getPluginsList","pluginWc","writeInt","isInstall","pluginAddress","_setPlugin","minVersion","minver","compver","$findLastIndex","AxiosError","captureStackTrace","description","fileName","lineNumber","columnNumber","status","customProps","axiosError","ReflectOwnKeys","ReflectApply","ProcessEmitWarning","warning","NumberIsNaN","EventEmitter","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","_getMaxListeners","_addListener","newListener","warned","emitter","onceWrapper","fired","wrapFn","_onceWrap","wrapped","unwrap","evlistener","unwrapListeners","arrayClone","listenerCount","spliceOne","errorListener","eventTargetAgnosticAddListener","addErrorHandlerIfEventEmitter","wrapListener","setMaxListeners","getMaxListeners","doError","prependListener","prependOnceListener","originalListener","removeAllListeners","rawListeners","eventNames","__defProp","__defProps","__getOwnPropDescs","__getOwnPropSymbols","__hasOwnProp","__propIsEnum","__defNormalProp","__spreadValues","__spreadProps","__publicField","__async","__this","__arguments","e2","throw","sharedConfig","setHydrateContext","equalFn","$PROXY","$TRACK","signalOptions","equals","runEffects","runQueue","STALE","PENDING","UNOWNED","owned","NO_INIT","Owner","SuspenseContext","Transition$1","Listener","Updates","Effects","ExecCount","createRoot","detachedOwner","unowned","updateFn","untrack","cleanNode","runUpdates","createSignal","s2","observerSlots","value2","writeSignal","readSignal","createComputed","createComputation","updateComputation","createRenderEffect","createEffect","runUserEffects","createMemo","createResource","pSource","pFetcher","pOptions","fetcher","pr","initP","dynamic","contexts","setValue","initialValue","setError","track","setState","ssrLoadFrom","load","loadEnd","onHydrated","queueMicrotask","completeLoad","decrement","refetching","lookup2","castError","refetch","mutate","batch","prevInput","onMount","getListener","getOwner","Provider","useContext","children2","resolveChildren","runningTransition","updates","lookUpstream","sSlot","sourceSlots","isComp","o2","TransitionRunning","disposed","tState","pure","markDownstream","runComputation","nextValue","updatedAt","runTop","suspense","inFallback","ancestors","completeUpdates","userLength","ignore","n2","results","FALLBACK","mapArray","mapFn","mapped","disposers","indexes","newItems","newIndices","newIndicesNext","temp","tempdisposers","tempIndexes","newEnd","newLen","disposer","mapper","trueFn","propTraps","resolveSource","i3","splitProps","blocked","flat","For","Show","strictEqual","keyed","when","Switch","conditions","evalConditions","conds","cond","Match","booleans","Properties","ChildProperties","Aliases","className","htmlFor","PropAliases","formnovalidate","ismap","nomodule","playsinline","readonly","DelegatedEvents","SVGElements","SVGNamespace","xlink","xml","reconcileArrays","bLength","aEnd","bEnd","aStart","bStart","t2","replaceChild","$$EVENTS","dispose2","template$1","html","delegateEvents","document2","eventHandler","handlerFn","classKeys","prevKeys","toggleClassKey","classValue","nodeStyle","removeProperty","spread","skipChildren","prevProps","insertExpression","accessor","marker","skipRef","assignProp","getNextElement","template2","getHydrationKey","toPropertyName","nameLen","toggle","isCE","isProp","isChildProp","nodeName","composedPath","querySelectorAll","elem","nodeValue","cancelBubble","_$host","unwrapArray","multi","cleanChildren","currentArray","normalizeIncomingArray","appendNodes","Node","unwrap2","replacement","isParent","SVG_NAMESPACE","Portal","useShadow","mount","renderPortal","HTMLHeadElement","clean","setClean","renderRoot","attachShadow","Dynamic","others","isSvg","THEME","THEME2","_goober","e3","t3","u2","t4","e4","ThemeContext","ThemeProvider","theme","useTheme","makeStyled","Styled","withTheme","pClass","className2","newProps","htmlProps","createTag","as","styled","createGlobalStyles","globalStylesTag","disableScrollClass","usingMouseClass","GlobalStyles","Styles","hexToRgb","bigint","rgba","toPx","_InMemoryStorage","_a2","TonConnectUIError","openLink","href","openLinkBlank","getSystemTheme","matchMedia","LIGHT","DARK","subscribeToThemeChange","addQueryParameter","addReturnStrategy","strategy","returnStrategy","isInTWA","twaReturnUrl","newUrl","lastParam","disableScroll","documentElement","scrollHeight","scrollTop","enableScroll","scrollTo","fixMobileSafariActiveTransition","defineStylesRoot","customElements","preloadImages","images","img","Image","getWindow$1","getUserAgent","getResult","osName","os","browserName","redirectToTelegram","TelegramWebviewProxy","WalletInfoStorage","storageKey","walletInfoString","PreferredWalletStorage","LastSelectedWalletInfoStorage","walletsModalState","setWalletsModalState","closeReason","getWalletsModalIsOpened","lastSelectedWalletInfoStorage","lastSelectedWalletInfo","_setLastSelectedWalletInfo","getLastSelectedWalletInfo","setLastSelectedWalletInfo","removeLastSelectedWalletInfo","setAction","common$1","openWallet","copyLink","linkCopied","copied","yourWallet","retry","mobile","browserExtension","desktop","button$1","connectWallet","dropdown","notifications$1","confirm","transactionSent","transactionCanceled","walletItem$1","walletOn","recent","installed","popular","walletModal$1","mobileUniversalModal","connectYourWallet","openWalletOnTelegramOrSelect","openWalletOnTelegram","scan","desktopUniversalModal","availableWallets","mobileConnectionModal","showQR","scanQR","continueIn","connectionDeclined","desktopConnectionModal","continueInExtension","dontHaveExtension","getWallet","continueOnDesktop","infoModal","whatIsAWallet","secureDigitalAssets","walletProtects","controlIdentity","manageIdentity","effortlessCryptoTransactions","easilySend","getAWallet","actionModal$1","confirmTransaction","en","button","notifications","walletItem","walletModal","actionModal","ru","i18nDictionary","parseDictionary","dictionary","refSymbol","subDictionary","ConnectorContext","$RAW","$NODE","$NAME","wrap$1","proxyTraps$1","desc","isWrappable","unwrapped","getDataNodes","getDataNode","createDataNode","proxyDescriptor$1","trackSelf","internal","tracked","deleting","mergeStoreNode","updateArray","updatePath","traversed","partType","by","createStore","unwrappedStore","wrappedStore","setStore","defaultLightColorsSet","white","connectButton","background","foreground","accent","telegramButton","icon","primary","secondary","tertiary","tint","qr","defaultDarkColorsSet","prot","defaultOptions","overwriteMerge","sourceArray","__","themeState","setThemeState","themeColorsMappingDefault","themeCustomColors","setTheme","colorsSet","setBorderRadius","setColors","ImagePlaceholder","imgRef","setImage","alt","r$","_ref$","tablet","isDevice","window2","innerWidth","media","mediaTouch","mediaNotTouch","borders$5","none","scaleValues","ButtonStyled$1","leftIcon","rightIcon","appearance","useDataAttributes","dataAttrs","Button","onMouseEnter","onMouseLeave","s1","set1","set2","onBeforeEnter","onEnter","onAfterEnter","onBeforeExit","onExit","onAfterExit","classnames","exitActiveClass","exitClass","exitToClass","enterTransition","el2","endTransition","enterActiveClasses","enterToClasses","exitTransition","enterClasses","exitClasses","exitActiveClasses","exitToClasses","getRect","parentRect","combined","setCombined","comb","new","c3","moveClasses","clickOutside$1","escPressed","onKeyPress","blur","androidBackHandler$1","isEnabled","onClose","userOSIsAndroid","history","pushState","ROUTE_STATE","popstateHandler","preventDefault","ROUTE_STATE_KEY","back","_tmpl$$v","rotationDegrees","ArrowIcon","Svg","props2","svgDirection","xmlns","viewBox","_el$","_tmpl$$u","CloseIcon","_el$2","IconButtonStyled","IconButton","QuestionIcon","borders$4","ModalBackgroundStyled","ModalWrapperClass","ModalBodyStyled","CloseButtonStyled","ModalFooterStyled","QuestionButtonStyled","AnimationTimelineNoop","_AnimationNoop","_instance","_listener","_event","_callback","_playbackRate","AnimationNoop","keyframes","_tmpl$$t","clickOutside","keyPressed","androidBackHandler","Modal","opened","firstElementChild","backgroundAnimation","contentAnimation","finished","enableAndroidBackHandler","onClickQuestion","TonConnectBrand","wrapperBorderRadius","sliderBorderRadius","TabBarStyled","SliderStyled","InputStyled","LabelStyled","isActive","TabBar","groupName","selectedTabIndex","onInput","onSelectedTabIndexChange","tab1","tab2","backgroundBorders","imageBorders","qrNormalSize","imgSizeDefault","picSizeDefault","qrPaddingTop","CopyIconButton","QrCodeBackground","QrCodeWrapper$2","ImageBackground","ImageStyled$3","CopiedBoxStyled","qrcode$1","qrcode2","qrcode3","typeNumber","errorCorrectionLevel","PAD0","PAD1","_typeNumber","_errorCorrectionLevel","QRErrorCorrectionLevel","_moduleCount","_dataCache","_dataList","makeImpl","maskPattern","moduleCount","setupPositionProbePattern","setupPositionAdjustPattern","setupTimingPattern","setupTypeInfo","setupTypeNumber","createData","mapData","getBestMaskPattern","minLostPoint","lostPoint","QRUtil","getLostPoint","getPatternPosition","getBCHTypeNumber","getBCHTypeInfo","bitIndex","byteIndex","maskFunc","getMaskFunction","dark","createBytes","rsBlocks","maxDcCount","maxEcCount","dcdata","ecdata","dcCount","dataCount","ecCount","totalCount","getBuffer","rsPoly","getErrorCorrectPolynomial","rawPoly","qrPolynomial","getLength","modPoly","modIndex","getAt","totalCodeCount","typeNumber2","errorCorrectionLevel2","dataList","QRRSBlock","getRSBlocks","qrBitBuffer","put","getMode","getLengthInBits","totalDataCount","putBit","addData","newData","qrNumber","qrAlphaNum","qr8BitByte","qrKanji","isDark","getModuleCount","make","createTableTag","cellSize","qrHtml","createSvgTag","mc","mr","qrSvg","scalable","escapeXml","createDataURL","min2","max2","createImgTag","escaped","_createHalfASCII","blocksLastLineNoMargin","ascii","createASCII","renderTo2dContext","stringToBytesFuncs","createStringToBytes","unicodeData","numChars","unicodeMap","bin","base64DecodeInputStream","unicodeMap2","unknownChar","QRMode","MODE_NUMBER","MODE_ALPHA_NUM","MODE_8BIT_BYTE","MODE_KANJI","QRMaskPattern","PATTERN000","PATTERN001","PATTERN010","PATTERN011","PATTERN100","PATTERN101","PATTERN110","PATTERN111","PATTERN_POSITION_TABLE","G15","G18","G15_MASK","getBCHDigit","digit","errorCorrectLength","multiply","QRMath","gexp","qrcode4","sameCount","darkCount","EXP_TABLE","LOG_TABLE","_num","_num2","num2","glog","RS_BLOCK_TABLE","qrRSBlock","_this2","getRsBlockTable","rsBlock","_buffer","bufIndex","_mode","data2","strToNum","chatToNum","getCode","_bytes","byteArrayOutputStream","writeByte","base64EncodeOutputStream","_buflen","_base64","writeEncoded","padlen","_str","_pos","gifImage","_width","_height","writeString","writeShort","lzwMinCodeSize","raster","getLZWRaster","bitOutputStream","_out","_bitLength","_bitBuffer","clearCode","endCode","lzwTable","byteOut","bitOut","_map","getPixel","gif","setPixel","toUTF8Array","utf8","charcode","qrcode","copyToClipboard","clipboard","writeText","fallbackCopyTextToClipboard","textArea","focus","select","execCommand","_tmpl$$s","QRCode","qrCodeCanvasRef","qrCodeWrapperRef","imageRef","copyButtonOpened","setCopyButtonOpened","picSize","setPicSize","sourceUrl","qrSize","imgSize","imgOffset","timeoutId","onCopyClick","_ref$2","_ref$3","disableCopy","SuccessIcon","Text","translationKey","CopyLightIcon","deepReadObject","template","createI18nContext","lang","language","setLocale","dict","setDict","lang2","I18nContext","useI18n","TextStyled$3","fontWeight","textRef","translationValues","ImageContainer","ImageStyled$2","WalletImage","borders$3","badgeBorders","WalletItemStyled","ImageStyled$1","BadgeStyled","StyledText","StyledSecondLine","colorPrimary","WalletItem","badgeUrl","secondLine","secondLineColorPrimary","H1Styled$9","H1","H2Styled$5","H2","H3Styled$1","h3","H3","_tmpl$$r","LongArrowIcon","_p$","_v$","_v$2","_tmpl$$q","TonIcon","_tmpl$$p","_tmpl$2$3","_tmpl$3$2","_c$","_el$3","_el$4","_v$3","_c$2","_el$5","_el$6","_el$7","_v$4","_v$5","_v$6","_el$8","_el$9","_el$10","_v$7","_v$8","_v$9","_tmpl$$o","_tmpl$2$2","_tmpl$3$1","ErrorIcon","_tmpl$$n","_tmpl$2$1","_tmpl$3","LoaderIcon","rotateAnimation","svgClass","_tmpl$$m","_tmpl$$l","_tmpl$$k","BrowserIcon","_tmpl$$j","MobileIcon","_tmpl$$i","DesktopIcon","_tmpl$$h","RetryIcon","_tmpl$$g","LinkIcon","_tmpl$$f","WalletIcon","_tmpl$$e","SecurityIcon","_tmpl$$d","PersonalityIcon","_tmpl$$c","SwapIcon","_tmpl$$b","AtWalletIcon","_tmpl$$a","DoneIcon","_tmpl$$9","_tmpl$$8","QRIcon","containerBorders","walletBorders","FourWalletsCard","FourWalletsImage","FourWalletsItem","labelLine1","labelLine2","AT_WALLET_APP_NAME","IMG","TON","TG","WalletLabeledItem","walletsSecondLine","isPreferred","ScrollContainerStyled","ScrollDivider","isShown","windowHeight","setWindowHeight","innerHeight","isMobile","setIsMobile","updateIsMobile","ScrollContainer","scrolled","setScrolled","onScroll","AStyled","Link","attributes","blank","rel","TonConnectUiContext","_tmpl$$7","CopyIcon","_tmpl$$6","DisconnectIcon","hoverBorders$1","dropdownBorders","AccountButtonDropdownStyled","UlStyled$1","ul","MenuButtonStyled","_tmpl$$5","MenuItemText","AccountButtonDropdown","tonConnectUi","isCopiedShown","setIsCopiedShown","onCopy","userFriendlyAddress","TESTNET","borders$2","NotificationStyled","NotificationContentStyled","TextStyled$2","LoaderIconStyled$1","ConfirmOperationNotification","tonConnectUI","ErrorIconStyled$2","ErrorTransactionNotification","SuccessIconStyled","SuccessTransactionNotification","NotificationClass","defaultConfig","latestAction","setLatestAction","useOpenedNotifications","openedNotifications","setOpenedNotifications","timeoutIds","setTimeoutIds","action2","showNotification","openedNotifications2","timeoutIds2","_tmpl$$4","Notifications","openedNotification","AccountButtonStyled","DropdownButtonStyled","LoaderButtonStyled","LoaderIconStyled","DropdownContainerStyled","DropdownStyled","NotificationsStyled","getSide","placement","getAlignment","getMainAxisFromPlacement","getLengthFromAxis","computeCoordsFromPlacement","_ref","commonX","commonY","mainAxis","commonAlign","side","isVertical","coords","computePosition$1","middleware","platform2","validMiddleware","isRTL","NODE_ENV","getElementRects","statefulPlacement","middlewareData","resetCount","nextX","nextY","initialPlacement","rectToClientRect","_node$ownerDocument","getComputedStyle$1","getNodeName","isNode","uaString","getUAString","uaData","userAgentData","brands","brand","isHTMLElement","isElement","isShadowRoot","ShadowRoot","OwnElement","isOverflowElement","overflow","overflowX","overflowY","isTableElement","isContainingBlock","isFirefox","backdropFilter","WebkitBackdropFilter","perspective","willChange","contain","isLayoutViewport","isLastTraversableNode","FALLBACK_SCALE","domElement","contextElement","offsetWidth","includeScale","isFixedStrategy","offsetParent","_win$visualViewport$o","_win$visualViewport","_win$visualViewport$o2","_win$visualViewport2","clientRect","win","addVisualOffsets","visualViewport","offsetTop","getDocumentElement","getNodeScroll","scrollLeft","pageXOffset","pageYOffset","getWindowScrollBarX","getRectRelativeToOffsetParent","isOffsetParentAnElement","scroll","offsetRect","clientLeft","clientTop","getParentNode","assignedSlot","getTrueOffsetParent","getContainingBlock","currentNode","getOffsetParent","getDimensions","convertOffsetParentRelativeRectToViewportRelativeRect","getViewportRect","layoutViewport","getDocumentRect","_element$ownerDocumen","scrollWidth","getNearestOverflowAncestor","getOverflowAncestors","scrollableAncestor","isBody","getInnerBoundingClientRect","getClientRectFromClippingAncestor","clippingAncestor","getClippingElementAncestors","cachedResult","currentContainingBlockComputedStyle","elementIsFixed","computedStyle","containingBlock","shouldDropCurrentNode","getClippingRect","rootBoundary","elementClippingAncestors","clippingAncestors","firstClippingAncestor","clippingRect","accRect","getOffsetParentFn","getDimensionsFn","getClientRects","autoUpdate","ancestorScroll","_ancestorScroll","ancestorResize","elementResize","frameId","initialUpdate","prevRefRect","frameLoop","nextRefRect","_observer","computePosition","mergedOptions","platformWithCache","whileElementsMounted","_tmpl$$3","AccountButton","connector","isOpened","setIsOpened","setAccount","restoringProcess","setRestoringProcess","dropDownRef","setFloating","anchor","setAnchor","normalizedAddress","connectionRestored","onStatusChange","clickToButton","clickToDropdown","openModal","importNode","_$owner","StyledModal","H1Styled$8","LoaderContainerStyled","appState","setAppState","buttonRootId","walletsListConfiguration","uniq","mergeConcat","idKey","array1","array2","item1","item2","uiWalletToWalletInfo","uiWallet","applyWalletsListConfiguration","configuration","includeWallets","supportsDesktop","supportsMobile","supportsExtension","eqWalletName","wallet1","DesktopSelectWalletModalStyled","H1Styled$7","WalletsUl","StyledIconButton$3","WalletLabeledItemStyled","_tmpl$$2","AllWalletsListModal","onBack","onSelect","tgButtonBorders","tgIconBorders","DesktopConnectionModalStyled","BodyStyled$1","QRCodeStyled$1","H1Styled$6","H2Styled$4","StyledIconButton$2","ButtonsContainerStyled$1","BottomButtonsContainerStyled","FooterButton$1","LoaderStyled$1","ErrorIconStyled$1","BodyTextStyled$1","TgButtonStyled","TgImageStyled","Translation","DesktopConnectionModal","setMode","connectionErrored","setConnectionErrored","setUniversalLink","additionalRequest","onClickMobile","openMethod","onClickDesktop","onClickTelegram","onClickExtension","onBackClick","InfoModalStyled","StyledIconButton$1","H1Styled$5","InfoBlock","InfoBlockIconClass","H3Styled","TextStyled$1","ButtonsBlock","LINKS","GET_A_WALLET","InfoModal","MobileConnectionModalStyled","BodyStyled","H1Styled$4","StyledIconButton","FooterStyled","ImageStyled","FooterButton","LoaderStyled","ErrorIconStyled","BodyTextStyled","ButtonsContainerStyled","H1Styled$3","H2Styled$3","QrCodeWrapper$1","MobileConnectionQR","MobileConnectionModal","setShowQR","onRetry","onOpenQR","onCloseQR","borders$1","tgBorders","UlStyled","OtherOptionButton","li","Divider","IconContainer","H1Styled$2","H2Styled$2","TelegramButtonStyled","TGImageStyled","StyledLeftActionButton","H1Styled$1","H2Styled$1","QrCodeWrapper","MobileUniversalQR","_tmpl$$1","_tmpl$2","MobileUniversalModal","shouldShowMoreButton","walletsBridges","getUniversalLink","onSelectUniversal","onSelectTelegram","atWallet","walletLink","onSelectAllWallets","hoverBorders","DesktopUniversalModalStyled","H2Styled","H2AvailableWalletsStyled","QRCodeStyled","WalletsContainerStyled","disableEventsAnimation","_tmpl$","DesktopUniversalModal","popupOpened","setPopupOpened","WalletsModal","fetchedWalletsList","selectedWalletInfo","setSelectedWalletInfo","selectedTab","setSelectedTab","infoTab","setInfoTab","walletsList2","injectedWallets","notInjectedWallets","preferredWalletAppName","preferredWallet","someWalletsWithSameName","additionalRequestLoading","connectRequestParameters","ActionModalStyled","H1Styled","TextStyled","ButtonStyled","ActionModal","onOpenWallet","currentAction","headerTranslationKey","headerTranslationValues","textTranslationKey","textTranslationValues","showButton","ConfirmTransactionModal","TransactionCanceledModal","TransactionSentModal","ActionsModal","App","translations","widgetController","openWalletsModal","closeWalletsModal","clearAction","getSelectedWalletInfo","removeSelectedWalletInfo","renderApp","WalletsModalManager","setConnectRequestParametersCallback","consumers","consumer","connectEmbeddedWallet","connectExternalWallet","onChange","onStateChange","TransactionModalManager","TonConnectUI","modal","connectRequestParametersCallback","transactionModal","rootId","normalizeWidgetRoot","widgetRootId","subscribeToWalletChange","walletInfoStorage","removeWalletInfo","uiOptions","uiPreferences","preferredWalletName","preferredWalletStorage","getPreferredWalletAppName","checkButtonRootExist","actionsConfiguration","systemThemeChangeUnsubscribe","_a3","_b2","lastSelectedWalletInfo2","getWalletInfo","notifications2","modals","skipRedirectToWallet","getModalsAndNotificationsConfiguration","userOSIsIos","shouldSkipRedirectToWallet","abortController","AbortController","onTransactionModalStateChange","abort","waitForSendTransaction","abortSignal","signal","waitForWalletConnection","ignoreErrors","onModalStateChange","aborted","onStatusChangeHandler","onErrorsHandler","onTransactionHandler","transaction2","sendTransaction","updateWalletInfo","setPreferredWalletAppName","fullLastSelectedWalletInfo","setWalletInfo","storedWalletInfo","rootElement","allActions","gf","randombytes","_0","_9","gf0","gf1","_121665","D2","ts64","vn","xi","yi","crypto_verify_16","crypto_verify_32","core_salsa20","j0","j1","j2","j3","j4","j5","j6","j7","j8","j9","j10","j11","j12","j13","j14","j15","x0","x4","x5","x6","x7","x8","x9","x10","x11","x12","x13","x14","x15","core_hsalsa20","crypto_core_salsa20","inp","crypto_core_hsalsa20","sigma","crypto_stream_salsa20_xor","cpos","mpos","crypto_stream_salsa20","crypto_stream","sn","crypto_stream_xor","poly1305","t0","t1","t5","t6","t7","leftover","fin","crypto_onetimeauth","outpos","finish","crypto_onetimeauth_verify","hpos","crypto_secretbox","crypto_secretbox_open","set25519","car25519","sel25519","pack25519","neq25519","par25519","unpack25519","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","t18","t19","t20","t21","t22","t23","t24","t25","t26","t27","t28","t29","t30","b10","b11","b12","b13","b14","b15","inv25519","pow2523","crypto_scalarmult","x32","x16","crypto_scalarmult_base","crypto_box_keypair","crypto_box_beforenm","d0","d3","d4","d5","d6","d7","d8","d9","hibit","h0","h4","h5","h6","h7","h8","h9","r0","r3","r4","r5","r6","r7","r8","r9","mac","macpos","want","crypto_box_afternm","crypto_box_open_afternm","crypto_box","crypto_box_open","crypto_hashblocks_hl","hh","hl","th","wh","wl","crypto_hash","cswap","pack","ty","zi","scalarmult","scalarbase","crypto_sign_keypair","pk","sk","seeded","modL","crypto_sign","sm","smlen","unpackneg","chk","den","den2","den4","den6","crypto_sign_open","crypto_secretbox_KEYBYTES","crypto_secretbox_NONCEBYTES","crypto_secretbox_ZEROBYTES","crypto_secretbox_BOXZEROBYTES","crypto_scalarmult_BYTES","crypto_scalarmult_SCALARBYTES","crypto_box_PUBLICKEYBYTES","crypto_box_SECRETKEYBYTES","crypto_box_BEFORENMBYTES","crypto_box_NONCEBYTES","crypto_box_ZEROBYTES","crypto_box_BOXZEROBYTES","crypto_sign_BYTES","crypto_sign_PUBLICKEYBYTES","crypto_sign_SECRETKEYBYTES","crypto_sign_SEEDBYTES","crypto_hash_BYTES","checkLengths","checkBoxLengths","checkArrayTypes","lowlevel","randomBytes","secretbox","nonce","keyLength","nonceLength","overheadLength","scalarMult","scalarLength","groupElementLength","publicKeyLength","secretKeyLength","sharedKeyLength","signedMsg","mlen","sig","seedLength","signatureLength","hashLength","setPRNG","QUOTA","getOwnPropertyDescriptorModule","exceptions","pushNode","forEachReverse","getReverse","mapReverse","reduceReverse","toArrayReverse","sliceReverse","deleteCount","arrayWith","isBigIntArray","toBigInt","PROPER_ORDER","valueOf","actualValue","compareLoose","uncurryThisAccessor","aPossiblePrototype","CORRECT_SETTER","subset","dom","sawNonNull","OUTER","simpleSub","simpleDom","isSub","simpleSubset","minimumVersionWithPreRelease","minimumVersion","eqSet","gtltComp","higher","lower","hasDomLT","hasDomGT","higherGT","lowerLT","needDomLTPre","needDomGTPre","SHARED","validateBase64","decodeUTF8","encodeUTF8","encodeBase64","decodeBase64","NFT_SALE_HEX_CODE","marketplaceAddress","nftAddress","fullPrice","feesCell","marketplaceFee","royaltyAmount","nftOwnerAddress","closed_1","gtr","CommonProps","required","datasetIdKey","updateMode","Props","compatProps","internals","toRawIfProxy","cloneProxy","setOptions","nextOptions","setLabels","currentData","nextLabels","setDatasets","nextDatasets","addedDatasets","nextDataset","currentDataset","cloneData","nextData","param","canvasRef","chartRef","renderChart","clonedData","proxiedData","Chart$1","destroyChart","param1","nextOptionsProxy","nextDataProxy","prevOptionsProxy","prevDataProxy","shouldUpdate","prevOptions","prevLabels","prevDatasets","createTypedChart","registerables","reforwardRef","Line","V8_VERSION","NATIVE_WEAK_MAP","OBJECT_ALREADY_INITIALIZED","getterFor","metadata","facade","STATE","_toPrimitive","typeName","parseObject","contentBytes","exit_code","parseResponseStack","makeArg","FilterOperator","FilterSubscriber","$Symbol","receiveAPDU","rawStream","notifiedIndex","notifiedDataLength","notifiedData","DisconnectedDevice","parseRange","isNullSet","isAny","memoOpts","memoKey","hr","HYPHENRANGELOOSE","HYPHENRANGE","hyphenReplace","COMPARATORTRIM","TILDETRIM","CARETTRIM","rangeList","parseComparator","replaceGTE0","rangeMap","thisComparators","isSatisfiable","rangeComparators","thisComparator","rangeComparator","testSet","LRU","remainingComparators","testComparator","otherComparator","replaceCarets","replaceTildes","replaceXRanges","replaceStars","isX","replaceTilde","TILDELOOSE","TILDE","replaceCaret","CARETLOOSE","CARET","replaceXRange","XRANGELOOSE","XRANGE","gtlt","xM","xm","anyX","STAR","GTE0PRE","GTE0","incPr","$0","fM","fm","fp","fpr","tM","tm","tpr","tb","allowed","internalRe","constants","identifiers","rsort","maxSatisfying","simplifyRange","tokens","getDescriptor","EXISTS","PROPER","getDomain","getAuctionInfo","getLastFillUpTime","maxBidAddress","maxBidAmount","auctionEndTime","createChangeContentEntryBody","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","rt","LN2","toDate","argStr","constructFrom","getDefaultOptions","getInternalDefaultOptions","formatDistanceLocale","lessThanXSeconds","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","formatDistance","tokenValue","addSuffix","buildFormatLongFn","defaultWidth","dateFormats","full","long","medium","short","timeFormats","dateTimeFormats","formatLong","dateTime","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","formatRelative","_baseDate","buildLocalizeFn","valuesArray","formattingValues","defaultFormattingWidth","argumentCallback","eraValues","narrow","abbreviated","wide","quarterValues","monthValues","dayValues","dayPeriodValues","am","pm","midnight","noon","morning","afternoon","evening","night","formattingDayPeriodValues","ordinalNumber","dirtyNumber","rem100","localize","era","dayPeriod","buildMatchFn","matchPattern","matchPatterns","defaultMatchWidth","matchResult","matchedString","parsePatterns","defaultParseWidth","valueCallback","buildMatchPatternFn","parsePattern","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","any","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","enUS","weekStartsOn","firstWeekContainsDate","dateLongFormatter","timeLongFormatter","dateTimeLongFormatter","datePattern","timePattern","dateTimeFormat","longFormatters","dayOfYearTokenRE","weekYearTokenRE","throwTokens","isProtectedDayOfYearToken","isProtectedWeekYearToken","warnOrThrowProtectedError","_message","transpose","fromDate","setFullYear","getFullYear","getMonth","getDate","setHours","TIMEZONE_UNIT_PRIORITY","Setter","validate","_utcDate","ValueSetter","validateValue","priority","subPriority","DateToSystemTimezoneSetter","timestampIsSet","Parser","dateString","EraParser","millisecondsInWeek","millisecondsInDay","millisecondsInMinute","millisecondsInHour","millisecondsInSecond","numericPatterns","dayOfYear","hour23h","hour24h","hour11h","hour12h","singleDigit","twoDigits","threeDigits","fourDigits","anyDigitsSigned","singleDigitSigned","twoDigitsSigned","threeDigitsSigned","fourDigitsSigned","timezonePatterns","basicOptionalMinutes","basic","basicOptionalSeconds","extendedOptionalSeconds","mapValue","parseFnResult","parseNumericPattern","parseTimezonePattern","hours","minutes","seconds","parseAnyDigitsSigned","parseNDigits","parseNDigitsSigned","dayPeriodEnumToHours","normalizeTwoDigitYear","twoDigitYear","currentYear","isCommonEra","absCurrentYear","rangeEnd","rangeEndCentury","isPreviousCentury","isLeapYearIndex","YearParser","isTwoDigitYear","normalizedTwoDigitYear","startOfWeek","_ref2","_ref3","_options$weekStartsOn","_options$locale","_defaultOptions$local","getDay","setDate","getWeekYear","_options$firstWeekCon","firstWeekOfNextYear","startOfNextYear","firstWeekOfThisYear","startOfThisYear","LocalWeekYearParser","startOfISOWeek","ISOWeekYearParser","_flags","firstWeekOfYear","ExtendedYearParser","QuarterParser","setMonth","StandAloneQuarterParser","MonthParser","StandAloneMonthParser","startOfWeekYear","firstWeek","getWeek","setWeek","LocalWeekParser","getISOWeekYear","fourthOfJanuaryOfNextYear","fourthOfJanuaryOfThisYear","startOfISOWeekYear","fourthOfJanuary","getISOWeek","setISOWeek","ISOWeekParser","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP_YEAR","DateParser","isLeapYear","DayOfYearParser","addDays","setDay","currentDay","dayIndex","DayParser","LocalDayParser","wholeWeekDays","StandAloneLocalDayParser","getISODay","setISODay","ISODayParser","AMPMParser","AMPMMidnightParser","DayPeriodParser","Hour1to12Parser","isPM","Hour0to23Parser","Hour0To11Parser","Hour1To24Parser","MinuteParser","setMinutes","SecondParser","setSeconds","FractionOfSecondParser","setMilliseconds","getTimezoneOffsetInMilliseconds","utcDate","UTC","setUTCFullYear","ISOTimezoneWithZParser","ISOTimezoneParser","TimestampSecondsParser","TimestampMillisecondsParser","parsers","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","notWhitespaceRegExp","unescapedLatinCharacterRegExp","dateStr","formatStr","referenceDate","_ref4","_options$locale2","_ref5","_ref6","_ref7","_options$locale3","_defaultOptions$local2","defaultLocale","subFnOptions","setters","firstCharacter","longFormatter","usedTokens","useAdditionalWeekYearTokens","useAdditionalDayOfYearTokens","incompatibleTokens","incompatibleToken","usedToken","fullToken","cleanEscapedString","uniquePrioritySetters","setterArray","parseISO","_options$additionalDi","additionalDigits","dateStrings","splitDateString","parseYearResult","parseYear","parseDate","restDateString","parseTime","timezone","dirtyDate","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","parseTimezone","patterns","dateTimeDelimiter","timeZoneDelimiter","dateRegex","timeRegex","timezoneRegex","timeString","regex","captures","century","isWeekDate","parseDateUnit","dayOfWeek","validateWeekDate","dayOfISOWeekYear","validateDate","validateDayOfYearDate","parseTimeUnit","validateTime","timezoneString","validateTimezone","isoWeekYear","fourthOfJanuaryDay","getUTCDay","setUTCDate","daysInMonths","_year","_hours","startOfDay","differenceInCalendarDays","dateLeft","dateRight","startOfDayLeft","startOfDayRight","timestampLeft","timestampRight","startOfYear","cleanDate","getDayOfYear","addLeadingZeros","targetLength","lightFormatters","signedYear","dayPeriodEnumValue","numberOfDigits","milliseconds","fractionalSeconds","dayPeriodEnum","signedWeekYear","weekYear","isoWeek","localDayOfWeek","isoDayOfWeek","_localize","timezoneOffset","getTimezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","formatTimezoneShort","absOffset","originalDate","isToken","preprocessor","formatterOptions","matched","addMilliseconds","addSeconds","addMinutes","addHours","addWeeks","days","addMonths","dayOfMonth","endOfDesiredMonth","daysInMonth","addQuarters","months","addYears","differenceInMilliseconds","getRoundingMethod","differenceInSeconds","roundingMethod","differenceInMinutes","differenceInHours","differenceInDays","_dateLeft","_dateRight","compareLocalAsc","difference","isLastDayNotFull","differenceInWeeks","compareAsc","differenceInCalendarMonths","yearDiff","monthDiff","endOfDay","endOfMonth","isLastDayOfMonth","differenceInMonths","isLastMonthNotFull","differenceInQuarters","differenceInCalendarYears","differenceInYears","isLastYearNotFull","startOfSecond","startOfMinute","startOfHour","startOfMonth","startOfQuarter","currentMonth","endOfSecond","endOfMinute","endOfHour","endOfWeek","endOfQuarter","endOfYear","FORMATS","_id","extendStatics","__extends","take","TakeOperator","TakeSubscriber","defaultIfEmpty","DefaultIfEmptyOperator","DefaultIfEmptySubscriber","isEmpty","throwIfEmpty","errorFactory","defaultErrorFactory","ThrowIfEmptyOperator","ThrowIfEmptySubscriber","hasDefaultValue","maxSV","TO_STRING_TAG_SUPPORT","CORRECT_ARGUMENTS","tryGet","callee","blue","productName","productIdMM","legacyUsbProductId","usbOnly","memorySize","getBlockSize","_firwareVersion","nanoS","firmwareVersion","nanoX","bluetoothSpec","serviceUuid","notifyUuid","writeUuid","devicesList","ledgerUSBVendorId","identifyUSBProductId","usbProductId","legacy","mm","bluetoothServices","serviceUuidToInfos","spec","getBluetoothServiceUuids","getInfosForServiceUuid","LIBVERSION","UNKNOWN","FUNC_TYPE","UNDEF_TYPE","OBJ_TYPE","STR_TYPE","MAJOR","MODEL","VENDOR","VERSION","ARCHITECTURE","CONSOLE","MOBILE","TABLET","SMARTTV","WEARABLE","EMBEDDED","UA_MAX_LENGTH","AMAZON","APPLE","ASUS","BLACKBERRY","BROWSER","CHROME","EDGE","FIREFOX","GOOGLE","HUAWEI","LG","MICROSOFT","MOTOROLA","OPERA","SAMSUNG","SHARP","SONY","XIAOMI","ZEBRA","FACEBOOK","CHROMIUM_OS","MAC_OS","regexes","extensions","mergedRegexes","enumerize","enums","str1","str2","lowerize","majorize","rgxMapper","ua","arrays","strMapper","oldSafariMap","windowsVersionMap","cpu","engine","UAParser","_navigator","_ua","_uach","_rgxmap","_isSelfNav","getBrowser","_browser","brave","isBrave","getCPU","_cpu","getDevice","_device","standalone","maxTouchPoints","getEngine","_engine","getOS","_os","getUA","setUA","CPU","DEVICE","ENGINE","OS","jQuery","Zepto","writeMayBe","writeDict","coinsA","coinsB","signedSemiChannelStateA","signedSemiChannelStateB","conditionalsToSettle","SimpleInnerSubscriber","SimpleOuterSubscriber","functionToString","$propertyIsEnumerable","NASHORN_BUG","deletePropertyOrThrow","INCORRECT_RESULT","RefCountOperator","_refCount","refCounter","RefCountSubscriber","sharedConnection","_connection","toOffset","WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS","TO_OBJECT_BUG","arrayLike","detection","POLYFILL","NATIVE","unsafe","nonConfigurable","nonWritable","scheduleObservable","schedulePromise","scheduleIterable","isInteropObservable","isIterable","SIGN_DATA_ERROR_CODES","DISCONNECT_ERROR_CODES","encodeUint8Array","urlSafe","encoded","decodeToUint8Array","uint8Array","decodedUint8Array","concatUint8Arrays","buffer1","buffer2","mergedArray","splitToUint8Arrays","subArray1","subArray2","toHexString","createKeypairFromString","createKeypair","receiverPublicKey","encodedMessage","createNonce","encrypted","senderPublicKey","internalMessage","decrypted","utils","LockupWallets","NFT","JETTON","TransportWebUSB","BluetoothTransport","TonWeb","dns","payments","lockupWallet","txhash","getTransactions","getBalance","sendBoc","ledger","nft","ft","jetton","charMap","AxiosURLSearchParams","_pairs","toFormData","encoder","_encode","buildURL","serializeFn","serialize","serializedParams","hashmarkIndex","synchronous","runWhen","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","isStandardBrowserEnv","product","isStandardBrowserWebWorkerEnv","WorkerGlobalScope","importScripts","isBrowser","URLSearchParams","Blob","protocols","toURLEncodedForm","visitor","helpers","defaultVisitor","parsePropPath","arrayToObject","formDataToJSON","formData","buildPath","isNumericKey","isLast","stringifySafely","transitional","transformRequest","contentType","getContentType","hasJSONContentType","isObjectPayload","setContentType","formSerializer","_FormData","transformResponse","JSONRequested","responseType","strictJSONParsing","ERR_BAD_RESPONSE","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","ignoreDuplicateOf","rawHeaders","$internals","normalizeHeader","normalizeValue","parseTokens","tokensRE","isValidHeaderName","matchHeaderValue","isHeaderNameFilter","formatHeader","char","buildAccessors","accessorName","arg3","valueOrRewrite","rewrite","setHeader","_header","_rewrite","lHeader","setHeaders","parseHeaders","matcher","deleted","deleteHeader","targets","asStrings","accessors","defineAccessor","headerValue","transformData","isCancel","__CANCEL__","CanceledError","ERR_CANCELED","settle","ERR_BAD_REQUEST","expires","secure","cookie","toGMTString","isAbsoluteURL","combineURLs","baseURL","relativeURL","buildFullPath","requestedURL","msie","urlParsingNode","originURL","resolveURL","port","pathname","requestURL","parseProtocol","speedometer","samplesCount","firstSampleTS","chunkLength","startedAt","bytesCount","passed","progressEventReducer","isDownloadStream","bytesNotified","_speedometer","loaded","lengthComputable","progressBytes","rate","estimated","isXHRAdapterSupported","XMLHttpRequest","requestData","requestHeaders","onCanceled","cancelToken","auth","username","password","fullPath","onloadend","responseHeaders","getAllResponseHeaders","responseData","responseText","statusText","paramsSerializer","onreadystatechange","responseURL","ECONNABORTED","ERR_NETWORK","ontimeout","timeoutErrorMessage","ETIMEDOUT","xsrfValue","withCredentials","cookies","setRequestHeader","onDownloadProgress","onUploadProgress","upload","knownAdapters","http","xhr","renderReason","isResolvedHandle","getAdapter","nameOrAdapter","rejectedReasons","reasons","throwIfCancellationRequested","throwIfRequested","dispatchRequest","headersToObject","mergeConfig","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","timeoutMessage","decompress","beforeRedirect","httpAgent","httpsAgent","socketPath","responseEncoding","configValue","validators","deprecatedWarnings","assertOptions","schema","allowUnknown","ERR_BAD_OPTION_VALUE","opt","validator","ERR_BAD_OPTION","formatMessage","ERR_DEPRECATED","instanceConfig","interceptors","configOrUrl","function","contextHeaders","requestInterceptorChain","synchronousRequestInterceptors","interceptor","responseInterceptorChain","newConfig","onFulfilled","onRejected","generateHTTPMethod","isForm","executor","resolvePromise","onfulfilled","isAxiosError","HttpStatusCode","Continue","SwitchingProtocols","Processing","EarlyHints","Ok","Created","Accepted","NonAuthoritativeInformation","NoContent","ResetContent","PartialContent","MultiStatus","AlreadyReported","ImUsed","MultipleChoices","MovedPermanently","Found","SeeOther","NotModified","UseProxy","Unused","TemporaryRedirect","PermanentRedirect","BadRequest","Unauthorized","PaymentRequired","Forbidden","NotFound","MethodNotAllowed","NotAcceptable","ProxyAuthenticationRequired","RequestTimeout","Conflict","Gone","LengthRequired","PreconditionFailed","PayloadTooLarge","UriTooLong","UnsupportedMediaType","RangeNotSatisfiable","ExpectationFailed","ImATeapot","MisdirectedRequest","UnprocessableEntity","Locked","FailedDependency","TooEarly","UpgradeRequired","PreconditionRequired","TooManyRequests","RequestHeaderFieldsTooLarge","UnavailableForLegalReasons","InternalServerError","NotImplemented","BadGateway","ServiceUnavailable","GatewayTimeout","HttpVersionNotSupported","VariantAlsoNegotiates","InsufficientStorage","LoopDetected","NotExtended","NetworkAuthenticationRequired","createInstance","axios","Axios","CancelToken","Cancel","AxiosHeaders","formToJSON","ERROR_STACK_INSTALLABLE","wrapErrorConstructorWithCause","WEB_ASSEMBLY","WebAssembly","exportGlobalErrorCauseWrapper","exportWebAssemblyErrorCauseWrapper","versionA","versionB","createCodeCell","codeCell","dataCell","stateInitHash","library","splitDepth","ticktock","gramValue","ihrDisabled","bounced","currencyCollection","importFee","payloadCell","orderHeader","createInternalMessageHeader","commonMsgInfo","getUsedBits","queryPromise","getQuery","serialized","init_code","init_data","getEstimateFee","ieee754","typedArraySupport","foo","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","encodingOrOffset","fromArrayBuffer","fromString","assertSize","encoding","checked","isEncoding","fromArrayLike","byteOffset","isnan","SlowBuffer","loweredCase","utf8ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","bidirectionalIndexOf","arrayIndexOf","indexSize","arrLength","valLength","foundIndex","hexWrite","utf8Write","blitBuffer","asciiWrite","asciiToBytes","latin1Write","base64Write","ucs2Write","utf16leToBytes","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","decodeCodePointsArray","INSPECT_MAX_BYTES","poolSize","_augment","species","allocUnsafeSlow","_isBuffer","swap16","swap32","swap64","thisStart","thisEnd","thisCopy","targetCopy","_arr","MAX_ARGUMENTS_LENGTH","codePoints","checkOffset","checkInt","objectWriteUInt16","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","readUIntBE","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","maxBytes","writeUIntBE","writeUInt16LE","writeUInt32LE","writeUInt32BE","writeIntLE","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","base64clean","stringtrim","units","leadSurrogate","dst","configurationValue","endpointNumber","interfaceNumber","transferOut","transferIn","selectConfiguration","gracefullyResetDevice","iface","configurations","interfaces","alternates","interfaceClass","claimInterface","releaseInterface","TAG","getUsedBytes","ba","ui8","anotherBitString","tu","foundEndBit","errorClasses","deserializers","addCustomErrorDeserializer","deserializer","createCustomErrorClass","fields","deserializeError","des","serializeError","destroyCircular","AccountNameRequiredError","AccountNotSupported","AmountRequired","BluetoothRequired","BtcUnmatchedApp","CantOpenDevice","CashAddrNotSupported","CurrencyNotSupported","DeviceAppVerifyNotSupported","DeviceGenuineSocketEarlyClose","DeviceNotGenuineError","DeviceOnDashboardExpected","DeviceOnDashboardUnexpected","DeviceInOSUExpected","DeviceHalted","DeviceNameInvalid","DeviceSocketFail","DeviceSocketNoBulkStatus","DisconnectedDeviceDuringOperation","EnpointConfigError","EthAppPleaseEnableContractData","FeeEstimationFailed","FirmwareNotRecognized","HardResetFail","InvalidXRPTag","InvalidAddress","InvalidAddressBecauseDestinationIsAlsoSource","LatestMCUInstalledError","UnknownMCU","LedgerAPIError","LedgerAPIErrorWithMessage","LedgerAPINotAvailable","ManagerAppAlreadyInstalledError","ManagerAppRelyOnBTCError","ManagerAppDepInstallRequired","ManagerAppDepUninstallRequired","ManagerDeviceLockedError","ManagerFirmwareNotEnoughSpaceError","ManagerNotEnoughSpaceError","ManagerUninstallBTCDep","NetworkDown","NoAddressesFound","NotEnoughBalance","NotEnoughBalanceToDelegate","NotEnoughBalanceInParentAccount","NotEnoughSpendableBalance","NotEnoughBalanceBecauseDestinationNotCreated","NoAccessToCamera","NotEnoughGas","NotSupportedLegacyAddress","GasLessThanEstimate","PasswordsDontMatchError","PasswordIncorrectError","RecommendSubAccountsToEmpty","RecommendUndelegation","TimeoutTagged","UnexpectedBootloader","MCUNotGenuineToDashboard","RecipientRequired","UnavailableTezosOriginatedAccountReceive","UnavailableTezosOriginatedAccountSend","UpdateFetchFileFail","UpdateIncorrectHash","UpdateIncorrectSig","UpdateYourApp","UserRefusedDeviceNameChange","UserRefusedAddress","UserRefusedFirmwareUpdate","UserRefusedAllowManager","UserRefusedOnDevice","TransportOpenUserCancelled","TransportInterfaceNotAvailable","TransportRaceCondition","TransportWebUSBGestureRequired","DeviceShouldStayInApp","WebsocketConnectionError","WebsocketConnectionFailed","WrongDeviceForAccount","WrongAppForCurrency","ETHAddressNonEIP","CantScanQRCode","FeeNotLoaded","FeeRequired","FeeTooHigh","SyncError","PairingFailed","GenuineCheckFailed","LedgerAPI4xx","LedgerAPI5xx","FirmwareOrAppUpdateRequired","NoDBPathGiven","DBWrongPassword","DBNotReset","StatusCodes","PIN_REMAINING_ATTEMPTS","INCORRECT_LENGTH","MISSING_CRITICAL_PARAMETER","COMMAND_INCOMPATIBLE_FILE_STRUCTURE","SECURITY_STATUS_NOT_SATISFIED","CONDITIONS_OF_USE_NOT_SATISFIED","INCORRECT_DATA","NOT_ENOUGH_MEMORY_SPACE","REFERENCED_DATA_NOT_FOUND","FILE_ALREADY_EXISTS","INCORRECT_P1_P2","INS_NOT_SUPPORTED","CLA_NOT_SUPPORTED","TECHNICAL_PROBLEM","MEMORY_PROBLEM","NO_EF_SELECTED","INVALID_OFFSET","FILE_NOT_FOUND","INCONSISTENT_FILE","ALGORITHM_NOT_SUPPORTED","INVALID_KCV","CODE_NOT_INITIALIZED","ACCESS_CONDITION_NOT_FULFILLED","CONTRADICTION_SECRET_CODE_STATUS","CONTRADICTION_INVALIDATION","CODE_BLOCKED","MAX_VALUE_REACHED","GP_AUTH_FAILED","LICENSING","HALTED","getAltStatusMessage","TransportStatusError","statusCode","smsg","statusCodeStr","requiresBluetooth","bluetooth","availability","onAvailabilityChanged","getAvailability","available","transportsCache","requestDeviceParam","services","retrieveService","gatt","service","getPrimaryServices","infos","deviceOrId","needsReconnect","writeC","notifyC","getCharacteristic","notifyObservable","notif","notYetDisconnected","beforeMTUTime","inferMTU","afterMTUTime","writeCharacteristic","msgIn","msgOut","writeValue","mtu","observeAvailability","isVisitable","removeBrackets","renderKey","dots","isFlatArray","predicates","metaTokens","_Blob","useBlob","convertValue","toISOString","exposedHelpers","NODE_DEBUG","ConnectableObservable","_isComplete","getSubject","_subject","ConnectableSubscriber","connectableObservableDescriptor","connectableProto"],"mappings":"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EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,KACtB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,KACtB,CAAC,EAAG,GAAI,GAAI,EAAG,GAAI,IACnB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,KACtB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,KACtB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,KACtB,CAAC,GAAI,GAAI,IACT,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,KACtB,CAAC,GAAI,GAAI,IACT,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,GAAI,GAAI,IACT,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,KACtB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,KACtB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,KACtB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,KACvB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,KACtB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,EAAG,IAAK,IAAK,GAAI,IAAK,KACvB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,KACtB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,EAAG,IAAK,IAAK,GAAI,IAAK,KACvB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,KACvB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,EAAG,GAAI,IACpB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,IAAK,KACV,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,IAAK,IAAK,EAAG,IAAK,KACvB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,IACrB,CAAC,GAAI,GAAI,GAAI,G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","file":"assets/js/chunk-vendors.def2c5a3.js","sourcesContent":["const {BitString} = require(\"./BitString\");\nconst {\n bytesToBase64,\n compareBytes,\n concatBytes,\n crc32c,\n hexToBytes,\n readNBytesUIntFromArray,\n sha256,\n bytesToHex\n} = require(\"../utils\");\nconst {Slice} = require(\"./Slice\");\n\nconst reachBocMagicPrefix = hexToBytes('B5EE9C72');\nconst leanBocMagicPrefix = hexToBytes('68ff65f3');\nconst leanBocMagicPrefixCRC = hexToBytes('acc3a728');\n\nclass Cell {\n constructor() {\n this.bits = new BitString(1023);\n this.refs = [];\n this.isExotic = false;\n }\n\n /**\n * @param serializedBoc {string | Uint8Array} hex or bytearray\n * @return {Cell[]} root cells\n */\n static fromBoc(serializedBoc) {\n return deserializeBoc(serializedBoc);\n }\n\n /**\n * @param serializedBoc {string | Uint8Array} hex or bytearray\n * @return {Cell} root cell\n */\n static oneFromBoc(serializedBoc) {\n const cells = deserializeBoc(serializedBoc);\n if (cells.length !== 1) throw new Error('expected 1 root cell but have ' + cells.length);\n return cells[0];\n }\n\n /**\n * Write another cell to this cell\n * @param anotherCell {Cell}\n */\n writeCell(anotherCell) {\n // XXX we do not check that there are anough place in cell\n this.bits.writeBitString(anotherCell.bits);\n this.refs = this.refs.concat(anotherCell.refs);\n }\n\n /**\n * @return {number}\n */\n getMaxLevel() {\n //TODO level calculation differ for exotic cells\n let maxLevel = 0;\n for (let k in this.refs) {\n const i = this.refs[k];\n if (i.getMaxLevel() > maxLevel) {\n maxLevel = i.getMaxLevel();\n }\n }\n return maxLevel;\n }\n\n /**\n * @return {number}\n */\n isExplicitlyStoredHashes() {\n return 0;\n }\n\n /**\n * @return {number}\n */\n getMaxDepth() {\n let maxDepth = 0;\n if (this.refs.length > 0) {\n for (let k in this.refs) {\n const i = this.refs[k];\n if (i.getMaxDepth() > maxDepth) {\n maxDepth = i.getMaxDepth();\n }\n }\n maxDepth = maxDepth + 1;\n }\n return maxDepth;\n }\n\n /**\n * @private\n * @return {Uint8Array}\n */\n getMaxDepthAsArray() {\n const maxDepth = this.getMaxDepth();\n const d = Uint8Array.from({length: 2}, () => 0);\n d[1] = maxDepth % 256;\n d[0] = Math.floor(maxDepth / 256);\n return d;\n }\n\n /**\n * @return {Uint8Array}\n */\n getRefsDescriptor() {\n const d1 = Uint8Array.from({length: 1}, () => 0);\n d1[0] = this.refs.length + this.isExotic * 8 + this.getMaxLevel() * 32;\n return d1;\n }\n\n /**\n * @return {Uint8Array}\n */\n getBitsDescriptor() {\n const d2 = Uint8Array.from({length: 1}, () => 0);\n d2[0] = Math.ceil(this.bits.cursor / 8) + Math.floor(this.bits.cursor / 8);\n return d2;\n }\n\n /**\n * @return {Uint8Array}\n */\n getDataWithDescriptors() {\n const d1 = this.getRefsDescriptor();\n const d2 = this.getBitsDescriptor();\n const tuBits = this.bits.getTopUppedArray();\n return concatBytes(concatBytes(d1, d2), tuBits);\n }\n\n /**\n * @return {Promise}\n */\n async getRepr() {\n const reprArray = [];\n\n reprArray.push(this.getDataWithDescriptors());\n for (let k in this.refs) {\n const i = this.refs[k];\n reprArray.push(i.getMaxDepthAsArray());\n }\n for (let k in this.refs) {\n const i = this.refs[k];\n reprArray.push(await i.hash());\n }\n let x = new Uint8Array();\n for (let k in reprArray) {\n const i = reprArray[k];\n x = concatBytes(x, i);\n }\n return x;\n }\n\n /**\n * @return {Promise}\n */\n async hash() {\n return new Uint8Array(\n await sha256(await this.getRepr())\n );\n }\n\n beginParse() {\n const refs = this.refs.map(ref => ref.beginParse());\n return new Slice(this.bits.array.slice(), this.bits.length, refs);\n }\n\n /**\n * Recursively prints cell's content like Fift\n * @return {string}\n */\n print(indent) {\n indent = indent || '';\n let s = indent + 'x{' + this.bits.toHex() + '}\\n';\n for (let k in this.refs) {\n const i = this.refs[k];\n s += i.print(indent + ' ');\n }\n return s;\n }\n\n //serialized_boc#b5ee9c72 has_idx:(## 1) has_crc32c:(## 1)\n // has_cache_bits:(## 1) flags:(## 2) { flags = 0 }\n // size:(## 3) { size <= 4 }\n // off_bytes:(## 8) { off_bytes <= 8 }\n // cells:(##(size * 8))\n // roots:(##(size * 8)) { roots >= 1 }\n // absent:(##(size * 8)) { roots + absent <= cells }\n // tot_cells_size:(##(off_bytes * 8))\n // root_list:(roots * ##(size * 8))\n // index:has_idx?(cells * ##(off_bytes * 8))\n // cell_data:(tot_cells_size * [ uint8 ])\n // crc32c:has_crc32c?uint32\n // = BagOfCells;\n /**\n * create boc bytearray\n * @param has_idx? {boolean}\n * @param hash_crc32? {boolean}\n * @param has_cache_bits? {boolean}\n * @param flags? {number}\n * @return {Promise}\n */\n async toBoc(has_idx = true, hash_crc32 = true, has_cache_bits = false, flags = 0) {\n const root_cell = this;\n\n const allcells = await root_cell.treeWalk();\n const topologicalOrder = allcells[0];\n const cellsIndex = allcells[1];\n\n const cells_num = topologicalOrder.length;\n const s = cells_num.toString(2).length; // Minimal number of bits to represent reference (unused?)\n const s_bytes = Math.min(Math.ceil(s / 8), 1);\n let full_size = 0;\n let sizeIndex = [];\n for (let cell_info of topologicalOrder) {\n //TODO it should be async map or async for\n sizeIndex.push(full_size);\n full_size = full_size + await cell_info[1].bocSerializationSize(cellsIndex, s_bytes);\n }\n const offset_bits = full_size.toString(2).length; // Minimal number of bits to offset/len (unused?)\n const offset_bytes = Math.max(Math.ceil(offset_bits / 8), 1);\n\n const serialization = new BitString((1023 + 32 * 4 + 32 * 3) * topologicalOrder.length);\n serialization.writeBytes(reachBocMagicPrefix);\n serialization.writeBitArray([has_idx, hash_crc32, has_cache_bits]);\n serialization.writeUint(flags, 2);\n serialization.writeUint(s_bytes, 3);\n serialization.writeUint8(offset_bytes);\n serialization.writeUint(cells_num, s_bytes * 8);\n serialization.writeUint(1, s_bytes * 8); // One root for now\n serialization.writeUint(0, s_bytes * 8); // Complete BOCs only\n serialization.writeUint(full_size, offset_bytes * 8);\n serialization.writeUint(0, s_bytes * 8); // Root shoulh have index 0\n if (has_idx) {\n topologicalOrder.forEach(\n (cell_data, index) =>\n serialization.writeUint(sizeIndex[index], offset_bytes * 8));\n }\n for (let cell_info of topologicalOrder) {\n //TODO it should be async map or async for\n const refcell_ser = await cell_info[1].serializeForBoc(cellsIndex, s_bytes);\n serialization.writeBytes(refcell_ser);\n }\n let ser_arr = serialization.getTopUppedArray();\n if (hash_crc32) {\n ser_arr = concatBytes(ser_arr, crc32c(ser_arr));\n }\n\n return ser_arr;\n }\n\n /**\n * @private\n * @param cellsIndex\n * @param refSize\n * @return {Promise}\n */\n async serializeForBoc(cellsIndex, refSize) {\n const reprArray = [];\n\n reprArray.push(this.getDataWithDescriptors());\n if (this.isExplicitlyStoredHashes()) {\n throw new Error(\"Cell hashes explicit storing is not implemented\");\n }\n for (let k in this.refs) {\n const i = this.refs[k];\n const refHash = await i.hash();\n const refIndexInt = cellsIndex[refHash];\n let refIndexHex = refIndexInt.toString(16);\n if (refIndexHex.length % 2) {\n refIndexHex = \"0\" + refIndexHex;\n }\n const reference = hexToBytes(refIndexHex);\n reprArray.push(reference);\n }\n let x = new Uint8Array();\n for (let k in reprArray) {\n const i = reprArray[k];\n x = concatBytes(x, i);\n }\n return x;\n }\n\n /**\n * @private\n * @param cellsIndex\n * @param refSize\n * @return {Promise}\n */\n async bocSerializationSize(cellsIndex, refSize) {\n return (await this.serializeForBoc(cellsIndex, refSize)).length;\n }\n\n /**\n * @private\n * @return {[[], {}]} topologicalOrderArray and indexHashmap\n */\n async treeWalk() {\n return treeWalk(this, [], {});\n }\n}\n\nasync function moveToTheEnd(indexHashmap, topologicalOrderArray, target) {\n const targetIndex = indexHashmap[target];\n for (let h in indexHashmap) {\n if (indexHashmap[h] > targetIndex) {\n indexHashmap[h] = indexHashmap[h] - 1;\n }\n }\n indexHashmap[target] = topologicalOrderArray.length - 1;\n const data = topologicalOrderArray.splice(targetIndex, 1)[0];\n topologicalOrderArray.push(data);\n for (let subCell of data[1].refs) {\n await moveToTheEnd(indexHashmap, topologicalOrderArray, await subCell.hash());\n }\n}\n\n/**\n * @param cell {Cell}\n * @param topologicalOrderArray array of pairs: cellHash: Uint8Array, cell: Cell, ...\n * @param indexHashmap cellHash: Uint8Array -> cellIndex: number\n * @return {[[], {}]} topologicalOrderArray and indexHashmap\n */\nasync function treeWalk(cell, topologicalOrderArray, indexHashmap, parentHash = null) {\n const cellHash = await cell.hash();\n if (cellHash in indexHashmap) { // Duplication cell\n //it is possible that already seen cell is a children of more deep cell\n if (parentHash) {\n if (indexHashmap[parentHash] > indexHashmap[cellHash]) {\n await moveToTheEnd(indexHashmap, topologicalOrderArray, cellHash);\n }\n }\n return [topologicalOrderArray, indexHashmap];\n }\n indexHashmap[cellHash] = topologicalOrderArray.length;\n topologicalOrderArray.push([cellHash, cell]);\n for (let subCell of cell.refs) {\n const res = await treeWalk(subCell, topologicalOrderArray, indexHashmap, cellHash);\n topologicalOrderArray = res[0];\n indexHashmap = res[1];\n }\n\n return [topologicalOrderArray, indexHashmap];\n}\n\n\nfunction parseBocHeader(serializedBoc) {\n // snake_case is used to match TON docs\n if (serializedBoc.length < 4 + 1)\n throw \"Not enough bytes for magic prefix\";\n const inputData = serializedBoc; // Save copy for crc32\n const prefix = serializedBoc.slice(0, 4);\n serializedBoc = serializedBoc.slice(4);\n let has_idx, hash_crc32, has_cache_bits, flags, size_bytes;\n if (compareBytes(prefix, reachBocMagicPrefix)) {\n const flags_byte = serializedBoc[0];\n has_idx = flags_byte & 128;\n hash_crc32 = flags_byte & 64;\n has_cache_bits = flags_byte & 32;\n flags = (flags_byte & 16) * 2 + (flags_byte & 8);\n size_bytes = flags_byte % 8;\n }\n if (compareBytes(prefix, leanBocMagicPrefix)) {\n has_idx = 1;\n hash_crc32 = 0;\n has_cache_bits = 0;\n flags = 0;\n size_bytes = serializedBoc[0];\n }\n if (compareBytes(prefix, leanBocMagicPrefixCRC)) {\n has_idx = 1;\n hash_crc32 = 1;\n has_cache_bits = 0;\n flags = 0;\n size_bytes = serializedBoc[0];\n }\n serializedBoc = serializedBoc.slice(1);\n if (serializedBoc.length < 1 + 5 * size_bytes)\n throw \"Not enough bytes for encoding cells counters\";\n const offset_bytes = serializedBoc[0];\n serializedBoc = serializedBoc.slice(1);\n const cells_num = readNBytesUIntFromArray(size_bytes, serializedBoc);\n serializedBoc = serializedBoc.slice(size_bytes);\n const roots_num = readNBytesUIntFromArray(size_bytes, serializedBoc);\n serializedBoc = serializedBoc.slice(size_bytes);\n const absent_num = readNBytesUIntFromArray(size_bytes, serializedBoc);\n serializedBoc = serializedBoc.slice(size_bytes);\n const tot_cells_size = readNBytesUIntFromArray(offset_bytes, serializedBoc);\n serializedBoc = serializedBoc.slice(offset_bytes);\n if (serializedBoc.length < roots_num * size_bytes)\n throw \"Not enough bytes for encoding root cells hashes\";\n let root_list = [];\n for (let c = 0; c < roots_num; c++) {\n root_list.push(readNBytesUIntFromArray(size_bytes, serializedBoc));\n serializedBoc = serializedBoc.slice(size_bytes);\n }\n let index = false;\n if (has_idx) {\n index = [];\n if (serializedBoc.length < offset_bytes * cells_num)\n throw \"Not enough bytes for index encoding\";\n for (let c = 0; c < cells_num; c++) {\n index.push(readNBytesUIntFromArray(offset_bytes, serializedBoc));\n serializedBoc = serializedBoc.slice(offset_bytes);\n }\n }\n\n if (serializedBoc.length < tot_cells_size)\n throw \"Not enough bytes for cells data\";\n const cells_data = serializedBoc.slice(0, tot_cells_size);\n serializedBoc = serializedBoc.slice(tot_cells_size);\n if (hash_crc32) {\n if (serializedBoc.length < 4)\n throw \"Not enough bytes for crc32c hashsum\";\n const length = inputData.length;\n if (!compareBytes(crc32c(inputData.slice(0, length - 4)), serializedBoc.slice(0, 4)))\n throw \"Crc32c hashsum mismatch\";\n serializedBoc = serializedBoc.slice(4);\n }\n if (serializedBoc.length)\n throw \"Too much bytes in BoC serialization\";\n return {\n has_idx: has_idx, hash_crc32: hash_crc32, has_cache_bits: has_cache_bits, flags: flags, size_bytes: size_bytes,\n off_bytes: offset_bytes, cells_num: cells_num, roots_num: roots_num, absent_num: absent_num,\n tot_cells_size: tot_cells_size, root_list: root_list, index: index,\n cells_data: cells_data\n };\n}\n\nfunction deserializeCellData(cellData, referenceIndexSize) {\n if (cellData.length < 2)\n throw \"Not enough bytes to encode cell descriptors\";\n const d1 = cellData[0], d2 = cellData[1];\n cellData = cellData.slice(2);\n const level = Math.floor(d1 / 32);\n const isExotic = d1 & 8;\n const refNum = d1 % 8;\n const dataBytesize = Math.ceil(d2 / 2);\n const fullfilledBytes = !(d2 % 2);\n let cell = new Cell();\n cell.isExotic = isExotic;\n if (cellData.length < dataBytesize + referenceIndexSize * refNum)\n throw \"Not enough bytes to encode cell data\";\n cell.bits.setTopUppedArray(cellData.slice(0, dataBytesize), fullfilledBytes);\n cellData = cellData.slice(dataBytesize);\n for (let r = 0; r < refNum; r++) {\n cell.refs.push(readNBytesUIntFromArray(referenceIndexSize, cellData));\n cellData = cellData.slice(referenceIndexSize);\n }\n return {cell: cell, residue: cellData};\n}\n\n\n/**\n * @param serializedBoc {string | Uint8Array} hex or bytearray\n * @return {Cell[]} root cells\n */\nfunction deserializeBoc(serializedBoc) {\n if (typeof (serializedBoc) == 'string') {\n serializedBoc = hexToBytes(serializedBoc);\n }\n const header = parseBocHeader(serializedBoc);\n let cells_data = header.cells_data;\n let cells_array = [];\n for (let ci = 0; ci < header.cells_num; ci++) {\n let dd = deserializeCellData(cells_data, header.size_bytes);\n cells_data = dd.residue;\n cells_array.push(dd.cell);\n }\n for (let ci = header.cells_num - 1; ci >= 0; ci--) {\n let c = cells_array[ci];\n for (let ri = 0; ri < c.refs.length; ri++) {\n const r = c.refs[ri];\n if (r < ci) {\n throw \"Topological order is broken\";\n }\n c.refs[ri] = cells_array[r];\n }\n }\n let root_cells = [];\n for (let ri of header.root_list) {\n root_cells.push(cells_array[ri]);\n }\n return root_cells;\n}\n\nmodule.exports = {Cell};\n","'use strict';\nvar toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","const {Contract} = require(\"../../index.js\");\nconst {Cell} = require(\"../../../boc\");\nconst {Address} = require(\"../../../utils\");\nconst {parseAddress} = require('./NftUtils.js');\n\n/**\n * Not release - will change\n */\nclass NftMarketplace extends Contract {\n /**\n * @param provider\n * @param options {{ownerAddress: Address, address?: Address | string, cell?: Cell}}\n */\n constructor(provider, options) {\n options.wc = 0;\n options.code = options.code || Cell.oneFromBoc('B5EE9C7241010401006D000114FF00F4A413F4BCF2C80B01020120020300AAD23221C700915BE0D0D3030171B0915BE0FA40ED44D0FA403012C705F2E19101D31F01C0018E2BFA003001D4D43021F90070C8CA07CBFFC9D077748018C8CB05CB0258CF165004FA0213CB6BCCCCC971FB00915BE20004F2308EF7CCE7');\n super(provider, options);\n }\n\n /**\n * @override\n * @private\n * @return {Cell} cell contains nft marketplace data\n */\n createDataCell() {\n const cell = new Cell();\n cell.bits.writeAddress(this.options.ownerAddress);\n return cell;\n }\n\n}\n\nmodule.exports = {NftMarketplace};\n","const {parseAddress} = require(\"../token/nft/NftUtils\");\nconst {AdnlAddress, StorageBagId, BN, sha256, bytesToHex, bytesToBase64} = require(\"../../utils\");\nconst {Cell} = require(\"../../boc\");\n\nconst DNS_CATEGORY_NEXT_RESOLVER = 'dns_next_resolver'; // Smart Contract address\nconst DNS_CATEGORY_WALLET = 'wallet'; // Smart Contract address\nconst DNS_CATEGORY_SITE = 'site'; // ADNL address or Bag ID\nconst DNS_CATEGORY_STORAGE = 'storage'; // Bag ID\n\n/**\n * @param category {string | undefined}\n * @return {BN}\n */\nconst categoryToBN = async (category) => {\n if (!category) return new BN(0); // all categories\n const categoryBytes = new TextEncoder().encode(category);\n const categoryHash = new Uint8Array(await sha256(categoryBytes));\n return new BN(bytesToHex(categoryHash), 16);\n}\n\n/**\n * @param smartContractAddress {Address}\n * @return {Cell}\n */\nconst createSmartContractAddressRecord = (smartContractAddress) => {\n const cell = new Cell();\n cell.bits.writeUint(0x9fd3, 16); // https://github.com/ton-blockchain/ton/blob/7e3df93ca2ab336716a230fceb1726d81bac0a06/crypto/block/block.tlb#L827\n cell.bits.writeAddress(smartContractAddress);\n cell.bits.writeUint(0, 8); // flags\n return cell;\n}\n\n/**\n * @param adnlAddress {AdnlAddress}\n * @return {Cell}\n */\nconst createAdnlAddressRecord = (adnlAddress) => {\n const cell = new Cell();\n cell.bits.writeUint(0xad01, 16); // https://github.com/ton-blockchain/ton/blob/7e3df93ca2ab336716a230fceb1726d81bac0a06/crypto/block/block.tlb#L821\n cell.bits.writeBytes(adnlAddress.bytes);\n cell.bits.writeUint(0, 8); // flags\n return cell;\n}\n\n/**\n * @param storageBagId {StorageBagId}\n * @return {Cell}\n */\nconst createStorageBagIdRecord = (storageBagId) => {\n const cell = new Cell();\n cell.bits.writeUint(0x7473, 16);\n cell.bits.writeBytes(storageBagId.bytes);\n return cell;\n}\n\n/**\n * @param smartContractAddress {Address}\n * @return {Cell}\n */\nconst createNextResolverRecord = (smartContractAddress) => {\n const cell = new Cell();\n cell.bits.writeUint(0xba93, 16); // https://github.com/ton-blockchain/ton/blob/7e3df93ca2ab336716a230fceb1726d81bac0a06/crypto/block/block.tlb#L819\n cell.bits.writeAddress(smartContractAddress);\n return cell;\n}\n\n/**\n * @private\n * @param cell {Cell}\n * @param prefix0 {number}\n * @param prefix1 {number}\n * @return {Address|null}\n */\nconst parseSmartContractAddressImpl = (cell, prefix0, prefix1) => {\n if (cell.bits.array[0] !== prefix0 || cell.bits.array[1] !== prefix1) throw new Error('Invalid dns record value prefix');\n cell.bits.array = cell.bits.array.slice(2); // skip prefix - first 16 bits\n return parseAddress(cell);\n}\n\n/**\n * @param cell {Cell}\n * @return {Address|null}\n */\nconst parseSmartContractAddressRecord = (cell) => {\n return parseSmartContractAddressImpl(cell, 0x9f, 0xd3);\n}\n\n/**\n * @param cell {Cell}\n * @return {Address|null}\n */\nconst parseNextResolverRecord = (cell) => {\n return parseSmartContractAddressImpl(cell, 0xba, 0x93);\n}\n\n/**\n * @param cell {Cell}\n * @return {AdnlAddress}\n */\nconst parseAdnlAddressRecord = (cell) => {\n if (cell.bits.array[0] !== 0xad || cell.bits.array[1] !== 0x01) throw new Error('Invalid dns record value prefix');\n const bytes = cell.bits.array.slice(2, 2 + 32); // skip prefix - first 16 bits\n return new AdnlAddress(bytes);\n}\n\n/**\n * @param cell {Cell}\n * @return {StorageBagId}\n */\nconst parseStorageBagIdRecord = (cell) => {\n if (cell.bits.array[0] !== 0x74 || cell.bits.array[1] !== 0x73) throw new Error('Invalid dns record value prefix');\n const bytes = cell.bits.array.slice(2, 2 + 32); // skip prefix - first 16 bits\n return new StorageBagId(bytes);\n}\n\n/**\n * @param cell {Cell}\n * @return {AdnlAddress|StorageBagId|null}\n */\nconst parseSiteRecord = (cell) => {\n if (!cell) return null;\n if (cell.bits.array[0] === 0xad || cell.bits.array[1] === 0x01) {\n return parseAdnlAddressRecord(cell);\n } else {\n return parseStorageBagIdRecord(cell);\n }\n}\n\n/**\n * @private\n * @param provider {HttpProvider}\n * @param dnsAddress {string} address of dns smart contract\n * @param rawDomainBytes {Uint8Array}\n * @param category {string | undefined} category of requested DNS record\n * @param oneStep {boolean | undefined} non-recursive\n * @returns {Promise}\n */\nconst dnsResolveImpl = async (provider, dnsAddress, rawDomainBytes, category, oneStep) => {\n const len = rawDomainBytes.length * 8;\n\n const domainCell = new Cell();\n domainCell.bits.writeBytes(rawDomainBytes);\n\n const categoryBN = await categoryToBN(category);\n const result = await provider.call2(dnsAddress, 'dnsresolve', [['tvm.Slice', bytesToBase64(await domainCell.toBoc(false))], ['num', categoryBN.toString()]]);\n if (result.length !== 2) {\n throw new Error('Invalid dnsresolve response');\n }\n const resultLen = result[0].toNumber();\n\n let cell = result[1];\n if ((cell instanceof Array) && cell.length === 0) {\n cell = null;\n }\n\n if (cell && !cell.bits) { // not a Cell\n throw new Error('Invalid dnsresolve response');\n }\n\n if (resultLen === 0) {\n return null; // domain cannot be resolved\n }\n\n if (resultLen % 8 !== 0) {\n throw new Error('domain split not at a component boundary');\n }\n // if (rawDomainBytes[resultLen] !== 0) {\n // throw new Error('domain split not at a component boundary');\n // }\n if (resultLen > len) {\n throw new Error('invalid response ' + resultLen + '/' + len);\n } else if (resultLen === len) {\n if (category === DNS_CATEGORY_NEXT_RESOLVER) {\n return cell ? parseNextResolverRecord(cell) : null;\n } else if (category === DNS_CATEGORY_WALLET) {\n return cell ? parseSmartContractAddressRecord(cell) : null;\n } else if (category === DNS_CATEGORY_SITE) {\n return cell ? parseSiteRecord(cell) : null;\n } else if (category === DNS_CATEGORY_STORAGE) {\n return cell ? parseStorageBagIdRecord(cell) : null;\n } else {\n return cell;\n }\n } else {\n if (!cell) {\n return null; // domain cannot be resolved\n } else {\n const nextAddress = parseNextResolverRecord(cell);\n if (oneStep) {\n if (category === DNS_CATEGORY_NEXT_RESOLVER) {\n return nextAddress;\n } else {\n return null;\n }\n } else {\n return await dnsResolveImpl(provider, nextAddress.toString(), rawDomainBytes.slice(resultLen / 8), category, false);\n }\n }\n }\n}\n\n/**\n * Verify and convert domain\n * @param domain {string}\n * @return {Uint8Array}\n */\nconst domainToBytes = (domain) => {\n if (!domain || !domain.length) {\n throw new Error('empty domain');\n }\n if (domain === '.') {\n return new Uint8Array([0]);\n }\n\n domain = domain.toLowerCase();\n\n for (let i = 0; i < domain.length; i++) {\n if (domain.charCodeAt(i) <= 32) {\n throw new Error('bytes in range 0..32 are not allowed in domain names');\n }\n }\n\n for (let i = 0; i < domain.length; i++) {\n const s = domain.substring(i, i + 1);\n for (let c = 127; c <= 159; c++) { // another control codes range\n if (s === String.fromCharCode(c)) {\n throw new Error('bytes in range 127..159 are not allowed in domain names');\n }\n }\n }\n\n const arr = domain.split('.');\n\n arr.forEach(part => {\n if (!part.length) {\n throw new Error('domain name cannot have an empty component');\n }\n });\n\n let rawDomain = arr.reverse().join('\\0') + '\\0';\n if (rawDomain.length < 126) {\n rawDomain = '\\0' + rawDomain;\n }\n\n return new TextEncoder().encode(rawDomain);\n}\n\n/**\n * @param provider {HttpProvider}\n * @param rootDnsAddress {string} address of root DNS smart contract\n * @param domain {string} e.g \"sub.alice.ton\"\n * @param category {string | undefined} category of requested DNS record\n * @param oneStep {boolean | undefined} non-recursive\n * @returns {Promise}\n */\nconst dnsResolve = async (provider, rootDnsAddress, domain, category, oneStep) => {\n const rawDomainBytes = domainToBytes(domain);\n\n return dnsResolveImpl(provider, rootDnsAddress, rawDomainBytes, category, oneStep);\n}\n\nmodule.exports = {\n DNS_CATEGORY_NEXT_RESOLVER,\n DNS_CATEGORY_SITE,\n DNS_CATEGORY_WALLET,\n DNS_CATEGORY_STORAGE,\n categoryToBN,\n domainToBytes,\n createSmartContractAddressRecord,\n createAdnlAddressRecord,\n createNextResolverRecord,\n parseSmartContractAddressRecord,\n parseAdnlAddressRecord,\n parseStorageBagIdRecord,\n parseSiteRecord,\n parseNextResolverRecord,\n createStorageBagIdRecord,\n dnsResolve\n};","/**\n * Storage for storing block numbers that we have already processed.\n * Used by `BlockSubscription`.\n *\n * Dumb in-memory implementation.\n */\nclass InMemoryBlockStorage {\n\n /**\n * @param logFunction? {(text: string) => void}\n */\n constructor(logFunction) {\n this.masterchainBlocks = {}; // mcBlockNumber {number} -> isProcessed {boolean}\n this.shardchainBlocks = {}; // workchain {number} + shardId {string} + shardBlockNumber {number} -> isProcessed {boolean}\n this.logFunction = logFunction;\n }\n\n /**\n * @private\n * Insert new UNprocessed shardchain block numbers\n * Block number (workchain + shardId + shardBlockNumber) should be IGNORED if it is already in the storage\n * @param shardBlockNumbers {[{workchain: number, shardId: string, shardBlockNumber: number}]}\n */\n async insertShardBlocks(shardBlockNumbers) {\n for (const {workchain, shardId, shardBlockNumber} of shardBlockNumbers) {\n if (this.shardchainBlocks[workchain + '_' + shardId + '_' + shardBlockNumber] !== undefined) continue;\n if (this.logFunction) {\n this.logFunction('insert shard ' + workchain + ' ' + shardId + ' ' + shardBlockNumber);\n }\n // INSERT INTO shardchainBlocks VALUES (workchain, shardId, shardBlockNumber, FALSE);\n this.shardchainBlocks[workchain + '_' + shardId + '_' + shardBlockNumber] = false;\n }\n }\n\n /**\n * Insert new processed masterchain block number & new UNprocessed shardchains blocks numbers\n * Must be in single DB transaction\n * @param mcBlockNumber {number}\n * @param shardBlockNumbers {[{workchain: number, shardId: string, shardBlockNumber: number}]}\n */\n async insertBlocks(mcBlockNumber, shardBlockNumbers) {\n if (this.logFunction) {\n this.logFunction('mc processed ' + mcBlockNumber);\n }\n // INSERT INTO masterchainBlocks VALUES (blockNumber, TRUE);\n if (this.masterchainBlocks[mcBlockNumber] !== undefined) throw new Error('mc already exists ' + mcBlockNumber);\n this.masterchainBlocks[mcBlockNumber] = true;\n\n await this.insertShardBlocks(shardBlockNumbers);\n }\n\n /**\n * Get last processed masterchain block number\n * @return {Promise}\n */\n async getLastMasterchainBlockNumber() {\n // SELECT MAX(blockNumber) FROM masterchainBlocks\n const blockNumbers = Object.keys(this.masterchainBlocks)\n .map(x => Number(x))\n .sort((a, b) => b - a);\n return blockNumbers[0];\n }\n\n /**\n * Set that this shardchain block number processed & insert new UNprocessed shardchains blocks numbers\n * Must be in single DB transaction\n * @param workchain {number}\n * @param shardId {string}\n * @param shardBlockNumber {number}\n * @param prevShardBlocks {[{workchain: number, shardId: string, shardBlockNumber: number}]}\n */\n async setBlockProcessed(workchain, shardId, shardBlockNumber, prevShardBlocks) {\n if (this.logFunction) {\n this.logFunction('shard processed ' + workchain + ' ' + shardId + ' ' + shardBlockNumber);\n }\n // UPDATE shardchainBlocks SET processed = TRUE WHERE workchain = ? AND shardId = ? AND shardBlockNumber = ?\n if (this.shardchainBlocks[workchain + '_' + shardId + '_' + shardBlockNumber] === undefined) throw new Error('shard not exists ' + workchain + '_' + shardId + '_' + shardBlockNumber);\n this.shardchainBlocks[workchain + '_' + shardId + '_' + shardBlockNumber] = true;\n\n await this.insertShardBlocks(prevShardBlocks);\n }\n\n /**\n * Get any unprocesed shard block number (order is not important)\n * @return {Promise<{workchain: number, shardId: string, shardBlockNumber: number}>}\n */\n async getUnprocessedShardBlock() {\n // SELECT workchain, shardId, shardBlockNumber from sharchainBlocks WHERE processed = FALSE LIMIT 1\n for (let key in this.shardchainBlocks) {\n if (this.shardchainBlocks[key] === false) {\n const arr = key.split('_');\n return {\n workchain: Number(arr[0]),\n shardId: arr[1],\n shardBlockNumber: Number(arr[2]),\n }\n }\n }\n return undefined;\n }\n\n}\n\nmodule.exports = {InMemoryBlockStorage};","exports.nextTick = function nextTick(fn) {\n var args = Array.prototype.slice.call(arguments);\n args.shift();\n setTimeout(function () {\n fn.apply(null, args);\n }, 0);\n};\n\nexports.platform = exports.arch = \nexports.execPath = exports.title = 'browser';\nexports.pid = 1;\nexports.browser = true;\nexports.env = {};\nexports.argv = [];\n\nexports.binding = function (name) {\n\tthrow new Error('No such module. (Possibly not yet loaded)')\n};\n\n(function () {\n var cwd = '/';\n var path;\n exports.cwd = function () { return cwd };\n exports.chdir = function (dir) {\n if (!path) path = require('path');\n cwd = path.resolve(dir, cwd);\n };\n})();\n\nexports.exit = exports.kill = \nexports.umask = exports.dlopen = \nexports.uptime = exports.memoryUsage = \nexports.uvCounters = function() {};\nexports.features = {};\n","'use strict';\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw new $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar setArrayLength = require('../internals/array-set-length');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar fails = require('../internals/fails');\n\nvar INCORRECT_TO_LENGTH = fails(function () {\n return [].push.call({ length: 0x100000000 }, 1) !== 4294967297;\n});\n\n// V8 and Safari <= 15.4, FF < 23 throws InternalError\n// https://bugs.chromium.org/p/v8/issues/detail?id=12681\nvar properErrorOnNonWritableLength = function () {\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty([], 'length', { writable: false }).push();\n } catch (error) {\n return error instanceof TypeError;\n }\n};\n\nvar FORCED = INCORRECT_TO_LENGTH || !properErrorOnNonWritableLength();\n\n// `Array.prototype.push` method\n// https://tc39.es/ecma262/#sec-array.prototype.push\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n push: function push(item) {\n var O = toObject(this);\n var len = lengthOfArrayLike(O);\n var argCount = arguments.length;\n doesNotExceedSafeInteger(len + argCount);\n for (var i = 0; i < argCount; i++) {\n O[len] = arguments[i];\n len++;\n }\n setArrayLength(O, len);\n return len;\n }\n});\n","import { ledgerUSBVendorId } from \"@ledgerhq/devices\";\nconst ledgerDevices = [{\n vendorId: ledgerUSBVendorId\n}];\nexport async function requestLedgerDevice() {\n // $FlowFixMe\n const device = await navigator.usb.requestDevice({\n filters: ledgerDevices\n });\n return device;\n}\nexport async function getLedgerDevices() {\n // $FlowFixMe\n const devices = await navigator.usb.getDevices();\n return devices.filter(d => d.vendorId === ledgerUSBVendorId);\n}\nexport async function getFirstLedgerDevice() {\n const existingDevices = await getLedgerDevices();\n if (existingDevices.length > 0) return existingDevices[0];\n return requestLedgerDevice();\n}\nexport const isSupported = () => Promise.resolve(!!navigator && // $FlowFixMe\n!!navigator.usb && typeof navigator.usb.getDevices === \"function\");\n//# sourceMappingURL=webusb.js.map","'use strict';\nvar $TypeError = TypeError;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991\n\nmodule.exports = function (it) {\n if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\n return it;\n};\n","'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar $Object = Object;\nvar ObjectPrototype = $Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\n var object = toObject(O);\n if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n var constructor = object.constructor;\n if (isCallable(constructor) && object instanceof constructor) {\n return constructor.prototype;\n } return object instanceof $Object ? ObjectPrototype : null;\n};\n","'use strict';\nmodule.exports = false;\n","/** PURE_IMPORTS_START tslib,_util_isFunction,_Observer,_Subscription,_internal_symbol_rxSubscriber,_config,_util_hostReportError PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { empty as emptyObserver } from './Observer';\nimport { Subscription } from './Subscription';\nimport { rxSubscriber as rxSubscriberSymbol } from '../internal/symbol/rxSubscriber';\nimport { config } from './config';\nimport { hostReportError } from './util/hostReportError';\nvar Subscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(Subscriber, _super);\n function Subscriber(destinationOrNext, error, complete) {\n var _this = _super.call(this) || this;\n _this.syncErrorValue = null;\n _this.syncErrorThrown = false;\n _this.syncErrorThrowable = false;\n _this.isStopped = false;\n switch (arguments.length) {\n case 0:\n _this.destination = emptyObserver;\n break;\n case 1:\n if (!destinationOrNext) {\n _this.destination = emptyObserver;\n break;\n }\n if (typeof destinationOrNext === 'object') {\n if (destinationOrNext instanceof Subscriber) {\n _this.syncErrorThrowable = destinationOrNext.syncErrorThrowable;\n _this.destination = destinationOrNext;\n destinationOrNext.add(_this);\n }\n else {\n _this.syncErrorThrowable = true;\n _this.destination = new SafeSubscriber(_this, destinationOrNext);\n }\n break;\n }\n default:\n _this.syncErrorThrowable = true;\n _this.destination = new SafeSubscriber(_this, destinationOrNext, error, complete);\n break;\n }\n return _this;\n }\n Subscriber.prototype[rxSubscriberSymbol] = function () { return this; };\n Subscriber.create = function (next, error, complete) {\n var subscriber = new Subscriber(next, error, complete);\n subscriber.syncErrorThrowable = false;\n return subscriber;\n };\n Subscriber.prototype.next = function (value) {\n if (!this.isStopped) {\n this._next(value);\n }\n };\n Subscriber.prototype.error = function (err) {\n if (!this.isStopped) {\n this.isStopped = true;\n this._error(err);\n }\n };\n Subscriber.prototype.complete = function () {\n if (!this.isStopped) {\n this.isStopped = true;\n this._complete();\n }\n };\n Subscriber.prototype.unsubscribe = function () {\n if (this.closed) {\n return;\n }\n this.isStopped = true;\n _super.prototype.unsubscribe.call(this);\n };\n Subscriber.prototype._next = function (value) {\n this.destination.next(value);\n };\n Subscriber.prototype._error = function (err) {\n this.destination.error(err);\n this.unsubscribe();\n };\n Subscriber.prototype._complete = function () {\n this.destination.complete();\n this.unsubscribe();\n };\n Subscriber.prototype._unsubscribeAndRecycle = function () {\n var _parentOrParents = this._parentOrParents;\n this._parentOrParents = null;\n this.unsubscribe();\n this.closed = false;\n this.isStopped = false;\n this._parentOrParents = _parentOrParents;\n return this;\n };\n return Subscriber;\n}(Subscription));\nexport { Subscriber };\nvar SafeSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SafeSubscriber, _super);\n function SafeSubscriber(_parentSubscriber, observerOrNext, error, complete) {\n var _this = _super.call(this) || this;\n _this._parentSubscriber = _parentSubscriber;\n var next;\n var context = _this;\n if (isFunction(observerOrNext)) {\n next = observerOrNext;\n }\n else if (observerOrNext) {\n next = observerOrNext.next;\n error = observerOrNext.error;\n complete = observerOrNext.complete;\n if (observerOrNext !== emptyObserver) {\n context = Object.create(observerOrNext);\n if (isFunction(context.unsubscribe)) {\n _this.add(context.unsubscribe.bind(context));\n }\n context.unsubscribe = _this.unsubscribe.bind(_this);\n }\n }\n _this._context = context;\n _this._next = next;\n _this._error = error;\n _this._complete = complete;\n return _this;\n }\n SafeSubscriber.prototype.next = function (value) {\n if (!this.isStopped && this._next) {\n var _parentSubscriber = this._parentSubscriber;\n if (!config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._next, value);\n }\n else if (this.__tryOrSetError(_parentSubscriber, this._next, value)) {\n this.unsubscribe();\n }\n }\n };\n SafeSubscriber.prototype.error = function (err) {\n if (!this.isStopped) {\n var _parentSubscriber = this._parentSubscriber;\n var useDeprecatedSynchronousErrorHandling = config.useDeprecatedSynchronousErrorHandling;\n if (this._error) {\n if (!useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._error, err);\n this.unsubscribe();\n }\n else {\n this.__tryOrSetError(_parentSubscriber, this._error, err);\n this.unsubscribe();\n }\n }\n else if (!_parentSubscriber.syncErrorThrowable) {\n this.unsubscribe();\n if (useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n hostReportError(err);\n }\n else {\n if (useDeprecatedSynchronousErrorHandling) {\n _parentSubscriber.syncErrorValue = err;\n _parentSubscriber.syncErrorThrown = true;\n }\n else {\n hostReportError(err);\n }\n this.unsubscribe();\n }\n }\n };\n SafeSubscriber.prototype.complete = function () {\n var _this = this;\n if (!this.isStopped) {\n var _parentSubscriber = this._parentSubscriber;\n if (this._complete) {\n var wrappedComplete = function () { return _this._complete.call(_this._context); };\n if (!config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(wrappedComplete);\n this.unsubscribe();\n }\n else {\n this.__tryOrSetError(_parentSubscriber, wrappedComplete);\n this.unsubscribe();\n }\n }\n else {\n this.unsubscribe();\n }\n }\n };\n SafeSubscriber.prototype.__tryOrUnsub = function (fn, value) {\n try {\n fn.call(this._context, value);\n }\n catch (err) {\n this.unsubscribe();\n if (config.useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n else {\n hostReportError(err);\n }\n }\n };\n SafeSubscriber.prototype.__tryOrSetError = function (parent, fn, value) {\n if (!config.useDeprecatedSynchronousErrorHandling) {\n throw new Error('bad call');\n }\n try {\n fn.call(this._context, value);\n }\n catch (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n parent.syncErrorValue = err;\n parent.syncErrorThrown = true;\n return true;\n }\n else {\n hostReportError(err);\n return true;\n }\n }\n return false;\n };\n SafeSubscriber.prototype._unsubscribe = function () {\n var _parentSubscriber = this._parentSubscriber;\n this._context = null;\n this._parentSubscriber = null;\n _parentSubscriber.unsubscribe();\n };\n return SafeSubscriber;\n}(Subscriber));\nexport { SafeSubscriber };\n//# sourceMappingURL=Subscriber.js.map\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.sendAPDU = void 0;\n\nvar _rxjs = require(\"rxjs\");\n\nvar _logs = require(\"@ledgerhq/logs\");\n\nconst TagId = 0x05;\n\nfunction chunkBuffer(buffer, sizeForIndex) {\n const chunks = [];\n\n for (let i = 0, size = sizeForIndex(0); i < buffer.length; i += size, size = sizeForIndex(i)) {\n chunks.push(buffer.slice(i, i + size));\n }\n\n return chunks;\n}\n\nconst sendAPDU = (write, apdu, mtuSize) => {\n const chunks = chunkBuffer(apdu, i => mtuSize - (i === 0 ? 5 : 3)).map((buffer, i) => {\n const head = Buffer.alloc(i === 0 ? 5 : 3);\n head.writeUInt8(TagId, 0);\n head.writeUInt16BE(i, 1);\n\n if (i === 0) {\n head.writeUInt16BE(apdu.length, 3);\n }\n\n return Buffer.concat([head, buffer]);\n });\n return _rxjs.Observable.create(o => {\n let terminated = false;\n\n async function main() {\n for (const chunk of chunks) {\n if (terminated) return;\n await write(chunk);\n }\n }\n\n main().then(() => {\n terminated = true;\n o.complete();\n }, e => {\n terminated = true;\n (0, _logs.log)(\"ble-error\", \"sendAPDU failure \" + String(e));\n o.error(e);\n });\n\n const unsubscribe = () => {\n if (!terminated) {\n (0, _logs.log)(\"ble-verbose\", \"sendAPDU interruption\");\n terminated = true;\n }\n };\n\n return unsubscribe;\n });\n};\n\nexports.sendAPDU = sendAPDU;\n//# sourceMappingURL=sendAPDU.js.map","const {LockupWalletV1} = require(\"./LockupWalletV1\");\nconst {VestingWalletV1} = require(\"./VestingWalletV1\");\n\nmodule.exports.default = {\n LockupWalletV1,\n VestingWalletV1,\n all: {\n 'lockup-0.1': LockupWalletV1,\n 'vesting-1': VestingWalletV1,\n },\n list: [LockupWalletV1, VestingWalletV1]\n};\n","'use strict';\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar $RangeError = RangeError;\n\n// https://tc39.es/proposal-change-array-by-copy/#sec-array.prototype.with\n// https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.with\nmodule.exports = function (O, C, index, value) {\n var len = lengthOfArrayLike(O);\n var relativeIndex = toIntegerOrInfinity(index);\n var actualIndex = relativeIndex < 0 ? len + relativeIndex : relativeIndex;\n if (actualIndex >= len || actualIndex < 0) throw new $RangeError('Incorrect index');\n var A = new C(len);\n var k = 0;\n for (; k < len; k++) A[k] = k === actualIndex ? value : O[k];\n return A;\n};\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nvar UnsubscriptionErrorImpl = /*@__PURE__*/ (function () {\n function UnsubscriptionErrorImpl(errors) {\n Error.call(this);\n this.message = errors ?\n errors.length + \" errors occurred during unsubscription:\\n\" + errors.map(function (err, i) { return i + 1 + \") \" + err.toString(); }).join('\\n ') : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n return this;\n }\n UnsubscriptionErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype);\n return UnsubscriptionErrorImpl;\n})();\nexport var UnsubscriptionError = UnsubscriptionErrorImpl;\n//# sourceMappingURL=UnsubscriptionError.js.map\n","const parse = require('./parse')\nconst valid = (version, options) => {\n const v = parse(version, options)\n return v ? v.version : null\n}\nmodule.exports = valid\n","'use strict';\nvar arrayToReversed = require('../internals/array-to-reversed');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\n\n// `%TypedArray%.prototype.toReversed` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.toreversed\nexportTypedArrayMethod('toReversed', function toReversed() {\n return arrayToReversed(aTypedArray(this), getTypedArrayConstructor(this));\n});\n","/** PURE_IMPORTS_START _hostReportError PURE_IMPORTS_END */\nimport { hostReportError } from './hostReportError';\nexport var subscribeToPromise = function (promise) {\n return function (subscriber) {\n promise.then(function (value) {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, function (err) { return subscriber.error(err); })\n .then(null, hostReportError);\n return subscriber;\n };\n};\n//# sourceMappingURL=subscribeToPromise.js.map\n","/** PURE_IMPORTS_START _symbol_iterator PURE_IMPORTS_END */\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nexport var subscribeToIterable = function (iterable) {\n return function (subscriber) {\n var iterator = iterable[Symbol_iterator]();\n do {\n var item = void 0;\n try {\n item = iterator.next();\n }\n catch (err) {\n subscriber.error(err);\n return subscriber;\n }\n if (item.done) {\n subscriber.complete();\n break;\n }\n subscriber.next(item.value);\n if (subscriber.closed) {\n break;\n }\n } while (true);\n if (typeof iterator.return === 'function') {\n subscriber.add(function () {\n if (iterator.return) {\n iterator.return();\n }\n });\n }\n return subscriber;\n };\n};\n//# sourceMappingURL=subscribeToIterable.js.map\n","/** PURE_IMPORTS_START _symbol_observable PURE_IMPORTS_END */\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport var subscribeToObservable = function (obj) {\n return function (subscriber) {\n var obs = obj[Symbol_observable]();\n if (typeof obs.subscribe !== 'function') {\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n }\n else {\n return obs.subscribe(subscriber);\n }\n };\n};\n//# sourceMappingURL=subscribeToObservable.js.map\n","/** PURE_IMPORTS_START _subscribeToArray,_subscribeToPromise,_subscribeToIterable,_subscribeToObservable,_isArrayLike,_isPromise,_isObject,_symbol_iterator,_symbol_observable PURE_IMPORTS_END */\nimport { subscribeToArray } from './subscribeToArray';\nimport { subscribeToPromise } from './subscribeToPromise';\nimport { subscribeToIterable } from './subscribeToIterable';\nimport { subscribeToObservable } from './subscribeToObservable';\nimport { isArrayLike } from './isArrayLike';\nimport { isPromise } from './isPromise';\nimport { isObject } from './isObject';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport var subscribeTo = function (result) {\n if (!!result && typeof result[Symbol_observable] === 'function') {\n return subscribeToObservable(result);\n }\n else if (isArrayLike(result)) {\n return subscribeToArray(result);\n }\n else if (isPromise(result)) {\n return subscribeToPromise(result);\n }\n else if (!!result && typeof result[Symbol_iterator] === 'function') {\n return subscribeToIterable(result);\n }\n else {\n var value = isObject(result) ? 'an invalid object' : \"'\" + result + \"'\";\n var msg = \"You provided \" + value + \" where a stream was expected.\"\n + ' You can provide an Observable, Promise, Array, or Iterable.';\n throw new TypeError(msg);\n }\n};\n//# sourceMappingURL=subscribeTo.js.map\n","'use strict';\nvar isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw new $TypeError($String(argument) + ' is not an object');\n};\n","const {Cell} = require(\"../../boc\");\nconst {WalletContract} = require(\"./WalletContract\");\n\n// attention: no seqno get-method in this wallet\n\nclass SimpleWalletContractR1 extends WalletContract {\n /**\n * @param provider {HttpProvider}\n * @param options? {any}\n */\n constructor(provider, options) {\n options.code = Cell.oneFromBoc(\"B5EE9C72410101010044000084FF0020DDA4F260810200D71820D70B1FED44D0D31FD3FFD15112BAF2A122F901541044F910F2A2F80001D31F3120D74A96D307D402FB00DED1A4C8CB1FCBFFC9ED5441FDF089\");\n super(provider, options);\n }\n\n getName() {\n return 'simpleR1';\n }\n}\n\nclass SimpleWalletContractR2 extends WalletContract {\n /**\n * @param provider {HttpProvider}\n * @param options? {any}\n */\n constructor(provider, options) {\n options.code = Cell.oneFromBoc(\"B5EE9C724101010100530000A2FF0020DD2082014C97BA9730ED44D0D70B1FE0A4F260810200D71820D70B1FED44D0D31FD3FFD15112BAF2A122F901541044F910F2A2F80001D31F3120D74A96D307D402FB00DED1A4C8CB1FCBFFC9ED54D0E2786F\");\n super(provider, options);\n }\n\n getName() {\n return 'simpleR2';\n }\n}\n\nclass SimpleWalletContractR3 extends WalletContract {\n /**\n * @param provider {HttpProvider}\n * @param options? {any}\n */\n constructor(provider, options) {\n options.code = Cell.oneFromBoc(\"B5EE9C7241010101005F0000BAFF0020DD2082014C97BA218201339CBAB19C71B0ED44D0D31FD70BFFE304E0A4F260810200D71820D70B1FED44D0D31FD3FFD15112BAF2A122F901541044F910F2A2F80001D31F3120D74A96D307D402FB00DED1A4C8CB1FCBFFC9ED54B5B86E42\");\n super(provider, options);\n }\n\n getName() {\n return 'simpleR3';\n }\n}\n\nmodule.exports = {SimpleWalletContractR1, SimpleWalletContractR2, SimpleWalletContractR3};\n\n","'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (Target, Source, key) {\n key in Target || defineProperty(Target, key, {\n configurable: true,\n get: function () { return Source[key]; },\n set: function (it) { Source[key] = it; }\n });\n};\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function isObject(x) {\n return x !== null && typeof x === 'object';\n}\n//# sourceMappingURL=isObject.js.map\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\n\nmodule.exports = function (object, key, method) {\n try {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));\n } catch (error) { /* empty */ }\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","/** PURE_IMPORTS_START _Subscriber,_symbol_rxSubscriber,_Observer PURE_IMPORTS_END */\nimport { Subscriber } from '../Subscriber';\nimport { rxSubscriber as rxSubscriberSymbol } from '../symbol/rxSubscriber';\nimport { empty as emptyObserver } from '../Observer';\nexport function toSubscriber(nextOrObserver, error, complete) {\n if (nextOrObserver) {\n if (nextOrObserver instanceof Subscriber) {\n return nextOrObserver;\n }\n if (nextOrObserver[rxSubscriberSymbol]) {\n return nextOrObserver[rxSubscriberSymbol]();\n }\n }\n if (!nextOrObserver && !error && !complete) {\n return new Subscriber(emptyObserver);\n }\n return new Subscriber(nextOrObserver, error, complete);\n}\n//# sourceMappingURL=toSubscriber.js.map\n","/** PURE_IMPORTS_START _util_canReportError,_util_toSubscriber,_symbol_observable,_util_pipe,_config PURE_IMPORTS_END */\nimport { canReportError } from './util/canReportError';\nimport { toSubscriber } from './util/toSubscriber';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nvar Observable = /*@__PURE__*/ (function () {\n function Observable(subscribe) {\n this._isScalar = false;\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n Observable.prototype.lift = function (operator) {\n var observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n };\n Observable.prototype.subscribe = function (observerOrNext, error, complete) {\n var operator = this.operator;\n var sink = toSubscriber(observerOrNext, error, complete);\n if (operator) {\n sink.add(operator.call(sink, this.source));\n }\n else {\n sink.add(this.source || (config.useDeprecatedSynchronousErrorHandling && !sink.syncErrorThrowable) ?\n this._subscribe(sink) :\n this._trySubscribe(sink));\n }\n if (config.useDeprecatedSynchronousErrorHandling) {\n if (sink.syncErrorThrowable) {\n sink.syncErrorThrowable = false;\n if (sink.syncErrorThrown) {\n throw sink.syncErrorValue;\n }\n }\n }\n return sink;\n };\n Observable.prototype._trySubscribe = function (sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n sink.syncErrorThrown = true;\n sink.syncErrorValue = err;\n }\n if (canReportError(sink)) {\n sink.error(err);\n }\n else {\n console.warn(err);\n }\n }\n };\n Observable.prototype.forEach = function (next, promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var subscription;\n subscription = _this.subscribe(function (value) {\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n if (subscription) {\n subscription.unsubscribe();\n }\n }\n }, reject, resolve);\n });\n };\n Observable.prototype._subscribe = function (subscriber) {\n var source = this.source;\n return source && source.subscribe(subscriber);\n };\n Observable.prototype[Symbol_observable] = function () {\n return this;\n };\n Observable.prototype.pipe = function () {\n var operations = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n operations[_i] = arguments[_i];\n }\n if (operations.length === 0) {\n return this;\n }\n return pipeFromArray(operations)(this);\n };\n Observable.prototype.toPromise = function (promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var value;\n _this.subscribe(function (x) { return value = x; }, function (err) { return reject(err); }, function () { return resolve(value); });\n });\n };\n Observable.create = function (subscribe) {\n return new Observable(subscribe);\n };\n return Observable;\n}());\nexport { Observable };\nfunction getPromiseCtor(promiseCtor) {\n if (!promiseCtor) {\n promiseCtor = config.Promise || Promise;\n }\n if (!promiseCtor) {\n throw new Error('no Promise impl found');\n }\n return promiseCtor;\n}\n//# sourceMappingURL=Observable.js.map\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el !== el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value !== value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","const {\n BN,\n nacl,\n sha256,\n fromNano,\n toNano,\n bytesToHex,\n hexToBytes,\n stringToBytes,\n crc32c,\n crc16,\n concatBytes,\n bytesToBase64,\n base64ToBytes,\n base64toString,\n stringToBase64,\n compareBytes,\n readNBytesUIntFromArray,\n keyPairFromSeed,\n newKeyPair,\n newSeed\n} = require(\"./Utils\");\n\nconst Address = require(\"./Address\").default;\nconst AdnlAddress = require(\"./AdnlAddress\").default;\nconst StorageBagId = require(\"./StorageBagId\").default;\n\n// ton://transfer/EQA0i8-CdGnF_DhUHHf92R1ONH6sIA9vLZ_WLcCIhfBBXwtG\n// ton://transfer/EQA0i8-CdGnF_DhUHHf92R1ONH6sIA9vLZ_WLcCIhfBBXwtG?amount=1000000000\n// ton://transfer/EQA0i8-CdGnF_DhUHHf92R1ONH6sIA9vLZ_WLcCIhfBBXwtG?amount=1000000000&text=data\n// ton://transfer/EQA0i8-CdGnF_DhUHHf92R1ONH6sIA9vLZ_WLcCIhfBBXwtG?amount=1000000000&text=foo%3A%2F%2Fbar%2C%2Fbaz%3Famount%3D1%26text%3D%D1%80%D1%83\n/**\n * @param url {string}\n * @return {{address: string, amount?: string, text?: string}}\n * @throws if invalid url\n */\nfunction parseTransferUrl(url) {\n const PREFIX = 'ton://transfer/';\n\n if (!url.startsWith(PREFIX)) {\n throw new Error('must starts with ' + PREFIX);\n }\n\n const arr = url.substring(PREFIX.length).split('?');\n if (arr.length > 2) {\n throw new Error('multiple \"?\"');\n }\n\n const address = arr[0];\n if (!Address.isValid(address)) {\n throw new Error('invalid address format ' + address);\n }\n const result = {\n address: address\n };\n\n const rest = arr[1];\n if (rest && rest.length) {\n const pairs = rest.split('&').map(s => s.split('='));\n\n for (const pair of pairs) {\n if (pair.length !== 2) throw new Error('invalid url pair');\n const key = pair[0];\n const value = pair[1];\n\n if (key === 'amount') {\n if (result.amount) {\n throw new Error('amount already set');\n }\n const bn = new BN(value);\n if (bn.isNeg()) {\n throw new Error('negative amount');\n }\n result.amount = value;\n } else if (key === 'text') {\n if (result.text) {\n throw new Error('text already set');\n }\n result.text = decodeURIComponent(value);\n } else {\n throw new Error('unknown url var ' + key);\n }\n }\n }\n return result;\n}\n\n/**\n * @param address {string}\n * @param amount? {string} in nano\n * @param text? {string}\n * @return {string}\n */\nfunction formatTransferUrl(address, amount, text) {\n let url = 'ton://transfer/' + address;\n\n const params = [];\n\n if (amount) {\n params.push('amount=' + amount);\n }\n if (text) {\n params.push('text=' + encodeURIComponent(text));\n }\n\n if (params.length === 0) return url;\n\n return url + '?' + params.join('&');\n}\n\nmodule.exports = {\n Address,\n AdnlAddress,\n StorageBagId,\n BN,\n nacl,\n sha256,\n fromNano,\n toNano,\n bytesToHex,\n hexToBytes,\n stringToBytes,\n crc32c,\n crc16,\n concatBytes,\n bytesToBase64,\n base64ToBytes,\n base64toString,\n stringToBase64,\n compareBytes,\n readNBytesUIntFromArray,\n parseTransferUrl,\n formatTransferUrl,\n keyPairFromSeed,\n newKeyPair,\n newSeed\n};","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n aCallable(fn);\n return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\n// Max safe length for a build identifier. The max length minus 6 characters for\n// the shortest version with a build 0.0.0+BUILD.\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6\n\nconst RELEASE_TYPES = [\n 'major',\n 'premajor',\n 'minor',\n 'preminor',\n 'patch',\n 'prepatch',\n 'prerelease',\n]\n\nmodule.exports = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 0b001,\n FLAG_LOOSE: 0b010,\n}\n","'use strict';\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","/*!\n * @kurkle/color v0.3.2\n * https://github.com/kurkle/color#readme\n * (c) 2023 Jukka Kurkela\n * Released under the MIT License\n */\nfunction round(v) {\n return v + 0.5 | 0;\n}\nconst lim = (v, l, h) => Math.max(Math.min(v, h), l);\nfunction p2b(v) {\n return lim(round(v * 2.55), 0, 255);\n}\nfunction b2p(v) {\n return lim(round(v / 2.55), 0, 100);\n}\nfunction n2b(v) {\n return lim(round(v * 255), 0, 255);\n}\nfunction b2n(v) {\n return lim(round(v / 2.55) / 100, 0, 1);\n}\nfunction n2p(v) {\n return lim(round(v * 100), 0, 100);\n}\n\nconst map$1 = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15};\nconst hex = [...'0123456789ABCDEF'];\nconst h1 = b => hex[b & 0xF];\nconst h2 = b => hex[(b & 0xF0) >> 4] + hex[b & 0xF];\nconst eq = b => ((b & 0xF0) >> 4) === (b & 0xF);\nconst isShort = v => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\nfunction hexParse(str) {\n var len = str.length;\n var ret;\n if (str[0] === '#') {\n if (len === 4 || len === 5) {\n ret = {\n r: 255 & map$1[str[1]] * 17,\n g: 255 & map$1[str[2]] * 17,\n b: 255 & map$1[str[3]] * 17,\n a: len === 5 ? map$1[str[4]] * 17 : 255\n };\n } else if (len === 7 || len === 9) {\n ret = {\n r: map$1[str[1]] << 4 | map$1[str[2]],\n g: map$1[str[3]] << 4 | map$1[str[4]],\n b: map$1[str[5]] << 4 | map$1[str[6]],\n a: len === 9 ? (map$1[str[7]] << 4 | map$1[str[8]]) : 255\n };\n }\n }\n return ret;\n}\nconst alpha = (a, f) => a < 255 ? f(a) : '';\nfunction hexString(v) {\n var f = isShort(v) ? h1 : h2;\n return v\n ? '#' + f(v.r) + f(v.g) + f(v.b) + alpha(v.a, f)\n : undefined;\n}\n\nconst HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction hsl2rgbn(h, s, l) {\n const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n return [f(0), f(8), f(4)];\n}\nfunction hsv2rgbn(h, s, v) {\n const f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n return [f(5), f(3), f(1)];\n}\nfunction hwb2rgbn(h, w, b) {\n const rgb = hsl2rgbn(h, 1, 0.5);\n let i;\n if (w + b > 1) {\n i = 1 / (w + b);\n w *= i;\n b *= i;\n }\n for (i = 0; i < 3; i++) {\n rgb[i] *= 1 - w - b;\n rgb[i] += w;\n }\n return rgb;\n}\nfunction hueValue(r, g, b, d, max) {\n if (r === max) {\n return ((g - b) / d) + (g < b ? 6 : 0);\n }\n if (g === max) {\n return (b - r) / d + 2;\n }\n return (r - g) / d + 4;\n}\nfunction rgb2hsl(v) {\n const range = 255;\n const r = v.r / range;\n const g = v.g / range;\n const b = v.b / range;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n let h, s, d;\n if (max !== min) {\n d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n h = hueValue(r, g, b, d, max);\n h = h * 60 + 0.5;\n }\n return [h | 0, s || 0, l];\n}\nfunction calln(f, a, b, c) {\n return (\n Array.isArray(a)\n ? f(a[0], a[1], a[2])\n : f(a, b, c)\n ).map(n2b);\n}\nfunction hsl2rgb(h, s, l) {\n return calln(hsl2rgbn, h, s, l);\n}\nfunction hwb2rgb(h, w, b) {\n return calln(hwb2rgbn, h, w, b);\n}\nfunction hsv2rgb(h, s, v) {\n return calln(hsv2rgbn, h, s, v);\n}\nfunction hue(h) {\n return (h % 360 + 360) % 360;\n}\nfunction hueParse(str) {\n const m = HUE_RE.exec(str);\n let a = 255;\n let v;\n if (!m) {\n return;\n }\n if (m[5] !== v) {\n a = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n }\n const h = hue(+m[2]);\n const p1 = +m[3] / 100;\n const p2 = +m[4] / 100;\n if (m[1] === 'hwb') {\n v = hwb2rgb(h, p1, p2);\n } else if (m[1] === 'hsv') {\n v = hsv2rgb(h, p1, p2);\n } else {\n v = hsl2rgb(h, p1, p2);\n }\n return {\n r: v[0],\n g: v[1],\n b: v[2],\n a: a\n };\n}\nfunction rotate(v, deg) {\n var h = rgb2hsl(v);\n h[0] = hue(h[0] + deg);\n h = hsl2rgb(h);\n v.r = h[0];\n v.g = h[1];\n v.b = h[2];\n}\nfunction hslString(v) {\n if (!v) {\n return;\n }\n const a = rgb2hsl(v);\n const h = a[0];\n const s = n2p(a[1]);\n const l = n2p(a[2]);\n return v.a < 255\n ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})`\n : `hsl(${h}, ${s}%, ${l}%)`;\n}\n\nconst map = {\n x: 'dark',\n Z: 'light',\n Y: 're',\n X: 'blu',\n W: 'gr',\n V: 'medium',\n U: 'slate',\n A: 'ee',\n T: 'ol',\n S: 'or',\n B: 'ra',\n C: 'lateg',\n D: 'ights',\n R: 'in',\n Q: 'turquois',\n E: 'hi',\n P: 'ro',\n O: 'al',\n N: 'le',\n M: 'de',\n L: 'yello',\n F: 'en',\n K: 'ch',\n G: 'arks',\n H: 'ea',\n I: 'ightg',\n J: 'wh'\n};\nconst names$1 = {\n OiceXe: 'f0f8ff',\n antiquewEte: 'faebd7',\n aqua: 'ffff',\n aquamarRe: '7fffd4',\n azuY: 'f0ffff',\n beige: 'f5f5dc',\n bisque: 'ffe4c4',\n black: '0',\n blanKedOmond: 'ffebcd',\n Xe: 'ff',\n XeviTet: '8a2be2',\n bPwn: 'a52a2a',\n burlywood: 'deb887',\n caMtXe: '5f9ea0',\n KartYuse: '7fff00',\n KocTate: 'd2691e',\n cSO: 'ff7f50',\n cSnflowerXe: '6495ed',\n cSnsilk: 'fff8dc',\n crimson: 'dc143c',\n cyan: 'ffff',\n xXe: '8b',\n xcyan: '8b8b',\n xgTMnPd: 'b8860b',\n xWay: 'a9a9a9',\n xgYF: '6400',\n xgYy: 'a9a9a9',\n xkhaki: 'bdb76b',\n xmagFta: '8b008b',\n xTivegYF: '556b2f',\n xSange: 'ff8c00',\n xScEd: '9932cc',\n xYd: '8b0000',\n xsOmon: 'e9967a',\n xsHgYF: '8fbc8f',\n xUXe: '483d8b',\n xUWay: '2f4f4f',\n xUgYy: '2f4f4f',\n xQe: 'ced1',\n xviTet: '9400d3',\n dAppRk: 'ff1493',\n dApskyXe: 'bfff',\n dimWay: '696969',\n dimgYy: '696969',\n dodgerXe: '1e90ff',\n fiYbrick: 'b22222',\n flSOwEte: 'fffaf0',\n foYstWAn: '228b22',\n fuKsia: 'ff00ff',\n gaRsbSo: 'dcdcdc',\n ghostwEte: 'f8f8ff',\n gTd: 'ffd700',\n gTMnPd: 'daa520',\n Way: '808080',\n gYF: '8000',\n gYFLw: 'adff2f',\n gYy: '808080',\n honeyMw: 'f0fff0',\n hotpRk: 'ff69b4',\n RdianYd: 'cd5c5c',\n Rdigo: '4b0082',\n ivSy: 'fffff0',\n khaki: 'f0e68c',\n lavFMr: 'e6e6fa',\n lavFMrXsh: 'fff0f5',\n lawngYF: '7cfc00',\n NmoncEffon: 'fffacd',\n ZXe: 'add8e6',\n ZcSO: 'f08080',\n Zcyan: 'e0ffff',\n ZgTMnPdLw: 'fafad2',\n ZWay: 'd3d3d3',\n ZgYF: '90ee90',\n ZgYy: 'd3d3d3',\n ZpRk: 'ffb6c1',\n ZsOmon: 'ffa07a',\n ZsHgYF: '20b2aa',\n ZskyXe: '87cefa',\n ZUWay: '778899',\n ZUgYy: '778899',\n ZstAlXe: 'b0c4de',\n ZLw: 'ffffe0',\n lime: 'ff00',\n limegYF: '32cd32',\n lRF: 'faf0e6',\n magFta: 'ff00ff',\n maPon: '800000',\n VaquamarRe: '66cdaa',\n VXe: 'cd',\n VScEd: 'ba55d3',\n VpurpN: '9370db',\n VsHgYF: '3cb371',\n VUXe: '7b68ee',\n VsprRggYF: 'fa9a',\n VQe: '48d1cc',\n VviTetYd: 'c71585',\n midnightXe: '191970',\n mRtcYam: 'f5fffa',\n mistyPse: 'ffe4e1',\n moccasR: 'ffe4b5',\n navajowEte: 'ffdead',\n navy: '80',\n Tdlace: 'fdf5e6',\n Tive: '808000',\n TivedBb: '6b8e23',\n Sange: 'ffa500',\n SangeYd: 'ff4500',\n ScEd: 'da70d6',\n pOegTMnPd: 'eee8aa',\n pOegYF: '98fb98',\n pOeQe: 'afeeee',\n pOeviTetYd: 'db7093',\n papayawEp: 'ffefd5',\n pHKpuff: 'ffdab9',\n peru: 'cd853f',\n pRk: 'ffc0cb',\n plum: 'dda0dd',\n powMrXe: 'b0e0e6',\n purpN: '800080',\n YbeccapurpN: '663399',\n Yd: 'ff0000',\n Psybrown: 'bc8f8f',\n PyOXe: '4169e1',\n saddNbPwn: '8b4513',\n sOmon: 'fa8072',\n sandybPwn: 'f4a460',\n sHgYF: '2e8b57',\n sHshell: 'fff5ee',\n siFna: 'a0522d',\n silver: 'c0c0c0',\n skyXe: '87ceeb',\n UXe: '6a5acd',\n UWay: '708090',\n UgYy: '708090',\n snow: 'fffafa',\n sprRggYF: 'ff7f',\n stAlXe: '4682b4',\n tan: 'd2b48c',\n teO: '8080',\n tEstN: 'd8bfd8',\n tomato: 'ff6347',\n Qe: '40e0d0',\n viTet: 'ee82ee',\n JHt: 'f5deb3',\n wEte: 'ffffff',\n wEtesmoke: 'f5f5f5',\n Lw: 'ffff00',\n LwgYF: '9acd32'\n};\nfunction unpack() {\n const unpacked = {};\n const keys = Object.keys(names$1);\n const tkeys = Object.keys(map);\n let i, j, k, ok, nk;\n for (i = 0; i < keys.length; i++) {\n ok = nk = keys[i];\n for (j = 0; j < tkeys.length; j++) {\n k = tkeys[j];\n nk = nk.replace(k, map[k]);\n }\n k = parseInt(names$1[ok], 16);\n unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n }\n return unpacked;\n}\n\nlet names;\nfunction nameParse(str) {\n if (!names) {\n names = unpack();\n names.transparent = [0, 0, 0, 0];\n }\n const a = names[str.toLowerCase()];\n return a && {\n r: a[0],\n g: a[1],\n b: a[2],\n a: a.length === 4 ? a[3] : 255\n };\n}\n\nconst RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n const m = RGB_RE.exec(str);\n let a = 255;\n let r, g, b;\n if (!m) {\n return;\n }\n if (m[7] !== r) {\n const v = +m[7];\n a = m[8] ? p2b(v) : lim(v * 255, 0, 255);\n }\n r = +m[1];\n g = +m[3];\n b = +m[5];\n r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255));\n g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255));\n b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255));\n return {\n r: r,\n g: g,\n b: b,\n a: a\n };\n}\nfunction rgbString(v) {\n return v && (\n v.a < 255\n ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})`\n : `rgb(${v.r}, ${v.g}, ${v.b})`\n );\n}\n\nconst to = v => v <= 0.0031308 ? v * 12.92 : Math.pow(v, 1.0 / 2.4) * 1.055 - 0.055;\nconst from = v => v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\nfunction interpolate(rgb1, rgb2, t) {\n const r = from(b2n(rgb1.r));\n const g = from(b2n(rgb1.g));\n const b = from(b2n(rgb1.b));\n return {\n r: n2b(to(r + t * (from(b2n(rgb2.r)) - r))),\n g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),\n b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),\n a: rgb1.a + t * (rgb2.a - rgb1.a)\n };\n}\n\nfunction modHSL(v, i, ratio) {\n if (v) {\n let tmp = rgb2hsl(v);\n tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n tmp = hsl2rgb(tmp);\n v.r = tmp[0];\n v.g = tmp[1];\n v.b = tmp[2];\n }\n}\nfunction clone(v, proto) {\n return v ? Object.assign(proto || {}, v) : v;\n}\nfunction fromObject(input) {\n var v = {r: 0, g: 0, b: 0, a: 255};\n if (Array.isArray(input)) {\n if (input.length >= 3) {\n v = {r: input[0], g: input[1], b: input[2], a: 255};\n if (input.length > 3) {\n v.a = n2b(input[3]);\n }\n }\n } else {\n v = clone(input, {r: 0, g: 0, b: 0, a: 1});\n v.a = n2b(v.a);\n }\n return v;\n}\nfunction functionParse(str) {\n if (str.charAt(0) === 'r') {\n return rgbParse(str);\n }\n return hueParse(str);\n}\nclass Color {\n constructor(input) {\n if (input instanceof Color) {\n return input;\n }\n const type = typeof input;\n let v;\n if (type === 'object') {\n v = fromObject(input);\n } else if (type === 'string') {\n v = hexParse(input) || nameParse(input) || functionParse(input);\n }\n this._rgb = v;\n this._valid = !!v;\n }\n get valid() {\n return this._valid;\n }\n get rgb() {\n var v = clone(this._rgb);\n if (v) {\n v.a = b2n(v.a);\n }\n return v;\n }\n set rgb(obj) {\n this._rgb = fromObject(obj);\n }\n rgbString() {\n return this._valid ? rgbString(this._rgb) : undefined;\n }\n hexString() {\n return this._valid ? hexString(this._rgb) : undefined;\n }\n hslString() {\n return this._valid ? hslString(this._rgb) : undefined;\n }\n mix(color, weight) {\n if (color) {\n const c1 = this.rgb;\n const c2 = color.rgb;\n let w2;\n const p = weight === w2 ? 0.5 : weight;\n const w = 2 * p - 1;\n const a = c1.a - c2.a;\n const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n w2 = 1 - w1;\n c1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;\n c1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;\n c1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;\n c1.a = p * c1.a + (1 - p) * c2.a;\n this.rgb = c1;\n }\n return this;\n }\n interpolate(color, t) {\n if (color) {\n this._rgb = interpolate(this._rgb, color._rgb, t);\n }\n return this;\n }\n clone() {\n return new Color(this.rgb);\n }\n alpha(a) {\n this._rgb.a = n2b(a);\n return this;\n }\n clearer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 - ratio;\n return this;\n }\n greyscale() {\n const rgb = this._rgb;\n const val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n rgb.r = rgb.g = rgb.b = val;\n return this;\n }\n opaquer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 + ratio;\n return this;\n }\n negate() {\n const v = this._rgb;\n v.r = 255 - v.r;\n v.g = 255 - v.g;\n v.b = 255 - v.b;\n return this;\n }\n lighten(ratio) {\n modHSL(this._rgb, 2, ratio);\n return this;\n }\n darken(ratio) {\n modHSL(this._rgb, 2, -ratio);\n return this;\n }\n saturate(ratio) {\n modHSL(this._rgb, 1, ratio);\n return this;\n }\n desaturate(ratio) {\n modHSL(this._rgb, 1, -ratio);\n return this;\n }\n rotate(deg) {\n rotate(this._rgb, deg);\n return this;\n }\n}\n\nfunction index_esm(input) {\n return new Color(input);\n}\n\nexport { Color, b2n, b2p, index_esm as default, hexParse, hexString, hsl2rgb, hslString, hsv2rgb, hueParse, hwb2rgb, lim, n2b, n2p, nameParse, p2b, rgb2hsl, rgbParse, rgbString, rotate, round };\n","/**\n * @namespace Chart.helpers\n */\n\nimport type {AnyObject} from '../types/basic.js';\nimport type {ActiveDataPoint, ChartEvent} from '../types/index.js';\n\n/**\n * An empty function that can be used, for example, for optional callback.\n */\nexport function noop() {\n /* noop */\n}\n\n/**\n * Returns a unique id, sequentially generated from a global variable.\n */\nexport const uid = (() => {\n let id = 0;\n return () => id++;\n})();\n\n/**\n * Returns true if `value` is neither null nor undefined, else returns false.\n * @param value - The value to test.\n * @since 2.7.0\n */\nexport function isNullOrUndef(value: unknown): value is null | undefined {\n return value === null || typeof value === 'undefined';\n}\n\n/**\n * Returns true if `value` is an array (including typed arrays), else returns false.\n * @param value - The value to test.\n * @function\n */\nexport function isArray(value: unknown): value is T[] {\n if (Array.isArray && Array.isArray(value)) {\n return true;\n }\n const type = Object.prototype.toString.call(value);\n if (type.slice(0, 7) === '[object' && type.slice(-6) === 'Array]') {\n return true;\n }\n return false;\n}\n\n/**\n * Returns true if `value` is an object (excluding null), else returns false.\n * @param value - The value to test.\n * @since 2.7.0\n */\nexport function isObject(value: unknown): value is AnyObject {\n return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n}\n\n/**\n * Returns true if `value` is a finite number, else returns false\n * @param value - The value to test.\n */\nfunction isNumberFinite(value: unknown): value is number {\n return (typeof value === 'number' || value instanceof Number) && isFinite(+value);\n}\nexport {\n isNumberFinite as isFinite,\n};\n\n/**\n * Returns `value` if finite, else returns `defaultValue`.\n * @param value - The value to return if defined.\n * @param defaultValue - The value to return if `value` is not finite.\n */\nexport function finiteOrDefault(value: unknown, defaultValue: number) {\n return isNumberFinite(value) ? value : defaultValue;\n}\n\n/**\n * Returns `value` if defined, else returns `defaultValue`.\n * @param value - The value to return if defined.\n * @param defaultValue - The value to return if `value` is undefined.\n */\nexport function valueOrDefault(value: T | undefined, defaultValue: T) {\n return typeof value === 'undefined' ? defaultValue : value;\n}\n\nexport const toPercentage = (value: number | string, dimension: number) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100\n : +value / dimension;\n\nexport const toDimension = (value: number | string, dimension: number) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100 * dimension\n : +value;\n\n/**\n * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the\n * value returned by `fn`. If `fn` is not a function, this method returns undefined.\n * @param fn - The function to call.\n * @param args - The arguments with which `fn` should be called.\n * @param [thisArg] - The value of `this` provided for the call to `fn`.\n */\nexport function callback R, TA, R>(\n fn: T | undefined,\n args: unknown[],\n thisArg?: TA\n): R | undefined {\n if (fn && typeof fn.call === 'function') {\n return fn.apply(thisArg, args);\n }\n}\n\n/**\n * Note(SB) for performance sake, this method should only be used when loopable type\n * is unknown or in none intensive code (not called often and small loopable). Else\n * it's preferable to use a regular for() loop and save extra function calls.\n * @param loopable - The object or array to be iterated.\n * @param fn - The function to call for each item.\n * @param [thisArg] - The value of `this` provided for the call to `fn`.\n * @param [reverse] - If true, iterates backward on the loopable.\n */\nexport function each(\n loopable: Record,\n fn: (this: TA, v: T, i: string) => void,\n thisArg?: TA,\n reverse?: boolean\n): void;\nexport function each(\n loopable: T[],\n fn: (this: TA, v: T, i: number) => void,\n thisArg?: TA,\n reverse?: boolean\n): void;\nexport function each(\n loopable: T[] | Record,\n fn: (this: TA, v: T, i: any) => void,\n thisArg?: TA,\n reverse?: boolean\n) {\n let i: number, len: number, keys: string[];\n if (isArray(loopable)) {\n len = loopable.length;\n if (reverse) {\n for (i = len - 1; i >= 0; i--) {\n fn.call(thisArg, loopable[i], i);\n }\n } else {\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[i], i);\n }\n }\n } else if (isObject(loopable)) {\n keys = Object.keys(loopable);\n len = keys.length;\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[keys[i]], keys[i]);\n }\n }\n}\n\n/**\n * Returns true if the `a0` and `a1` arrays have the same content, else returns false.\n * @param a0 - The array to compare\n * @param a1 - The array to compare\n * @private\n */\nexport function _elementsEqual(a0: ActiveDataPoint[], a1: ActiveDataPoint[]) {\n let i: number, ilen: number, v0: ActiveDataPoint, v1: ActiveDataPoint;\n\n if (!a0 || !a1 || a0.length !== a1.length) {\n return false;\n }\n\n for (i = 0, ilen = a0.length; i < ilen; ++i) {\n v0 = a0[i];\n v1 = a1[i];\n\n if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Returns a deep copy of `source` without keeping references on objects and arrays.\n * @param source - The value to clone.\n */\nexport function clone(source: T): T {\n if (isArray(source)) {\n return source.map(clone) as unknown as T;\n }\n\n if (isObject(source)) {\n const target = Object.create(null);\n const keys = Object.keys(source);\n const klen = keys.length;\n let k = 0;\n\n for (; k < klen; ++k) {\n target[keys[k]] = clone(source[keys[k]]);\n }\n\n return target;\n }\n\n return source;\n}\n\nfunction isValidKey(key: string) {\n return ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\n}\n\n/**\n * The default merger when Chart.helpers.merge is called without merger option.\n * Note(SB): also used by mergeConfig and mergeScaleConfig as fallback.\n * @private\n */\nexport function _merger(key: string, target: AnyObject, source: AnyObject, options: AnyObject) {\n if (!isValidKey(key)) {\n return;\n }\n\n const tval = target[key];\n const sval = source[key];\n\n if (isObject(tval) && isObject(sval)) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n merge(tval, sval, options);\n } else {\n target[key] = clone(sval);\n }\n}\n\nexport interface MergeOptions {\n merger?: (key: string, target: AnyObject, source: AnyObject, options?: AnyObject) => void;\n}\n\n/**\n * Recursively deep copies `source` properties into `target` with the given `options`.\n * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\n * @param target - The target object in which all sources are merged into.\n * @param source - Object(s) to merge into `target`.\n * @param [options] - Merging options:\n * @param [options.merger] - The merge method (key, target, source, options)\n * @returns The `target` object.\n */\nexport function merge(target: T, source: [], options?: MergeOptions): T;\nexport function merge(target: T, source: S1, options?: MergeOptions): T & S1;\nexport function merge(target: T, source: [S1], options?: MergeOptions): T & S1;\nexport function merge(target: T, source: [S1, S2], options?: MergeOptions): T & S1 & S2;\nexport function merge(target: T, source: [S1, S2, S3], options?: MergeOptions): T & S1 & S2 & S3;\nexport function merge(\n target: T,\n source: [S1, S2, S3, S4],\n options?: MergeOptions\n): T & S1 & S2 & S3 & S4;\nexport function merge(target: T, source: AnyObject[], options?: MergeOptions): AnyObject;\nexport function merge(target: T, source: AnyObject[], options?: MergeOptions): AnyObject {\n const sources = isArray(source) ? source : [source];\n const ilen = sources.length;\n\n if (!isObject(target)) {\n return target as AnyObject;\n }\n\n options = options || {};\n const merger = options.merger || _merger;\n let current: AnyObject;\n\n for (let i = 0; i < ilen; ++i) {\n current = sources[i];\n if (!isObject(current)) {\n continue;\n }\n\n const keys = Object.keys(current);\n for (let k = 0, klen = keys.length; k < klen; ++k) {\n merger(keys[k], target, current, options as AnyObject);\n }\n }\n\n return target;\n}\n\n/**\n * Recursively deep copies `source` properties into `target` *only* if not defined in target.\n * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\n * @param target - The target object in which all sources are merged into.\n * @param source - Object(s) to merge into `target`.\n * @returns The `target` object.\n */\nexport function mergeIf(target: T, source: []): T;\nexport function mergeIf(target: T, source: S1): T & S1;\nexport function mergeIf(target: T, source: [S1]): T & S1;\nexport function mergeIf(target: T, source: [S1, S2]): T & S1 & S2;\nexport function mergeIf(target: T, source: [S1, S2, S3]): T & S1 & S2 & S3;\nexport function mergeIf(target: T, source: [S1, S2, S3, S4]): T & S1 & S2 & S3 & S4;\nexport function mergeIf(target: T, source: AnyObject[]): AnyObject;\nexport function mergeIf(target: T, source: AnyObject[]): AnyObject {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return merge(target, source, {merger: _mergerIf});\n}\n\n/**\n * Merges source[key] in target[key] only if target[key] is undefined.\n * @private\n */\nexport function _mergerIf(key: string, target: AnyObject, source: AnyObject) {\n if (!isValidKey(key)) {\n return;\n }\n\n const tval = target[key];\n const sval = source[key];\n\n if (isObject(tval) && isObject(sval)) {\n mergeIf(tval, sval);\n } else if (!Object.prototype.hasOwnProperty.call(target, key)) {\n target[key] = clone(sval);\n }\n}\n\n/**\n * @private\n */\nexport function _deprecated(scope: string, value: unknown, previous: string, current: string) {\n if (value !== undefined) {\n console.warn(scope + ': \"' + previous +\n '\" is deprecated. Please use \"' + current + '\" instead');\n }\n}\n\n// resolveObjectKey resolver cache\nconst keyResolvers = {\n // Chart.helpers.core resolveObjectKey should resolve empty key to root object\n '': v => v,\n // default resolvers\n x: o => o.x,\n y: o => o.y\n};\n\n/**\n * @private\n */\nexport function _splitKey(key: string) {\n const parts = key.split('.');\n const keys: string[] = [];\n let tmp = '';\n for (const part of parts) {\n tmp += part;\n if (tmp.endsWith('\\\\')) {\n tmp = tmp.slice(0, -1) + '.';\n } else {\n keys.push(tmp);\n tmp = '';\n }\n }\n return keys;\n}\n\nfunction _getKeyResolver(key: string) {\n const keys = _splitKey(key);\n return obj => {\n for (const k of keys) {\n if (k === '') {\n // For backward compatibility:\n // Chart.helpers.core resolveObjectKey should break at empty key\n break;\n }\n obj = obj && obj[k];\n }\n return obj;\n };\n}\n\nexport function resolveObjectKey(obj: AnyObject, key: string): any {\n const resolver = keyResolvers[key] || (keyResolvers[key] = _getKeyResolver(key));\n return resolver(obj);\n}\n\n/**\n * @private\n */\nexport function _capitalize(str: string) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\n\nexport const defined = (value: unknown) => typeof value !== 'undefined';\n\nexport const isFunction = (value: unknown): value is (...args: any[]) => any => typeof value === 'function';\n\n// Adapted from https://stackoverflow.com/questions/31128855/comparing-ecma6-sets-for-equality#31129384\nexport const setsEqual = (a: Set, b: Set) => {\n if (a.size !== b.size) {\n return false;\n }\n\n for (const item of a) {\n if (!b.has(item)) {\n return false;\n }\n }\n\n return true;\n};\n\n/**\n * @param e - The event\n * @private\n */\nexport function _isClickEvent(e: ChartEvent) {\n return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu';\n}\n","import type {Point} from '../types/geometric.js';\nimport {isFinite as isFiniteNumber} from './helpers.core.js';\n\n/**\n * @alias Chart.helpers.math\n * @namespace\n */\n\nexport const PI = Math.PI;\nexport const TAU = 2 * PI;\nexport const PITAU = TAU + PI;\nexport const INFINITY = Number.POSITIVE_INFINITY;\nexport const RAD_PER_DEG = PI / 180;\nexport const HALF_PI = PI / 2;\nexport const QUARTER_PI = PI / 4;\nexport const TWO_THIRDS_PI = PI * 2 / 3;\n\nexport const log10 = Math.log10;\nexport const sign = Math.sign;\n\nexport function almostEquals(x: number, y: number, epsilon: number) {\n return Math.abs(x - y) < epsilon;\n}\n\n/**\n * Implementation of the nice number algorithm used in determining where axis labels will go\n */\nexport function niceNum(range: number) {\n const roundedRange = Math.round(range);\n range = almostEquals(range, roundedRange, range / 1000) ? roundedRange : range;\n const niceRange = Math.pow(10, Math.floor(log10(range)));\n const fraction = range / niceRange;\n const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n return niceFraction * niceRange;\n}\n\n/**\n * Returns an array of factors sorted from 1 to sqrt(value)\n * @private\n */\nexport function _factorize(value: number) {\n const result: number[] = [];\n const sqrt = Math.sqrt(value);\n let i: number;\n\n for (i = 1; i < sqrt; i++) {\n if (value % i === 0) {\n result.push(i);\n result.push(value / i);\n }\n }\n if (sqrt === (sqrt | 0)) { // if value is a square number\n result.push(sqrt);\n }\n\n result.sort((a, b) => a - b).pop();\n return result;\n}\n\nexport function isNumber(n: unknown): n is number {\n return !isNaN(parseFloat(n as string)) && isFinite(n as number);\n}\n\nexport function almostWhole(x: number, epsilon: number) {\n const rounded = Math.round(x);\n return ((rounded - epsilon) <= x) && ((rounded + epsilon) >= x);\n}\n\n/**\n * @private\n */\nexport function _setMinAndMaxByKey(\n array: Record[],\n target: { min: number, max: number },\n property: string\n) {\n let i: number, ilen: number, value: number;\n\n for (i = 0, ilen = array.length; i < ilen; i++) {\n value = array[i][property];\n if (!isNaN(value)) {\n target.min = Math.min(target.min, value);\n target.max = Math.max(target.max, value);\n }\n }\n}\n\nexport function toRadians(degrees: number) {\n return degrees * (PI / 180);\n}\n\nexport function toDegrees(radians: number) {\n return radians * (180 / PI);\n}\n\n/**\n * Returns the number of decimal places\n * i.e. the number of digits after the decimal point, of the value of this Number.\n * @param x - A number.\n * @returns The number of decimal places.\n * @private\n */\nexport function _decimalPlaces(x: number) {\n if (!isFiniteNumber(x)) {\n return;\n }\n let e = 1;\n let p = 0;\n while (Math.round(x * e) / e !== x) {\n e *= 10;\n p++;\n }\n return p;\n}\n\n// Gets the angle from vertical upright to the point about a centre.\nexport function getAngleFromPoint(\n centrePoint: Point,\n anglePoint: Point\n) {\n const distanceFromXCenter = anglePoint.x - centrePoint.x;\n const distanceFromYCenter = anglePoint.y - centrePoint.y;\n const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n\n let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n\n if (angle < (-0.5 * PI)) {\n angle += TAU; // make sure the returned angle is in the range of (-PI/2, 3PI/2]\n }\n\n return {\n angle,\n distance: radialDistanceFromCenter\n };\n}\n\nexport function distanceBetweenPoints(pt1: Point, pt2: Point) {\n return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n}\n\n/**\n * Shortest distance between angles, in either direction.\n * @private\n */\nexport function _angleDiff(a: number, b: number) {\n return (a - b + PITAU) % TAU - PI;\n}\n\n/**\n * Normalize angle to be between 0 and 2*PI\n * @private\n */\nexport function _normalizeAngle(a: number) {\n return (a % TAU + TAU) % TAU;\n}\n\n/**\n * @private\n */\nexport function _angleBetween(angle: number, start: number, end: number, sameAngleIsFullCircle?: boolean) {\n const a = _normalizeAngle(angle);\n const s = _normalizeAngle(start);\n const e = _normalizeAngle(end);\n const angleToStart = _normalizeAngle(s - a);\n const angleToEnd = _normalizeAngle(e - a);\n const startToAngle = _normalizeAngle(a - s);\n const endToAngle = _normalizeAngle(a - e);\n return a === s || a === e || (sameAngleIsFullCircle && s === e)\n || (angleToStart > angleToEnd && startToAngle < endToAngle);\n}\n\n/**\n * Limit `value` between `min` and `max`\n * @param value\n * @param min\n * @param max\n * @private\n */\nexport function _limitValue(value: number, min: number, max: number) {\n return Math.max(min, Math.min(max, value));\n}\n\n/**\n * @param {number} value\n * @private\n */\nexport function _int16Range(value: number) {\n return _limitValue(value, -32768, 32767);\n}\n\n/**\n * @param value\n * @param start\n * @param end\n * @param [epsilon]\n * @private\n */\nexport function _isBetween(value: number, start: number, end: number, epsilon = 1e-6) {\n return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon;\n}\n","import {_capitalize} from './helpers.core.js';\n\n/**\n * Binary search\n * @param table - the table search. must be sorted!\n * @param value - value to find\n * @param cmp\n * @private\n */\nexport function _lookup(\n table: number[],\n value: number,\n cmp?: (value: number) => boolean\n): {lo: number, hi: number};\nexport function _lookup(\n table: T[],\n value: number,\n cmp: (value: number) => boolean\n): {lo: number, hi: number};\nexport function _lookup(\n table: unknown[],\n value: number,\n cmp?: (value: number) => boolean\n) {\n cmp = cmp || ((index) => table[index] < value);\n let hi = table.length - 1;\n let lo = 0;\n let mid: number;\n\n while (hi - lo > 1) {\n mid = (lo + hi) >> 1;\n if (cmp(mid)) {\n lo = mid;\n } else {\n hi = mid;\n }\n }\n\n return {lo, hi};\n}\n\n/**\n * Binary search\n * @param table - the table search. must be sorted!\n * @param key - property name for the value in each entry\n * @param value - value to find\n * @param last - lookup last index\n * @private\n */\nexport const _lookupByKey = (\n table: Record[],\n key: string,\n value: number,\n last?: boolean\n) =>\n _lookup(table, value, last\n ? index => {\n const ti = table[index][key];\n return ti < value || ti === value && table[index + 1][key] === value;\n }\n : index => table[index][key] < value);\n\n/**\n * Reverse binary search\n * @param table - the table search. must be sorted!\n * @param key - property name for the value in each entry\n * @param value - value to find\n * @private\n */\nexport const _rlookupByKey = (\n table: Record[],\n key: string,\n value: number\n) =>\n _lookup(table, value, index => table[index][key] >= value);\n\n/**\n * Return subset of `values` between `min` and `max` inclusive.\n * Values are assumed to be in sorted order.\n * @param values - sorted array of values\n * @param min - min value\n * @param max - max value\n */\nexport function _filterBetween(values: number[], min: number, max: number) {\n let start = 0;\n let end = values.length;\n\n while (start < end && values[start] < min) {\n start++;\n }\n while (end > start && values[end - 1] > max) {\n end--;\n }\n\n return start > 0 || end < values.length\n ? values.slice(start, end)\n : values;\n}\n\nconst arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'] as const;\n\nexport interface ArrayListener {\n _onDataPush?(...item: T[]): void;\n _onDataPop?(): void;\n _onDataShift?(): void;\n _onDataSplice?(index: number, deleteCount: number, ...items: T[]): void;\n _onDataUnshift?(...item: T[]): void;\n}\n\n/**\n * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice',\n * 'unshift') and notify the listener AFTER the array has been altered. Listeners are\n * called on the '_onData*' callbacks (e.g. _onDataPush, etc.) with same arguments.\n */\nexport function listenArrayEvents(array: T[], listener: ArrayListener): void;\nexport function listenArrayEvents(array, listener) {\n if (array._chartjs) {\n array._chartjs.listeners.push(listener);\n return;\n }\n\n Object.defineProperty(array, '_chartjs', {\n configurable: true,\n enumerable: false,\n value: {\n listeners: [listener]\n }\n });\n\n arrayEvents.forEach((key) => {\n const method = '_onData' + _capitalize(key);\n const base = array[key];\n\n Object.defineProperty(array, key, {\n configurable: true,\n enumerable: false,\n value(...args) {\n const res = base.apply(this, args);\n\n array._chartjs.listeners.forEach((object) => {\n if (typeof object[method] === 'function') {\n object[method](...args);\n }\n });\n\n return res;\n }\n });\n });\n}\n\n\n/**\n * Removes the given array event listener and cleanup extra attached properties (such as\n * the _chartjs stub and overridden methods) if array doesn't have any more listeners.\n */\nexport function unlistenArrayEvents(array: T[], listener: ArrayListener): void;\nexport function unlistenArrayEvents(array, listener) {\n const stub = array._chartjs;\n if (!stub) {\n return;\n }\n\n const listeners = stub.listeners;\n const index = listeners.indexOf(listener);\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n\n if (listeners.length > 0) {\n return;\n }\n\n arrayEvents.forEach((key) => {\n delete array[key];\n });\n\n delete array._chartjs;\n}\n\n/**\n * @param items\n */\nexport function _arrayUnique(items: T[]) {\n const set = new Set(items);\n\n if (set.size === items.length) {\n return items;\n }\n\n return Array.from(set);\n}\n","import type {ChartMeta, PointElement} from '../types/index.js';\n\nimport {_limitValue} from './helpers.math.js';\nimport {_lookupByKey} from './helpers.collection.js';\n\nexport function fontString(pixelSize: number, fontStyle: string, fontFamily: string) {\n return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n}\n\n/**\n* Request animation polyfill\n*/\nexport const requestAnimFrame = (function() {\n if (typeof window === 'undefined') {\n return function(callback) {\n return callback();\n };\n }\n return window.requestAnimationFrame;\n}());\n\n/**\n * Throttles calling `fn` once per animation frame\n * Latest arguments are used on the actual call\n */\nexport function throttled>(\n fn: (...args: TArgs) => void,\n thisArg: any,\n) {\n let argsToUse = [] as TArgs;\n let ticking = false;\n\n return function(...args: TArgs) {\n // Save the args for use later\n argsToUse = args;\n if (!ticking) {\n ticking = true;\n requestAnimFrame.call(window, () => {\n ticking = false;\n fn.apply(thisArg, argsToUse);\n });\n }\n };\n}\n\n/**\n * Debounces calling `fn` for `delay` ms\n */\nexport function debounce>(fn: (...args: TArgs) => void, delay: number) {\n let timeout;\n return function(...args: TArgs) {\n if (delay) {\n clearTimeout(timeout);\n timeout = setTimeout(fn, delay, args);\n } else {\n fn.apply(this, args);\n }\n return delay;\n };\n}\n\n/**\n * Converts 'start' to 'left', 'end' to 'right' and others to 'center'\n * @private\n */\nexport const _toLeftRightCenter = (align: 'start' | 'end' | 'center') => align === 'start' ? 'left' : align === 'end' ? 'right' : 'center';\n\n/**\n * Returns `start`, `end` or `(start + end) / 2` depending on `align`. Defaults to `center`\n * @private\n */\nexport const _alignStartEnd = (align: 'start' | 'end' | 'center', start: number, end: number) => align === 'start' ? start : align === 'end' ? end : (start + end) / 2;\n\n/**\n * Returns `left`, `right` or `(left + right) / 2` depending on `align`. Defaults to `left`\n * @private\n */\nexport const _textX = (align: 'left' | 'right' | 'center', left: number, right: number, rtl: boolean) => {\n const check = rtl ? 'left' : 'right';\n return align === check ? right : align === 'center' ? (left + right) / 2 : left;\n};\n\n/**\n * Return start and count of visible points.\n * @private\n */\nexport function _getStartAndCountOfVisiblePoints(meta: ChartMeta<'line' | 'scatter'>, points: PointElement[], animationsDisabled: boolean) {\n const pointCount = points.length;\n\n let start = 0;\n let count = pointCount;\n\n if (meta._sorted) {\n const {iScale, _parsed} = meta;\n const axis = iScale.axis;\n const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n\n if (minDefined) {\n start = _limitValue(Math.min(\n // @ts-expect-error Need to type _parsed\n _lookupByKey(_parsed, axis, min).lo,\n // @ts-expect-error Need to fix types on _lookupByKey\n animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo),\n 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(Math.max(\n // @ts-expect-error Need to type _parsed\n _lookupByKey(_parsed, iScale.axis, max, true).hi + 1,\n // @ts-expect-error Need to fix types on _lookupByKey\n animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max), true).hi + 1),\n start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n }\n\n return {start, count};\n}\n\n/**\n * Checks if the scale ranges have changed.\n * @param {object} meta - dataset meta.\n * @returns {boolean}\n * @private\n */\nexport function _scaleRangesChanged(meta) {\n const {xScale, yScale, _scaleRanges} = meta;\n const newRanges = {\n xmin: xScale.min,\n xmax: xScale.max,\n ymin: yScale.min,\n ymax: yScale.max\n };\n if (!_scaleRanges) {\n meta._scaleRanges = newRanges;\n return true;\n }\n const changed = _scaleRanges.xmin !== xScale.min\n\t\t|| _scaleRanges.xmax !== xScale.max\n\t\t|| _scaleRanges.ymin !== yScale.min\n\t\t|| _scaleRanges.ymax !== yScale.max;\n\n Object.assign(_scaleRanges, newRanges);\n return changed;\n}\n","import {PI, TAU, HALF_PI} from './helpers.math.js';\n\nconst atEdge = (t: number) => t === 0 || t === 1;\nconst elasticIn = (t: number, s: number, p: number) => -(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p));\nconst elasticOut = (t: number, s: number, p: number) => Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1;\n\n/**\n * Easing functions adapted from Robert Penner's easing equations.\n * @namespace Chart.helpers.easing.effects\n * @see http://www.robertpenner.com/easing/\n */\nconst effects = {\n linear: (t: number) => t,\n\n easeInQuad: (t: number) => t * t,\n\n easeOutQuad: (t: number) => -t * (t - 2),\n\n easeInOutQuad: (t: number) => ((t /= 0.5) < 1)\n ? 0.5 * t * t\n : -0.5 * ((--t) * (t - 2) - 1),\n\n easeInCubic: (t: number) => t * t * t,\n\n easeOutCubic: (t: number) => (t -= 1) * t * t + 1,\n\n easeInOutCubic: (t: number) => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t\n : 0.5 * ((t -= 2) * t * t + 2),\n\n easeInQuart: (t: number) => t * t * t * t,\n\n easeOutQuart: (t: number) => -((t -= 1) * t * t * t - 1),\n\n easeInOutQuart: (t: number) => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t * t\n : -0.5 * ((t -= 2) * t * t * t - 2),\n\n easeInQuint: (t: number) => t * t * t * t * t,\n\n easeOutQuint: (t: number) => (t -= 1) * t * t * t * t + 1,\n\n easeInOutQuint: (t: number) => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t * t * t\n : 0.5 * ((t -= 2) * t * t * t * t + 2),\n\n easeInSine: (t: number) => -Math.cos(t * HALF_PI) + 1,\n\n easeOutSine: (t: number) => Math.sin(t * HALF_PI),\n\n easeInOutSine: (t: number) => -0.5 * (Math.cos(PI * t) - 1),\n\n easeInExpo: (t: number) => (t === 0) ? 0 : Math.pow(2, 10 * (t - 1)),\n\n easeOutExpo: (t: number) => (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1,\n\n easeInOutExpo: (t: number) => atEdge(t) ? t : t < 0.5\n ? 0.5 * Math.pow(2, 10 * (t * 2 - 1))\n : 0.5 * (-Math.pow(2, -10 * (t * 2 - 1)) + 2),\n\n easeInCirc: (t: number) => (t >= 1) ? t : -(Math.sqrt(1 - t * t) - 1),\n\n easeOutCirc: (t: number) => Math.sqrt(1 - (t -= 1) * t),\n\n easeInOutCirc: (t: number) => ((t /= 0.5) < 1)\n ? -0.5 * (Math.sqrt(1 - t * t) - 1)\n : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1),\n\n easeInElastic: (t: number) => atEdge(t) ? t : elasticIn(t, 0.075, 0.3),\n\n easeOutElastic: (t: number) => atEdge(t) ? t : elasticOut(t, 0.075, 0.3),\n\n easeInOutElastic(t: number) {\n const s = 0.1125;\n const p = 0.45;\n return atEdge(t) ? t :\n t < 0.5\n ? 0.5 * elasticIn(t * 2, s, p)\n : 0.5 + 0.5 * elasticOut(t * 2 - 1, s, p);\n },\n\n easeInBack(t: number) {\n const s = 1.70158;\n return t * t * ((s + 1) * t - s);\n },\n\n easeOutBack(t: number) {\n const s = 1.70158;\n return (t -= 1) * t * ((s + 1) * t + s) + 1;\n },\n\n easeInOutBack(t: number) {\n let s = 1.70158;\n if ((t /= 0.5) < 1) {\n return 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\n }\n return 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\n },\n\n easeInBounce: (t: number) => 1 - effects.easeOutBounce(1 - t),\n\n easeOutBounce(t: number) {\n const m = 7.5625;\n const d = 2.75;\n if (t < (1 / d)) {\n return m * t * t;\n }\n if (t < (2 / d)) {\n return m * (t -= (1.5 / d)) * t + 0.75;\n }\n if (t < (2.5 / d)) {\n return m * (t -= (2.25 / d)) * t + 0.9375;\n }\n return m * (t -= (2.625 / d)) * t + 0.984375;\n },\n\n easeInOutBounce: (t: number) => (t < 0.5)\n ? effects.easeInBounce(t * 2) * 0.5\n : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5,\n} as const;\n\nexport type EasingFunction = keyof typeof effects\n\nexport default effects;\n","import {Color} from '@kurkle/color';\n\nexport function isPatternOrGradient(value: unknown): value is CanvasPattern | CanvasGradient {\n if (value && typeof value === 'object') {\n const type = value.toString();\n return type === '[object CanvasPattern]' || type === '[object CanvasGradient]';\n }\n\n return false;\n}\n\nexport function color(value: CanvasGradient): CanvasGradient;\nexport function color(value: CanvasPattern): CanvasPattern;\nexport function color(\n value:\n | string\n | { r: number; g: number; b: number; a: number }\n | [number, number, number]\n | [number, number, number, number]\n): Color;\nexport function color(value) {\n return isPatternOrGradient(value) ? value : new Color(value);\n}\n\nexport function getHoverColor(value: CanvasGradient): CanvasGradient;\nexport function getHoverColor(value: CanvasPattern): CanvasPattern;\nexport function getHoverColor(value: string): string;\nexport function getHoverColor(value) {\n return isPatternOrGradient(value)\n ? value\n : new Color(value).saturate(0.5).darken(0.1).hexString();\n}\n","const numbers = ['x', 'y', 'borderWidth', 'radius', 'tension'];\nconst colors = ['color', 'borderColor', 'backgroundColor'];\n\nexport function applyAnimationsDefaults(defaults) {\n defaults.set('animation', {\n delay: undefined,\n duration: 1000,\n easing: 'easeOutQuart',\n fn: undefined,\n from: undefined,\n loop: undefined,\n to: undefined,\n type: undefined,\n });\n\n defaults.describe('animation', {\n _fallback: false,\n _indexable: false,\n _scriptable: (name) => name !== 'onProgress' && name !== 'onComplete' && name !== 'fn',\n });\n\n defaults.set('animations', {\n colors: {\n type: 'color',\n properties: colors\n },\n numbers: {\n type: 'number',\n properties: numbers\n },\n });\n\n defaults.describe('animations', {\n _fallback: 'animation',\n });\n\n defaults.set('transitions', {\n active: {\n animation: {\n duration: 400\n }\n },\n resize: {\n animation: {\n duration: 0\n }\n },\n show: {\n animations: {\n colors: {\n from: 'transparent'\n },\n visible: {\n type: 'boolean',\n duration: 0 // show immediately\n },\n }\n },\n hide: {\n animations: {\n colors: {\n to: 'transparent'\n },\n visible: {\n type: 'boolean',\n easing: 'linear',\n fn: v => v | 0 // for keeping the dataset visible all the way through the animation\n },\n }\n }\n });\n}\n","export function applyLayoutsDefaults(defaults) {\n defaults.set('layout', {\n autoPadding: true,\n padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }\n });\n}\n","\nconst intlCache = new Map();\n\nfunction getNumberFormat(locale: string, options?: Intl.NumberFormatOptions) {\n options = options || {};\n const cacheKey = locale + JSON.stringify(options);\n let formatter = intlCache.get(cacheKey);\n if (!formatter) {\n formatter = new Intl.NumberFormat(locale, options);\n intlCache.set(cacheKey, formatter);\n }\n return formatter;\n}\n\nexport function formatNumber(num: number, locale: string, options?: Intl.NumberFormatOptions) {\n return getNumberFormat(locale, options).format(num);\n}\n","import {isArray} from '../helpers/helpers.core.js';\nimport {formatNumber} from '../helpers/helpers.intl.js';\nimport {log10} from '../helpers/helpers.math.js';\n\n/**\n * Namespace to hold formatters for different types of ticks\n * @namespace Chart.Ticks.formatters\n */\nconst formatters = {\n /**\n * Formatter for value labels\n * @method Chart.Ticks.formatters.values\n * @param value the value to display\n * @return {string|string[]} the label to display\n */\n values(value) {\n return isArray(value) ? /** @type {string[]} */ (value) : '' + value;\n },\n\n /**\n * Formatter for numeric ticks\n * @method Chart.Ticks.formatters.numeric\n * @param tickValue {number} the value to be formatted\n * @param index {number} the position of the tickValue parameter in the ticks array\n * @param ticks {object[]} the list of ticks being converted\n * @return {string} string representation of the tickValue parameter\n */\n numeric(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0'; // never show decimal places for 0\n }\n\n const locale = this.chart.options.locale;\n let notation;\n let delta = tickValue; // This is used when there are less than 2 ticks as the tick interval.\n\n if (ticks.length > 1) {\n // all ticks are small or there huge numbers; use scientific notation\n const maxTick = Math.max(Math.abs(ticks[0].value), Math.abs(ticks[ticks.length - 1].value));\n if (maxTick < 1e-4 || maxTick > 1e+15) {\n notation = 'scientific';\n }\n\n delta = calculateDelta(tickValue, ticks);\n }\n\n const logDelta = log10(Math.abs(delta));\n\n // When datasets have values approaching Number.MAX_VALUE, the tick calculations might result in\n // infinity and eventually NaN. Passing NaN for minimumFractionDigits or maximumFractionDigits\n // will make the number formatter throw. So instead we check for isNaN and use a fallback value.\n //\n // toFixed has a max of 20 decimal places\n const numDecimal = isNaN(logDelta) ? 1 : Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0);\n\n const options = {notation, minimumFractionDigits: numDecimal, maximumFractionDigits: numDecimal};\n Object.assign(options, this.options.ticks.format);\n\n return formatNumber(tickValue, locale, options);\n },\n\n\n /**\n * Formatter for logarithmic ticks\n * @method Chart.Ticks.formatters.logarithmic\n * @param tickValue {number} the value to be formatted\n * @param index {number} the position of the tickValue parameter in the ticks array\n * @param ticks {object[]} the list of ticks being converted\n * @return {string} string representation of the tickValue parameter\n */\n logarithmic(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const remain = ticks[index].significand || (tickValue / (Math.pow(10, Math.floor(log10(tickValue)))));\n if ([1, 2, 3, 5, 10, 15].includes(remain) || index > 0.8 * ticks.length) {\n return formatters.numeric.call(this, tickValue, index, ticks);\n }\n return '';\n }\n\n};\n\n\nfunction calculateDelta(tickValue, ticks) {\n // Figure out how many digits to show\n // The space between the first two ticks might be smaller than normal spacing\n let delta = ticks.length > 3 ? ticks[2].value - ticks[1].value : ticks[1].value - ticks[0].value;\n\n // If we have a number like 2.5 as the delta, figure out how many decimal places we need\n if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) {\n // not an integer\n delta = tickValue - Math.floor(tickValue);\n }\n return delta;\n}\n\n/**\n * Namespace to hold static tick generation functions\n * @namespace Chart.Ticks\n */\nexport default {formatters};\n","import Ticks from './core.ticks.js';\n\nexport function applyScaleDefaults(defaults) {\n defaults.set('scale', {\n display: true,\n offset: false,\n reverse: false,\n beginAtZero: false,\n\n /**\n * Scale boundary strategy (bypassed by min/max time options)\n * - `data`: make sure data are fully visible, ticks outside are removed\n * - `ticks`: make sure ticks are fully visible, data outside are truncated\n * @see https://github.com/chartjs/Chart.js/pull/4556\n * @since 3.0.0\n */\n bounds: 'ticks',\n\n clip: true,\n\n /**\n * Addition grace added to max and reduced from min data value.\n * @since 3.0.0\n */\n grace: 0,\n\n // grid line settings\n grid: {\n display: true,\n lineWidth: 1,\n drawOnChartArea: true,\n drawTicks: true,\n tickLength: 8,\n tickWidth: (_ctx, options) => options.lineWidth,\n tickColor: (_ctx, options) => options.color,\n offset: false,\n },\n\n border: {\n display: true,\n dash: [],\n dashOffset: 0.0,\n width: 1\n },\n\n // scale title\n title: {\n // display property\n display: false,\n\n // actual label\n text: '',\n\n // top/bottom padding\n padding: {\n top: 4,\n bottom: 4\n }\n },\n\n // label settings\n ticks: {\n minRotation: 0,\n maxRotation: 50,\n mirror: false,\n textStrokeWidth: 0,\n textStrokeColor: '',\n padding: 3,\n display: true,\n autoSkip: true,\n autoSkipPadding: 3,\n labelOffset: 0,\n // We pass through arrays to be rendered as multiline labels, we convert Others to strings here.\n callback: Ticks.formatters.values,\n minor: {},\n major: {},\n align: 'center',\n crossAlign: 'near',\n\n showLabelBackdrop: false,\n backdropColor: 'rgba(255, 255, 255, 0.75)',\n backdropPadding: 2,\n }\n });\n\n defaults.route('scale.ticks', 'color', '', 'color');\n defaults.route('scale.grid', 'color', '', 'borderColor');\n defaults.route('scale.border', 'color', '', 'borderColor');\n defaults.route('scale.title', 'color', '', 'color');\n\n defaults.describe('scale', {\n _fallback: false,\n _scriptable: (name) => !name.startsWith('before') && !name.startsWith('after') && name !== 'callback' && name !== 'parser',\n _indexable: (name) => name !== 'borderDash' && name !== 'tickBorderDash' && name !== 'dash',\n });\n\n defaults.describe('scales', {\n _fallback: 'scale',\n });\n\n defaults.describe('scale.ticks', {\n _scriptable: (name) => name !== 'backdropPadding' && name !== 'callback',\n _indexable: (name) => name !== 'backdropPadding',\n });\n}\n","import {getHoverColor} from '../helpers/helpers.color.js';\nimport {isObject, merge, valueOrDefault} from '../helpers/helpers.core.js';\nimport {applyAnimationsDefaults} from './core.animations.defaults.js';\nimport {applyLayoutsDefaults} from './core.layouts.defaults.js';\nimport {applyScaleDefaults} from './core.scale.defaults.js';\n\nexport const overrides = Object.create(null);\nexport const descriptors = Object.create(null);\n\n/**\n * @param {object} node\n * @param {string} key\n * @return {object}\n */\nfunction getScope(node, key) {\n if (!key) {\n return node;\n }\n const keys = key.split('.');\n for (let i = 0, n = keys.length; i < n; ++i) {\n const k = keys[i];\n node = node[k] || (node[k] = Object.create(null));\n }\n return node;\n}\n\nfunction set(root, scope, values) {\n if (typeof scope === 'string') {\n return merge(getScope(root, scope), values);\n }\n return merge(getScope(root, ''), scope);\n}\n\n/**\n * Please use the module's default export which provides a singleton instance\n * Note: class is exported for typedoc\n */\nexport class Defaults {\n constructor(_descriptors, _appliers) {\n this.animation = undefined;\n this.backgroundColor = 'rgba(0,0,0,0.1)';\n this.borderColor = 'rgba(0,0,0,0.1)';\n this.color = '#666';\n this.datasets = {};\n this.devicePixelRatio = (context) => context.chart.platform.getDevicePixelRatio();\n this.elements = {};\n this.events = [\n 'mousemove',\n 'mouseout',\n 'click',\n 'touchstart',\n 'touchmove'\n ];\n this.font = {\n family: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n size: 12,\n style: 'normal',\n lineHeight: 1.2,\n weight: null\n };\n this.hover = {};\n this.hoverBackgroundColor = (ctx, options) => getHoverColor(options.backgroundColor);\n this.hoverBorderColor = (ctx, options) => getHoverColor(options.borderColor);\n this.hoverColor = (ctx, options) => getHoverColor(options.color);\n this.indexAxis = 'x';\n this.interaction = {\n mode: 'nearest',\n intersect: true,\n includeInvisible: false\n };\n this.maintainAspectRatio = true;\n this.onHover = null;\n this.onClick = null;\n this.parsing = true;\n this.plugins = {};\n this.responsive = true;\n this.scale = undefined;\n this.scales = {};\n this.showLine = true;\n this.drawActiveElementsOnTop = true;\n\n this.describe(_descriptors);\n this.apply(_appliers);\n }\n\n /**\n\t * @param {string|object} scope\n\t * @param {object} [values]\n\t */\n set(scope, values) {\n return set(this, scope, values);\n }\n\n /**\n\t * @param {string} scope\n\t */\n get(scope) {\n return getScope(this, scope);\n }\n\n /**\n\t * @param {string|object} scope\n\t * @param {object} [values]\n\t */\n describe(scope, values) {\n return set(descriptors, scope, values);\n }\n\n override(scope, values) {\n return set(overrides, scope, values);\n }\n\n /**\n\t * Routes the named defaults to fallback to another scope/name.\n\t * This routing is useful when those target values, like defaults.color, are changed runtime.\n\t * If the values would be copied, the runtime change would not take effect. By routing, the\n\t * fallback is evaluated at each access, so its always up to date.\n\t *\n\t * Example:\n\t *\n\t * \tdefaults.route('elements.arc', 'backgroundColor', '', 'color')\n\t * - reads the backgroundColor from defaults.color when undefined locally\n\t *\n\t * @param {string} scope Scope this route applies to.\n\t * @param {string} name Property name that should be routed to different namespace when not defined here.\n\t * @param {string} targetScope The namespace where those properties should be routed to.\n\t * Empty string ('') is the root of defaults.\n\t * @param {string} targetName The target name in the target scope the property should be routed to.\n\t */\n route(scope, name, targetScope, targetName) {\n const scopeObject = getScope(this, scope);\n const targetScopeObject = getScope(this, targetScope);\n const privateName = '_' + name;\n\n Object.defineProperties(scopeObject, {\n // A private property is defined to hold the actual value, when this property is set in its scope (set in the setter)\n [privateName]: {\n value: scopeObject[name],\n writable: true\n },\n // The actual property is defined as getter/setter so we can do the routing when value is not locally set.\n [name]: {\n enumerable: true,\n get() {\n const local = this[privateName];\n const target = targetScopeObject[targetName];\n if (isObject(local)) {\n return Object.assign({}, target, local);\n }\n return valueOrDefault(local, target);\n },\n set(value) {\n this[privateName] = value;\n }\n }\n });\n }\n\n apply(appliers) {\n appliers.forEach((apply) => apply(this));\n }\n}\n\n// singleton instance\nexport default /* #__PURE__ */ new Defaults({\n _scriptable: (name) => !name.startsWith('on'),\n _indexable: (name) => name !== 'events',\n hover: {\n _fallback: 'interaction'\n },\n interaction: {\n _scriptable: false,\n _indexable: false,\n }\n}, [applyAnimationsDefaults, applyLayoutsDefaults, applyScaleDefaults]);\n","import type {\n Chart,\n Point,\n FontSpec,\n CanvasFontSpec,\n PointStyle,\n RenderTextOpts,\n BackdropOptions\n} from '../types/index.js';\nimport type {\n TRBL,\n SplinePoint,\n RoundedRect,\n TRBLCorners\n} from '../types/geometric.js';\nimport {isArray, isNullOrUndef} from './helpers.core.js';\nimport {PI, TAU, HALF_PI, QUARTER_PI, TWO_THIRDS_PI, RAD_PER_DEG} from './helpers.math.js';\n\n/**\n * Converts the given font object into a CSS font string.\n * @param font - A font object.\n * @return The CSS font string. See https://developer.mozilla.org/en-US/docs/Web/CSS/font\n * @private\n */\nexport function toFontString(font: FontSpec) {\n if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) {\n return null;\n }\n\n return (font.style ? font.style + ' ' : '')\n\t\t+ (font.weight ? font.weight + ' ' : '')\n\t\t+ font.size + 'px '\n\t\t+ font.family;\n}\n\n/**\n * @private\n */\nexport function _measureText(\n ctx: CanvasRenderingContext2D,\n data: Record,\n gc: string[],\n longest: number,\n string: string\n) {\n let textWidth = data[string];\n if (!textWidth) {\n textWidth = data[string] = ctx.measureText(string).width;\n gc.push(string);\n }\n if (textWidth > longest) {\n longest = textWidth;\n }\n return longest;\n}\n\ntype Thing = string | undefined | null\ntype Things = (Thing | Thing[])[]\n\n/**\n * @private\n */\n// eslint-disable-next-line complexity\nexport function _longestText(\n ctx: CanvasRenderingContext2D,\n font: string,\n arrayOfThings: Things,\n cache?: {data?: Record, garbageCollect?: string[], font?: string}\n) {\n cache = cache || {};\n let data = cache.data = cache.data || {};\n let gc = cache.garbageCollect = cache.garbageCollect || [];\n\n if (cache.font !== font) {\n data = cache.data = {};\n gc = cache.garbageCollect = [];\n cache.font = font;\n }\n\n ctx.save();\n\n ctx.font = font;\n let longest = 0;\n const ilen = arrayOfThings.length;\n let i: number, j: number, jlen: number, thing: Thing | Thing[], nestedThing: Thing | Thing[];\n for (i = 0; i < ilen; i++) {\n thing = arrayOfThings[i];\n\n // Undefined strings and arrays should not be measured\n if (thing !== undefined && thing !== null && !isArray(thing)) {\n longest = _measureText(ctx, data, gc, longest, thing);\n } else if (isArray(thing)) {\n // if it is an array lets measure each element\n // to do maybe simplify this function a bit so we can do this more recursively?\n for (j = 0, jlen = thing.length; j < jlen; j++) {\n nestedThing = thing[j];\n // Undefined strings and arrays should not be measured\n if (nestedThing !== undefined && nestedThing !== null && !isArray(nestedThing)) {\n longest = _measureText(ctx, data, gc, longest, nestedThing);\n }\n }\n }\n }\n\n ctx.restore();\n\n const gcLen = gc.length / 2;\n if (gcLen > arrayOfThings.length) {\n for (i = 0; i < gcLen; i++) {\n delete data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n return longest;\n}\n\n/**\n * Returns the aligned pixel value to avoid anti-aliasing blur\n * @param chart - The chart instance.\n * @param pixel - A pixel value.\n * @param width - The width of the element.\n * @returns The aligned pixel value.\n * @private\n */\nexport function _alignPixel(chart: Chart, pixel: number, width: number) {\n const devicePixelRatio = chart.currentDevicePixelRatio;\n const halfWidth = width !== 0 ? Math.max(width / 2, 0.5) : 0;\n return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\n}\n\n/**\n * Clears the entire canvas.\n */\nexport function clearCanvas(canvas: HTMLCanvasElement, ctx?: CanvasRenderingContext2D) {\n ctx = ctx || canvas.getContext('2d');\n\n ctx.save();\n // canvas.width and canvas.height do not consider the canvas transform,\n // while clearRect does\n ctx.resetTransform();\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.restore();\n}\n\nexport interface DrawPointOptions {\n pointStyle: PointStyle;\n rotation?: number;\n radius: number;\n borderWidth: number;\n}\n\nexport function drawPoint(\n ctx: CanvasRenderingContext2D,\n options: DrawPointOptions,\n x: number,\n y: number\n) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n drawPointLegend(ctx, options, x, y, null);\n}\n\n// eslint-disable-next-line complexity\nexport function drawPointLegend(\n ctx: CanvasRenderingContext2D,\n options: DrawPointOptions,\n x: number,\n y: number,\n w: number\n) {\n let type: string, xOffset: number, yOffset: number, size: number, cornerRadius: number, width: number, xOffsetW: number, yOffsetW: number;\n const style = options.pointStyle;\n const rotation = options.rotation;\n const radius = options.radius;\n let rad = (rotation || 0) * RAD_PER_DEG;\n\n if (style && typeof style === 'object') {\n type = style.toString();\n if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n ctx.save();\n ctx.translate(x, y);\n ctx.rotate(rad);\n ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n ctx.restore();\n return;\n }\n }\n\n if (isNaN(radius) || radius <= 0) {\n return;\n }\n\n ctx.beginPath();\n\n switch (style) {\n // Default includes circle\n default:\n if (w) {\n ctx.ellipse(x, y, w / 2, radius, 0, 0, TAU);\n } else {\n ctx.arc(x, y, radius, 0, TAU);\n }\n ctx.closePath();\n break;\n case 'triangle':\n width = w ? w / 2 : radius;\n ctx.moveTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n ctx.closePath();\n break;\n case 'rectRounded':\n // NOTE: the rounded rect implementation changed to use `arc` instead of\n // `quadraticCurveTo` since it generates better results when rect is\n // almost a circle. 0.516 (instead of 0.5) produces results with visually\n // closer proportion to the previous impl and it is inscribed in the\n // circle with `radius`. For more details, see the following PRs:\n // https://github.com/chartjs/Chart.js/issues/5597\n // https://github.com/chartjs/Chart.js/issues/5858\n cornerRadius = radius * 0.516;\n size = radius - cornerRadius;\n xOffset = Math.cos(rad + QUARTER_PI) * size;\n xOffsetW = Math.cos(rad + QUARTER_PI) * (w ? w / 2 - cornerRadius : size);\n yOffset = Math.sin(rad + QUARTER_PI) * size;\n yOffsetW = Math.sin(rad + QUARTER_PI) * (w ? w / 2 - cornerRadius : size);\n ctx.arc(x - xOffsetW, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n ctx.arc(x + yOffsetW, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n ctx.arc(x + xOffsetW, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n ctx.arc(x - yOffsetW, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n ctx.closePath();\n break;\n case 'rect':\n if (!rotation) {\n size = Math.SQRT1_2 * radius;\n width = w ? w / 2 : size;\n ctx.rect(x - width, y - size, 2 * width, 2 * size);\n break;\n }\n rad += QUARTER_PI;\n /* falls through */\n case 'rectRot':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n ctx.closePath();\n break;\n case 'crossRot':\n rad += QUARTER_PI;\n /* falls through */\n case 'cross':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n break;\n case 'star':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n rad += QUARTER_PI;\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n break;\n case 'line':\n xOffset = w ? w / 2 : Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n break;\n case 'dash':\n ctx.moveTo(x, y);\n ctx.lineTo(x + Math.cos(rad) * (w ? w / 2 : radius), y + Math.sin(rad) * radius);\n break;\n case false:\n ctx.closePath();\n break;\n }\n\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n}\n\n/**\n * Returns true if the point is inside the rectangle\n * @param point - The point to test\n * @param area - The rectangle\n * @param margin - allowed margin\n * @private\n */\nexport function _isPointInArea(\n point: Point,\n area: TRBL,\n margin?: number\n) {\n margin = margin || 0.5; // margin - default is to match rounded decimals\n\n return !area || (point && point.x > area.left - margin && point.x < area.right + margin &&\n\t\tpoint.y > area.top - margin && point.y < area.bottom + margin);\n}\n\nexport function clipArea(ctx: CanvasRenderingContext2D, area: TRBL) {\n ctx.save();\n ctx.beginPath();\n ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n ctx.clip();\n}\n\nexport function unclipArea(ctx: CanvasRenderingContext2D) {\n ctx.restore();\n}\n\n/**\n * @private\n */\nexport function _steppedLineTo(\n ctx: CanvasRenderingContext2D,\n previous: Point,\n target: Point,\n flip?: boolean,\n mode?: string\n) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n if (mode === 'middle') {\n const midpoint = (previous.x + target.x) / 2.0;\n ctx.lineTo(midpoint, previous.y);\n ctx.lineTo(midpoint, target.y);\n } else if (mode === 'after' !== !!flip) {\n ctx.lineTo(previous.x, target.y);\n } else {\n ctx.lineTo(target.x, previous.y);\n }\n ctx.lineTo(target.x, target.y);\n}\n\n/**\n * @private\n */\nexport function _bezierCurveTo(\n ctx: CanvasRenderingContext2D,\n previous: SplinePoint,\n target: SplinePoint,\n flip?: boolean\n) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n ctx.bezierCurveTo(\n flip ? previous.cp1x : previous.cp2x,\n flip ? previous.cp1y : previous.cp2y,\n flip ? target.cp2x : target.cp1x,\n flip ? target.cp2y : target.cp1y,\n target.x,\n target.y);\n}\n\nfunction setRenderOpts(ctx: CanvasRenderingContext2D, opts: RenderTextOpts) {\n if (opts.translation) {\n ctx.translate(opts.translation[0], opts.translation[1]);\n }\n\n if (!isNullOrUndef(opts.rotation)) {\n ctx.rotate(opts.rotation);\n }\n\n if (opts.color) {\n ctx.fillStyle = opts.color;\n }\n\n if (opts.textAlign) {\n ctx.textAlign = opts.textAlign;\n }\n\n if (opts.textBaseline) {\n ctx.textBaseline = opts.textBaseline;\n }\n}\n\nfunction decorateText(\n ctx: CanvasRenderingContext2D,\n x: number,\n y: number,\n line: string,\n opts: RenderTextOpts\n) {\n if (opts.strikethrough || opts.underline) {\n /**\n * Now that IE11 support has been dropped, we can use more\n * of the TextMetrics object. The actual bounding boxes\n * are unflagged in Chrome, Firefox, Edge, and Safari so they\n * can be safely used.\n * See https://developer.mozilla.org/en-US/docs/Web/API/TextMetrics#Browser_compatibility\n */\n const metrics = ctx.measureText(line);\n const left = x - metrics.actualBoundingBoxLeft;\n const right = x + metrics.actualBoundingBoxRight;\n const top = y - metrics.actualBoundingBoxAscent;\n const bottom = y + metrics.actualBoundingBoxDescent;\n const yDecoration = opts.strikethrough ? (top + bottom) / 2 : bottom;\n\n ctx.strokeStyle = ctx.fillStyle;\n ctx.beginPath();\n ctx.lineWidth = opts.decorationWidth || 2;\n ctx.moveTo(left, yDecoration);\n ctx.lineTo(right, yDecoration);\n ctx.stroke();\n }\n}\n\nfunction drawBackdrop(ctx: CanvasRenderingContext2D, opts: BackdropOptions) {\n const oldColor = ctx.fillStyle;\n\n ctx.fillStyle = opts.color as string;\n ctx.fillRect(opts.left, opts.top, opts.width, opts.height);\n ctx.fillStyle = oldColor;\n}\n\n/**\n * Render text onto the canvas\n */\nexport function renderText(\n ctx: CanvasRenderingContext2D,\n text: string | string[],\n x: number,\n y: number,\n font: CanvasFontSpec,\n opts: RenderTextOpts = {}\n) {\n const lines = isArray(text) ? text : [text];\n const stroke = opts.strokeWidth > 0 && opts.strokeColor !== '';\n let i: number, line: string;\n\n ctx.save();\n ctx.font = font.string;\n setRenderOpts(ctx, opts);\n\n for (i = 0; i < lines.length; ++i) {\n line = lines[i];\n\n if (opts.backdrop) {\n drawBackdrop(ctx, opts.backdrop);\n }\n\n if (stroke) {\n if (opts.strokeColor) {\n ctx.strokeStyle = opts.strokeColor;\n }\n\n if (!isNullOrUndef(opts.strokeWidth)) {\n ctx.lineWidth = opts.strokeWidth;\n }\n\n ctx.strokeText(line, x, y, opts.maxWidth);\n }\n\n ctx.fillText(line, x, y, opts.maxWidth);\n decorateText(ctx, x, y, line, opts);\n\n y += Number(font.lineHeight);\n }\n\n ctx.restore();\n}\n\n/**\n * Add a path of a rectangle with rounded corners to the current sub-path\n * @param ctx - Context\n * @param rect - Bounding rect\n */\nexport function addRoundedRectPath(\n ctx: CanvasRenderingContext2D,\n rect: RoundedRect & { radius: TRBLCorners }\n) {\n const {x, y, w, h, radius} = rect;\n\n // top left arc\n ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, 1.5 * PI, PI, true);\n\n // line from top left to bottom left\n ctx.lineTo(x, y + h - radius.bottomLeft);\n\n // bottom left arc\n ctx.arc(x + radius.bottomLeft, y + h - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true);\n\n // line from bottom left to bottom right\n ctx.lineTo(x + w - radius.bottomRight, y + h);\n\n // bottom right arc\n ctx.arc(x + w - radius.bottomRight, y + h - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true);\n\n // line from bottom right to top right\n ctx.lineTo(x + w, y + radius.topRight);\n\n // top right arc\n ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true);\n\n // line from top right to top left\n ctx.lineTo(x + radius.topLeft, y);\n}\n","import defaults from '../core/core.defaults.js';\nimport {isArray, isObject, toDimension, valueOrDefault} from './helpers.core.js';\nimport {toFontString} from './helpers.canvas.js';\nimport type {ChartArea, FontSpec, Point} from '../types/index.js';\nimport type {TRBL, TRBLCorners} from '../types/geometric.js';\n\nconst LINE_HEIGHT = /^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/;\nconst FONT_STYLE = /^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/;\n\n/**\n * @alias Chart.helpers.options\n * @namespace\n */\n/**\n * Converts the given line height `value` in pixels for a specific font `size`.\n * @param value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em').\n * @param size - The font size (in pixels) used to resolve relative `value`.\n * @returns The effective line height in pixels (size * 1.2 if value is invalid).\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height\n * @since 2.7.0\n */\nexport function toLineHeight(value: number | string, size: number): number {\n const matches = ('' + value).match(LINE_HEIGHT);\n if (!matches || matches[1] === 'normal') {\n return size * 1.2;\n }\n\n value = +matches[2];\n\n switch (matches[3]) {\n case 'px':\n return value;\n case '%':\n value /= 100;\n break;\n default:\n break;\n }\n\n return size * value;\n}\n\nconst numberOrZero = (v: unknown) => +v || 0;\n\n/**\n * @param value\n * @param props\n */\nexport function _readValueToProps(value: number | Record, props: K[]): Record;\nexport function _readValueToProps(value: number | Record, props: Record): Record;\nexport function _readValueToProps(value: number | Record, props: string[] | Record) {\n const ret = {};\n const objProps = isObject(props);\n const keys = objProps ? Object.keys(props) : props;\n const read = isObject(value)\n ? objProps\n ? prop => valueOrDefault(value[prop], value[props[prop]])\n : prop => value[prop]\n : () => value;\n\n for (const prop of keys) {\n ret[prop] = numberOrZero(read(prop));\n }\n return ret;\n}\n\n/**\n * Converts the given value into a TRBL object.\n * @param value - If a number, set the value to all TRBL component,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * x / y are shorthands for same value for left/right and top/bottom.\n * @returns The padding values (top, right, bottom, left)\n * @since 3.0.0\n */\nexport function toTRBL(value: number | TRBL | Point) {\n return _readValueToProps(value, {top: 'y', right: 'x', bottom: 'y', left: 'x'});\n}\n\n/**\n * Converts the given value into a TRBL corners object (similar with css border-radius).\n * @param value - If a number, set the value to all TRBL corner components,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * @returns The TRBL corner values (topLeft, topRight, bottomLeft, bottomRight)\n * @since 3.0.0\n */\nexport function toTRBLCorners(value: number | TRBLCorners) {\n return _readValueToProps(value, ['topLeft', 'topRight', 'bottomLeft', 'bottomRight']);\n}\n\n/**\n * Converts the given value into a padding object with pre-computed width/height.\n * @param value - If a number, set the value to all TRBL component,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * x / y are shorthands for same value for left/right and top/bottom.\n * @returns The padding values (top, right, bottom, left, width, height)\n * @since 2.7.0\n */\nexport function toPadding(value?: number | TRBL): ChartArea {\n const obj = toTRBL(value) as ChartArea;\n\n obj.width = obj.left + obj.right;\n obj.height = obj.top + obj.bottom;\n\n return obj;\n}\n\n/**\n * Parses font options and returns the font object.\n * @param options - A object that contains font options to be parsed.\n * @param fallback - A object that contains fallback font options.\n * @return The font object.\n * @private\n */\n\nexport function toFont(options: Partial, fallback?: Partial) {\n options = options || {};\n fallback = fallback || defaults.font as FontSpec;\n\n let size = valueOrDefault(options.size, fallback.size);\n\n if (typeof size === 'string') {\n size = parseInt(size, 10);\n }\n let style = valueOrDefault(options.style, fallback.style);\n if (style && !('' + style).match(FONT_STYLE)) {\n console.warn('Invalid font style specified: \"' + style + '\"');\n style = undefined;\n }\n\n const font = {\n family: valueOrDefault(options.family, fallback.family),\n lineHeight: toLineHeight(valueOrDefault(options.lineHeight, fallback.lineHeight), size),\n size,\n style,\n weight: valueOrDefault(options.weight, fallback.weight),\n string: ''\n };\n\n font.string = toFontString(font);\n return font;\n}\n\n/**\n * Evaluates the given `inputs` sequentially and returns the first defined value.\n * @param inputs - An array of values, falling back to the last value.\n * @param context - If defined and the current value is a function, the value\n * is called with `context` as first argument and the result becomes the new input.\n * @param index - If defined and the current value is an array, the value\n * at `index` become the new input.\n * @param info - object to return information about resolution in\n * @param info.cacheable - Will be set to `false` if option is not cacheable.\n * @since 2.7.0\n */\nexport function resolve(inputs: Array, context?: object, index?: number, info?: { cacheable: boolean }) {\n let cacheable = true;\n let i: number, ilen: number, value: unknown;\n\n for (i = 0, ilen = inputs.length; i < ilen; ++i) {\n value = inputs[i];\n if (value === undefined) {\n continue;\n }\n if (context !== undefined && typeof value === 'function') {\n value = value(context);\n cacheable = false;\n }\n if (index !== undefined && isArray(value)) {\n value = value[index % value.length];\n cacheable = false;\n }\n if (value !== undefined) {\n if (info && !cacheable) {\n info.cacheable = false;\n }\n return value;\n }\n }\n}\n\n/**\n * @param minmax\n * @param grace\n * @param beginAtZero\n * @private\n */\nexport function _addGrace(minmax: { min: number; max: number; }, grace: number | string, beginAtZero: boolean) {\n const {min, max} = minmax;\n const change = toDimension(grace, (max - min) / 2);\n const keepZero = (value: number, add: number) => beginAtZero && value === 0 ? 0 : value + add;\n return {\n min: keepZero(min, -Math.abs(change)),\n max: keepZero(max, change)\n };\n}\n\n/**\n * Create a context inheriting parentContext\n * @param parentContext\n * @param context\n * @returns\n */\nexport function createContext(parentContext: null, context: T): T;\nexport function createContext(parentContext: P, context: T): P & T;\nexport function createContext(parentContext: object, context: object) {\n return Object.assign(Object.create(parentContext), context);\n}\n","/* eslint-disable @typescript-eslint/no-use-before-define */\nimport type {AnyObject} from '../types/basic.js';\nimport type {ChartMeta} from '../types/index.js';\nimport type {\n ResolverObjectKey,\n ResolverCache,\n ResolverProxy,\n DescriptorDefaults,\n Descriptor,\n ContextCache,\n ContextProxy\n} from './helpers.config.types.js';\nimport {isArray, isFunction, isObject, resolveObjectKey, _capitalize} from './helpers.core.js';\n\nexport * from './helpers.config.types.js';\n\n/**\n * Creates a Proxy for resolving raw values for options.\n * @param scopes - The option scopes to look for values, in resolution order\n * @param prefixes - The prefixes for values, in resolution order.\n * @param rootScopes - The root option scopes\n * @param fallback - Parent scopes fallback\n * @param getTarget - callback for getting the target for changed values\n * @returns Proxy\n * @private\n */\nexport function _createResolver<\n T extends AnyObject[] = AnyObject[],\n R extends AnyObject[] = T\n>(\n scopes: T,\n prefixes = [''],\n rootScopes?: R,\n fallback?: ResolverObjectKey,\n getTarget = () => scopes[0]\n) {\n const finalRootScopes = rootScopes || scopes;\n if (typeof fallback === 'undefined') {\n fallback = _resolve('_fallback', scopes);\n }\n const cache: ResolverCache = {\n [Symbol.toStringTag]: 'Object',\n _cacheable: true,\n _scopes: scopes,\n _rootScopes: finalRootScopes,\n _fallback: fallback,\n _getTarget: getTarget,\n override: (scope: AnyObject) => _createResolver([scope, ...scopes], prefixes, finalRootScopes, fallback),\n };\n return new Proxy(cache, {\n /**\n * A trap for the delete operator.\n */\n deleteProperty(target, prop: string) {\n delete target[prop]; // remove from cache\n delete target._keys; // remove cached keys\n delete scopes[0][prop]; // remove from top level scope\n return true;\n },\n\n /**\n * A trap for getting property values.\n */\n get(target, prop: string) {\n return _cached(target, prop,\n () => _resolveWithPrefixes(prop, prefixes, scopes, target));\n },\n\n /**\n * A trap for Object.getOwnPropertyDescriptor.\n * Also used by Object.hasOwnProperty.\n */\n getOwnPropertyDescriptor(target, prop) {\n return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n },\n\n /**\n * A trap for Object.getPrototypeOf.\n */\n getPrototypeOf() {\n return Reflect.getPrototypeOf(scopes[0]);\n },\n\n /**\n * A trap for the in operator.\n */\n has(target, prop: string) {\n return getKeysFromAllScopes(target).includes(prop);\n },\n\n /**\n * A trap for Object.getOwnPropertyNames and Object.getOwnPropertySymbols.\n */\n ownKeys(target) {\n return getKeysFromAllScopes(target);\n },\n\n /**\n * A trap for setting property values.\n */\n set(target, prop: string, value) {\n const storage = target._storage || (target._storage = getTarget());\n target[prop] = storage[prop] = value; // set to top level scope + cache\n delete target._keys; // remove cached keys\n return true;\n }\n }) as ResolverProxy;\n}\n\n/**\n * Returns an Proxy for resolving option values with context.\n * @param proxy - The Proxy returned by `_createResolver`\n * @param context - Context object for scriptable/indexable options\n * @param subProxy - The proxy provided for scriptable options\n * @param descriptorDefaults - Defaults for descriptors\n * @private\n */\nexport function _attachContext<\n T extends AnyObject[] = AnyObject[],\n R extends AnyObject[] = T\n>(\n proxy: ResolverProxy,\n context: AnyObject,\n subProxy?: ResolverProxy,\n descriptorDefaults?: DescriptorDefaults\n) {\n const cache: ContextCache = {\n _cacheable: false,\n _proxy: proxy,\n _context: context,\n _subProxy: subProxy,\n _stack: new Set(),\n _descriptors: _descriptors(proxy, descriptorDefaults),\n setContext: (ctx: AnyObject) => _attachContext(proxy, ctx, subProxy, descriptorDefaults),\n override: (scope: AnyObject) => _attachContext(proxy.override(scope), context, subProxy, descriptorDefaults)\n };\n return new Proxy(cache, {\n /**\n * A trap for the delete operator.\n */\n deleteProperty(target, prop) {\n delete target[prop]; // remove from cache\n delete proxy[prop]; // remove from proxy\n return true;\n },\n\n /**\n * A trap for getting property values.\n */\n get(target, prop: string, receiver) {\n return _cached(target, prop,\n () => _resolveWithContext(target, prop, receiver));\n },\n\n /**\n * A trap for Object.getOwnPropertyDescriptor.\n * Also used by Object.hasOwnProperty.\n */\n getOwnPropertyDescriptor(target, prop) {\n return target._descriptors.allKeys\n ? Reflect.has(proxy, prop) ? {enumerable: true, configurable: true} : undefined\n : Reflect.getOwnPropertyDescriptor(proxy, prop);\n },\n\n /**\n * A trap for Object.getPrototypeOf.\n */\n getPrototypeOf() {\n return Reflect.getPrototypeOf(proxy);\n },\n\n /**\n * A trap for the in operator.\n */\n has(target, prop) {\n return Reflect.has(proxy, prop);\n },\n\n /**\n * A trap for Object.getOwnPropertyNames and Object.getOwnPropertySymbols.\n */\n ownKeys() {\n return Reflect.ownKeys(proxy);\n },\n\n /**\n * A trap for setting property values.\n */\n set(target, prop, value) {\n proxy[prop] = value; // set to proxy\n delete target[prop]; // remove from cache\n return true;\n }\n }) as ContextProxy;\n}\n\n/**\n * @private\n */\nexport function _descriptors(\n proxy: ResolverCache,\n defaults: DescriptorDefaults = {scriptable: true, indexable: true}\n): Descriptor {\n const {_scriptable = defaults.scriptable, _indexable = defaults.indexable, _allKeys = defaults.allKeys} = proxy;\n return {\n allKeys: _allKeys,\n scriptable: _scriptable,\n indexable: _indexable,\n isScriptable: isFunction(_scriptable) ? _scriptable : () => _scriptable,\n isIndexable: isFunction(_indexable) ? _indexable : () => _indexable\n };\n}\n\nconst readKey = (prefix: string, name: string) => prefix ? prefix + _capitalize(name) : name;\nconst needsSubResolver = (prop: string, value: unknown) => isObject(value) && prop !== 'adapters' &&\n (Object.getPrototypeOf(value) === null || value.constructor === Object);\n\nfunction _cached(\n target: AnyObject,\n prop: string,\n resolve: () => unknown\n) {\n if (Object.prototype.hasOwnProperty.call(target, prop)) {\n return target[prop];\n }\n\n const value = resolve();\n // cache the resolved value\n target[prop] = value;\n return value;\n}\n\nfunction _resolveWithContext(\n target: ContextCache,\n prop: string,\n receiver: AnyObject\n) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n let value = _proxy[prop]; // resolve from proxy\n\n // resolve with context\n if (isFunction(value) && descriptors.isScriptable(prop)) {\n value = _resolveScriptable(prop, value, target, receiver);\n }\n if (isArray(value) && value.length) {\n value = _resolveArray(prop, value, target, descriptors.isIndexable);\n }\n if (needsSubResolver(prop, value)) {\n // if the resolved value is an object, create a sub resolver for it\n value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors);\n }\n return value;\n}\n\nfunction _resolveScriptable(\n prop: string,\n getValue: (ctx: AnyObject, sub: AnyObject) => unknown,\n target: ContextCache,\n receiver: AnyObject\n) {\n const {_proxy, _context, _subProxy, _stack} = target;\n if (_stack.has(prop)) {\n throw new Error('Recursion detected: ' + Array.from(_stack).join('->') + '->' + prop);\n }\n _stack.add(prop);\n let value = getValue(_context, _subProxy || receiver);\n _stack.delete(prop);\n if (needsSubResolver(prop, value)) {\n // When scriptable option returns an object, create a resolver on that.\n value = createSubResolver(_proxy._scopes, _proxy, prop, value);\n }\n return value;\n}\n\nfunction _resolveArray(\n prop: string,\n value: unknown[],\n target: ContextCache,\n isIndexable: (key: string) => boolean\n) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n\n if (typeof _context.index !== 'undefined' && isIndexable(prop)) {\n return value[_context.index % value.length];\n } else if (isObject(value[0])) {\n // Array of objects, return array or resolvers\n const arr = value;\n const scopes = _proxy._scopes.filter(s => s !== arr);\n value = [];\n for (const item of arr) {\n const resolver = createSubResolver(scopes, _proxy, prop, item);\n value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors));\n }\n }\n return value;\n}\n\nfunction resolveFallback(\n fallback: ResolverObjectKey | ((prop: ResolverObjectKey, value: unknown) => ResolverObjectKey),\n prop: ResolverObjectKey,\n value: unknown\n) {\n return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\n\nconst getScope = (key: ResolverObjectKey, parent: AnyObject) => key === true ? parent\n : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\n\nfunction addScopes(\n set: Set,\n parentScopes: AnyObject[],\n key: ResolverObjectKey,\n parentFallback: ResolverObjectKey,\n value: unknown\n) {\n for (const parent of parentScopes) {\n const scope = getScope(key, parent);\n if (scope) {\n set.add(scope);\n const fallback = resolveFallback(scope._fallback, key, value);\n if (typeof fallback !== 'undefined' && fallback !== key && fallback !== parentFallback) {\n // When we reach the descriptor that defines a new _fallback, return that.\n // The fallback will resume to that new scope.\n return fallback;\n }\n } else if (scope === false && typeof parentFallback !== 'undefined' && key !== parentFallback) {\n // Fallback to `false` results to `false`, when falling back to different key.\n // For example `interaction` from `hover` or `plugins.tooltip` and `animation` from `animations`\n return null;\n }\n }\n return false;\n}\n\nfunction createSubResolver(\n parentScopes: AnyObject[],\n resolver: ResolverCache,\n prop: ResolverObjectKey,\n value: unknown\n) {\n const rootScopes = resolver._rootScopes;\n const fallback = resolveFallback(resolver._fallback, prop, value);\n const allScopes = [...parentScopes, ...rootScopes];\n const set = new Set();\n set.add(value);\n let key = addScopesFromKey(set, allScopes, prop, fallback || prop, value);\n if (key === null) {\n return false;\n }\n if (typeof fallback !== 'undefined' && fallback !== prop) {\n key = addScopesFromKey(set, allScopes, fallback, key, value);\n if (key === null) {\n return false;\n }\n }\n return _createResolver(Array.from(set), [''], rootScopes, fallback,\n () => subGetTarget(resolver, prop as string, value));\n}\n\nfunction addScopesFromKey(\n set: Set,\n allScopes: AnyObject[],\n key: ResolverObjectKey,\n fallback: ResolverObjectKey,\n item: unknown\n) {\n while (key) {\n key = addScopes(set, allScopes, key, fallback, item);\n }\n return key;\n}\n\nfunction subGetTarget(\n resolver: ResolverCache,\n prop: string,\n value: unknown\n) {\n const parent = resolver._getTarget();\n if (!(prop in parent)) {\n parent[prop] = {};\n }\n const target = parent[prop];\n if (isArray(target) && isObject(value)) {\n // For array of objects, the object is used to store updated values\n return value;\n }\n return target || {};\n}\n\nfunction _resolveWithPrefixes(\n prop: string,\n prefixes: string[],\n scopes: AnyObject[],\n proxy: ResolverProxy\n) {\n let value: unknown;\n for (const prefix of prefixes) {\n value = _resolve(readKey(prefix, prop), scopes);\n if (typeof value !== 'undefined') {\n return needsSubResolver(prop, value)\n ? createSubResolver(scopes, proxy, prop, value)\n : value;\n }\n }\n}\n\nfunction _resolve(key: string, scopes: AnyObject[]) {\n for (const scope of scopes) {\n if (!scope) {\n continue;\n }\n const value = scope[key];\n if (typeof value !== 'undefined') {\n return value;\n }\n }\n}\n\nfunction getKeysFromAllScopes(target: ResolverCache) {\n let keys = target._keys;\n if (!keys) {\n keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n }\n return keys;\n}\n\nfunction resolveKeysFromAllScopes(scopes: AnyObject[]) {\n const set = new Set();\n for (const scope of scopes) {\n for (const key of Object.keys(scope).filter(k => !k.startsWith('_'))) {\n set.add(key);\n }\n }\n return Array.from(set);\n}\n\nexport function _parseObjectDataRadialScale(\n meta: ChartMeta<'line' | 'scatter'>,\n data: AnyObject[],\n start: number,\n count: number\n) {\n const {iScale} = meta;\n const {key = 'r'} = this._parsing;\n const parsed = new Array<{r: unknown}>(count);\n let i: number, ilen: number, index: number, item: AnyObject;\n\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n r: iScale.parse(resolveObjectKey(item, key), index)\n };\n }\n return parsed;\n}\n","import {almostEquals, distanceBetweenPoints, sign} from './helpers.math.js';\nimport {_isPointInArea} from './helpers.canvas.js';\nimport type {ChartArea} from '../types/index.js';\nimport type {SplinePoint} from '../types/geometric.js';\n\nconst EPSILON = Number.EPSILON || 1e-14;\n\ntype OptionalSplinePoint = SplinePoint | false\nconst getPoint = (points: SplinePoint[], i: number): OptionalSplinePoint => i < points.length && !points[i].skip && points[i];\nconst getValueAxis = (indexAxis: 'x' | 'y') => indexAxis === 'x' ? 'y' : 'x';\n\nexport function splineCurve(\n firstPoint: SplinePoint,\n middlePoint: SplinePoint,\n afterPoint: SplinePoint,\n t: number\n): {\n previous: SplinePoint\n next: SplinePoint\n } {\n // Props to Rob Spencer at scaled innovation for his post on splining between points\n // http://scaledinnovation.com/analytics/splines/aboutSplines.html\n\n // This function must also respect \"skipped\" points\n\n const previous = firstPoint.skip ? middlePoint : firstPoint;\n const current = middlePoint;\n const next = afterPoint.skip ? middlePoint : afterPoint;\n const d01 = distanceBetweenPoints(current, previous);\n const d12 = distanceBetweenPoints(next, current);\n\n let s01 = d01 / (d01 + d12);\n let s12 = d12 / (d01 + d12);\n\n // If all points are the same, s01 & s02 will be inf\n s01 = isNaN(s01) ? 0 : s01;\n s12 = isNaN(s12) ? 0 : s12;\n\n const fa = t * s01; // scaling factor for triangle Ta\n const fb = t * s12;\n\n return {\n previous: {\n x: current.x - fa * (next.x - previous.x),\n y: current.y - fa * (next.y - previous.y)\n },\n next: {\n x: current.x + fb * (next.x - previous.x),\n y: current.y + fb * (next.y - previous.y)\n }\n };\n}\n\n/**\n * Adjust tangents to ensure monotonic properties\n */\nfunction monotoneAdjust(points: SplinePoint[], deltaK: number[], mK: number[]) {\n const pointsLen = points.length;\n\n let alphaK: number, betaK: number, tauK: number, squaredMagnitude: number, pointCurrent: OptionalSplinePoint;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen - 1; ++i) {\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent || !pointAfter) {\n continue;\n }\n\n if (almostEquals(deltaK[i], 0, EPSILON)) {\n mK[i] = mK[i + 1] = 0;\n continue;\n }\n\n alphaK = mK[i] / deltaK[i];\n betaK = mK[i + 1] / deltaK[i];\n squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n if (squaredMagnitude <= 9) {\n continue;\n }\n\n tauK = 3 / Math.sqrt(squaredMagnitude);\n mK[i] = alphaK * tauK * deltaK[i];\n mK[i + 1] = betaK * tauK * deltaK[i];\n }\n}\n\nfunction monotoneCompute(points: SplinePoint[], mK: number[], indexAxis: 'x' | 'y' = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n let delta: number, pointBefore: OptionalSplinePoint, pointCurrent: OptionalSplinePoint;\n let pointAfter = getPoint(points, 0);\n\n for (let i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n\n const iPixel = pointCurrent[indexAxis];\n const vPixel = pointCurrent[valueAxis];\n if (pointBefore) {\n delta = (iPixel - pointBefore[indexAxis]) / 3;\n pointCurrent[`cp1${indexAxis}`] = iPixel - delta;\n pointCurrent[`cp1${valueAxis}`] = vPixel - delta * mK[i];\n }\n if (pointAfter) {\n delta = (pointAfter[indexAxis] - iPixel) / 3;\n pointCurrent[`cp2${indexAxis}`] = iPixel + delta;\n pointCurrent[`cp2${valueAxis}`] = vPixel + delta * mK[i];\n }\n }\n}\n\n/**\n * This function calculates Bézier control points in a similar way than |splineCurve|,\n * but preserves monotonicity of the provided data and ensures no local extremums are added\n * between the dataset discrete points due to the interpolation.\n * See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation\n */\nexport function splineCurveMonotone(points: SplinePoint[], indexAxis: 'x' | 'y' = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n const deltaK: number[] = Array(pointsLen).fill(0);\n const mK: number[] = Array(pointsLen);\n\n // Calculate slopes (deltaK) and initialize tangents (mK)\n let i, pointBefore: OptionalSplinePoint, pointCurrent: OptionalSplinePoint;\n let pointAfter = getPoint(points, 0);\n\n for (i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n\n if (pointAfter) {\n const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis];\n\n // In the case of two points that appear at the same x pixel, slopeDeltaX is 0\n deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0;\n }\n mK[i] = !pointBefore ? deltaK[i]\n : !pointAfter ? deltaK[i - 1]\n : (sign(deltaK[i - 1]) !== sign(deltaK[i])) ? 0\n : (deltaK[i - 1] + deltaK[i]) / 2;\n }\n\n monotoneAdjust(points, deltaK, mK);\n\n monotoneCompute(points, mK, indexAxis);\n}\n\nfunction capControlPoint(pt: number, min: number, max: number) {\n return Math.max(Math.min(pt, max), min);\n}\n\nfunction capBezierPoints(points: SplinePoint[], area: ChartArea) {\n let i, ilen, point, inArea, inAreaPrev;\n let inAreaNext = _isPointInArea(points[0], area);\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n inAreaPrev = inArea;\n inArea = inAreaNext;\n inAreaNext = i < ilen - 1 && _isPointInArea(points[i + 1], area);\n if (!inArea) {\n continue;\n }\n point = points[i];\n if (inAreaPrev) {\n point.cp1x = capControlPoint(point.cp1x, area.left, area.right);\n point.cp1y = capControlPoint(point.cp1y, area.top, area.bottom);\n }\n if (inAreaNext) {\n point.cp2x = capControlPoint(point.cp2x, area.left, area.right);\n point.cp2y = capControlPoint(point.cp2y, area.top, area.bottom);\n }\n }\n}\n\n/**\n * @private\n */\nexport function _updateBezierControlPoints(\n points: SplinePoint[],\n options,\n area: ChartArea,\n loop: boolean,\n indexAxis: 'x' | 'y'\n) {\n let i: number, ilen: number, point: SplinePoint, controlPoints: ReturnType;\n\n // Only consider points that are drawn in case the spanGaps option is used\n if (options.spanGaps) {\n points = points.filter((pt) => !pt.skip);\n }\n\n if (options.cubicInterpolationMode === 'monotone') {\n splineCurveMonotone(points, indexAxis);\n } else {\n let prev = loop ? points[points.length - 1] : points[0];\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n point = points[i];\n controlPoints = splineCurve(\n prev,\n point,\n points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen],\n options.tension\n );\n point.cp1x = controlPoints.previous.x;\n point.cp1y = controlPoints.previous.y;\n point.cp2x = controlPoints.next.x;\n point.cp2y = controlPoints.next.y;\n prev = point;\n }\n }\n\n if (options.capBezierPoints) {\n capBezierPoints(points, area);\n }\n}\n","import type {ChartArea, Scale} from '../types/index.js';\nimport type Chart from '../core/core.controller.js';\nimport type {ChartEvent} from '../types.js';\nimport {INFINITY} from './helpers.math.js';\n\n/**\n * Note: typedefs are auto-exported, so use a made-up `dom` namespace where\n * necessary to avoid duplicates with `export * from './helpers`; see\n * https://github.com/microsoft/TypeScript/issues/46011\n * @typedef { import('../core/core.controller.js').default } dom.Chart\n * @typedef { import('../../types').ChartEvent } ChartEvent\n */\n\n/**\n * @private\n */\nexport function _isDomSupported(): boolean {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n\n/**\n * @private\n */\nexport function _getParentNode(domNode: HTMLCanvasElement): HTMLCanvasElement {\n let parent = domNode.parentNode;\n if (parent && parent.toString() === '[object ShadowRoot]') {\n parent = (parent as ShadowRoot).host;\n }\n return parent as HTMLCanvasElement;\n}\n\n/**\n * convert max-width/max-height values that may be percentages into a number\n * @private\n */\n\nfunction parseMaxStyle(styleValue: string | number, node: HTMLElement, parentProperty: string) {\n let valueInPixels: number;\n if (typeof styleValue === 'string') {\n valueInPixels = parseInt(styleValue, 10);\n\n if (styleValue.indexOf('%') !== -1) {\n // percentage * size in dimension\n valueInPixels = (valueInPixels / 100) * node.parentNode[parentProperty];\n }\n } else {\n valueInPixels = styleValue;\n }\n\n return valueInPixels;\n}\n\nconst getComputedStyle = (element: HTMLElement): CSSStyleDeclaration =>\n element.ownerDocument.defaultView.getComputedStyle(element, null);\n\nexport function getStyle(el: HTMLElement, property: string): string {\n return getComputedStyle(el).getPropertyValue(property);\n}\n\nconst positions = ['top', 'right', 'bottom', 'left'];\nfunction getPositionedStyle(styles: CSSStyleDeclaration, style: string, suffix?: string): ChartArea {\n const result = {} as ChartArea;\n suffix = suffix ? '-' + suffix : '';\n for (let i = 0; i < 4; i++) {\n const pos = positions[i];\n result[pos] = parseFloat(styles[style + '-' + pos + suffix]) || 0;\n }\n result.width = result.left + result.right;\n result.height = result.top + result.bottom;\n return result;\n}\n\nconst useOffsetPos = (x: number, y: number, target: HTMLElement | EventTarget) =>\n (x > 0 || y > 0) && (!target || !(target as HTMLElement).shadowRoot);\n\n/**\n * @param e\n * @param canvas\n * @returns Canvas position\n */\nfunction getCanvasPosition(\n e: Event | TouchEvent | MouseEvent,\n canvas: HTMLCanvasElement\n): {\n x: number;\n y: number;\n box: boolean;\n } {\n const touches = (e as TouchEvent).touches;\n const source = (touches && touches.length ? touches[0] : e) as MouseEvent;\n const {offsetX, offsetY} = source as MouseEvent;\n let box = false;\n let x, y;\n if (useOffsetPos(offsetX, offsetY, e.target)) {\n x = offsetX;\n y = offsetY;\n } else {\n const rect = canvas.getBoundingClientRect();\n x = source.clientX - rect.left;\n y = source.clientY - rect.top;\n box = true;\n }\n return {x, y, box};\n}\n\n/**\n * Gets an event's x, y coordinates, relative to the chart area\n * @param event\n * @param chart\n * @returns x and y coordinates of the event\n */\n\nexport function getRelativePosition(\n event: Event | ChartEvent | TouchEvent | MouseEvent,\n chart: Chart\n): { x: number; y: number } {\n if ('native' in event) {\n return event;\n }\n\n const {canvas, currentDevicePixelRatio} = chart;\n const style = getComputedStyle(canvas);\n const borderBox = style.boxSizing === 'border-box';\n const paddings = getPositionedStyle(style, 'padding');\n const borders = getPositionedStyle(style, 'border', 'width');\n const {x, y, box} = getCanvasPosition(event, canvas);\n const xOffset = paddings.left + (box && borders.left);\n const yOffset = paddings.top + (box && borders.top);\n\n let {width, height} = chart;\n if (borderBox) {\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n return {\n x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio),\n y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio)\n };\n}\n\nfunction getContainerSize(canvas: HTMLCanvasElement, width: number, height: number): Partial {\n let maxWidth: number, maxHeight: number;\n\n if (width === undefined || height === undefined) {\n const container = _getParentNode(canvas);\n if (!container) {\n width = canvas.clientWidth;\n height = canvas.clientHeight;\n } else {\n const rect = container.getBoundingClientRect(); // this is the border box of the container\n const containerStyle = getComputedStyle(container);\n const containerBorder = getPositionedStyle(containerStyle, 'border', 'width');\n const containerPadding = getPositionedStyle(containerStyle, 'padding');\n width = rect.width - containerPadding.width - containerBorder.width;\n height = rect.height - containerPadding.height - containerBorder.height;\n maxWidth = parseMaxStyle(containerStyle.maxWidth, container, 'clientWidth');\n maxHeight = parseMaxStyle(containerStyle.maxHeight, container, 'clientHeight');\n }\n }\n return {\n width,\n height,\n maxWidth: maxWidth || INFINITY,\n maxHeight: maxHeight || INFINITY\n };\n}\n\nconst round1 = (v: number) => Math.round(v * 10) / 10;\n\n// eslint-disable-next-line complexity\nexport function getMaximumSize(\n canvas: HTMLCanvasElement,\n bbWidth?: number,\n bbHeight?: number,\n aspectRatio?: number\n): { width: number; height: number } {\n const style = getComputedStyle(canvas);\n const margins = getPositionedStyle(style, 'margin');\n const maxWidth = parseMaxStyle(style.maxWidth, canvas, 'clientWidth') || INFINITY;\n const maxHeight = parseMaxStyle(style.maxHeight, canvas, 'clientHeight') || INFINITY;\n const containerSize = getContainerSize(canvas, bbWidth, bbHeight);\n let {width, height} = containerSize;\n\n if (style.boxSizing === 'content-box') {\n const borders = getPositionedStyle(style, 'border', 'width');\n const paddings = getPositionedStyle(style, 'padding');\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n width = Math.max(0, width - margins.width);\n height = Math.max(0, aspectRatio ? width / aspectRatio : height - margins.height);\n width = round1(Math.min(width, maxWidth, containerSize.maxWidth));\n height = round1(Math.min(height, maxHeight, containerSize.maxHeight));\n if (width && !height) {\n // https://github.com/chartjs/Chart.js/issues/4659\n // If the canvas has width, but no height, default to aspectRatio of 2 (canvas default)\n height = round1(width / 2);\n }\n\n const maintainHeight = bbWidth !== undefined || bbHeight !== undefined;\n\n if (maintainHeight && aspectRatio && containerSize.height && height > containerSize.height) {\n height = containerSize.height;\n width = round1(Math.floor(height * aspectRatio));\n }\n\n return {width, height};\n}\n\n/**\n * @param chart\n * @param forceRatio\n * @param forceStyle\n * @returns True if the canvas context size or transformation has changed.\n */\nexport function retinaScale(\n chart: Chart,\n forceRatio: number,\n forceStyle?: boolean\n): boolean | void {\n const pixelRatio = forceRatio || 1;\n const deviceHeight = Math.floor(chart.height * pixelRatio);\n const deviceWidth = Math.floor(chart.width * pixelRatio);\n\n chart.height = Math.floor(chart.height);\n chart.width = Math.floor(chart.width);\n\n const canvas = chart.canvas;\n\n // If no style has been set on the canvas, the render size is used as display size,\n // making the chart visually bigger, so let's enforce it to the \"correct\" values.\n // See https://github.com/chartjs/Chart.js/issues/3575\n if (canvas.style && (forceStyle || (!canvas.style.height && !canvas.style.width))) {\n canvas.style.height = `${chart.height}px`;\n canvas.style.width = `${chart.width}px`;\n }\n\n if (chart.currentDevicePixelRatio !== pixelRatio\n || canvas.height !== deviceHeight\n || canvas.width !== deviceWidth) {\n chart.currentDevicePixelRatio = pixelRatio;\n canvas.height = deviceHeight;\n canvas.width = deviceWidth;\n chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n return true;\n }\n return false;\n}\n\n/**\n * Detects support for options object argument in addEventListener.\n * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\n * @private\n */\nexport const supportsEventListenerOptions = (function() {\n let passiveSupported = false;\n try {\n const options = {\n get passive() { // This function will be called when the browser attempts to access the passive property.\n passiveSupported = true;\n return false;\n }\n } as EventListenerOptions;\n\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n } catch (e) {\n // continue regardless of error\n }\n return passiveSupported;\n}());\n\n/**\n * The \"used\" size is the final value of a dimension property after all calculations have\n * been performed. This method uses the computed style of `element` but returns undefined\n * if the computed style is not expressed in pixels. That can happen in some cases where\n * `element` has a size relative to its parent and this last one is not yet displayed,\n * for example because of `display: none` on a parent node.\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value\n * @returns Size in pixels or undefined if unknown.\n */\n\nexport function readUsedSize(\n element: HTMLElement,\n property: 'width' | 'height'\n): number | undefined {\n const value = getStyle(element, property);\n const matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n return matches ? +matches[1] : undefined;\n}\n","import type {Point, SplinePoint} from '../types/geometric.js';\n\n/**\n * @private\n */\nexport function _pointInLine(p1: Point, p2: Point, t: number, mode?) { // eslint-disable-line @typescript-eslint/no-unused-vars\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: p1.y + t * (p2.y - p1.y)\n };\n}\n\n/**\n * @private\n */\nexport function _steppedInterpolation(\n p1: Point,\n p2: Point,\n t: number, mode: 'middle' | 'after' | unknown\n) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: mode === 'middle' ? t < 0.5 ? p1.y : p2.y\n : mode === 'after' ? t < 1 ? p1.y : p2.y\n : t > 0 ? p2.y : p1.y\n };\n}\n\n/**\n * @private\n */\nexport function _bezierInterpolation(p1: SplinePoint, p2: SplinePoint, t: number, mode?) { // eslint-disable-line @typescript-eslint/no-unused-vars\n const cp1 = {x: p1.cp2x, y: p1.cp2y};\n const cp2 = {x: p2.cp1x, y: p2.cp1y};\n const a = _pointInLine(p1, cp1, t);\n const b = _pointInLine(cp1, cp2, t);\n const c = _pointInLine(cp2, p2, t);\n const d = _pointInLine(a, b, t);\n const e = _pointInLine(b, c, t);\n return _pointInLine(d, e, t);\n}\n","export interface RTLAdapter {\n x(x: number): number;\n setWidth(w: number): void;\n textAlign(align: 'center' | 'left' | 'right'): 'center' | 'left' | 'right';\n xPlus(x: number, value: number): number;\n leftForLtr(x: number, itemWidth: number): number;\n}\n\nconst getRightToLeftAdapter = function(rectX: number, width: number): RTLAdapter {\n return {\n x(x) {\n return rectX + rectX + width - x;\n },\n setWidth(w) {\n width = w;\n },\n textAlign(align) {\n if (align === 'center') {\n return align;\n }\n return align === 'right' ? 'left' : 'right';\n },\n xPlus(x, value) {\n return x - value;\n },\n leftForLtr(x, itemWidth) {\n return x - itemWidth;\n },\n };\n};\n\nconst getLeftToRightAdapter = function(): RTLAdapter {\n return {\n x(x) {\n return x;\n },\n setWidth(w) { // eslint-disable-line no-unused-vars\n },\n textAlign(align) {\n return align;\n },\n xPlus(x, value) {\n return x + value;\n },\n leftForLtr(x, _itemWidth) { // eslint-disable-line @typescript-eslint/no-unused-vars\n return x;\n },\n };\n};\n\nexport function getRtlAdapter(rtl: boolean, rectX: number, width: number) {\n return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter();\n}\n\nexport function overrideTextDirection(ctx: CanvasRenderingContext2D, direction: 'ltr' | 'rtl') {\n let style: CSSStyleDeclaration, original: [string, string];\n if (direction === 'ltr' || direction === 'rtl') {\n style = ctx.canvas.style;\n original = [\n style.getPropertyValue('direction'),\n style.getPropertyPriority('direction'),\n ];\n\n style.setProperty('direction', direction, 'important');\n (ctx as { prevTextDirection?: [string, string] }).prevTextDirection = original;\n }\n}\n\nexport function restoreTextDirection(ctx: CanvasRenderingContext2D, original?: [string, string]) {\n if (original !== undefined) {\n delete (ctx as { prevTextDirection?: [string, string] }).prevTextDirection;\n ctx.canvas.style.setProperty('direction', original[0], original[1]);\n }\n}\n","import {_angleBetween, _angleDiff, _isBetween, _normalizeAngle} from './helpers.math.js';\nimport {createContext} from './helpers.options.js';\nimport {isPatternOrGradient} from './helpers.color.js';\n\n/**\n * @typedef { import('../elements/element.line.js').default } LineElement\n * @typedef { import('../elements/element.point.js').default } PointElement\n * @typedef {{start: number, end: number, loop: boolean, style?: any}} Segment\n */\n\nfunction propertyFn(property) {\n if (property === 'angle') {\n return {\n between: _angleBetween,\n compare: _angleDiff,\n normalize: _normalizeAngle,\n };\n }\n return {\n between: _isBetween,\n compare: (a, b) => a - b,\n normalize: x => x\n };\n}\n\nfunction normalizeSegment({start, end, count, loop, style}) {\n return {\n start: start % count,\n end: end % count,\n loop: loop && (end - start + 1) % count === 0,\n style\n };\n}\n\nfunction getSegment(segment, points, bounds) {\n const {property, start: startBound, end: endBound} = bounds;\n const {between, normalize} = propertyFn(property);\n const count = points.length;\n // eslint-disable-next-line prefer-const\n let {start, end, loop} = segment;\n let i, ilen;\n\n if (loop) {\n start += count;\n end += count;\n for (i = 0, ilen = count; i < ilen; ++i) {\n if (!between(normalize(points[start % count][property]), startBound, endBound)) {\n break;\n }\n start--;\n end--;\n }\n start %= count;\n end %= count;\n }\n\n if (end < start) {\n end += count;\n }\n return {start, end, loop, style: segment.style};\n}\n\n/**\n * Returns the sub-segment(s) of a line segment that fall in the given bounds\n * @param {object} segment\n * @param {number} segment.start - start index of the segment, referring the points array\n * @param {number} segment.end - end index of the segment, referring the points array\n * @param {boolean} segment.loop - indicates that the segment is a loop\n * @param {object} [segment.style] - segment style\n * @param {PointElement[]} points - the points that this segment refers to\n * @param {object} [bounds]\n * @param {string} bounds.property - the property of a `PointElement` we are bounding. `x`, `y` or `angle`.\n * @param {number} bounds.start - start value of the property\n * @param {number} bounds.end - end value of the property\n * @private\n **/\nexport function _boundSegment(segment, points, bounds) {\n if (!bounds) {\n return [segment];\n }\n\n const {property, start: startBound, end: endBound} = bounds;\n const count = points.length;\n const {compare, between, normalize} = propertyFn(property);\n const {start, end, loop, style} = getSegment(segment, points, bounds);\n\n const result = [];\n let inside = false;\n let subStart = null;\n let value, point, prevValue;\n\n const startIsBefore = () => between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0;\n const endIsBefore = () => compare(endBound, value) === 0 || between(endBound, prevValue, value);\n const shouldStart = () => inside || startIsBefore();\n const shouldStop = () => !inside || endIsBefore();\n\n for (let i = start, prev = start; i <= end; ++i) {\n point = points[i % count];\n\n if (point.skip) {\n continue;\n }\n\n value = normalize(point[property]);\n\n if (value === prevValue) {\n continue;\n }\n\n inside = between(value, startBound, endBound);\n\n if (subStart === null && shouldStart()) {\n subStart = compare(value, startBound) === 0 ? i : prev;\n }\n\n if (subStart !== null && shouldStop()) {\n result.push(normalizeSegment({start: subStart, end: i, loop, count, style}));\n subStart = null;\n }\n prev = i;\n prevValue = value;\n }\n\n if (subStart !== null) {\n result.push(normalizeSegment({start: subStart, end, loop, count, style}));\n }\n\n return result;\n}\n\n\n/**\n * Returns the segments of the line that are inside given bounds\n * @param {LineElement} line\n * @param {object} [bounds]\n * @param {string} bounds.property - the property we are bounding with. `x`, `y` or `angle`.\n * @param {number} bounds.start - start value of the `property`\n * @param {number} bounds.end - end value of the `property`\n * @private\n */\nexport function _boundSegments(line, bounds) {\n const result = [];\n const segments = line.segments;\n\n for (let i = 0; i < segments.length; i++) {\n const sub = _boundSegment(segments[i], line.points, bounds);\n if (sub.length) {\n result.push(...sub);\n }\n }\n return result;\n}\n\n/**\n * Find start and end index of a line.\n */\nfunction findStartAndEnd(points, count, loop, spanGaps) {\n let start = 0;\n let end = count - 1;\n\n if (loop && !spanGaps) {\n // loop and not spanning gaps, first find a gap to start from\n while (start < count && !points[start].skip) {\n start++;\n }\n }\n\n // find first non skipped point (after the first gap possibly)\n while (start < count && points[start].skip) {\n start++;\n }\n\n // if we looped to count, start needs to be 0\n start %= count;\n\n if (loop) {\n // loop will go past count, if start > 0\n end += start;\n }\n\n while (end > start && points[end % count].skip) {\n end--;\n }\n\n // end could be more than count, normalize\n end %= count;\n\n return {start, end};\n}\n\n/**\n * Compute solid segments from Points, when spanGaps === false\n * @param {PointElement[]} points - the points\n * @param {number} start - start index\n * @param {number} max - max index (can go past count on a loop)\n * @param {boolean} loop - boolean indicating that this would be a loop if no gaps are found\n */\nfunction solidSegments(points, start, max, loop) {\n const count = points.length;\n const result = [];\n let last = start;\n let prev = points[start];\n let end;\n\n for (end = start + 1; end <= max; ++end) {\n const cur = points[end % count];\n if (cur.skip || cur.stop) {\n if (!prev.skip) {\n loop = false;\n result.push({start: start % count, end: (end - 1) % count, loop});\n // @ts-ignore\n start = last = cur.stop ? end : null;\n }\n } else {\n last = end;\n if (prev.skip) {\n start = end;\n }\n }\n prev = cur;\n }\n\n if (last !== null) {\n result.push({start: start % count, end: last % count, loop});\n }\n\n return result;\n}\n\n/**\n * Compute the continuous segments that define the whole line\n * There can be skipped points within a segment, if spanGaps is true.\n * @param {LineElement} line\n * @param {object} [segmentOptions]\n * @return {Segment[]}\n * @private\n */\nexport function _computeSegments(line, segmentOptions) {\n const points = line.points;\n const spanGaps = line.options.spanGaps;\n const count = points.length;\n\n if (!count) {\n return [];\n }\n\n const loop = !!line._loop;\n const {start, end} = findStartAndEnd(points, count, loop, spanGaps);\n\n if (spanGaps === true) {\n return splitByStyles(line, [{start, end, loop}], points, segmentOptions);\n }\n\n const max = end < start ? end + count : end;\n const completeLoop = !!line._fullLoop && start === 0 && end === count - 1;\n return splitByStyles(line, solidSegments(points, start, max, completeLoop), points, segmentOptions);\n}\n\n/**\n * @param {Segment[]} segments\n * @param {PointElement[]} points\n * @param {object} [segmentOptions]\n * @return {Segment[]}\n */\nfunction splitByStyles(line, segments, points, segmentOptions) {\n if (!segmentOptions || !segmentOptions.setContext || !points) {\n return segments;\n }\n return doSplitByStyles(line, segments, points, segmentOptions);\n}\n\n/**\n * @param {LineElement} line\n * @param {Segment[]} segments\n * @param {PointElement[]} points\n * @param {object} [segmentOptions]\n * @return {Segment[]}\n */\nfunction doSplitByStyles(line, segments, points, segmentOptions) {\n const chartContext = line._chart.getContext();\n const baseStyle = readStyle(line.options);\n const {_datasetIndex: datasetIndex, options: {spanGaps}} = line;\n const count = points.length;\n const result = [];\n let prevStyle = baseStyle;\n let start = segments[0].start;\n let i = start;\n\n function addStyle(s, e, l, st) {\n const dir = spanGaps ? -1 : 1;\n if (s === e) {\n return;\n }\n // Style can not start/end on a skipped point, adjust indices accordingly\n s += count;\n while (points[s % count].skip) {\n s -= dir;\n }\n while (points[e % count].skip) {\n e += dir;\n }\n if (s % count !== e % count) {\n result.push({start: s % count, end: e % count, loop: l, style: st});\n prevStyle = st;\n start = e % count;\n }\n }\n\n for (const segment of segments) {\n start = spanGaps ? start : segment.start;\n let prev = points[start % count];\n let style;\n for (i = start + 1; i <= segment.end; i++) {\n const pt = points[i % count];\n style = readStyle(segmentOptions.setContext(createContext(chartContext, {\n type: 'segment',\n p0: prev,\n p1: pt,\n p0DataIndex: (i - 1) % count,\n p1DataIndex: i % count,\n datasetIndex\n })));\n if (styleChanged(style, prevStyle)) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n prev = pt;\n prevStyle = style;\n }\n if (start < i - 1) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n }\n\n return result;\n}\n\nfunction readStyle(options) {\n return {\n backgroundColor: options.backgroundColor,\n borderCapStyle: options.borderCapStyle,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderJoinStyle: options.borderJoinStyle,\n borderWidth: options.borderWidth,\n borderColor: options.borderColor\n };\n}\n\nfunction styleChanged(style, prevStyle) {\n if (!prevStyle) {\n return false;\n }\n const cache = [];\n const replacer = function(key, value) {\n if (!isPatternOrGradient(value)) {\n return value;\n }\n if (!cache.includes(value)) {\n cache.push(value);\n }\n return cache.indexOf(value);\n };\n return JSON.stringify(style, replacer) !== JSON.stringify(prevStyle, replacer);\n}\n","import {requestAnimFrame} from '../helpers/helpers.extras.js';\n\n/**\n * @typedef { import('./core.animation.js').default } Animation\n * @typedef { import('./core.controller.js').default } Chart\n */\n\n/**\n * Please use the module's default export which provides a singleton instance\n * Note: class is export for typedoc\n */\nexport class Animator {\n constructor() {\n this._request = null;\n this._charts = new Map();\n this._running = false;\n this._lastDate = undefined;\n }\n\n /**\n\t * @private\n\t */\n _notify(chart, anims, date, type) {\n const callbacks = anims.listeners[type];\n const numSteps = anims.duration;\n\n callbacks.forEach(fn => fn({\n chart,\n initial: anims.initial,\n numSteps,\n currentStep: Math.min(date - anims.start, numSteps)\n }));\n }\n\n /**\n\t * @private\n\t */\n _refresh() {\n if (this._request) {\n return;\n }\n this._running = true;\n\n this._request = requestAnimFrame.call(window, () => {\n this._update();\n this._request = null;\n\n if (this._running) {\n this._refresh();\n }\n });\n }\n\n /**\n\t * @private\n\t */\n _update(date = Date.now()) {\n let remaining = 0;\n\n this._charts.forEach((anims, chart) => {\n if (!anims.running || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n let draw = false;\n let item;\n\n for (; i >= 0; --i) {\n item = items[i];\n\n if (item._active) {\n if (item._total > anims.duration) {\n // if the animation has been updated and its duration prolonged,\n // update to total duration of current animations run (for progress event)\n anims.duration = item._total;\n }\n item.tick(date);\n draw = true;\n } else {\n // Remove the item by replacing it with last item and removing the last\n // A lot faster than splice.\n items[i] = items[items.length - 1];\n items.pop();\n }\n }\n\n if (draw) {\n chart.draw();\n this._notify(chart, anims, date, 'progress');\n }\n\n if (!items.length) {\n anims.running = false;\n this._notify(chart, anims, date, 'complete');\n anims.initial = false;\n }\n\n remaining += items.length;\n });\n\n this._lastDate = date;\n\n if (remaining === 0) {\n this._running = false;\n }\n }\n\n /**\n\t * @private\n\t */\n _getAnims(chart) {\n const charts = this._charts;\n let anims = charts.get(chart);\n if (!anims) {\n anims = {\n running: false,\n initial: true,\n items: [],\n listeners: {\n complete: [],\n progress: []\n }\n };\n charts.set(chart, anims);\n }\n return anims;\n }\n\n /**\n\t * @param {Chart} chart\n\t * @param {string} event - event name\n\t * @param {Function} cb - callback\n\t */\n listen(chart, event, cb) {\n this._getAnims(chart).listeners[event].push(cb);\n }\n\n /**\n\t * Add animations\n\t * @param {Chart} chart\n\t * @param {Animation[]} items - animations\n\t */\n add(chart, items) {\n if (!items || !items.length) {\n return;\n }\n this._getAnims(chart).items.push(...items);\n }\n\n /**\n\t * Counts number of active animations for the chart\n\t * @param {Chart} chart\n\t */\n has(chart) {\n return this._getAnims(chart).items.length > 0;\n }\n\n /**\n\t * Start animating (all charts)\n\t * @param {Chart} chart\n\t */\n start(chart) {\n const anims = this._charts.get(chart);\n if (!anims) {\n return;\n }\n anims.running = true;\n anims.start = Date.now();\n anims.duration = anims.items.reduce((acc, cur) => Math.max(acc, cur._duration), 0);\n this._refresh();\n }\n\n running(chart) {\n if (!this._running) {\n return false;\n }\n const anims = this._charts.get(chart);\n if (!anims || !anims.running || !anims.items.length) {\n return false;\n }\n return true;\n }\n\n /**\n\t * Stop all animations for the chart\n\t * @param {Chart} chart\n\t */\n stop(chart) {\n const anims = this._charts.get(chart);\n if (!anims || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n\n for (; i >= 0; --i) {\n items[i].cancel();\n }\n anims.items = [];\n this._notify(chart, anims, Date.now(), 'complete');\n }\n\n /**\n\t * Remove chart from Animator\n\t * @param {Chart} chart\n\t */\n remove(chart) {\n return this._charts.delete(chart);\n }\n}\n\n// singleton instance\nexport default /* #__PURE__ */ new Animator();\n","import effects from '../helpers/helpers.easing.js';\nimport {resolve} from '../helpers/helpers.options.js';\nimport {color as helpersColor} from '../helpers/helpers.color.js';\n\nconst transparent = 'transparent';\nconst interpolators = {\n boolean(from, to, factor) {\n return factor > 0.5 ? to : from;\n },\n /**\n * @param {string} from\n * @param {string} to\n * @param {number} factor\n */\n color(from, to, factor) {\n const c0 = helpersColor(from || transparent);\n const c1 = c0.valid && helpersColor(to || transparent);\n return c1 && c1.valid\n ? c1.mix(c0, factor).hexString()\n : to;\n },\n number(from, to, factor) {\n return from + (to - from) * factor;\n }\n};\n\nexport default class Animation {\n constructor(cfg, target, prop, to) {\n const currentValue = target[prop];\n\n to = resolve([cfg.to, to, currentValue, cfg.from]);\n const from = resolve([cfg.from, currentValue, to]);\n\n this._active = true;\n this._fn = cfg.fn || interpolators[cfg.type || typeof from];\n this._easing = effects[cfg.easing] || effects.linear;\n this._start = Math.floor(Date.now() + (cfg.delay || 0));\n this._duration = this._total = Math.floor(cfg.duration);\n this._loop = !!cfg.loop;\n this._target = target;\n this._prop = prop;\n this._from = from;\n this._to = to;\n this._promises = undefined;\n }\n\n active() {\n return this._active;\n }\n\n update(cfg, to, date) {\n if (this._active) {\n this._notify(false);\n\n const currentValue = this._target[this._prop];\n const elapsed = date - this._start;\n const remain = this._duration - elapsed;\n this._start = date;\n this._duration = Math.floor(Math.max(remain, cfg.duration));\n this._total += elapsed;\n this._loop = !!cfg.loop;\n this._to = resolve([cfg.to, to, currentValue, cfg.from]);\n this._from = resolve([cfg.from, currentValue, to]);\n }\n }\n\n cancel() {\n if (this._active) {\n // update current evaluated value, for smoother animations\n this.tick(Date.now());\n this._active = false;\n this._notify(false);\n }\n }\n\n tick(date) {\n const elapsed = date - this._start;\n const duration = this._duration;\n const prop = this._prop;\n const from = this._from;\n const loop = this._loop;\n const to = this._to;\n let factor;\n\n this._active = from !== to && (loop || (elapsed < duration));\n\n if (!this._active) {\n this._target[prop] = to;\n this._notify(true);\n return;\n }\n\n if (elapsed < 0) {\n this._target[prop] = from;\n return;\n }\n\n factor = (elapsed / duration) % 2;\n factor = loop && factor > 1 ? 2 - factor : factor;\n factor = this._easing(Math.min(1, Math.max(0, factor)));\n\n this._target[prop] = this._fn(from, to, factor);\n }\n\n wait() {\n const promises = this._promises || (this._promises = []);\n return new Promise((res, rej) => {\n promises.push({res, rej});\n });\n }\n\n _notify(resolved) {\n const method = resolved ? 'res' : 'rej';\n const promises = this._promises || [];\n for (let i = 0; i < promises.length; i++) {\n promises[i][method]();\n }\n }\n}\n","import animator from './core.animator.js';\nimport Animation from './core.animation.js';\nimport defaults from './core.defaults.js';\nimport {isArray, isObject} from '../helpers/helpers.core.js';\n\nexport default class Animations {\n constructor(chart, config) {\n this._chart = chart;\n this._properties = new Map();\n this.configure(config);\n }\n\n configure(config) {\n if (!isObject(config)) {\n return;\n }\n\n const animationOptions = Object.keys(defaults.animation);\n const animatedProps = this._properties;\n\n Object.getOwnPropertyNames(config).forEach(key => {\n const cfg = config[key];\n if (!isObject(cfg)) {\n return;\n }\n const resolved = {};\n for (const option of animationOptions) {\n resolved[option] = cfg[option];\n }\n\n (isArray(cfg.properties) && cfg.properties || [key]).forEach((prop) => {\n if (prop === key || !animatedProps.has(prop)) {\n animatedProps.set(prop, resolved);\n }\n });\n });\n }\n\n /**\n\t * Utility to handle animation of `options`.\n\t * @private\n\t */\n _animateOptions(target, values) {\n const newOptions = values.options;\n const options = resolveTargetOptions(target, newOptions);\n if (!options) {\n return [];\n }\n\n const animations = this._createAnimations(options, newOptions);\n if (newOptions.$shared) {\n // Going to shared options:\n // After all animations are done, assign the shared options object to the element\n // So any new updates to the shared options are observed\n awaitAll(target.options.$animations, newOptions).then(() => {\n target.options = newOptions;\n }, () => {\n // rejected, noop\n });\n }\n\n return animations;\n }\n\n /**\n\t * @private\n\t */\n _createAnimations(target, values) {\n const animatedProps = this._properties;\n const animations = [];\n const running = target.$animations || (target.$animations = {});\n const props = Object.keys(values);\n const date = Date.now();\n let i;\n\n for (i = props.length - 1; i >= 0; --i) {\n const prop = props[i];\n if (prop.charAt(0) === '$') {\n continue;\n }\n\n if (prop === 'options') {\n animations.push(...this._animateOptions(target, values));\n continue;\n }\n const value = values[prop];\n let animation = running[prop];\n const cfg = animatedProps.get(prop);\n\n if (animation) {\n if (cfg && animation.active()) {\n // There is an existing active animation, let's update that\n animation.update(cfg, value, date);\n continue;\n } else {\n animation.cancel();\n }\n }\n if (!cfg || !cfg.duration) {\n // not animated, set directly to new value\n target[prop] = value;\n continue;\n }\n\n running[prop] = animation = new Animation(cfg, target, prop, value);\n animations.push(animation);\n }\n return animations;\n }\n\n\n /**\n\t * Update `target` properties to new values, using configured animations\n\t * @param {object} target - object to update\n\t * @param {object} values - new target properties\n\t * @returns {boolean|undefined} - `true` if animations were started\n\t **/\n update(target, values) {\n if (this._properties.size === 0) {\n // Nothing is animated, just apply the new values.\n Object.assign(target, values);\n return;\n }\n\n const animations = this._createAnimations(target, values);\n\n if (animations.length) {\n animator.add(this._chart, animations);\n return true;\n }\n }\n}\n\nfunction awaitAll(animations, properties) {\n const running = [];\n const keys = Object.keys(properties);\n for (let i = 0; i < keys.length; i++) {\n const anim = animations[keys[i]];\n if (anim && anim.active()) {\n running.push(anim.wait());\n }\n }\n // @ts-ignore\n return Promise.all(running);\n}\n\nfunction resolveTargetOptions(target, newOptions) {\n if (!newOptions) {\n return;\n }\n let options = target.options;\n if (!options) {\n target.options = newOptions;\n return;\n }\n if (options.$shared) {\n // Going from shared options to distinct one:\n // Create new options object containing the old shared values and start updating that.\n target.options = options = Object.assign({}, options, {$shared: false, $animations: {}});\n }\n return options;\n}\n","import Animations from './core.animations.js';\nimport defaults from './core.defaults.js';\nimport {isArray, isFinite, isObject, valueOrDefault, resolveObjectKey, defined} from '../helpers/helpers.core.js';\nimport {listenArrayEvents, unlistenArrayEvents} from '../helpers/helpers.collection.js';\nimport {createContext, sign} from '../helpers/index.js';\n\n/**\n * @typedef { import('./core.controller.js').default } Chart\n * @typedef { import('./core.scale.js').default } Scale\n */\n\nfunction scaleClip(scale, allowedOverflow) {\n const opts = scale && scale.options || {};\n const reverse = opts.reverse;\n const min = opts.min === undefined ? allowedOverflow : 0;\n const max = opts.max === undefined ? allowedOverflow : 0;\n return {\n start: reverse ? max : min,\n end: reverse ? min : max\n };\n}\n\nfunction defaultClip(xScale, yScale, allowedOverflow) {\n if (allowedOverflow === false) {\n return false;\n }\n const x = scaleClip(xScale, allowedOverflow);\n const y = scaleClip(yScale, allowedOverflow);\n\n return {\n top: y.end,\n right: x.end,\n bottom: y.start,\n left: x.start\n };\n}\n\nfunction toClip(value) {\n let t, r, b, l;\n\n if (isObject(value)) {\n t = value.top;\n r = value.right;\n b = value.bottom;\n l = value.left;\n } else {\n t = r = b = l = value;\n }\n\n return {\n top: t,\n right: r,\n bottom: b,\n left: l,\n disabled: value === false\n };\n}\n\nfunction getSortedDatasetIndices(chart, filterVisible) {\n const keys = [];\n const metasets = chart._getSortedDatasetMetas(filterVisible);\n let i, ilen;\n\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n keys.push(metasets[i].index);\n }\n return keys;\n}\n\nfunction applyStack(stack, value, dsIndex, options = {}) {\n const keys = stack.keys;\n const singleMode = options.mode === 'single';\n let i, ilen, datasetIndex, otherValue;\n\n if (value === null) {\n return;\n }\n\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n datasetIndex = +keys[i];\n if (datasetIndex === dsIndex) {\n if (options.all) {\n continue;\n }\n break;\n }\n otherValue = stack.values[datasetIndex];\n if (isFinite(otherValue) && (singleMode || (value === 0 || sign(value) === sign(otherValue)))) {\n value += otherValue;\n }\n }\n return value;\n}\n\nfunction convertObjectDataToArray(data) {\n const keys = Object.keys(data);\n const adata = new Array(keys.length);\n let i, ilen, key;\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n key = keys[i];\n adata[i] = {\n x: key,\n y: data[key]\n };\n }\n return adata;\n}\n\nfunction isStacked(scale, meta) {\n const stacked = scale && scale.options.stacked;\n return stacked || (stacked === undefined && meta.stack !== undefined);\n}\n\nfunction getStackKey(indexScale, valueScale, meta) {\n return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`;\n}\n\nfunction getUserBounds(scale) {\n const {min, max, minDefined, maxDefined} = scale.getUserBounds();\n return {\n min: minDefined ? min : Number.NEGATIVE_INFINITY,\n max: maxDefined ? max : Number.POSITIVE_INFINITY\n };\n}\n\nfunction getOrCreateStack(stacks, stackKey, indexValue) {\n const subStack = stacks[stackKey] || (stacks[stackKey] = {});\n return subStack[indexValue] || (subStack[indexValue] = {});\n}\n\nfunction getLastIndexInStack(stack, vScale, positive, type) {\n for (const meta of vScale.getMatchingVisibleMetas(type).reverse()) {\n const value = stack[meta.index];\n if ((positive && value > 0) || (!positive && value < 0)) {\n return meta.index;\n }\n }\n\n return null;\n}\n\nfunction updateStacks(controller, parsed) {\n const {chart, _cachedMeta: meta} = controller;\n const stacks = chart._stacks || (chart._stacks = {}); // map structure is {stackKey: {datasetIndex: value}}\n const {iScale, vScale, index: datasetIndex} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const key = getStackKey(iScale, vScale, meta);\n const ilen = parsed.length;\n let stack;\n\n for (let i = 0; i < ilen; ++i) {\n const item = parsed[i];\n const {[iAxis]: index, [vAxis]: value} = item;\n const itemStacks = item._stacks || (item._stacks = {});\n stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, index);\n stack[datasetIndex] = value;\n\n stack._top = getLastIndexInStack(stack, vScale, true, meta.type);\n stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type);\n\n const visualValues = stack._visualValues || (stack._visualValues = {});\n visualValues[datasetIndex] = value;\n }\n}\n\nfunction getFirstScaleId(chart, axis) {\n const scales = chart.scales;\n return Object.keys(scales).filter(key => scales[key].axis === axis).shift();\n}\n\nfunction createDatasetContext(parent, index) {\n return createContext(parent,\n {\n active: false,\n dataset: undefined,\n datasetIndex: index,\n index,\n mode: 'default',\n type: 'dataset'\n }\n );\n}\n\nfunction createDataContext(parent, index, element) {\n return createContext(parent, {\n active: false,\n dataIndex: index,\n parsed: undefined,\n raw: undefined,\n element,\n index,\n mode: 'default',\n type: 'data'\n });\n}\n\nfunction clearStacks(meta, items) {\n // Not using meta.index here, because it might be already updated if the dataset changed location\n const datasetIndex = meta.controller.index;\n const axis = meta.vScale && meta.vScale.axis;\n if (!axis) {\n return;\n }\n\n items = items || meta._parsed;\n for (const parsed of items) {\n const stacks = parsed._stacks;\n if (!stacks || stacks[axis] === undefined || stacks[axis][datasetIndex] === undefined) {\n return;\n }\n delete stacks[axis][datasetIndex];\n if (stacks[axis]._visualValues !== undefined && stacks[axis]._visualValues[datasetIndex] !== undefined) {\n delete stacks[axis]._visualValues[datasetIndex];\n }\n }\n}\n\nconst isDirectUpdateMode = (mode) => mode === 'reset' || mode === 'none';\nconst cloneIfNotShared = (cached, shared) => shared ? cached : Object.assign({}, cached);\nconst createStack = (canStack, meta, chart) => canStack && !meta.hidden && meta._stacked\n && {keys: getSortedDatasetIndices(chart, true), values: null};\n\nexport default class DatasetController {\n\n /**\n * @type {any}\n */\n static defaults = {};\n\n /**\n * Element type used to generate a meta dataset (e.g. Chart.element.LineElement).\n */\n static datasetElementType = null;\n\n /**\n * Element type used to generate a meta data (e.g. Chart.element.PointElement).\n */\n static dataElementType = null;\n\n /**\n\t * @param {Chart} chart\n\t * @param {number} datasetIndex\n\t */\n constructor(chart, datasetIndex) {\n this.chart = chart;\n this._ctx = chart.ctx;\n this.index = datasetIndex;\n this._cachedDataOpts = {};\n this._cachedMeta = this.getMeta();\n this._type = this._cachedMeta.type;\n this.options = undefined;\n /** @type {boolean | object} */\n this._parsing = false;\n this._data = undefined;\n this._objectData = undefined;\n this._sharedOptions = undefined;\n this._drawStart = undefined;\n this._drawCount = undefined;\n this.enableOptionSharing = false;\n this.supportsDecimation = false;\n this.$context = undefined;\n this._syncList = [];\n this.datasetElementType = new.target.datasetElementType;\n this.dataElementType = new.target.dataElementType;\n\n this.initialize();\n }\n\n initialize() {\n const meta = this._cachedMeta;\n this.configure();\n this.linkScales();\n meta._stacked = isStacked(meta.vScale, meta);\n this.addElements();\n\n if (this.options.fill && !this.chart.isPluginEnabled('filler')) {\n console.warn(\"Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options\");\n }\n }\n\n updateIndex(datasetIndex) {\n if (this.index !== datasetIndex) {\n clearStacks(this._cachedMeta);\n }\n this.index = datasetIndex;\n }\n\n linkScales() {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n\n const chooseId = (axis, x, y, r) => axis === 'x' ? x : axis === 'r' ? r : y;\n\n const xid = meta.xAxisID = valueOrDefault(dataset.xAxisID, getFirstScaleId(chart, 'x'));\n const yid = meta.yAxisID = valueOrDefault(dataset.yAxisID, getFirstScaleId(chart, 'y'));\n const rid = meta.rAxisID = valueOrDefault(dataset.rAxisID, getFirstScaleId(chart, 'r'));\n const indexAxis = meta.indexAxis;\n const iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid);\n const vid = meta.vAxisID = chooseId(indexAxis, yid, xid, rid);\n meta.xScale = this.getScaleForId(xid);\n meta.yScale = this.getScaleForId(yid);\n meta.rScale = this.getScaleForId(rid);\n meta.iScale = this.getScaleForId(iid);\n meta.vScale = this.getScaleForId(vid);\n }\n\n getDataset() {\n return this.chart.data.datasets[this.index];\n }\n\n getMeta() {\n return this.chart.getDatasetMeta(this.index);\n }\n\n /**\n\t * @param {string} scaleID\n\t * @return {Scale}\n\t */\n getScaleForId(scaleID) {\n return this.chart.scales[scaleID];\n }\n\n /**\n\t * @private\n\t */\n _getOtherScale(scale) {\n const meta = this._cachedMeta;\n return scale === meta.iScale\n ? meta.vScale\n : meta.iScale;\n }\n\n reset() {\n this._update('reset');\n }\n\n /**\n\t * @private\n\t */\n _destroy() {\n const meta = this._cachedMeta;\n if (this._data) {\n unlistenArrayEvents(this._data, this);\n }\n if (meta._stacked) {\n clearStacks(meta);\n }\n }\n\n /**\n\t * @private\n\t */\n _dataCheck() {\n const dataset = this.getDataset();\n const data = dataset.data || (dataset.data = []);\n const _data = this._data;\n\n // In order to correctly handle data addition/deletion animation (and thus simulate\n // real-time charts), we need to monitor these data modifications and synchronize\n // the internal metadata accordingly.\n\n if (isObject(data)) {\n this._data = convertObjectDataToArray(data);\n } else if (_data !== data) {\n if (_data) {\n // This case happens when the user replaced the data array instance.\n unlistenArrayEvents(_data, this);\n // Discard old parsed data and stacks\n const meta = this._cachedMeta;\n clearStacks(meta);\n meta._parsed = [];\n }\n if (data && Object.isExtensible(data)) {\n listenArrayEvents(data, this);\n }\n this._syncList = [];\n this._data = data;\n }\n }\n\n addElements() {\n const meta = this._cachedMeta;\n\n this._dataCheck();\n\n if (this.datasetElementType) {\n meta.dataset = new this.datasetElementType();\n }\n }\n\n buildOrUpdateElements(resetNewElements) {\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n let stackChanged = false;\n\n this._dataCheck();\n\n // make sure cached _stacked status is current\n const oldStacked = meta._stacked;\n meta._stacked = isStacked(meta.vScale, meta);\n\n // detect change in stack option\n if (meta.stack !== dataset.stack) {\n stackChanged = true;\n // remove values from old stack\n clearStacks(meta);\n meta.stack = dataset.stack;\n }\n\n // Re-sync meta data in case the user replaced the data array or if we missed\n // any updates and so make sure that we handle number of datapoints changing.\n this._resyncElements(resetNewElements);\n\n // if stack changed, update stack values for the whole dataset\n if (stackChanged || oldStacked !== meta._stacked) {\n updateStacks(this, meta._parsed);\n }\n }\n\n /**\n\t * Merges user-supplied and default dataset-level options\n\t * @private\n\t */\n configure() {\n const config = this.chart.config;\n const scopeKeys = config.datasetScopeKeys(this._type);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys, true);\n this.options = config.createResolver(scopes, this.getContext());\n this._parsing = this.options.parsing;\n this._cachedDataOpts = {};\n }\n\n /**\n\t * @param {number} start\n\t * @param {number} count\n\t */\n parse(start, count) {\n const {_cachedMeta: meta, _data: data} = this;\n const {iScale, _stacked} = meta;\n const iAxis = iScale.axis;\n\n let sorted = start === 0 && count === data.length ? true : meta._sorted;\n let prev = start > 0 && meta._parsed[start - 1];\n let i, cur, parsed;\n\n if (this._parsing === false) {\n meta._parsed = data;\n meta._sorted = true;\n parsed = data;\n } else {\n if (isArray(data[start])) {\n parsed = this.parseArrayData(meta, data, start, count);\n } else if (isObject(data[start])) {\n parsed = this.parseObjectData(meta, data, start, count);\n } else {\n parsed = this.parsePrimitiveData(meta, data, start, count);\n }\n\n const isNotInOrderComparedToPrev = () => cur[iAxis] === null || (prev && cur[iAxis] < prev[iAxis]);\n for (i = 0; i < count; ++i) {\n meta._parsed[i + start] = cur = parsed[i];\n if (sorted) {\n if (isNotInOrderComparedToPrev()) {\n sorted = false;\n }\n prev = cur;\n }\n }\n meta._sorted = sorted;\n }\n\n if (_stacked) {\n updateStacks(this, parsed);\n }\n }\n\n /**\n\t * Parse array of primitive values\n\t * @param {object} meta - dataset meta\n\t * @param {array} data - data array. Example [1,3,4]\n\t * @param {number} start - start index\n\t * @param {number} count - number of items to parse\n\t * @returns {object} parsed item - item containing index and a parsed value\n\t * for each scale id.\n\t * Example: {xScale0: 0, yScale0: 1}\n\t * @protected\n\t */\n parsePrimitiveData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = new Array(count);\n let i, ilen, index;\n\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n parsed[i] = {\n [iAxis]: singleScale || iScale.parse(labels[index], index),\n [vAxis]: vScale.parse(data[index], index)\n };\n }\n return parsed;\n }\n\n /**\n\t * Parse array of arrays\n\t * @param {object} meta - dataset meta\n\t * @param {array} data - data array. Example [[1,2],[3,4]]\n\t * @param {number} start - start index\n\t * @param {number} count - number of items to parse\n\t * @returns {object} parsed item - item containing index and a parsed value\n\t * for each scale id.\n\t * Example: {x: 0, y: 1}\n\t * @protected\n\t */\n parseArrayData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const parsed = new Array(count);\n let i, ilen, index, item;\n\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(item[0], index),\n y: yScale.parse(item[1], index)\n };\n }\n return parsed;\n }\n\n /**\n\t * Parse array of objects\n\t * @param {object} meta - dataset meta\n\t * @param {array} data - data array. Example [{x:1, y:5}, {x:2, y:10}]\n\t * @param {number} start - start index\n\t * @param {number} count - number of items to parse\n\t * @returns {object} parsed item - item containing index and a parsed value\n\t * for each scale id. _custom is optional\n\t * Example: {xScale0: 0, yScale0: 1, _custom: {r: 10, foo: 'bar'}}\n\t * @protected\n\t */\n parseObjectData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(resolveObjectKey(item, xAxisKey), index),\n y: yScale.parse(resolveObjectKey(item, yAxisKey), index)\n };\n }\n return parsed;\n }\n\n /**\n\t * @protected\n\t */\n getParsed(index) {\n return this._cachedMeta._parsed[index];\n }\n\n /**\n\t * @protected\n\t */\n getDataElement(index) {\n return this._cachedMeta.data[index];\n }\n\n /**\n\t * @protected\n\t */\n applyStack(scale, parsed, mode) {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const value = parsed[scale.axis];\n const stack = {\n keys: getSortedDatasetIndices(chart, true),\n values: parsed._stacks[scale.axis]._visualValues\n };\n return applyStack(stack, value, meta.index, {mode});\n }\n\n /**\n\t * @protected\n\t */\n updateRangeFromParsed(range, scale, parsed, stack) {\n const parsedValue = parsed[scale.axis];\n let value = parsedValue === null ? NaN : parsedValue;\n const values = stack && parsed._stacks[scale.axis];\n if (stack && values) {\n stack.values = values;\n value = applyStack(stack, parsedValue, this._cachedMeta.index);\n }\n range.min = Math.min(range.min, value);\n range.max = Math.max(range.max, value);\n }\n\n /**\n\t * @protected\n\t */\n getMinMax(scale, canStack) {\n const meta = this._cachedMeta;\n const _parsed = meta._parsed;\n const sorted = meta._sorted && scale === meta.iScale;\n const ilen = _parsed.length;\n const otherScale = this._getOtherScale(scale);\n const stack = createStack(canStack, meta, this.chart);\n const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n const {min: otherMin, max: otherMax} = getUserBounds(otherScale);\n let i, parsed;\n\n function _skip() {\n parsed = _parsed[i];\n const otherValue = parsed[otherScale.axis];\n return !isFinite(parsed[scale.axis]) || otherMin > otherValue || otherMax < otherValue;\n }\n\n for (i = 0; i < ilen; ++i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n if (sorted) {\n // if the data is sorted, we don't need to check further from this end of array\n break;\n }\n }\n if (sorted) {\n // in the sorted case, find first non-skipped value from other end of array\n for (i = ilen - 1; i >= 0; --i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n break;\n }\n }\n return range;\n }\n\n getAllParsedValues(scale) {\n const parsed = this._cachedMeta._parsed;\n const values = [];\n let i, ilen, value;\n\n for (i = 0, ilen = parsed.length; i < ilen; ++i) {\n value = parsed[i][scale.axis];\n if (isFinite(value)) {\n values.push(value);\n }\n }\n return values;\n }\n\n /**\n\t * @return {number|boolean}\n\t * @protected\n\t */\n getMaxOverflow() {\n return false;\n }\n\n /**\n\t * @protected\n\t */\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: iScale ? '' + iScale.getLabelForValue(parsed[iScale.axis]) : '',\n value: vScale ? '' + vScale.getLabelForValue(parsed[vScale.axis]) : ''\n };\n }\n\n /**\n\t * @private\n\t */\n _update(mode) {\n const meta = this._cachedMeta;\n this.update(mode || 'default');\n meta._clip = toClip(valueOrDefault(this.options.clip, defaultClip(meta.xScale, meta.yScale, this.getMaxOverflow())));\n }\n\n /**\n\t * @param {string} mode\n\t */\n update(mode) {} // eslint-disable-line no-unused-vars\n\n draw() {\n const ctx = this._ctx;\n const chart = this.chart;\n const meta = this._cachedMeta;\n const elements = meta.data || [];\n const area = chart.chartArea;\n const active = [];\n const start = this._drawStart || 0;\n const count = this._drawCount || (elements.length - start);\n const drawActiveElementsOnTop = this.options.drawActiveElementsOnTop;\n let i;\n\n if (meta.dataset) {\n meta.dataset.draw(ctx, area, start, count);\n }\n\n for (i = start; i < start + count; ++i) {\n const element = elements[i];\n if (element.hidden) {\n continue;\n }\n if (element.active && drawActiveElementsOnTop) {\n active.push(element);\n } else {\n element.draw(ctx, area);\n }\n }\n\n for (i = 0; i < active.length; ++i) {\n active[i].draw(ctx, area);\n }\n }\n\n /**\n\t * Returns a set of predefined style properties that should be used to represent the dataset\n\t * or the data if the index is specified\n\t * @param {number} index - data index\n\t * @param {boolean} [active] - true if hover\n\t * @return {object} style object\n\t */\n getStyle(index, active) {\n const mode = active ? 'active' : 'default';\n return index === undefined && this._cachedMeta.dataset\n ? this.resolveDatasetElementOptions(mode)\n : this.resolveDataElementOptions(index || 0, mode);\n }\n\n /**\n\t * @protected\n\t */\n getContext(index, active, mode) {\n const dataset = this.getDataset();\n let context;\n if (index >= 0 && index < this._cachedMeta.data.length) {\n const element = this._cachedMeta.data[index];\n context = element.$context ||\n (element.$context = createDataContext(this.getContext(), index, element));\n context.parsed = this.getParsed(index);\n context.raw = dataset.data[index];\n context.index = context.dataIndex = index;\n } else {\n context = this.$context ||\n (this.$context = createDatasetContext(this.chart.getContext(), this.index));\n context.dataset = dataset;\n context.index = context.datasetIndex = this.index;\n }\n\n context.active = !!active;\n context.mode = mode;\n return context;\n }\n\n /**\n\t * @param {string} [mode]\n\t * @protected\n\t */\n resolveDatasetElementOptions(mode) {\n return this._resolveElementOptions(this.datasetElementType.id, mode);\n }\n\n /**\n\t * @param {number} index\n\t * @param {string} [mode]\n\t * @protected\n\t */\n resolveDataElementOptions(index, mode) {\n return this._resolveElementOptions(this.dataElementType.id, mode, index);\n }\n\n /**\n\t * @private\n\t */\n _resolveElementOptions(elementType, mode = 'default', index) {\n const active = mode === 'active';\n const cache = this._cachedDataOpts;\n const cacheKey = elementType + '-' + mode;\n const cached = cache[cacheKey];\n const sharing = this.enableOptionSharing && defined(index);\n if (cached) {\n return cloneIfNotShared(cached, sharing);\n }\n const config = this.chart.config;\n const scopeKeys = config.datasetElementScopeKeys(this._type, elementType);\n const prefixes = active ? [`${elementType}Hover`, 'hover', elementType, ''] : [elementType, ''];\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n const names = Object.keys(defaults.elements[elementType]);\n // context is provided as a function, and is called only if needed,\n // so we don't create a context for each element if not needed.\n const context = () => this.getContext(index, active, mode);\n const values = config.resolveNamedOptions(scopes, names, context, prefixes);\n\n if (values.$shared) {\n // `$shared` indicates this set of options can be shared between multiple elements.\n // Sharing is used to reduce number of properties to change during animation.\n values.$shared = sharing;\n\n // We cache options by `mode`, which can be 'active' for example. This enables us\n // to have the 'active' element options and 'default' options to switch between\n // when interacting.\n cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing));\n }\n\n return values;\n }\n\n\n /**\n\t * @private\n\t */\n _resolveAnimations(index, transition, active) {\n const chart = this.chart;\n const cache = this._cachedDataOpts;\n const cacheKey = `animation-${transition}`;\n const cached = cache[cacheKey];\n if (cached) {\n return cached;\n }\n let options;\n if (chart.options.animation !== false) {\n const config = this.chart.config;\n const scopeKeys = config.datasetAnimationScopeKeys(this._type, transition);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n options = config.createResolver(scopes, this.getContext(index, active, transition));\n }\n const animations = new Animations(chart, options && options.animations);\n if (options && options._cacheable) {\n cache[cacheKey] = Object.freeze(animations);\n }\n return animations;\n }\n\n /**\n\t * Utility for getting the options object shared between elements\n\t * @protected\n\t */\n getSharedOptions(options) {\n if (!options.$shared) {\n return;\n }\n return this._sharedOptions || (this._sharedOptions = Object.assign({}, options));\n }\n\n /**\n\t * Utility for determining if `options` should be included in the updated properties\n\t * @protected\n\t */\n includeOptions(mode, sharedOptions) {\n return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled;\n }\n\n /**\n * @todo v4, rename to getSharedOptions and remove excess functions\n */\n _getSharedOptions(start, mode) {\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const previouslySharedOptions = this._sharedOptions;\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions) || (sharedOptions !== previouslySharedOptions);\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n return {sharedOptions, includeOptions};\n }\n\n /**\n\t * Utility for updating an element with new properties, using animations when appropriate.\n\t * @protected\n\t */\n updateElement(element, index, properties, mode) {\n if (isDirectUpdateMode(mode)) {\n Object.assign(element, properties);\n } else {\n this._resolveAnimations(index, mode).update(element, properties);\n }\n }\n\n /**\n\t * Utility to animate the shared options, that are potentially affecting multiple elements.\n\t * @protected\n\t */\n updateSharedOptions(sharedOptions, mode, newOptions) {\n if (sharedOptions && !isDirectUpdateMode(mode)) {\n this._resolveAnimations(undefined, mode).update(sharedOptions, newOptions);\n }\n }\n\n /**\n\t * @private\n\t */\n _setStyle(element, index, mode, active) {\n element.active = active;\n const options = this.getStyle(index, active);\n this._resolveAnimations(index, mode, active).update(element, {\n // When going from active to inactive, we need to update to the shared options.\n // This way the once hovered element will end up with the same original shared options instance, after animation.\n options: (!active && this.getSharedOptions(options)) || options\n });\n }\n\n removeHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', false);\n }\n\n setHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', true);\n }\n\n /**\n\t * @private\n\t */\n _removeDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n\n if (element) {\n this._setStyle(element, undefined, 'active', false);\n }\n }\n\n /**\n\t * @private\n\t */\n _setDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n\n if (element) {\n this._setStyle(element, undefined, 'active', true);\n }\n }\n\n /**\n\t * @private\n\t */\n _resyncElements(resetNewElements) {\n const data = this._data;\n const elements = this._cachedMeta.data;\n\n // Apply changes detected through array listeners\n for (const [method, arg1, arg2] of this._syncList) {\n this[method](arg1, arg2);\n }\n this._syncList = [];\n\n const numMeta = elements.length;\n const numData = data.length;\n const count = Math.min(numData, numMeta);\n\n if (count) {\n // TODO: It is not optimal to always parse the old data\n // This is done because we are not detecting direct assignments:\n // chart.data.datasets[0].data[5] = 10;\n // chart.data.datasets[0].data[5].y = 10;\n this.parse(0, count);\n }\n\n if (numData > numMeta) {\n this._insertElements(numMeta, numData - numMeta, resetNewElements);\n } else if (numData < numMeta) {\n this._removeElements(numData, numMeta - numData);\n }\n }\n\n /**\n\t * @private\n\t */\n _insertElements(start, count, resetNewElements = true) {\n const meta = this._cachedMeta;\n const data = meta.data;\n const end = start + count;\n let i;\n\n const move = (arr) => {\n arr.length += count;\n for (i = arr.length - 1; i >= end; i--) {\n arr[i] = arr[i - count];\n }\n };\n move(data);\n\n for (i = start; i < end; ++i) {\n data[i] = new this.dataElementType();\n }\n\n if (this._parsing) {\n move(meta._parsed);\n }\n this.parse(start, count);\n\n if (resetNewElements) {\n this.updateElements(data, start, count, 'reset');\n }\n }\n\n updateElements(element, start, count, mode) {} // eslint-disable-line no-unused-vars\n\n /**\n\t * @private\n\t */\n _removeElements(start, count) {\n const meta = this._cachedMeta;\n if (this._parsing) {\n const removed = meta._parsed.splice(start, count);\n if (meta._stacked) {\n clearStacks(meta, removed);\n }\n }\n meta.data.splice(start, count);\n }\n\n /**\n\t * @private\n */\n _sync(args) {\n if (this._parsing) {\n this._syncList.push(args);\n } else {\n const [method, arg1, arg2] = args;\n this[method](arg1, arg2);\n }\n this.chart._dataChanges.push([this.index, ...args]);\n }\n\n _onDataPush() {\n const count = arguments.length;\n this._sync(['_insertElements', this.getDataset().data.length - count, count]);\n }\n\n _onDataPop() {\n this._sync(['_removeElements', this._cachedMeta.data.length - 1, 1]);\n }\n\n _onDataShift() {\n this._sync(['_removeElements', 0, 1]);\n }\n\n _onDataSplice(start, count) {\n if (count) {\n this._sync(['_removeElements', start, count]);\n }\n const newCount = arguments.length - 2;\n if (newCount) {\n this._sync(['_insertElements', start, newCount]);\n }\n }\n\n _onDataUnshift() {\n this._sync(['_insertElements', 0, arguments.length]);\n }\n}\n","import DatasetController from '../core/core.datasetController.js';\nimport {\n _arrayUnique, isArray, isNullOrUndef,\n valueOrDefault, resolveObjectKey, sign, defined\n} from '../helpers/index.js';\n\nfunction getAllScaleValues(scale, type) {\n if (!scale._cache.$bar) {\n const visibleMetas = scale.getMatchingVisibleMetas(type);\n let values = [];\n\n for (let i = 0, ilen = visibleMetas.length; i < ilen; i++) {\n values = values.concat(visibleMetas[i].controller.getAllParsedValues(scale));\n }\n scale._cache.$bar = _arrayUnique(values.sort((a, b) => a - b));\n }\n return scale._cache.$bar;\n}\n\n/**\n * Computes the \"optimal\" sample size to maintain bars equally sized while preventing overlap.\n * @private\n */\nfunction computeMinSampleSize(meta) {\n const scale = meta.iScale;\n const values = getAllScaleValues(scale, meta.type);\n let min = scale._length;\n let i, ilen, curr, prev;\n const updateMinAndPrev = () => {\n if (curr === 32767 || curr === -32768) {\n // Ignore truncated pixels\n return;\n }\n if (defined(prev)) {\n // curr - prev === 0 is ignored\n min = Math.min(min, Math.abs(curr - prev) || min);\n }\n prev = curr;\n };\n\n for (i = 0, ilen = values.length; i < ilen; ++i) {\n curr = scale.getPixelForValue(values[i]);\n updateMinAndPrev();\n }\n\n prev = undefined;\n for (i = 0, ilen = scale.ticks.length; i < ilen; ++i) {\n curr = scale.getPixelForTick(i);\n updateMinAndPrev();\n }\n\n return min;\n}\n\n/**\n * Computes an \"ideal\" category based on the absolute bar thickness or, if undefined or null,\n * uses the smallest interval (see computeMinSampleSize) that prevents bar overlapping. This\n * mode currently always generates bars equally sized (until we introduce scriptable options?).\n * @private\n */\nfunction computeFitCategoryTraits(index, ruler, options, stackCount) {\n const thickness = options.barThickness;\n let size, ratio;\n\n if (isNullOrUndef(thickness)) {\n size = ruler.min * options.categoryPercentage;\n ratio = options.barPercentage;\n } else {\n // When bar thickness is enforced, category and bar percentages are ignored.\n // Note(SB): we could add support for relative bar thickness (e.g. barThickness: '50%')\n // and deprecate barPercentage since this value is ignored when thickness is absolute.\n size = thickness * stackCount;\n ratio = 1;\n }\n\n return {\n chunk: size / stackCount,\n ratio,\n start: ruler.pixels[index] - (size / 2)\n };\n}\n\n/**\n * Computes an \"optimal\" category that globally arranges bars side by side (no gap when\n * percentage options are 1), based on the previous and following categories. This mode\n * generates bars with different widths when data are not evenly spaced.\n * @private\n */\nfunction computeFlexCategoryTraits(index, ruler, options, stackCount) {\n const pixels = ruler.pixels;\n const curr = pixels[index];\n let prev = index > 0 ? pixels[index - 1] : null;\n let next = index < pixels.length - 1 ? pixels[index + 1] : null;\n const percent = options.categoryPercentage;\n\n if (prev === null) {\n // first data: its size is double based on the next point or,\n // if it's also the last data, we use the scale size.\n prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n }\n\n if (next === null) {\n // last data: its size is also double based on the previous point.\n next = curr + curr - prev;\n }\n\n const start = curr - (curr - Math.min(prev, next)) / 2 * percent;\n const size = Math.abs(next - prev) / 2 * percent;\n\n return {\n chunk: size / stackCount,\n ratio: options.barPercentage,\n start\n };\n}\n\nfunction parseFloatBar(entry, item, vScale, i) {\n const startValue = vScale.parse(entry[0], i);\n const endValue = vScale.parse(entry[1], i);\n const min = Math.min(startValue, endValue);\n const max = Math.max(startValue, endValue);\n let barStart = min;\n let barEnd = max;\n\n if (Math.abs(min) > Math.abs(max)) {\n barStart = max;\n barEnd = min;\n }\n\n // Store `barEnd` (furthest away from origin) as parsed value,\n // to make stacking straight forward\n item[vScale.axis] = barEnd;\n\n item._custom = {\n barStart,\n barEnd,\n start: startValue,\n end: endValue,\n min,\n max\n };\n}\n\nfunction parseValue(entry, item, vScale, i) {\n if (isArray(entry)) {\n parseFloatBar(entry, item, vScale, i);\n } else {\n item[vScale.axis] = vScale.parse(entry, i);\n }\n return item;\n}\n\nfunction parseArrayOrPrimitive(meta, data, start, count) {\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = [];\n let i, ilen, item, entry;\n\n for (i = start, ilen = start + count; i < ilen; ++i) {\n entry = data[i];\n item = {};\n item[iScale.axis] = singleScale || iScale.parse(labels[i], i);\n parsed.push(parseValue(entry, item, vScale, i));\n }\n return parsed;\n}\n\nfunction isFloatBar(custom) {\n return custom && custom.barStart !== undefined && custom.barEnd !== undefined;\n}\n\nfunction barSign(size, vScale, actualBase) {\n if (size !== 0) {\n return sign(size);\n }\n return (vScale.isHorizontal() ? 1 : -1) * (vScale.min >= actualBase ? 1 : -1);\n}\n\nfunction borderProps(properties) {\n let reverse, start, end, top, bottom;\n if (properties.horizontal) {\n reverse = properties.base > properties.x;\n start = 'left';\n end = 'right';\n } else {\n reverse = properties.base < properties.y;\n start = 'bottom';\n end = 'top';\n }\n if (reverse) {\n top = 'end';\n bottom = 'start';\n } else {\n top = 'start';\n bottom = 'end';\n }\n return {start, end, reverse, top, bottom};\n}\n\nfunction setBorderSkipped(properties, options, stack, index) {\n let edge = options.borderSkipped;\n const res = {};\n\n if (!edge) {\n properties.borderSkipped = res;\n return;\n }\n\n if (edge === true) {\n properties.borderSkipped = {top: true, right: true, bottom: true, left: true};\n return;\n }\n\n const {start, end, reverse, top, bottom} = borderProps(properties);\n\n if (edge === 'middle' && stack) {\n properties.enableBorderRadius = true;\n if ((stack._top || 0) === index) {\n edge = top;\n } else if ((stack._bottom || 0) === index) {\n edge = bottom;\n } else {\n res[parseEdge(bottom, start, end, reverse)] = true;\n edge = top;\n }\n }\n\n res[parseEdge(edge, start, end, reverse)] = true;\n properties.borderSkipped = res;\n}\n\nfunction parseEdge(edge, a, b, reverse) {\n if (reverse) {\n edge = swap(edge, a, b);\n edge = startEnd(edge, b, a);\n } else {\n edge = startEnd(edge, a, b);\n }\n return edge;\n}\n\nfunction swap(orig, v1, v2) {\n return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\n\nfunction startEnd(v, start, end) {\n return v === 'start' ? start : v === 'end' ? end : v;\n}\n\nfunction setInflateAmount(properties, {inflateAmount}, ratio) {\n properties.inflateAmount = inflateAmount === 'auto'\n ? ratio === 1 ? 0.33 : 0\n : inflateAmount;\n}\n\nexport default class BarController extends DatasetController {\n\n static id = 'bar';\n\n /**\n * @type {any}\n */\n static defaults = {\n datasetElementType: false,\n dataElementType: 'bar',\n\n categoryPercentage: 0.8,\n barPercentage: 0.9,\n grouped: true,\n\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'base', 'width', 'height']\n }\n }\n };\n\n /**\n * @type {any}\n */\n static overrides = {\n scales: {\n _index_: {\n type: 'category',\n offset: true,\n grid: {\n offset: true\n }\n },\n _value_: {\n type: 'linear',\n beginAtZero: true,\n }\n }\n };\n\n\n /**\n\t * Overriding primitive data parsing since we support mixed primitive/array\n\t * data for float bars\n\t * @protected\n\t */\n parsePrimitiveData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n\n /**\n\t * Overriding array data parsing since we support mixed primitive/array\n\t * data for float bars\n\t * @protected\n\t */\n parseArrayData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n\n /**\n\t * Overriding object data parsing since we support mixed primitive/array\n\t * value-scale data for float bars\n\t * @protected\n\t */\n parseObjectData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const iAxisKey = iScale.axis === 'x' ? xAxisKey : yAxisKey;\n const vAxisKey = vScale.axis === 'x' ? xAxisKey : yAxisKey;\n const parsed = [];\n let i, ilen, item, obj;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n obj = data[i];\n item = {};\n item[iScale.axis] = iScale.parse(resolveObjectKey(obj, iAxisKey), i);\n parsed.push(parseValue(resolveObjectKey(obj, vAxisKey), item, vScale, i));\n }\n return parsed;\n }\n\n /**\n\t * @protected\n\t */\n updateRangeFromParsed(range, scale, parsed, stack) {\n super.updateRangeFromParsed(range, scale, parsed, stack);\n const custom = parsed._custom;\n if (custom && scale === this._cachedMeta.vScale) {\n // float bar: only one end of the bar is considered by `super`\n range.min = Math.min(range.min, custom.min);\n range.max = Math.max(range.max, custom.max);\n }\n }\n\n /**\n\t * @return {number|boolean}\n\t * @protected\n\t */\n getMaxOverflow() {\n return 0;\n }\n\n /**\n\t * @protected\n\t */\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const {iScale, vScale} = meta;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const value = isFloatBar(custom)\n ? '[' + custom.start + ', ' + custom.end + ']'\n : '' + vScale.getLabelForValue(parsed[vScale.axis]);\n\n return {\n label: '' + iScale.getLabelForValue(parsed[iScale.axis]),\n value\n };\n }\n\n initialize() {\n this.enableOptionSharing = true;\n\n super.initialize();\n\n const meta = this._cachedMeta;\n meta.stack = this.getDataset().stack;\n }\n\n update(mode) {\n const meta = this._cachedMeta;\n this.updateElements(meta.data, 0, meta.data.length, mode);\n }\n\n updateElements(bars, start, count, mode) {\n const reset = mode === 'reset';\n const {index, _cachedMeta: {vScale}} = this;\n const base = vScale.getBasePixel();\n const horizontal = vScale.isHorizontal();\n const ruler = this._getRuler();\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n\n for (let i = start; i < start + count; i++) {\n const parsed = this.getParsed(i);\n const vpixels = reset || isNullOrUndef(parsed[vScale.axis]) ? {base, head: base} : this._calculateBarValuePixels(i);\n const ipixels = this._calculateBarIndexPixels(i, ruler);\n const stack = (parsed._stacks || {})[vScale.axis];\n\n const properties = {\n horizontal,\n base: vpixels.base,\n enableBorderRadius: !stack || isFloatBar(parsed._custom) || (index === stack._top || index === stack._bottom),\n x: horizontal ? vpixels.head : ipixels.center,\n y: horizontal ? ipixels.center : vpixels.head,\n height: horizontal ? ipixels.size : Math.abs(vpixels.size),\n width: horizontal ? Math.abs(vpixels.size) : ipixels.size\n };\n\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, bars[i].active ? 'active' : mode);\n }\n const options = properties.options || bars[i].options;\n setBorderSkipped(properties, options, stack, index);\n setInflateAmount(properties, options, ruler.ratio);\n this.updateElement(bars[i], i, properties, mode);\n }\n }\n\n /**\n\t * Returns the stacks based on groups and bar visibility.\n\t * @param {number} [last] - The dataset index\n\t * @param {number} [dataIndex] - The data index of the ruler\n\t * @returns {string[]} The list of stack IDs\n\t * @private\n\t */\n _getStacks(last, dataIndex) {\n const {iScale} = this._cachedMeta;\n const metasets = iScale.getMatchingVisibleMetas(this._type)\n .filter(meta => meta.controller.options.grouped);\n const stacked = iScale.options.stacked;\n const stacks = [];\n\n const skipNull = (meta) => {\n const parsed = meta.controller.getParsed(dataIndex);\n const val = parsed && parsed[meta.vScale.axis];\n\n if (isNullOrUndef(val) || isNaN(val)) {\n return true;\n }\n };\n\n for (const meta of metasets) {\n if (dataIndex !== undefined && skipNull(meta)) {\n continue;\n }\n\n // stacked | meta.stack\n // | found | not found | undefined\n // false | x | x | x\n // true | | x |\n // undefined | | x | x\n if (stacked === false || stacks.indexOf(meta.stack) === -1 ||\n\t\t\t\t(stacked === undefined && meta.stack === undefined)) {\n stacks.push(meta.stack);\n }\n if (meta.index === last) {\n break;\n }\n }\n\n // No stacks? that means there is no visible data. Let's still initialize an `undefined`\n // stack where possible invisible bars will be located.\n // https://github.com/chartjs/Chart.js/issues/6368\n if (!stacks.length) {\n stacks.push(undefined);\n }\n\n return stacks;\n }\n\n /**\n\t * Returns the effective number of stacks based on groups and bar visibility.\n\t * @private\n\t */\n _getStackCount(index) {\n return this._getStacks(undefined, index).length;\n }\n\n /**\n\t * Returns the stack index for the given dataset based on groups and bar visibility.\n\t * @param {number} [datasetIndex] - The dataset index\n\t * @param {string} [name] - The stack name to find\n * @param {number} [dataIndex]\n\t * @returns {number} The stack index\n\t * @private\n\t */\n _getStackIndex(datasetIndex, name, dataIndex) {\n const stacks = this._getStacks(datasetIndex, dataIndex);\n const index = (name !== undefined)\n ? stacks.indexOf(name)\n : -1; // indexOf returns -1 if element is not present\n\n return (index === -1)\n ? stacks.length - 1\n : index;\n }\n\n /**\n\t * @private\n\t */\n _getRuler() {\n const opts = this.options;\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const pixels = [];\n let i, ilen;\n\n for (i = 0, ilen = meta.data.length; i < ilen; ++i) {\n pixels.push(iScale.getPixelForValue(this.getParsed(i)[iScale.axis], i));\n }\n\n const barThickness = opts.barThickness;\n const min = barThickness || computeMinSampleSize(meta);\n\n return {\n min,\n pixels,\n start: iScale._startPixel,\n end: iScale._endPixel,\n stackCount: this._getStackCount(),\n scale: iScale,\n grouped: opts.grouped,\n // bar thickness ratio used for non-grouped bars\n ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage\n };\n }\n\n /**\n\t * Note: pixel values are not clamped to the scale area.\n\t * @private\n\t */\n _calculateBarValuePixels(index) {\n const {_cachedMeta: {vScale, _stacked, index: datasetIndex}, options: {base: baseValue, minBarLength}} = this;\n const actualBase = baseValue || 0;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const floating = isFloatBar(custom);\n let value = parsed[vScale.axis];\n let start = 0;\n let length = _stacked ? this.applyStack(vScale, parsed, _stacked) : value;\n let head, size;\n\n if (length !== value) {\n start = length - value;\n length = value;\n }\n\n if (floating) {\n value = custom.barStart;\n length = custom.barEnd - custom.barStart;\n // bars crossing origin are not stacked\n if (value !== 0 && sign(value) !== sign(custom.barEnd)) {\n start = 0;\n }\n start += value;\n }\n\n const startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start;\n let base = vScale.getPixelForValue(startValue);\n\n if (this.chart.getDataVisibility(index)) {\n head = vScale.getPixelForValue(start + length);\n } else {\n // When not visible, no height\n head = base;\n }\n\n size = head - base;\n\n if (Math.abs(size) < minBarLength) {\n size = barSign(size, vScale, actualBase) * minBarLength;\n if (value === actualBase) {\n base -= size / 2;\n }\n const startPixel = vScale.getPixelForDecimal(0);\n const endPixel = vScale.getPixelForDecimal(1);\n const min = Math.min(startPixel, endPixel);\n const max = Math.max(startPixel, endPixel);\n base = Math.max(Math.min(base, max), min);\n head = base + size;\n\n if (_stacked && !floating) {\n // visual data coordinates after applying minBarLength\n parsed._stacks[vScale.axis]._visualValues[datasetIndex] = vScale.getValueForPixel(head) - vScale.getValueForPixel(base);\n }\n }\n\n if (base === vScale.getPixelForValue(actualBase)) {\n const halfGrid = sign(size) * vScale.getLineWidthForValue(actualBase) / 2;\n base += halfGrid;\n size -= halfGrid;\n }\n\n return {\n size,\n base,\n head,\n center: head + size / 2\n };\n }\n\n /**\n\t * @private\n\t */\n _calculateBarIndexPixels(index, ruler) {\n const scale = ruler.scale;\n const options = this.options;\n const skipNull = options.skipNull;\n const maxBarThickness = valueOrDefault(options.maxBarThickness, Infinity);\n let center, size;\n if (ruler.grouped) {\n const stackCount = skipNull ? this._getStackCount(index) : ruler.stackCount;\n const range = options.barThickness === 'flex'\n ? computeFlexCategoryTraits(index, ruler, options, stackCount)\n : computeFitCategoryTraits(index, ruler, options, stackCount);\n\n const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : undefined);\n center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\n size = Math.min(maxBarThickness, range.chunk * range.ratio);\n } else {\n // For non-grouped bar charts, exact pixel values are used\n center = scale.getPixelForValue(this.getParsed(index)[scale.axis], index);\n size = Math.min(maxBarThickness, ruler.min * ruler.ratio);\n }\n\n return {\n base: center - size / 2,\n head: center + size / 2,\n center,\n size\n };\n }\n\n draw() {\n const meta = this._cachedMeta;\n const vScale = meta.vScale;\n const rects = meta.data;\n const ilen = rects.length;\n let i = 0;\n\n for (; i < ilen; ++i) {\n if (this.getParsed(i)[vScale.axis] !== null) {\n rects[i].draw(this._ctx);\n }\n }\n }\n\n}\n","import DatasetController from '../core/core.datasetController.js';\nimport {valueOrDefault} from '../helpers/helpers.core.js';\n\nexport default class BubbleController extends DatasetController {\n\n static id = 'bubble';\n\n /**\n * @type {any}\n */\n static defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'borderWidth', 'radius']\n }\n }\n };\n\n /**\n * @type {any}\n */\n static overrides = {\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n };\n\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n }\n\n /**\n\t * Parse array of primitive values\n\t * @protected\n\t */\n parsePrimitiveData(meta, data, start, count) {\n const parsed = super.parsePrimitiveData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n parsed[i]._custom = this.resolveDataElementOptions(i + start).radius;\n }\n return parsed;\n }\n\n /**\n\t * Parse array of arrays\n\t * @protected\n\t */\n parseArrayData(meta, data, start, count) {\n const parsed = super.parseArrayData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item[2], this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n\n /**\n\t * Parse array of objects\n\t * @protected\n\t */\n parseObjectData(meta, data, start, count) {\n const parsed = super.parseObjectData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item && item.r && +item.r, this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n\n /**\n\t * @protected\n\t */\n getMaxOverflow() {\n const data = this._cachedMeta.data;\n\n let max = 0;\n for (let i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n\n /**\n\t * @protected\n\t */\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const labels = this.chart.data.labels || [];\n const {xScale, yScale} = meta;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n const r = parsed._custom;\n\n return {\n label: labels[index] || '',\n value: '(' + x + ', ' + y + (r ? ', ' + r : '') + ')'\n };\n }\n\n update(mode) {\n const points = this._cachedMeta.data;\n\n // Update Points\n this.updateElements(points, 0, points.length, mode);\n }\n\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale} = this._cachedMeta;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const parsed = !reset && this.getParsed(i);\n const properties = {};\n const iPixel = properties[iAxis] = reset ? iScale.getPixelForDecimal(0.5) : iScale.getPixelForValue(parsed[iAxis]);\n const vPixel = properties[vAxis] = reset ? vScale.getBasePixel() : vScale.getPixelForValue(parsed[vAxis]);\n\n properties.skip = isNaN(iPixel) || isNaN(vPixel);\n\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n\n if (reset) {\n properties.options.radius = 0;\n }\n }\n\n this.updateElement(point, i, properties, mode);\n }\n }\n\n /**\n\t * @param {number} index\n\t * @param {string} [mode]\n\t * @protected\n\t */\n resolveDataElementOptions(index, mode) {\n const parsed = this.getParsed(index);\n let values = super.resolveDataElementOptions(index, mode);\n\n // In case values were cached (and thus frozen), we need to clone the values\n if (values.$shared) {\n values = Object.assign({}, values, {$shared: false});\n }\n\n // Custom radius resolution\n const radius = values.radius;\n if (mode !== 'active') {\n values.radius = 0;\n }\n values.radius += valueOrDefault(parsed && parsed._custom, radius);\n\n return values;\n }\n}\n","import DatasetController from '../core/core.datasetController.js';\nimport {isObject, resolveObjectKey, toPercentage, toDimension, valueOrDefault} from '../helpers/helpers.core.js';\nimport {formatNumber} from '../helpers/helpers.intl.js';\nimport {toRadians, PI, TAU, HALF_PI, _angleBetween} from '../helpers/helpers.math.js';\n\n/**\n * @typedef { import('../core/core.controller.js').default } Chart\n */\n\nfunction getRatioAndOffset(rotation, circumference, cutout) {\n let ratioX = 1;\n let ratioY = 1;\n let offsetX = 0;\n let offsetY = 0;\n // If the chart's circumference isn't a full circle, calculate size as a ratio of the width/height of the arc\n if (circumference < TAU) {\n const startAngle = rotation;\n const endAngle = startAngle + circumference;\n const startX = Math.cos(startAngle);\n const startY = Math.sin(startAngle);\n const endX = Math.cos(endAngle);\n const endY = Math.sin(endAngle);\n const calcMax = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout);\n const calcMin = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout);\n const maxX = calcMax(0, startX, endX);\n const maxY = calcMax(HALF_PI, startY, endY);\n const minX = calcMin(PI, startX, endX);\n const minY = calcMin(PI + HALF_PI, startY, endY);\n ratioX = (maxX - minX) / 2;\n ratioY = (maxY - minY) / 2;\n offsetX = -(maxX + minX) / 2;\n offsetY = -(maxY + minY) / 2;\n }\n return {ratioX, ratioY, offsetX, offsetY};\n}\n\nexport default class DoughnutController extends DatasetController {\n\n static id = 'doughnut';\n\n /**\n * @type {any}\n */\n static defaults = {\n datasetElementType: false,\n dataElementType: 'arc',\n animation: {\n // Boolean - Whether we animate the rotation of the Doughnut\n animateRotate: true,\n // Boolean - Whether we animate scaling the Doughnut from the centre\n animateScale: false\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['circumference', 'endAngle', 'innerRadius', 'outerRadius', 'startAngle', 'x', 'y', 'offset', 'borderWidth', 'spacing']\n },\n },\n // The percentage of the chart that we cut out of the middle.\n cutout: '50%',\n\n // The rotation of the chart, where the first data arc begins.\n rotation: 0,\n\n // The total circumference of the chart.\n circumference: 360,\n\n // The outer radius of the chart\n radius: '100%',\n\n // Spacing between arcs\n spacing: 0,\n\n indexAxis: 'r',\n };\n\n static descriptors = {\n _scriptable: (name) => name !== 'spacing',\n _indexable: (name) => name !== 'spacing' && !name.startsWith('borderDash') && !name.startsWith('hoverBorderDash'),\n };\n\n /**\n * @type {any}\n */\n static overrides = {\n aspectRatio: 1,\n\n // Need to override these to give a nice default\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const {labels: {pointStyle, color}} = chart.legend.options;\n\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n fontColor: color,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n\n // Extra data used for toggling the correct item\n index: i\n };\n });\n }\n return [];\n }\n },\n\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n }\n }\n };\n\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n\n this.enableOptionSharing = true;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.offsetX = undefined;\n this.offsetY = undefined;\n }\n\n linkScales() {}\n\n /**\n\t * Override data parsing, since we are not using scales\n\t */\n parse(start, count) {\n const data = this.getDataset().data;\n const meta = this._cachedMeta;\n\n if (this._parsing === false) {\n meta._parsed = data;\n } else {\n let getter = (i) => +data[i];\n\n if (isObject(data[start])) {\n const {key = 'value'} = this._parsing;\n getter = (i) => +resolveObjectKey(data[i], key);\n }\n\n let i, ilen;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n meta._parsed[i] = getter(i);\n }\n }\n }\n\n /**\n\t * @private\n\t */\n _getRotation() {\n return toRadians(this.options.rotation - 90);\n }\n\n /**\n\t * @private\n\t */\n _getCircumference() {\n return toRadians(this.options.circumference);\n }\n\n /**\n\t * Get the maximal rotation & circumference extents\n\t * across all visible datasets.\n\t */\n _getRotationExtents() {\n let min = TAU;\n let max = -TAU;\n\n for (let i = 0; i < this.chart.data.datasets.length; ++i) {\n if (this.chart.isDatasetVisible(i) && this.chart.getDatasetMeta(i).type === this._type) {\n const controller = this.chart.getDatasetMeta(i).controller;\n const rotation = controller._getRotation();\n const circumference = controller._getCircumference();\n\n min = Math.min(min, rotation);\n max = Math.max(max, rotation + circumference);\n }\n }\n\n return {\n rotation: min,\n circumference: max - min,\n };\n }\n\n /**\n\t * @param {string} mode\n\t */\n update(mode) {\n const chart = this.chart;\n const {chartArea} = chart;\n const meta = this._cachedMeta;\n const arcs = meta.data;\n const spacing = this.getMaxBorderWidth() + this.getMaxOffset(arcs) + this.options.spacing;\n const maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0);\n const cutout = Math.min(toPercentage(this.options.cutout, maxSize), 1);\n const chartWeight = this._getRingWeight(this.index);\n\n // Compute the maximal rotation & circumference limits.\n // If we only consider our dataset, this can cause problems when two datasets\n // are both less than a circle with different rotations (starting angles)\n const {circumference, rotation} = this._getRotationExtents();\n const {ratioX, ratioY, offsetX, offsetY} = getRatioAndOffset(rotation, circumference, cutout);\n const maxWidth = (chartArea.width - spacing) / ratioX;\n const maxHeight = (chartArea.height - spacing) / ratioY;\n const maxRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n const outerRadius = toDimension(this.options.radius, maxRadius);\n const innerRadius = Math.max(outerRadius * cutout, 0);\n const radiusLength = (outerRadius - innerRadius) / this._getVisibleDatasetWeightTotal();\n this.offsetX = offsetX * outerRadius;\n this.offsetY = offsetY * outerRadius;\n\n meta.total = this.calculateTotal();\n\n this.outerRadius = outerRadius - radiusLength * this._getRingWeightOffset(this.index);\n this.innerRadius = Math.max(this.outerRadius - radiusLength * chartWeight, 0);\n\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n\n /**\n * @private\n */\n _circumference(i, reset) {\n const opts = this.options;\n const meta = this._cachedMeta;\n const circumference = this._getCircumference();\n if ((reset && opts.animation.animateRotate) || !this.chart.getDataVisibility(i) || meta._parsed[i] === null || meta.data[i].hidden) {\n return 0;\n }\n return this.calculateCircumference(meta._parsed[i] * circumference / TAU);\n }\n\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const centerX = (chartArea.left + chartArea.right) / 2;\n const centerY = (chartArea.top + chartArea.bottom) / 2;\n const animateScale = reset && animationOpts.animateScale;\n const innerRadius = animateScale ? 0 : this.innerRadius;\n const outerRadius = animateScale ? 0 : this.outerRadius;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n let startAngle = this._getRotation();\n let i;\n\n for (i = 0; i < start; ++i) {\n startAngle += this._circumference(i, reset);\n }\n\n for (i = start; i < start + count; ++i) {\n const circumference = this._circumference(i, reset);\n const arc = arcs[i];\n const properties = {\n x: centerX + this.offsetX,\n y: centerY + this.offsetY,\n startAngle,\n endAngle: startAngle + circumference,\n circumference,\n outerRadius,\n innerRadius\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, arc.active ? 'active' : mode);\n }\n startAngle += circumference;\n\n this.updateElement(arc, i, properties, mode);\n }\n }\n\n calculateTotal() {\n const meta = this._cachedMeta;\n const metaData = meta.data;\n let total = 0;\n let i;\n\n for (i = 0; i < metaData.length; i++) {\n const value = meta._parsed[i];\n if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i) && !metaData[i].hidden) {\n total += Math.abs(value);\n }\n }\n\n return total;\n }\n\n calculateCircumference(value) {\n const total = this._cachedMeta.total;\n if (total > 0 && !isNaN(value)) {\n return TAU * (Math.abs(value) / total);\n }\n return 0;\n }\n\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index], chart.options.locale);\n\n return {\n label: labels[index] || '',\n value,\n };\n }\n\n getMaxBorderWidth(arcs) {\n let max = 0;\n const chart = this.chart;\n let i, ilen, meta, controller, options;\n\n if (!arcs) {\n // Find the outmost visible dataset\n for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\n if (chart.isDatasetVisible(i)) {\n meta = chart.getDatasetMeta(i);\n arcs = meta.data;\n controller = meta.controller;\n break;\n }\n }\n }\n\n if (!arcs) {\n return 0;\n }\n\n for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n options = controller.resolveDataElementOptions(i);\n if (options.borderAlign !== 'inner') {\n max = Math.max(max, options.borderWidth || 0, options.hoverBorderWidth || 0);\n }\n }\n return max;\n }\n\n getMaxOffset(arcs) {\n let max = 0;\n\n for (let i = 0, ilen = arcs.length; i < ilen; ++i) {\n const options = this.resolveDataElementOptions(i);\n max = Math.max(max, options.offset || 0, options.hoverOffset || 0);\n }\n return max;\n }\n\n /**\n\t * Get radius length offset of the dataset in relation to the visible datasets weights. This allows determining the inner and outer radius correctly\n\t * @private\n\t */\n _getRingWeightOffset(datasetIndex) {\n let ringWeightOffset = 0;\n\n for (let i = 0; i < datasetIndex; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n ringWeightOffset += this._getRingWeight(i);\n }\n }\n\n return ringWeightOffset;\n }\n\n /**\n\t * @private\n\t */\n _getRingWeight(datasetIndex) {\n return Math.max(valueOrDefault(this.chart.data.datasets[datasetIndex].weight, 1), 0);\n }\n\n /**\n\t * Returns the sum of all visible data set weights.\n\t * @private\n\t */\n _getVisibleDatasetWeightTotal() {\n return this._getRingWeightOffset(this.chart.data.datasets.length) || 1;\n }\n}\n","import DatasetController from '../core/core.datasetController.js';\nimport {isNullOrUndef} from '../helpers/index.js';\nimport {isNumber} from '../helpers/helpers.math.js';\nimport {_getStartAndCountOfVisiblePoints, _scaleRangesChanged} from '../helpers/helpers.extras.js';\n\nexport default class LineController extends DatasetController {\n\n static id = 'line';\n\n /**\n * @type {any}\n */\n static defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n\n showLine: true,\n spanGaps: false,\n };\n\n /**\n * @type {any}\n */\n static overrides = {\n scales: {\n _index_: {\n type: 'category',\n },\n _value_: {\n type: 'linear',\n },\n }\n };\n\n initialize() {\n this.enableOptionSharing = true;\n this.supportsDecimation = true;\n super.initialize();\n }\n\n update(mode) {\n const meta = this._cachedMeta;\n const {dataset: line, data: points = [], _dataset} = meta;\n // @ts-ignore\n const animationsDisabled = this.chart._animationsDisabled;\n let {start, count} = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n\n this._drawStart = start;\n this._drawCount = count;\n\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n\n // Update Line\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n\n // Update Points\n this.updateElements(points, start, count, mode);\n }\n\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const {spanGaps, segment} = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n const end = start + count;\n const pointsCount = points.length;\n let prevParsed = start > 0 && this.getParsed(start - 1);\n\n for (let i = 0; i < pointsCount; ++i) {\n const point = points[i];\n const properties = directUpdate ? point : {};\n\n if (i < start || i >= end) {\n properties.skip = true;\n continue;\n }\n\n const parsed = this.getParsed(i);\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && (Math.abs(parsed[iAxis] - prevParsed[iAxis])) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n\n prevParsed = parsed;\n }\n }\n\n /**\n\t * @protected\n\t */\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n const data = meta.data || [];\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n\n draw() {\n const meta = this._cachedMeta;\n meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis);\n super.draw();\n }\n}\n","import DatasetController from '../core/core.datasetController.js';\nimport {toRadians, PI, formatNumber, _parseObjectDataRadialScale} from '../helpers/index.js';\n\nexport default class PolarAreaController extends DatasetController {\n\n static id = 'polarArea';\n\n /**\n * @type {any}\n */\n static defaults = {\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: true\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'startAngle', 'endAngle', 'innerRadius', 'outerRadius']\n },\n },\n indexAxis: 'r',\n startAngle: 0,\n };\n\n /**\n * @type {any}\n */\n static overrides = {\n aspectRatio: 1,\n\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const {labels: {pointStyle, color}} = chart.legend.options;\n\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n fontColor: color,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n\n // Extra data used for toggling the correct item\n index: i\n };\n });\n }\n return [];\n }\n },\n\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n }\n },\n\n scales: {\n r: {\n type: 'radialLinear',\n angleLines: {\n display: false\n },\n beginAtZero: true,\n grid: {\n circular: true\n },\n pointLabels: {\n display: false\n },\n startAngle: 0\n }\n }\n };\n\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n }\n\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index].r, chart.options.locale);\n\n return {\n label: labels[index] || '',\n value,\n };\n }\n\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n\n update(mode) {\n const arcs = this._cachedMeta.data;\n\n this._updateRadius();\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n\n /**\n * @protected\n */\n getMinMax() {\n const meta = this._cachedMeta;\n const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n\n meta.data.forEach((element, index) => {\n const parsed = this.getParsed(index).r;\n\n if (!isNaN(parsed) && this.chart.getDataVisibility(index)) {\n if (parsed < range.min) {\n range.min = parsed;\n }\n\n if (parsed > range.max) {\n range.max = parsed;\n }\n }\n });\n\n return range;\n }\n\n /**\n\t * @private\n\t */\n _updateRadius() {\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n\n const outerRadius = Math.max(minSize / 2, 0);\n const innerRadius = Math.max(opts.cutoutPercentage ? (outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\n const radiusLength = (outerRadius - innerRadius) / chart.getVisibleDatasetCount();\n\n this.outerRadius = outerRadius - (radiusLength * this.index);\n this.innerRadius = this.outerRadius - radiusLength;\n }\n\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const scale = this._cachedMeta.rScale;\n const centerX = scale.xCenter;\n const centerY = scale.yCenter;\n const datasetStartAngle = scale.getIndexAngle(0) - 0.5 * PI;\n let angle = datasetStartAngle;\n let i;\n\n const defaultAngle = 360 / this.countVisibleElements();\n\n for (i = 0; i < start; ++i) {\n angle += this._computeAngle(i, mode, defaultAngle);\n }\n for (i = start; i < start + count; i++) {\n const arc = arcs[i];\n let startAngle = angle;\n let endAngle = angle + this._computeAngle(i, mode, defaultAngle);\n let outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(this.getParsed(i).r) : 0;\n angle = endAngle;\n\n if (reset) {\n if (animationOpts.animateScale) {\n outerRadius = 0;\n }\n if (animationOpts.animateRotate) {\n startAngle = endAngle = datasetStartAngle;\n }\n }\n\n const properties = {\n x: centerX,\n y: centerY,\n innerRadius: 0,\n outerRadius,\n startAngle,\n endAngle,\n options: this.resolveDataElementOptions(i, arc.active ? 'active' : mode)\n };\n\n this.updateElement(arc, i, properties, mode);\n }\n }\n\n countVisibleElements() {\n const meta = this._cachedMeta;\n let count = 0;\n\n meta.data.forEach((element, index) => {\n if (!isNaN(this.getParsed(index).r) && this.chart.getDataVisibility(index)) {\n count++;\n }\n });\n\n return count;\n }\n\n /**\n\t * @private\n\t */\n _computeAngle(index, mode, defaultAngle) {\n return this.chart.getDataVisibility(index)\n ? toRadians(this.resolveDataElementOptions(index, mode).angle || defaultAngle)\n : 0;\n }\n}\n","import DoughnutController from './controller.doughnut.js';\n\n// Pie charts are Doughnut chart with different defaults\nexport default class PieController extends DoughnutController {\n\n static id = 'pie';\n\n /**\n * @type {any}\n */\n static defaults = {\n // The percentage of the chart that we cut out of the middle.\n cutout: 0,\n\n // The rotation of the chart, where the first data arc begins.\n rotation: 0,\n\n // The total circumference of the chart.\n circumference: 360,\n\n // The outer radius of the chart\n radius: '100%'\n };\n}\n","import DatasetController from '../core/core.datasetController.js';\nimport {_parseObjectDataRadialScale} from '../helpers/index.js';\n\nexport default class RadarController extends DatasetController {\n\n static id = 'radar';\n\n /**\n * @type {any}\n */\n static defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n indexAxis: 'r',\n showLine: true,\n elements: {\n line: {\n fill: 'start'\n }\n },\n };\n\n /**\n * @type {any}\n */\n static overrides = {\n aspectRatio: 1,\n\n scales: {\n r: {\n type: 'radialLinear',\n }\n }\n };\n\n /**\n\t * @protected\n\t */\n getLabelAndValue(index) {\n const vScale = this._cachedMeta.vScale;\n const parsed = this.getParsed(index);\n\n return {\n label: vScale.getLabels()[index],\n value: '' + vScale.getLabelForValue(parsed[vScale.axis])\n };\n }\n\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n\n update(mode) {\n const meta = this._cachedMeta;\n const line = meta.dataset;\n const points = meta.data || [];\n const labels = meta.iScale.getLabels();\n\n // Update Line\n line.points = points;\n // In resize mode only point locations change, so no need to set the points or options.\n if (mode !== 'resize') {\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n\n const properties = {\n _loop: true,\n _fullLoop: labels.length === points.length,\n options\n };\n\n this.updateElement(line, undefined, properties, mode);\n }\n\n // Update Points\n this.updateElements(points, 0, points.length, mode);\n }\n\n updateElements(points, start, count, mode) {\n const scale = this._cachedMeta.rScale;\n const reset = mode === 'reset';\n\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n const pointPosition = scale.getPointPositionForValue(i, this.getParsed(i).r);\n\n const x = reset ? scale.xCenter : pointPosition.x;\n const y = reset ? scale.yCenter : pointPosition.y;\n\n const properties = {\n x,\n y,\n angle: pointPosition.angle,\n skip: isNaN(x) || isNaN(y),\n options\n };\n\n this.updateElement(point, i, properties, mode);\n }\n }\n}\n","import DatasetController from '../core/core.datasetController.js';\nimport {isNullOrUndef} from '../helpers/index.js';\nimport {isNumber} from '../helpers/helpers.math.js';\nimport {_getStartAndCountOfVisiblePoints, _scaleRangesChanged} from '../helpers/helpers.extras.js';\n\nexport default class ScatterController extends DatasetController {\n\n static id = 'scatter';\n\n /**\n * @type {any}\n */\n static defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n showLine: false,\n fill: false\n };\n\n /**\n * @type {any}\n */\n static overrides = {\n\n interaction: {\n mode: 'point'\n },\n\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n };\n\n /**\n\t * @protected\n\t */\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const labels = this.chart.data.labels || [];\n const {xScale, yScale} = meta;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n\n return {\n label: labels[index] || '',\n value: '(' + x + ', ' + y + ')'\n };\n }\n\n update(mode) {\n const meta = this._cachedMeta;\n const {data: points = []} = meta;\n // @ts-ignore\n const animationsDisabled = this.chart._animationsDisabled;\n let {start, count} = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n\n this._drawStart = start;\n this._drawCount = count;\n\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n\n if (this.options.showLine) {\n\n // https://github.com/chartjs/Chart.js/issues/11333\n if (!this.datasetElementType) {\n this.addElements();\n }\n const {dataset: line, _dataset} = meta;\n\n // Update Line\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n\n const options = this.resolveDatasetElementOptions(mode);\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n } else if (this.datasetElementType) {\n // https://github.com/chartjs/Chart.js/issues/11333\n delete meta.dataset;\n this.datasetElementType = false;\n }\n\n // Update Points\n this.updateElements(points, start, count, mode);\n }\n\n addElements() {\n const {showLine} = this.options;\n\n if (!this.datasetElementType && showLine) {\n this.datasetElementType = this.chart.registry.getElement('line');\n }\n\n super.addElements();\n }\n\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const {spanGaps, segment} = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n let prevParsed = start > 0 && this.getParsed(start - 1);\n\n for (let i = start; i < start + count; ++i) {\n const point = points[i];\n const parsed = this.getParsed(i);\n const properties = directUpdate ? point : {};\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && (Math.abs(parsed[iAxis] - prevParsed[iAxis])) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n\n prevParsed = parsed;\n }\n\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n\n /**\n\t * @protected\n\t */\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const data = meta.data || [];\n\n if (!this.options.showLine) {\n let max = 0;\n for (let i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n\n if (!data.length) {\n return border;\n }\n\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n}\n","/**\n * @namespace Chart._adapters\n * @since 2.8.0\n * @private\n */\n\nimport type {AnyObject} from '../types/basic.js';\nimport type {ChartOptions} from '../types/index.js';\n\nexport type TimeUnit = 'millisecond' | 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'year';\n\nexport interface DateAdapter {\n readonly options: T;\n /**\n * Will called with chart options after adapter creation.\n */\n init(this: DateAdapter, chartOptions: ChartOptions): void;\n /**\n * Returns a map of time formats for the supported formatting units defined\n * in Unit as well as 'datetime' representing a detailed date/time string.\n */\n formats(this: DateAdapter): Record;\n /**\n * Parses the given `value` and return the associated timestamp.\n * @param value - the value to parse (usually comes from the data)\n * @param [format] - the expected data format\n */\n parse(this: DateAdapter, value: unknown, format?: TimeUnit): number | null;\n /**\n * Returns the formatted date in the specified `format` for a given `timestamp`.\n * @param timestamp - the timestamp to format\n * @param format - the date/time token\n */\n format(this: DateAdapter, timestamp: number, format: TimeUnit): string;\n /**\n * Adds the specified `amount` of `unit` to the given `timestamp`.\n * @param timestamp - the input timestamp\n * @param amount - the amount to add\n * @param unit - the unit as string\n */\n add(this: DateAdapter, timestamp: number, amount: number, unit: TimeUnit): number;\n /**\n * Returns the number of `unit` between the given timestamps.\n * @param a - the input timestamp (reference)\n * @param b - the timestamp to subtract\n * @param unit - the unit as string\n */\n diff(this: DateAdapter, a: number, b: number, unit: TimeUnit): number;\n /**\n * Returns start of `unit` for the given `timestamp`.\n * @param timestamp - the input timestamp\n * @param unit - the unit as string\n * @param [weekday] - the ISO day of the week with 1 being Monday\n * and 7 being Sunday (only needed if param *unit* is `isoWeek`).\n */\n startOf(this: DateAdapter, timestamp: number, unit: TimeUnit | 'isoWeek', weekday?: number): number;\n /**\n * Returns end of `unit` for the given `timestamp`.\n * @param timestamp - the input timestamp\n * @param unit - the unit as string\n */\n endOf(this: DateAdapter, timestamp: number, unit: TimeUnit | 'isoWeek'): number;\n}\n\nfunction abstract(): T {\n throw new Error('This method is not implemented: Check that a complete date adapter is provided.');\n}\n\n/**\n * Date adapter (current used by the time scale)\n * @namespace Chart._adapters._date\n * @memberof Chart._adapters\n * @private\n */\nclass DateAdapterBase implements DateAdapter {\n\n /**\n * Override default date adapter methods.\n * Accepts type parameter to define options type.\n * @example\n * Chart._adapters._date.override<{myAdapterOption: string}>({\n * init() {\n * console.log(this.options.myAdapterOption);\n * }\n * })\n */\n static override(\n members: Partial, 'options'>>\n ) {\n Object.assign(DateAdapterBase.prototype, members);\n }\n\n readonly options: AnyObject;\n\n constructor(options: AnyObject) {\n this.options = options || {};\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n init() {}\n\n formats(): Record {\n return abstract();\n }\n\n parse(): number | null {\n return abstract();\n }\n\n format(): string {\n return abstract();\n }\n\n add(): number {\n return abstract();\n }\n\n diff(): number {\n return abstract();\n }\n\n startOf(): number {\n return abstract();\n }\n\n endOf(): number {\n return abstract();\n }\n}\n\nexport default {\n _date: DateAdapterBase\n};\n","import {_lookupByKey, _rlookupByKey} from '../helpers/helpers.collection.js';\nimport {getRelativePosition} from '../helpers/helpers.dom.js';\nimport {_angleBetween, getAngleFromPoint} from '../helpers/helpers.math.js';\nimport {_isPointInArea} from '../helpers/index.js';\n\n/**\n * @typedef { import('./core.controller.js').default } Chart\n * @typedef { import('../types/index.js').ChartEvent } ChartEvent\n * @typedef {{axis?: string, intersect?: boolean, includeInvisible?: boolean}} InteractionOptions\n * @typedef {{datasetIndex: number, index: number, element: import('./core.element.js').default}} InteractionItem\n * @typedef { import('../types/index.js').Point } Point\n */\n\n/**\n * Helper function to do binary search when possible\n * @param {object} metaset - the dataset meta\n * @param {string} axis - the axis mode. x|y|xy|r\n * @param {number} value - the value to find\n * @param {boolean} [intersect] - should the element intersect\n * @returns {{lo:number, hi:number}} indices to search data array between\n */\nfunction binarySearch(metaset, axis, value, intersect) {\n const {controller, data, _sorted} = metaset;\n const iScale = controller._cachedMeta.iScale;\n if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) {\n const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;\n if (!intersect) {\n return lookupMethod(data, axis, value);\n } else if (controller._sharedOptions) {\n // _sharedOptions indicates that each element has equal options -> equal proportions\n // So we can do a ranged binary search based on the range of first element and\n // be confident to get the full range of indices that can intersect with the value.\n const el = data[0];\n const range = typeof el.getRange === 'function' && el.getRange(axis);\n if (range) {\n const start = lookupMethod(data, axis, value - range);\n const end = lookupMethod(data, axis, value + range);\n return {lo: start.lo, hi: end.hi};\n }\n }\n }\n // Default to all elements, when binary search can not be used.\n return {lo: 0, hi: data.length - 1};\n}\n\n/**\n * Helper function to select candidate elements for interaction\n * @param {Chart} chart - the chart\n * @param {string} axis - the axis mode. x|y|xy|r\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {function} handler - the callback to execute for each visible item\n * @param {boolean} [intersect] - consider intersecting items\n */\nfunction evaluateInteractionItems(chart, axis, position, handler, intersect) {\n const metasets = chart.getSortedVisibleDatasetMetas();\n const value = position[axis];\n for (let i = 0, ilen = metasets.length; i < ilen; ++i) {\n const {index, data} = metasets[i];\n const {lo, hi} = binarySearch(metasets[i], axis, value, intersect);\n for (let j = lo; j <= hi; ++j) {\n const element = data[j];\n if (!element.skip) {\n handler(element, index, j);\n }\n }\n }\n}\n\n/**\n * Get a distance metric function for two points based on the\n * axis mode setting\n * @param {string} axis - the axis mode. x|y|xy|r\n */\nfunction getDistanceMetricForAxis(axis) {\n const useX = axis.indexOf('x') !== -1;\n const useY = axis.indexOf('y') !== -1;\n\n return function(pt1, pt2) {\n const deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n const deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n };\n}\n\n/**\n * Helper function to get the items that intersect the event position\n * @param {Chart} chart - the chart\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {string} axis - the axis mode. x|y|xy|r\n * @param {boolean} [useFinalPosition] - use the element's animation target instead of current position\n * @param {boolean} [includeInvisible] - include invisible points that are outside of the chart area\n * @return {InteractionItem[]} the nearest items\n */\nfunction getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) {\n const items = [];\n\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return items;\n }\n\n const evaluationFunc = function(element, datasetIndex, index) {\n if (!includeInvisible && !_isPointInArea(element, chart.chartArea, 0)) {\n return;\n }\n if (element.inRange(position.x, position.y, useFinalPosition)) {\n items.push({element, datasetIndex, index});\n }\n };\n\n evaluateInteractionItems(chart, axis, position, evaluationFunc, true);\n return items;\n}\n\n/**\n * Helper function to get the items nearest to the event position for a radial chart\n * @param {Chart} chart - the chart to look at elements from\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {string} axis - the axes along which to measure distance\n * @param {boolean} [useFinalPosition] - use the element's animation target instead of current position\n * @return {InteractionItem[]} the nearest items\n */\nfunction getNearestRadialItems(chart, position, axis, useFinalPosition) {\n let items = [];\n\n function evaluationFunc(element, datasetIndex, index) {\n const {startAngle, endAngle} = element.getProps(['startAngle', 'endAngle'], useFinalPosition);\n const {angle} = getAngleFromPoint(element, {x: position.x, y: position.y});\n\n if (_angleBetween(angle, startAngle, endAngle)) {\n items.push({element, datasetIndex, index});\n }\n }\n\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\n\n/**\n * Helper function to get the items nearest to the event position for a cartesian chart\n * @param {Chart} chart - the chart to look at elements from\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {string} axis - the axes along which to measure distance\n * @param {boolean} [intersect] - if true, only consider items that intersect the position\n * @param {boolean} [useFinalPosition] - use the element's animation target instead of current position\n * @param {boolean} [includeInvisible] - include invisible points that are outside of the chart area\n * @return {InteractionItem[]} the nearest items\n */\nfunction getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n let items = [];\n const distanceMetric = getDistanceMetricForAxis(axis);\n let minDistance = Number.POSITIVE_INFINITY;\n\n function evaluationFunc(element, datasetIndex, index) {\n const inRange = element.inRange(position.x, position.y, useFinalPosition);\n if (intersect && !inRange) {\n return;\n }\n\n const center = element.getCenterPoint(useFinalPosition);\n const pointInArea = !!includeInvisible || chart.isPointInArea(center);\n if (!pointInArea && !inRange) {\n return;\n }\n\n const distance = distanceMetric(position, center);\n if (distance < minDistance) {\n items = [{element, datasetIndex, index}];\n minDistance = distance;\n } else if (distance === minDistance) {\n // Can have multiple items at the same distance in which case we sort by size\n items.push({element, datasetIndex, index});\n }\n }\n\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\n\n/**\n * Helper function to get the items nearest to the event position considering all visible items in the chart\n * @param {Chart} chart - the chart to look at elements from\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {string} axis - the axes along which to measure distance\n * @param {boolean} [intersect] - if true, only consider items that intersect the position\n * @param {boolean} [useFinalPosition] - use the element's animation target instead of current position\n * @param {boolean} [includeInvisible] - include invisible points that are outside of the chart area\n * @return {InteractionItem[]} the nearest items\n */\nfunction getNearestItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return [];\n }\n\n return axis === 'r' && !intersect\n ? getNearestRadialItems(chart, position, axis, useFinalPosition)\n : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible);\n}\n\n/**\n * Helper function to get the items matching along the given X or Y axis\n * @param {Chart} chart - the chart to look at elements from\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {string} axis - the axis to match\n * @param {boolean} [intersect] - if true, only consider items that intersect the position\n * @param {boolean} [useFinalPosition] - use the element's animation target instead of current position\n * @return {InteractionItem[]} the nearest items\n */\nfunction getAxisItems(chart, position, axis, intersect, useFinalPosition) {\n const items = [];\n const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n let intersectsItem = false;\n\n evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index) => {\n if (element[rangeMethod](position[axis], useFinalPosition)) {\n items.push({element, datasetIndex, index});\n intersectsItem = intersectsItem || element.inRange(position.x, position.y, useFinalPosition);\n }\n });\n\n // If we want to trigger on an intersect and we don't have any items\n // that intersect the position, return nothing\n if (intersect && !intersectsItem) {\n return [];\n }\n return items;\n}\n\n/**\n * Contains interaction related functions\n * @namespace Chart.Interaction\n */\nexport default {\n // Part of the public API to facilitate developers creating their own modes\n evaluateInteractionItems,\n\n // Helper function for different modes\n modes: {\n /**\n\t\t * Returns items at the same index. If the options.intersect parameter is true, we only return items if we intersect something\n\t\t * If the options.intersect mode is false, we find the nearest item and return the items at the same index as that item\n\t\t * @function Chart.Interaction.modes.index\n\t\t * @since v2.4.0\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n index(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n // Default axis for index mode is 'x' to match old behaviour\n const axis = options.axis || 'x';\n const includeInvisible = options.includeInvisible || false;\n const items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible)\n : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n const elements = [];\n\n if (!items.length) {\n return [];\n }\n\n chart.getSortedVisibleDatasetMetas().forEach((meta) => {\n const index = items[0].index;\n const element = meta.data[index];\n\n // don't count items that are skipped (null data)\n if (element && !element.skip) {\n elements.push({element, datasetIndex: meta.index, index});\n }\n });\n\n return elements;\n },\n\n /**\n\t\t * Returns items in the same dataset. If the options.intersect parameter is true, we only return items if we intersect something\n\t\t * If the options.intersect is false, we find the nearest item and return the items in that dataset\n\t\t * @function Chart.Interaction.modes.dataset\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n dataset(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n let items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) :\n getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n\n if (items.length > 0) {\n const datasetIndex = items[0].datasetIndex;\n const data = chart.getDatasetMeta(datasetIndex).data;\n items = [];\n for (let i = 0; i < data.length; ++i) {\n items.push({element: data[i], datasetIndex, index: i});\n }\n }\n\n return items;\n },\n\n /**\n\t\t * Point mode returns all elements that hit test based on the event position\n\t\t * of the event\n\t\t * @function Chart.Interaction.modes.intersect\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n point(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible);\n },\n\n /**\n\t\t * nearest mode returns the element closest to the point\n\t\t * @function Chart.Interaction.modes.intersect\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n nearest(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getNearestItems(chart, position, axis, options.intersect, useFinalPosition, includeInvisible);\n },\n\n /**\n\t\t * x mode returns the elements that hit-test at the current x coordinate\n\t\t * @function Chart.Interaction.modes.x\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n x(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'x', options.intersect, useFinalPosition);\n },\n\n /**\n\t\t * y mode returns the elements that hit-test at the current y coordinate\n\t\t * @function Chart.Interaction.modes.y\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n y(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'y', options.intersect, useFinalPosition);\n }\n }\n};\n","import {defined, each, isObject} from '../helpers/helpers.core.js';\nimport {toPadding} from '../helpers/helpers.options.js';\n\n/**\n * @typedef { import('./core.controller.js').default } Chart\n */\n\nconst STATIC_POSITIONS = ['left', 'top', 'right', 'bottom'];\n\nfunction filterByPosition(array, position) {\n return array.filter(v => v.pos === position);\n}\n\nfunction filterDynamicPositionByAxis(array, axis) {\n return array.filter(v => STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis);\n}\n\nfunction sortByWeight(array, reverse) {\n return array.sort((a, b) => {\n const v0 = reverse ? b : a;\n const v1 = reverse ? a : b;\n return v0.weight === v1.weight ?\n v0.index - v1.index :\n v0.weight - v1.weight;\n });\n}\n\nfunction wrapBoxes(boxes) {\n const layoutBoxes = [];\n let i, ilen, box, pos, stack, stackWeight;\n\n for (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\n box = boxes[i];\n ({position: pos, options: {stack, stackWeight = 1}} = box);\n layoutBoxes.push({\n index: i,\n box,\n pos,\n horizontal: box.isHorizontal(),\n weight: box.weight,\n stack: stack && (pos + stack),\n stackWeight\n });\n }\n return layoutBoxes;\n}\n\nfunction buildStacks(layouts) {\n const stacks = {};\n for (const wrap of layouts) {\n const {stack, pos, stackWeight} = wrap;\n if (!stack || !STATIC_POSITIONS.includes(pos)) {\n continue;\n }\n const _stack = stacks[stack] || (stacks[stack] = {count: 0, placed: 0, weight: 0, size: 0});\n _stack.count++;\n _stack.weight += stackWeight;\n }\n return stacks;\n}\n\n/**\n * store dimensions used instead of available chartArea in fitBoxes\n **/\nfunction setLayoutDims(layouts, params) {\n const stacks = buildStacks(layouts);\n const {vBoxMaxWidth, hBoxMaxHeight} = params;\n let i, ilen, layout;\n for (i = 0, ilen = layouts.length; i < ilen; ++i) {\n layout = layouts[i];\n const {fullSize} = layout.box;\n const stack = stacks[layout.stack];\n const factor = stack && layout.stackWeight / stack.weight;\n if (layout.horizontal) {\n layout.width = factor ? factor * vBoxMaxWidth : fullSize && params.availableWidth;\n layout.height = hBoxMaxHeight;\n } else {\n layout.width = vBoxMaxWidth;\n layout.height = factor ? factor * hBoxMaxHeight : fullSize && params.availableHeight;\n }\n }\n return stacks;\n}\n\nfunction buildLayoutBoxes(boxes) {\n const layoutBoxes = wrapBoxes(boxes);\n const fullSize = sortByWeight(layoutBoxes.filter(wrap => wrap.box.fullSize), true);\n const left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n const right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n const top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n const bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, 'x');\n const centerVertical = filterDynamicPositionByAxis(layoutBoxes, 'y');\n\n return {\n fullSize,\n leftAndTop: left.concat(top),\n rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal),\n chartArea: filterByPosition(layoutBoxes, 'chartArea'),\n vertical: left.concat(right).concat(centerVertical),\n horizontal: top.concat(bottom).concat(centerHorizontal)\n };\n}\n\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n}\n\nfunction updateMaxPadding(maxPadding, boxPadding) {\n maxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n maxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n maxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n}\n\nfunction updateDims(chartArea, params, layout, stacks) {\n const {pos, box} = layout;\n const maxPadding = chartArea.maxPadding;\n\n // dynamically placed boxes size is not considered\n if (!isObject(pos)) {\n if (layout.size) {\n // this layout was already counted for, lets first reduce old size\n chartArea[pos] -= layout.size;\n }\n const stack = stacks[layout.stack] || {size: 0, count: 1};\n stack.size = Math.max(stack.size, layout.horizontal ? box.height : box.width);\n layout.size = stack.size / stack.count;\n chartArea[pos] += layout.size;\n }\n\n if (box.getPadding) {\n updateMaxPadding(maxPadding, box.getPadding());\n }\n\n const newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right'));\n const newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom'));\n const widthChanged = newWidth !== chartArea.w;\n const heightChanged = newHeight !== chartArea.h;\n chartArea.w = newWidth;\n chartArea.h = newHeight;\n\n // return booleans on the changes per direction\n return layout.horizontal\n ? {same: widthChanged, other: heightChanged}\n : {same: heightChanged, other: widthChanged};\n}\n\nfunction handleMaxPadding(chartArea) {\n const maxPadding = chartArea.maxPadding;\n\n function updatePos(pos) {\n const change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n chartArea[pos] += change;\n return change;\n }\n chartArea.y += updatePos('top');\n chartArea.x += updatePos('left');\n updatePos('right');\n updatePos('bottom');\n}\n\nfunction getMargins(horizontal, chartArea) {\n const maxPadding = chartArea.maxPadding;\n\n function marginForPositions(positions) {\n const margin = {left: 0, top: 0, right: 0, bottom: 0};\n positions.forEach((pos) => {\n margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n });\n return margin;\n }\n\n return horizontal\n ? marginForPositions(['left', 'right'])\n : marginForPositions(['top', 'bottom']);\n}\n\nfunction fitBoxes(boxes, chartArea, params, stacks) {\n const refitBoxes = [];\n let i, ilen, layout, box, refit, changed;\n\n for (i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i) {\n layout = boxes[i];\n box = layout.box;\n\n box.update(\n layout.width || chartArea.w,\n layout.height || chartArea.h,\n getMargins(layout.horizontal, chartArea)\n );\n const {same, other} = updateDims(chartArea, params, layout, stacks);\n\n // Dimensions changed and there were non full width boxes before this\n // -> we have to refit those\n refit |= same && refitBoxes.length;\n\n // Chart area changed in the opposite direction\n changed = changed || other;\n\n if (!box.fullSize) { // fullSize boxes don't need to be re-fitted in any case\n refitBoxes.push(layout);\n }\n }\n\n return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed;\n}\n\nfunction setBoxDims(box, left, top, width, height) {\n box.top = top;\n box.left = left;\n box.right = left + width;\n box.bottom = top + height;\n box.width = width;\n box.height = height;\n}\n\nfunction placeBoxes(boxes, chartArea, params, stacks) {\n const userPadding = params.padding;\n let {x, y} = chartArea;\n\n for (const layout of boxes) {\n const box = layout.box;\n const stack = stacks[layout.stack] || {count: 1, placed: 0, weight: 1};\n const weight = (layout.stackWeight / stack.weight) || 1;\n if (layout.horizontal) {\n const width = chartArea.w * weight;\n const height = stack.size || box.height;\n if (defined(stack.start)) {\n y = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, userPadding.left, y, params.outerWidth - userPadding.right - userPadding.left, height);\n } else {\n setBoxDims(box, chartArea.left + stack.placed, y, width, height);\n }\n stack.start = y;\n stack.placed += width;\n y = box.bottom;\n } else {\n const height = chartArea.h * weight;\n const width = stack.size || box.width;\n if (defined(stack.start)) {\n x = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, x, userPadding.top, width, params.outerHeight - userPadding.bottom - userPadding.top);\n } else {\n setBoxDims(box, x, chartArea.top + stack.placed, width, height);\n }\n stack.start = x;\n stack.placed += height;\n x = box.right;\n }\n }\n\n chartArea.x = x;\n chartArea.y = y;\n}\n\n/**\n * @interface LayoutItem\n * @typedef {object} LayoutItem\n * @prop {string} position - The position of the item in the chart layout. Possible values are\n * 'left', 'top', 'right', 'bottom', and 'chartArea'\n * @prop {number} weight - The weight used to sort the item. Higher weights are further away from the chart area\n * @prop {boolean} fullSize - if true, and the item is horizontal, then push vertical boxes down\n * @prop {function} isHorizontal - returns true if the layout item is horizontal (ie. top or bottom)\n * @prop {function} update - Takes two parameters: width and height. Returns size of item\n * @prop {function} draw - Draws the element\n * @prop {function} [getPadding] - Returns an object with padding on the edges\n * @prop {number} width - Width of item. Must be valid after update()\n * @prop {number} height - Height of item. Must be valid after update()\n * @prop {number} left - Left edge of the item. Set by layout system and cannot be used in update\n * @prop {number} top - Top edge of the item. Set by layout system and cannot be used in update\n * @prop {number} right - Right edge of the item. Set by layout system and cannot be used in update\n * @prop {number} bottom - Bottom edge of the item. Set by layout system and cannot be used in update\n */\n\n// The layout service is very self explanatory. It's responsible for the layout within a chart.\n// Scales, Legends and Plugins all rely on the layout service and can easily register to be placed anywhere they need\n// It is this service's responsibility of carrying out that layout.\nexport default {\n\n /**\n\t * Register a box to a chart.\n\t * A box is simply a reference to an object that requires layout. eg. Scales, Legend, Title.\n\t * @param {Chart} chart - the chart to use\n\t * @param {LayoutItem} item - the item to add to be laid out\n\t */\n addBox(chart, item) {\n if (!chart.boxes) {\n chart.boxes = [];\n }\n\n // initialize item with default values\n item.fullSize = item.fullSize || false;\n item.position = item.position || 'top';\n item.weight = item.weight || 0;\n // @ts-ignore\n item._layers = item._layers || function() {\n return [{\n z: 0,\n draw(chartArea) {\n item.draw(chartArea);\n }\n }];\n };\n\n chart.boxes.push(item);\n },\n\n /**\n\t * Remove a layoutItem from a chart\n\t * @param {Chart} chart - the chart to remove the box from\n\t * @param {LayoutItem} layoutItem - the item to remove from the layout\n\t */\n removeBox(chart, layoutItem) {\n const index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n if (index !== -1) {\n chart.boxes.splice(index, 1);\n }\n },\n\n /**\n\t * Sets (or updates) options on the given `item`.\n\t * @param {Chart} chart - the chart in which the item lives (or will be added to)\n\t * @param {LayoutItem} item - the item to configure with the given options\n\t * @param {object} options - the new item options.\n\t */\n configure(chart, item, options) {\n item.fullSize = options.fullSize;\n item.position = options.position;\n item.weight = options.weight;\n },\n\n /**\n\t * Fits boxes of the given chart into the given size by having each box measure itself\n\t * then running a fitting algorithm\n\t * @param {Chart} chart - the chart\n\t * @param {number} width - the width to fit into\n\t * @param {number} height - the height to fit into\n * @param {number} minPadding - minimum padding required for each side of chart area\n\t */\n update(chart, width, height, minPadding) {\n if (!chart) {\n return;\n }\n\n const padding = toPadding(chart.options.layout.padding);\n const availableWidth = Math.max(width - padding.width, 0);\n const availableHeight = Math.max(height - padding.height, 0);\n const boxes = buildLayoutBoxes(chart.boxes);\n const verticalBoxes = boxes.vertical;\n const horizontalBoxes = boxes.horizontal;\n\n // Before any changes are made, notify boxes that an update is about to being\n // This is used to clear any cached data (e.g. scale limits)\n each(chart.boxes, box => {\n if (typeof box.beforeLayout === 'function') {\n box.beforeLayout();\n }\n });\n\n // Essentially we now have any number of boxes on each of the 4 sides.\n // Our canvas looks like the following.\n // The areas L1 and L2 are the left axes. R1 is the right axis, T1 is the top axis and\n // B1 is the bottom axis\n // There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays\n // These locations are single-box locations only, when trying to register a chartArea location that is already taken,\n // an error will be thrown.\n //\n // |----------------------------------------------------|\n // | T1 (Full Width) |\n // |----------------------------------------------------|\n // | | | T2 | |\n // | |----|-------------------------------------|----|\n // | | | C1 | | C2 | |\n // | | |----| |----| |\n // | | | | |\n // | L1 | L2 | ChartArea (C0) | R1 |\n // | | | | |\n // | | |----| |----| |\n // | | | C3 | | C4 | |\n // | |----|-------------------------------------|----|\n // | | | B1 | |\n // |----------------------------------------------------|\n // | B2 (Full Width) |\n // |----------------------------------------------------|\n //\n\n const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap) =>\n wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1;\n\n const params = Object.freeze({\n outerWidth: width,\n outerHeight: height,\n padding,\n availableWidth,\n availableHeight,\n vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount,\n hBoxMaxHeight: availableHeight / 2\n });\n const maxPadding = Object.assign({}, padding);\n updateMaxPadding(maxPadding, toPadding(minPadding));\n const chartArea = Object.assign({\n maxPadding,\n w: availableWidth,\n h: availableHeight,\n x: padding.left,\n y: padding.top\n }, padding);\n\n const stacks = setLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n\n // First fit the fullSize boxes, to reduce probability of re-fitting.\n fitBoxes(boxes.fullSize, chartArea, params, stacks);\n\n // Then fit vertical boxes\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n\n // Then fit horizontal boxes\n if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) {\n // if the area changed, re-fit vertical boxes\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n }\n\n handleMaxPadding(chartArea);\n\n // Finally place the boxes to correct coordinates\n placeBoxes(boxes.leftAndTop, chartArea, params, stacks);\n\n // Move to opposite side of chart\n chartArea.x += chartArea.w;\n chartArea.y += chartArea.h;\n\n placeBoxes(boxes.rightAndBottom, chartArea, params, stacks);\n\n chart.chartArea = {\n left: chartArea.left,\n top: chartArea.top,\n right: chartArea.left + chartArea.w,\n bottom: chartArea.top + chartArea.h,\n height: chartArea.h,\n width: chartArea.w,\n };\n\n // Finally update boxes in chartArea (radial scale for example)\n each(boxes.chartArea, (layout) => {\n const box = layout.box;\n Object.assign(box, chart.chartArea);\n box.update(chartArea.w, chartArea.h, {left: 0, top: 0, right: 0, bottom: 0});\n });\n }\n};\n","\n/**\n * @typedef { import('../core/core.controller.js').default } Chart\n */\n\n/**\n * Abstract class that allows abstracting platform dependencies away from the chart.\n */\nexport default class BasePlatform {\n /**\n\t * Called at chart construction time, returns a context2d instance implementing\n\t * the [W3C Canvas 2D Context API standard]{@link https://www.w3.org/TR/2dcontext/}.\n\t * @param {HTMLCanvasElement} canvas - The canvas from which to acquire context (platform specific)\n\t * @param {number} [aspectRatio] - The chart options\n\t */\n acquireContext(canvas, aspectRatio) {} // eslint-disable-line no-unused-vars\n\n /**\n\t * Called at chart destruction time, releases any resources associated to the context\n\t * previously returned by the acquireContext() method.\n\t * @param {CanvasRenderingContext2D} context - The context2d instance\n\t * @returns {boolean} true if the method succeeded, else false\n\t */\n releaseContext(context) { // eslint-disable-line no-unused-vars\n return false;\n }\n\n /**\n\t * Registers the specified listener on the given chart.\n\t * @param {Chart} chart - Chart from which to listen for event\n\t * @param {string} type - The ({@link ChartEvent}) type to listen for\n\t * @param {function} listener - Receives a notification (an object that implements\n\t * the {@link ChartEvent} interface) when an event of the specified type occurs.\n\t */\n addEventListener(chart, type, listener) {} // eslint-disable-line no-unused-vars\n\n /**\n\t * Removes the specified listener previously registered with addEventListener.\n\t * @param {Chart} chart - Chart from which to remove the listener\n\t * @param {string} type - The ({@link ChartEvent}) type to remove\n\t * @param {function} listener - The listener function to remove from the event target.\n\t */\n removeEventListener(chart, type, listener) {} // eslint-disable-line no-unused-vars\n\n /**\n\t * @returns {number} the current devicePixelRatio of the device this platform is connected to.\n\t */\n getDevicePixelRatio() {\n return 1;\n }\n\n /**\n\t * Returns the maximum size in pixels of given canvas element.\n\t * @param {HTMLCanvasElement} element\n\t * @param {number} [width] - content width of parent element\n\t * @param {number} [height] - content height of parent element\n\t * @param {number} [aspectRatio] - aspect ratio to maintain\n\t */\n getMaximumSize(element, width, height, aspectRatio) {\n width = Math.max(0, width || element.width);\n height = height || element.height;\n return {\n width,\n height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height)\n };\n }\n\n /**\n\t * @param {HTMLCanvasElement} canvas\n\t * @returns {boolean} true if the canvas is attached to the platform, false if not.\n\t */\n isAttached(canvas) { // eslint-disable-line no-unused-vars\n return true;\n }\n\n /**\n * Updates config with platform specific requirements\n * @param {import('../core/core.config.js').default} config\n */\n updateConfig(config) { // eslint-disable-line no-unused-vars\n // no-op\n }\n}\n","/**\n * Platform fallback implementation (minimal).\n * @see https://github.com/chartjs/Chart.js/pull/4591#issuecomment-319575939\n */\n\nimport BasePlatform from './platform.base.js';\n\n/**\n * Platform class for charts without access to the DOM or to many element properties\n * This platform is used by default for any chart passed an OffscreenCanvas.\n * @extends BasePlatform\n */\nexport default class BasicPlatform extends BasePlatform {\n acquireContext(item) {\n // To prevent canvas fingerprinting, some add-ons undefine the getContext\n // method, for example: https://github.com/kkapsner/CanvasBlocker\n // https://github.com/chartjs/Chart.js/issues/2807\n return item && item.getContext && item.getContext('2d') || null;\n }\n updateConfig(config) {\n config.options.animation = false;\n }\n}\n","/**\n * Chart.Platform implementation for targeting a web browser\n */\n\nimport BasePlatform from './platform.base.js';\nimport {_getParentNode, getRelativePosition, supportsEventListenerOptions, readUsedSize, getMaximumSize} from '../helpers/helpers.dom.js';\nimport {throttled} from '../helpers/helpers.extras.js';\nimport {isNullOrUndef} from '../helpers/helpers.core.js';\n\n/**\n * @typedef { import('../core/core.controller.js').default } Chart\n */\n\nconst EXPANDO_KEY = '$chartjs';\n\n/**\n * DOM event types -> Chart.js event types.\n * Note: only events with different types are mapped.\n * @see https://developer.mozilla.org/en-US/docs/Web/Events\n */\nconst EVENT_TYPES = {\n touchstart: 'mousedown',\n touchmove: 'mousemove',\n touchend: 'mouseup',\n pointerenter: 'mouseenter',\n pointerdown: 'mousedown',\n pointermove: 'mousemove',\n pointerup: 'mouseup',\n pointerleave: 'mouseout',\n pointerout: 'mouseout'\n};\n\nconst isNullOrEmpty = value => value === null || value === '';\n/**\n * Initializes the canvas style and render size without modifying the canvas display size,\n * since responsiveness is handled by the controller.resize() method. The config is used\n * to determine the aspect ratio to apply in case no explicit height has been specified.\n * @param {HTMLCanvasElement} canvas\n * @param {number} [aspectRatio]\n */\nfunction initCanvas(canvas, aspectRatio) {\n const style = canvas.style;\n\n // NOTE(SB) canvas.getAttribute('width') !== canvas.width: in the first case it\n // returns null or '' if no explicit value has been set to the canvas attribute.\n const renderHeight = canvas.getAttribute('height');\n const renderWidth = canvas.getAttribute('width');\n\n // Chart.js modifies some canvas values that we want to restore on destroy\n canvas[EXPANDO_KEY] = {\n initial: {\n height: renderHeight,\n width: renderWidth,\n style: {\n display: style.display,\n height: style.height,\n width: style.width\n }\n }\n };\n\n // Force canvas to display as block to avoid extra space caused by inline\n // elements, which would interfere with the responsive resize process.\n // https://github.com/chartjs/Chart.js/issues/2538\n style.display = style.display || 'block';\n // Include possible borders in the size\n style.boxSizing = style.boxSizing || 'border-box';\n\n if (isNullOrEmpty(renderWidth)) {\n const displayWidth = readUsedSize(canvas, 'width');\n if (displayWidth !== undefined) {\n canvas.width = displayWidth;\n }\n }\n\n if (isNullOrEmpty(renderHeight)) {\n if (canvas.style.height === '') {\n // If no explicit render height and style height, let's apply the aspect ratio,\n // which one can be specified by the user but also by charts as default option\n // (i.e. options.aspectRatio). If not specified, use canvas aspect ratio of 2.\n canvas.height = canvas.width / (aspectRatio || 2);\n } else {\n const displayHeight = readUsedSize(canvas, 'height');\n if (displayHeight !== undefined) {\n canvas.height = displayHeight;\n }\n }\n }\n\n return canvas;\n}\n\n// Default passive to true as expected by Chrome for 'touchstart' and 'touchend' events.\n// https://github.com/chartjs/Chart.js/issues/4287\nconst eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\n\nfunction addListener(node, type, listener) {\n node.addEventListener(type, listener, eventListenerOptions);\n}\n\nfunction removeListener(chart, type, listener) {\n chart.canvas.removeEventListener(type, listener, eventListenerOptions);\n}\n\nfunction fromNativeEvent(event, chart) {\n const type = EVENT_TYPES[event.type] || event.type;\n const {x, y} = getRelativePosition(event, chart);\n return {\n type,\n chart,\n native: event,\n x: x !== undefined ? x : null,\n y: y !== undefined ? y : null,\n };\n}\n\nfunction nodeListContains(nodeList, canvas) {\n for (const node of nodeList) {\n if (node === canvas || node.contains(canvas)) {\n return true;\n }\n }\n}\n\nfunction createAttachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.addedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.removedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n return observer;\n}\n\nfunction createDetachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.removedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.addedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n return observer;\n}\n\nconst drpListeningCharts = new Map();\nlet oldDevicePixelRatio = 0;\n\nfunction onWindowResize() {\n const dpr = window.devicePixelRatio;\n if (dpr === oldDevicePixelRatio) {\n return;\n }\n oldDevicePixelRatio = dpr;\n drpListeningCharts.forEach((resize, chart) => {\n if (chart.currentDevicePixelRatio !== dpr) {\n resize();\n }\n });\n}\n\nfunction listenDevicePixelRatioChanges(chart, resize) {\n if (!drpListeningCharts.size) {\n window.addEventListener('resize', onWindowResize);\n }\n drpListeningCharts.set(chart, resize);\n}\n\nfunction unlistenDevicePixelRatioChanges(chart) {\n drpListeningCharts.delete(chart);\n if (!drpListeningCharts.size) {\n window.removeEventListener('resize', onWindowResize);\n }\n}\n\nfunction createResizeObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const container = canvas && _getParentNode(canvas);\n if (!container) {\n return;\n }\n const resize = throttled((width, height) => {\n const w = container.clientWidth;\n listener(width, height);\n if (w < container.clientWidth) {\n // If the container size shrank during chart resize, let's assume\n // scrollbar appeared. So we resize again with the scrollbar visible -\n // effectively making chart smaller and the scrollbar hidden again.\n // Because we are inside `throttled`, and currently `ticking`, scroll\n // events are ignored during this whole 2 resize process.\n // If we assumed wrong and something else happened, we are resizing\n // twice in a frame (potential performance issue)\n listener();\n }\n }, window);\n\n // @ts-ignore until https://github.com/microsoft/TypeScript/issues/37861 implemented\n const observer = new ResizeObserver(entries => {\n const entry = entries[0];\n const width = entry.contentRect.width;\n const height = entry.contentRect.height;\n // When its container's display is set to 'none' the callback will be called with a\n // size of (0, 0), which will cause the chart to lose its original height, so skip\n // resizing in such case.\n if (width === 0 && height === 0) {\n return;\n }\n resize(width, height);\n });\n observer.observe(container);\n listenDevicePixelRatioChanges(chart, resize);\n\n return observer;\n}\n\nfunction releaseObserver(chart, type, observer) {\n if (observer) {\n observer.disconnect();\n }\n if (type === 'resize') {\n unlistenDevicePixelRatioChanges(chart);\n }\n}\n\nfunction createProxyAndListen(chart, type, listener) {\n const canvas = chart.canvas;\n const proxy = throttled((event) => {\n // This case can occur if the chart is destroyed while waiting\n // for the throttled function to occur. We prevent crashes by checking\n // for a destroyed chart\n if (chart.ctx !== null) {\n listener(fromNativeEvent(event, chart));\n }\n }, chart);\n\n addListener(canvas, type, proxy);\n\n return proxy;\n}\n\n/**\n * Platform class for charts that can access the DOM and global window/document properties\n * @extends BasePlatform\n */\nexport default class DomPlatform extends BasePlatform {\n\n /**\n\t * @param {HTMLCanvasElement} canvas\n\t * @param {number} [aspectRatio]\n\t * @return {CanvasRenderingContext2D|null}\n\t */\n acquireContext(canvas, aspectRatio) {\n // To prevent canvas fingerprinting, some add-ons undefine the getContext\n // method, for example: https://github.com/kkapsner/CanvasBlocker\n // https://github.com/chartjs/Chart.js/issues/2807\n const context = canvas && canvas.getContext && canvas.getContext('2d');\n\n // `instanceof HTMLCanvasElement/CanvasRenderingContext2D` fails when the canvas is\n // inside an iframe or when running in a protected environment. We could guess the\n // types from their toString() value but let's keep things flexible and assume it's\n // a sufficient condition if the canvas has a context2D which has canvas as `canvas`.\n // https://github.com/chartjs/Chart.js/issues/3887\n // https://github.com/chartjs/Chart.js/issues/4102\n // https://github.com/chartjs/Chart.js/issues/4152\n if (context && context.canvas === canvas) {\n // Load platform resources on first chart creation, to make it possible to\n // import the library before setting platform options.\n initCanvas(canvas, aspectRatio);\n return context;\n }\n\n return null;\n }\n\n /**\n\t * @param {CanvasRenderingContext2D} context\n\t */\n releaseContext(context) {\n const canvas = context.canvas;\n if (!canvas[EXPANDO_KEY]) {\n return false;\n }\n\n const initial = canvas[EXPANDO_KEY].initial;\n ['height', 'width'].forEach((prop) => {\n const value = initial[prop];\n if (isNullOrUndef(value)) {\n canvas.removeAttribute(prop);\n } else {\n canvas.setAttribute(prop, value);\n }\n });\n\n const style = initial.style || {};\n Object.keys(style).forEach((key) => {\n canvas.style[key] = style[key];\n });\n\n // The canvas render size might have been changed (and thus the state stack discarded),\n // we can't use save() and restore() to restore the initial state. So make sure that at\n // least the canvas context is reset to the default state by setting the canvas width.\n // https://www.w3.org/TR/2011/WD-html5-20110525/the-canvas-element.html\n // eslint-disable-next-line no-self-assign\n canvas.width = canvas.width;\n\n delete canvas[EXPANDO_KEY];\n return true;\n }\n\n /**\n\t *\n\t * @param {Chart} chart\n\t * @param {string} type\n\t * @param {function} listener\n\t */\n addEventListener(chart, type, listener) {\n // Can have only one listener per type, so make sure previous is removed\n this.removeEventListener(chart, type);\n\n const proxies = chart.$proxies || (chart.$proxies = {});\n const handlers = {\n attach: createAttachObserver,\n detach: createDetachObserver,\n resize: createResizeObserver\n };\n const handler = handlers[type] || createProxyAndListen;\n proxies[type] = handler(chart, type, listener);\n }\n\n\n /**\n\t * @param {Chart} chart\n\t * @param {string} type\n\t */\n removeEventListener(chart, type) {\n const proxies = chart.$proxies || (chart.$proxies = {});\n const proxy = proxies[type];\n\n if (!proxy) {\n return;\n }\n\n const handlers = {\n attach: releaseObserver,\n detach: releaseObserver,\n resize: releaseObserver\n };\n const handler = handlers[type] || removeListener;\n handler(chart, type, proxy);\n proxies[type] = undefined;\n }\n\n getDevicePixelRatio() {\n return window.devicePixelRatio;\n }\n\n /**\n\t * @param {HTMLCanvasElement} canvas\n\t * @param {number} [width] - content width of parent element\n\t * @param {number} [height] - content height of parent element\n\t * @param {number} [aspectRatio] - aspect ratio to maintain\n\t */\n getMaximumSize(canvas, width, height, aspectRatio) {\n return getMaximumSize(canvas, width, height, aspectRatio);\n }\n\n /**\n\t * @param {HTMLCanvasElement} canvas\n\t */\n isAttached(canvas) {\n const container = _getParentNode(canvas);\n return !!(container && container.isConnected);\n }\n}\n","import {_isDomSupported} from '../helpers/index.js';\nimport BasePlatform from './platform.base.js';\nimport BasicPlatform from './platform.basic.js';\nimport DomPlatform from './platform.dom.js';\n\nexport function _detectPlatform(canvas) {\n if (!_isDomSupported() || (typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas)) {\n return BasicPlatform;\n }\n return DomPlatform;\n}\n\nexport {BasePlatform, BasicPlatform, DomPlatform};\n","import type {AnyObject} from '../types/basic.js';\nimport type {Point} from '../types/geometric.js';\nimport type {Animation} from '../types/animation.js';\nimport {isNumber} from '../helpers/helpers.math.js';\n\nexport default class Element {\n\n static defaults = {};\n static defaultRoutes = undefined;\n\n x: number;\n y: number;\n active = false;\n options: O;\n $animations: Record;\n\n tooltipPosition(useFinalPosition: boolean): Point {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y} as Point;\n }\n\n hasValue() {\n return isNumber(this.x) && isNumber(this.y);\n }\n\n /**\n * Gets the current or final value of each prop. Can return extra properties (whole object).\n * @param props - properties to get\n * @param [final] - get the final value (animation target)\n */\n getProps

(props: P, final?: boolean): Pick;\n getProps

(props: P[], final?: boolean): Partial>;\n getProps(props: string[], final?: boolean): Partial> {\n const anims = this.$animations;\n if (!final || !anims) {\n // let's not create an object, if not needed\n return this as Record;\n }\n const ret: Record = {};\n props.forEach((prop) => {\n ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : this[prop as string];\n });\n return ret;\n }\n}\n","import {isNullOrUndef, valueOrDefault} from '../helpers/helpers.core.js';\nimport {_factorize} from '../helpers/helpers.math.js';\n\n\n/**\n * @typedef { import('./core.controller.js').default } Chart\n * @typedef {{value:number | string, label?:string, major?:boolean, $context?:any}} Tick\n */\n\n/**\n * Returns a subset of ticks to be plotted to avoid overlapping labels.\n * @param {import('./core.scale.js').default} scale\n * @param {Tick[]} ticks\n * @return {Tick[]}\n * @private\n */\nexport function autoSkip(scale, ticks) {\n const tickOpts = scale.options.ticks;\n const determinedMaxTicks = determineMaxTicks(scale);\n const ticksLimit = Math.min(tickOpts.maxTicksLimit || determinedMaxTicks, determinedMaxTicks);\n const majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\n const numMajorIndices = majorIndices.length;\n const first = majorIndices[0];\n const last = majorIndices[numMajorIndices - 1];\n const newTicks = [];\n\n // If there are too many major ticks to display them all\n if (numMajorIndices > ticksLimit) {\n skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit);\n return newTicks;\n }\n\n const spacing = calculateSpacing(majorIndices, ticks, ticksLimit);\n\n if (numMajorIndices > 0) {\n let i, ilen;\n const avgMajorSpacing = numMajorIndices > 1 ? Math.round((last - first) / (numMajorIndices - 1)) : null;\n skip(ticks, newTicks, spacing, isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\n for (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) {\n skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]);\n }\n skip(ticks, newTicks, spacing, last, isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n return newTicks;\n }\n skip(ticks, newTicks, spacing);\n return newTicks;\n}\n\nfunction determineMaxTicks(scale) {\n const offset = scale.options.offset;\n const tickLength = scale._tickSize();\n const maxScale = scale._length / tickLength + (offset ? 0 : 1);\n const maxChart = scale._maxLength / tickLength;\n return Math.floor(Math.min(maxScale, maxChart));\n}\n\n/**\n * @param {number[]} majorIndices\n * @param {Tick[]} ticks\n * @param {number} ticksLimit\n */\nfunction calculateSpacing(majorIndices, ticks, ticksLimit) {\n const evenMajorSpacing = getEvenSpacing(majorIndices);\n const spacing = ticks.length / ticksLimit;\n\n // If the major ticks are evenly spaced apart, place the minor ticks\n // so that they divide the major ticks into even chunks\n if (!evenMajorSpacing) {\n return Math.max(spacing, 1);\n }\n\n const factors = _factorize(evenMajorSpacing);\n for (let i = 0, ilen = factors.length - 1; i < ilen; i++) {\n const factor = factors[i];\n if (factor > spacing) {\n return factor;\n }\n }\n return Math.max(spacing, 1);\n}\n\n/**\n * @param {Tick[]} ticks\n */\nfunction getMajorIndices(ticks) {\n const result = [];\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (ticks[i].major) {\n result.push(i);\n }\n }\n return result;\n}\n\n/**\n * @param {Tick[]} ticks\n * @param {Tick[]} newTicks\n * @param {number[]} majorIndices\n * @param {number} spacing\n */\nfunction skipMajors(ticks, newTicks, majorIndices, spacing) {\n let count = 0;\n let next = majorIndices[0];\n let i;\n\n spacing = Math.ceil(spacing);\n for (i = 0; i < ticks.length; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = majorIndices[count * spacing];\n }\n }\n}\n\n/**\n * @param {Tick[]} ticks\n * @param {Tick[]} newTicks\n * @param {number} spacing\n * @param {number} [majorStart]\n * @param {number} [majorEnd]\n */\nfunction skip(ticks, newTicks, spacing, majorStart, majorEnd) {\n const start = valueOrDefault(majorStart, 0);\n const end = Math.min(valueOrDefault(majorEnd, ticks.length), ticks.length);\n let count = 0;\n let length, i, next;\n\n spacing = Math.ceil(spacing);\n if (majorEnd) {\n length = majorEnd - majorStart;\n spacing = length / Math.floor(length / spacing);\n }\n\n next = start;\n\n while (next < 0) {\n count++;\n next = Math.round(start + count * spacing);\n }\n\n for (i = Math.max(start, 0); i < end; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = Math.round(start + count * spacing);\n }\n }\n}\n\n\n/**\n * @param {number[]} arr\n */\nfunction getEvenSpacing(arr) {\n const len = arr.length;\n let i, diff;\n\n if (len < 2) {\n return false;\n }\n\n for (diff = arr[0], i = 1; i < len; ++i) {\n if (arr[i] - arr[i - 1] !== diff) {\n return false;\n }\n }\n return diff;\n}\n","import Element from './core.element.js';\nimport {_alignPixel, _measureText, renderText, clipArea, unclipArea} from '../helpers/helpers.canvas.js';\nimport {callback as call, each, finiteOrDefault, isArray, isFinite, isNullOrUndef, isObject, valueOrDefault} from '../helpers/helpers.core.js';\nimport {toDegrees, toRadians, _int16Range, _limitValue, HALF_PI} from '../helpers/helpers.math.js';\nimport {_alignStartEnd, _toLeftRightCenter} from '../helpers/helpers.extras.js';\nimport {createContext, toFont, toPadding, _addGrace} from '../helpers/helpers.options.js';\nimport {autoSkip} from './core.scale.autoskip.js';\n\nconst reverseAlign = (align) => align === 'left' ? 'right' : align === 'right' ? 'left' : align;\nconst offsetFromEdge = (scale, edge, offset) => edge === 'top' || edge === 'left' ? scale[edge] + offset : scale[edge] - offset;\nconst getTicksLimit = (ticksLength, maxTicksLimit) => Math.min(maxTicksLimit || ticksLength, ticksLength);\n\n/**\n * @typedef { import('../types/index.js').Chart } Chart\n * @typedef {{value:number | string, label?:string, major?:boolean, $context?:any}} Tick\n */\n\n/**\n * Returns a new array containing numItems from arr\n * @param {any[]} arr\n * @param {number} numItems\n */\nfunction sample(arr, numItems) {\n const result = [];\n const increment = arr.length / numItems;\n const len = arr.length;\n let i = 0;\n\n for (; i < len; i += increment) {\n result.push(arr[Math.floor(i)]);\n }\n return result;\n}\n\n/**\n * @param {Scale} scale\n * @param {number} index\n * @param {boolean} offsetGridLines\n */\nfunction getPixelForGridLine(scale, index, offsetGridLines) {\n const length = scale.ticks.length;\n const validIndex = Math.min(index, length - 1);\n const start = scale._startPixel;\n const end = scale._endPixel;\n const epsilon = 1e-6; // 1e-6 is margin in pixels for accumulated error.\n let lineValue = scale.getPixelForTick(validIndex);\n let offset;\n\n if (offsetGridLines) {\n if (length === 1) {\n offset = Math.max(lineValue - start, end - lineValue);\n } else if (index === 0) {\n offset = (scale.getPixelForTick(1) - lineValue) / 2;\n } else {\n offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\n }\n lineValue += validIndex < index ? offset : -offset;\n\n // Return undefined if the pixel is out of the range\n if (lineValue < start - epsilon || lineValue > end + epsilon) {\n return;\n }\n }\n return lineValue;\n}\n\n/**\n * @param {object} caches\n * @param {number} length\n */\nfunction garbageCollect(caches, length) {\n each(caches, (cache) => {\n const gc = cache.gc;\n const gcLen = gc.length / 2;\n let i;\n if (gcLen > length) {\n for (i = 0; i < gcLen; ++i) {\n delete cache.data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n });\n}\n\n/**\n * @param {object} options\n */\nfunction getTickMarkLength(options) {\n return options.drawTicks ? options.tickLength : 0;\n}\n\n/**\n * @param {object} options\n */\nfunction getTitleHeight(options, fallback) {\n if (!options.display) {\n return 0;\n }\n\n const font = toFont(options.font, fallback);\n const padding = toPadding(options.padding);\n const lines = isArray(options.text) ? options.text.length : 1;\n\n return (lines * font.lineHeight) + padding.height;\n}\n\nfunction createScaleContext(parent, scale) {\n return createContext(parent, {\n scale,\n type: 'scale'\n });\n}\n\nfunction createTickContext(parent, index, tick) {\n return createContext(parent, {\n tick,\n index,\n type: 'tick'\n });\n}\n\nfunction titleAlign(align, position, reverse) {\n /** @type {CanvasTextAlign} */\n let ret = _toLeftRightCenter(align);\n if ((reverse && position !== 'right') || (!reverse && position === 'right')) {\n ret = reverseAlign(ret);\n }\n return ret;\n}\n\nfunction titleArgs(scale, offset, position, align) {\n const {top, left, bottom, right, chart} = scale;\n const {chartArea, scales} = chart;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n const height = bottom - top;\n const width = right - left;\n\n if (scale.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleY = scales[positionAxisID].getPixelForValue(value) + height - offset;\n } else if (position === 'center') {\n titleY = (chartArea.bottom + chartArea.top) / 2 + height - offset;\n } else {\n titleY = offsetFromEdge(scale, position, offset);\n }\n maxWidth = right - left;\n } else {\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleX = scales[positionAxisID].getPixelForValue(value) - width + offset;\n } else if (position === 'center') {\n titleX = (chartArea.left + chartArea.right) / 2 - width + offset;\n } else {\n titleX = offsetFromEdge(scale, position, offset);\n }\n titleY = _alignStartEnd(align, bottom, top);\n rotation = position === 'left' ? -HALF_PI : HALF_PI;\n }\n return {titleX, titleY, maxWidth, rotation};\n}\n\nexport default class Scale extends Element {\n\n // eslint-disable-next-line max-statements\n constructor(cfg) {\n super();\n\n /** @type {string} */\n this.id = cfg.id;\n /** @type {string} */\n this.type = cfg.type;\n /** @type {any} */\n this.options = undefined;\n /** @type {CanvasRenderingContext2D} */\n this.ctx = cfg.ctx;\n /** @type {Chart} */\n this.chart = cfg.chart;\n\n // implements box\n /** @type {number} */\n this.top = undefined;\n /** @type {number} */\n this.bottom = undefined;\n /** @type {number} */\n this.left = undefined;\n /** @type {number} */\n this.right = undefined;\n /** @type {number} */\n this.width = undefined;\n /** @type {number} */\n this.height = undefined;\n this._margins = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n /** @type {number} */\n this.maxWidth = undefined;\n /** @type {number} */\n this.maxHeight = undefined;\n /** @type {number} */\n this.paddingTop = undefined;\n /** @type {number} */\n this.paddingBottom = undefined;\n /** @type {number} */\n this.paddingLeft = undefined;\n /** @type {number} */\n this.paddingRight = undefined;\n\n // scale-specific properties\n /** @type {string=} */\n this.axis = undefined;\n /** @type {number=} */\n this.labelRotation = undefined;\n this.min = undefined;\n this.max = undefined;\n this._range = undefined;\n /** @type {Tick[]} */\n this.ticks = [];\n /** @type {object[]|null} */\n this._gridLineItems = null;\n /** @type {object[]|null} */\n this._labelItems = null;\n /** @type {object|null} */\n this._labelSizes = null;\n this._length = 0;\n this._maxLength = 0;\n this._longestTextCache = {};\n /** @type {number} */\n this._startPixel = undefined;\n /** @type {number} */\n this._endPixel = undefined;\n this._reversePixels = false;\n this._userMax = undefined;\n this._userMin = undefined;\n this._suggestedMax = undefined;\n this._suggestedMin = undefined;\n this._ticksLength = 0;\n this._borderValue = 0;\n this._cache = {};\n this._dataLimitsCached = false;\n this.$context = undefined;\n }\n\n /**\n\t * @param {any} options\n\t * @since 3.0\n\t */\n init(options) {\n this.options = options.setContext(this.getContext());\n\n this.axis = options.axis;\n\n // parse min/max value, so we can properly determine min/max for other scales\n this._userMin = this.parse(options.min);\n this._userMax = this.parse(options.max);\n this._suggestedMin = this.parse(options.suggestedMin);\n this._suggestedMax = this.parse(options.suggestedMax);\n }\n\n /**\n\t * Parse a supported input value to internal representation.\n\t * @param {*} raw\n\t * @param {number} [index]\n\t * @since 3.0\n\t */\n parse(raw, index) { // eslint-disable-line no-unused-vars\n return raw;\n }\n\n /**\n\t * @return {{min: number, max: number, minDefined: boolean, maxDefined: boolean}}\n\t * @protected\n\t * @since 3.0\n\t */\n getUserBounds() {\n let {_userMin, _userMax, _suggestedMin, _suggestedMax} = this;\n _userMin = finiteOrDefault(_userMin, Number.POSITIVE_INFINITY);\n _userMax = finiteOrDefault(_userMax, Number.NEGATIVE_INFINITY);\n _suggestedMin = finiteOrDefault(_suggestedMin, Number.POSITIVE_INFINITY);\n _suggestedMax = finiteOrDefault(_suggestedMax, Number.NEGATIVE_INFINITY);\n return {\n min: finiteOrDefault(_userMin, _suggestedMin),\n max: finiteOrDefault(_userMax, _suggestedMax),\n minDefined: isFinite(_userMin),\n maxDefined: isFinite(_userMax)\n };\n }\n\n /**\n\t * @param {boolean} canStack\n\t * @return {{min: number, max: number}}\n\t * @protected\n\t * @since 3.0\n\t */\n getMinMax(canStack) {\n // eslint-disable-next-line prefer-const\n let {min, max, minDefined, maxDefined} = this.getUserBounds();\n let range;\n\n if (minDefined && maxDefined) {\n return {min, max};\n }\n\n const metas = this.getMatchingVisibleMetas();\n for (let i = 0, ilen = metas.length; i < ilen; ++i) {\n range = metas[i].controller.getMinMax(this, canStack);\n if (!minDefined) {\n min = Math.min(min, range.min);\n }\n if (!maxDefined) {\n max = Math.max(max, range.max);\n }\n }\n\n // Make sure min <= max when only min or max is defined by user and the data is outside that range\n min = maxDefined && min > max ? max : min;\n max = minDefined && min > max ? min : max;\n\n return {\n min: finiteOrDefault(min, finiteOrDefault(max, min)),\n max: finiteOrDefault(max, finiteOrDefault(min, max))\n };\n }\n\n /**\n\t * Get the padding needed for the scale\n\t * @return {{top: number, left: number, bottom: number, right: number}} the necessary padding\n\t * @private\n\t */\n getPadding() {\n return {\n left: this.paddingLeft || 0,\n top: this.paddingTop || 0,\n right: this.paddingRight || 0,\n bottom: this.paddingBottom || 0\n };\n }\n\n /**\n\t * Returns the scale tick objects\n\t * @return {Tick[]}\n\t * @since 2.7\n\t */\n getTicks() {\n return this.ticks;\n }\n\n /**\n\t * @return {string[]}\n\t */\n getLabels() {\n const data = this.chart.data;\n return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n }\n\n /**\n * @return {import('../types.js').LabelItem[]}\n */\n getLabelItems(chartArea = this.chart.chartArea) {\n const items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea));\n return items;\n }\n\n // When a new layout is created, reset the data limits cache\n beforeLayout() {\n this._cache = {};\n this._dataLimitsCached = false;\n }\n\n // These methods are ordered by lifecycle. Utilities then follow.\n // Any function defined here is inherited by all scale types.\n // Any function can be extended by the scale type\n\n beforeUpdate() {\n call(this.options.beforeUpdate, [this]);\n }\n\n /**\n\t * @param {number} maxWidth - the max width in pixels\n\t * @param {number} maxHeight - the max height in pixels\n\t * @param {{top: number, left: number, bottom: number, right: number}} margins - the space between the edge of the other scales and edge of the chart\n\t * This space comes from two sources:\n\t * - padding - space that's required to show the labels at the edges of the scale\n\t * - thickness of scales or legends in another orientation\n\t */\n update(maxWidth, maxHeight, margins) {\n const {beginAtZero, grace, ticks: tickOpts} = this.options;\n const sampleSize = tickOpts.sampleSize;\n\n // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n this.beforeUpdate();\n\n // Absorb the master measurements\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins = Object.assign({\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }, margins);\n\n this.ticks = null;\n this._labelSizes = null;\n this._gridLineItems = null;\n this._labelItems = null;\n\n // Dimensions\n this.beforeSetDimensions();\n this.setDimensions();\n this.afterSetDimensions();\n\n this._maxLength = this.isHorizontal()\n ? this.width + margins.left + margins.right\n : this.height + margins.top + margins.bottom;\n\n // Data min/max\n if (!this._dataLimitsCached) {\n this.beforeDataLimits();\n this.determineDataLimits();\n this.afterDataLimits();\n this._range = _addGrace(this, grace, beginAtZero);\n this._dataLimitsCached = true;\n }\n\n this.beforeBuildTicks();\n\n this.ticks = this.buildTicks() || [];\n\n // Allow modification of ticks in callback.\n this.afterBuildTicks();\n\n // Compute tick rotation and fit using a sampled subset of labels\n // We generally don't need to compute the size of every single label for determining scale size\n const samplingEnabled = sampleSize < this.ticks.length;\n this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks);\n\n // configure is called twice, once here, once from core.controller.updateLayout.\n // Here we haven't been positioned yet, but dimensions are correct.\n // Variables set in configure are needed for calculateLabelRotation, and\n // it's ok that coordinates are not correct there, only dimensions matter.\n this.configure();\n\n // Tick Rotation\n this.beforeCalculateLabelRotation();\n this.calculateLabelRotation(); // Preconditions: number of ticks and sizes of largest labels must be calculated beforehand\n this.afterCalculateLabelRotation();\n\n // Auto-skip\n if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto')) {\n this.ticks = autoSkip(this, this.ticks);\n this._labelSizes = null;\n this.afterAutoSkip();\n }\n\n if (samplingEnabled) {\n // Generate labels using all non-skipped ticks\n this._convertTicksToLabels(this.ticks);\n }\n\n this.beforeFit();\n this.fit(); // Preconditions: label rotation and label sizes must be calculated beforehand\n this.afterFit();\n\n // IMPORTANT: after this point, we consider that `this.ticks` will NEVER change!\n\n this.afterUpdate();\n }\n\n /**\n\t * @protected\n\t */\n configure() {\n let reversePixels = this.options.reverse;\n let startPixel, endPixel;\n\n if (this.isHorizontal()) {\n startPixel = this.left;\n endPixel = this.right;\n } else {\n startPixel = this.top;\n endPixel = this.bottom;\n // by default vertical scales are from bottom to top, so pixels are reversed\n reversePixels = !reversePixels;\n }\n this._startPixel = startPixel;\n this._endPixel = endPixel;\n this._reversePixels = reversePixels;\n this._length = endPixel - startPixel;\n this._alignToPixels = this.options.alignToPixels;\n }\n\n afterUpdate() {\n call(this.options.afterUpdate, [this]);\n }\n\n //\n\n beforeSetDimensions() {\n call(this.options.beforeSetDimensions, [this]);\n }\n setDimensions() {\n // Set the unconstrained dimension before label rotation\n if (this.isHorizontal()) {\n // Reset position before calculating rotation\n this.width = this.maxWidth;\n this.left = 0;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n\n // Reset position before calculating rotation\n this.top = 0;\n this.bottom = this.height;\n }\n\n // Reset padding\n this.paddingLeft = 0;\n this.paddingTop = 0;\n this.paddingRight = 0;\n this.paddingBottom = 0;\n }\n afterSetDimensions() {\n call(this.options.afterSetDimensions, [this]);\n }\n\n _callHooks(name) {\n this.chart.notifyPlugins(name, this.getContext());\n call(this.options[name], [this]);\n }\n\n // Data limits\n beforeDataLimits() {\n this._callHooks('beforeDataLimits');\n }\n determineDataLimits() {}\n afterDataLimits() {\n this._callHooks('afterDataLimits');\n }\n\n //\n beforeBuildTicks() {\n this._callHooks('beforeBuildTicks');\n }\n /**\n\t * @return {object[]} the ticks\n\t */\n buildTicks() {\n return [];\n }\n afterBuildTicks() {\n this._callHooks('afterBuildTicks');\n }\n\n beforeTickToLabelConversion() {\n call(this.options.beforeTickToLabelConversion, [this]);\n }\n /**\n\t * Convert ticks to label strings\n\t * @param {Tick[]} ticks\n\t */\n generateTickLabels(ticks) {\n const tickOpts = this.options.ticks;\n let i, ilen, tick;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n tick = ticks[i];\n tick.label = call(tickOpts.callback, [tick.value, i, ticks], this);\n }\n }\n afterTickToLabelConversion() {\n call(this.options.afterTickToLabelConversion, [this]);\n }\n\n //\n\n beforeCalculateLabelRotation() {\n call(this.options.beforeCalculateLabelRotation, [this]);\n }\n calculateLabelRotation() {\n const options = this.options;\n const tickOpts = options.ticks;\n const numTicks = getTicksLimit(this.ticks.length, options.ticks.maxTicksLimit);\n const minRotation = tickOpts.minRotation || 0;\n const maxRotation = tickOpts.maxRotation;\n let labelRotation = minRotation;\n let tickWidth, maxHeight, maxLabelDiagonal;\n\n if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) {\n this.labelRotation = minRotation;\n return;\n }\n\n const labelSizes = this._getLabelSizes();\n const maxLabelWidth = labelSizes.widest.width;\n const maxLabelHeight = labelSizes.highest.height;\n\n // Estimate the width of each grid based on the canvas width, the maximum\n // label width and the number of tick intervals\n const maxWidth = _limitValue(this.chart.width - maxLabelWidth, 0, this.maxWidth);\n tickWidth = options.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1);\n\n // Allow 3 pixels x2 padding either side for label readability\n if (maxLabelWidth + 6 > tickWidth) {\n tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\n maxHeight = this.maxHeight - getTickMarkLength(options.grid)\n\t\t\t\t- tickOpts.padding - getTitleHeight(options.title, this.chart.options.font);\n maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n labelRotation = toDegrees(Math.min(\n Math.asin(_limitValue((labelSizes.highest.height + 6) / tickWidth, -1, 1)),\n Math.asin(_limitValue(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin(_limitValue(maxLabelHeight / maxLabelDiagonal, -1, 1))\n ));\n labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n }\n\n this.labelRotation = labelRotation;\n }\n afterCalculateLabelRotation() {\n call(this.options.afterCalculateLabelRotation, [this]);\n }\n afterAutoSkip() {}\n\n //\n\n beforeFit() {\n call(this.options.beforeFit, [this]);\n }\n fit() {\n // Reset\n const minSize = {\n width: 0,\n height: 0\n };\n\n const {chart, options: {ticks: tickOpts, title: titleOpts, grid: gridOpts}} = this;\n const display = this._isVisible();\n const isHorizontal = this.isHorizontal();\n\n if (display) {\n const titleHeight = getTitleHeight(titleOpts, chart.options.font);\n if (isHorizontal) {\n minSize.width = this.maxWidth;\n minSize.height = getTickMarkLength(gridOpts) + titleHeight;\n } else {\n minSize.height = this.maxHeight; // fill all the height\n minSize.width = getTickMarkLength(gridOpts) + titleHeight;\n }\n\n // Don't bother fitting the ticks if we are not showing the labels\n if (tickOpts.display && this.ticks.length) {\n const {first, last, widest, highest} = this._getLabelSizes();\n const tickPadding = tickOpts.padding * 2;\n const angleRadians = toRadians(this.labelRotation);\n const cos = Math.cos(angleRadians);\n const sin = Math.sin(angleRadians);\n\n if (isHorizontal) {\n // A horizontal axis is more constrained by the height.\n const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height;\n minSize.height = Math.min(this.maxHeight, minSize.height + labelHeight + tickPadding);\n } else {\n // A vertical axis is more constrained by the width. Labels are the\n // dominant factor here, so get that length first and account for padding\n const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height;\n\n minSize.width = Math.min(this.maxWidth, minSize.width + labelWidth + tickPadding);\n }\n this._calculatePadding(first, last, sin, cos);\n }\n }\n\n this._handleMargins();\n\n if (isHorizontal) {\n this.width = this._length = chart.width - this._margins.left - this._margins.right;\n this.height = minSize.height;\n } else {\n this.width = minSize.width;\n this.height = this._length = chart.height - this._margins.top - this._margins.bottom;\n }\n }\n\n _calculatePadding(first, last, sin, cos) {\n const {ticks: {align, padding}, position} = this.options;\n const isRotated = this.labelRotation !== 0;\n const labelsBelowTicks = position !== 'top' && this.axis === 'x';\n\n if (this.isHorizontal()) {\n const offsetLeft = this.getPixelForTick(0) - this.left;\n const offsetRight = this.right - this.getPixelForTick(this.ticks.length - 1);\n let paddingLeft = 0;\n let paddingRight = 0;\n\n // Ensure that our ticks are always inside the canvas. When rotated, ticks are right aligned\n // which means that the right padding is dominated by the font height\n if (isRotated) {\n if (labelsBelowTicks) {\n paddingLeft = cos * first.width;\n paddingRight = sin * last.height;\n } else {\n paddingLeft = sin * first.height;\n paddingRight = cos * last.width;\n }\n } else if (align === 'start') {\n paddingRight = last.width;\n } else if (align === 'end') {\n paddingLeft = first.width;\n } else if (align !== 'inner') {\n paddingLeft = first.width / 2;\n paddingRight = last.width / 2;\n }\n\n // Adjust padding taking into account changes in offsets\n this.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * this.width / (this.width - offsetLeft), 0);\n this.paddingRight = Math.max((paddingRight - offsetRight + padding) * this.width / (this.width - offsetRight), 0);\n } else {\n let paddingTop = last.height / 2;\n let paddingBottom = first.height / 2;\n\n if (align === 'start') {\n paddingTop = 0;\n paddingBottom = first.height;\n } else if (align === 'end') {\n paddingTop = last.height;\n paddingBottom = 0;\n }\n\n this.paddingTop = paddingTop + padding;\n this.paddingBottom = paddingBottom + padding;\n }\n }\n\n /**\n\t * Handle margins and padding interactions\n\t * @private\n\t */\n _handleMargins() {\n if (this._margins) {\n this._margins.left = Math.max(this.paddingLeft, this._margins.left);\n this._margins.top = Math.max(this.paddingTop, this._margins.top);\n this._margins.right = Math.max(this.paddingRight, this._margins.right);\n this._margins.bottom = Math.max(this.paddingBottom, this._margins.bottom);\n }\n }\n\n afterFit() {\n call(this.options.afterFit, [this]);\n }\n\n // Shared Methods\n /**\n\t * @return {boolean}\n\t */\n isHorizontal() {\n const {axis, position} = this.options;\n return position === 'top' || position === 'bottom' || axis === 'x';\n }\n /**\n\t * @return {boolean}\n\t */\n isFullSize() {\n return this.options.fullSize;\n }\n\n /**\n\t * @param {Tick[]} ticks\n\t * @private\n\t */\n _convertTicksToLabels(ticks) {\n this.beforeTickToLabelConversion();\n\n this.generateTickLabels(ticks);\n\n // Ticks should be skipped when callback returns null or undef, so lets remove those.\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (isNullOrUndef(ticks[i].label)) {\n ticks.splice(i, 1);\n ilen--;\n i--;\n }\n }\n\n this.afterTickToLabelConversion();\n }\n\n /**\n\t * @return {{ first: object, last: object, widest: object, highest: object, widths: Array, heights: array }}\n\t * @private\n\t */\n _getLabelSizes() {\n let labelSizes = this._labelSizes;\n\n if (!labelSizes) {\n const sampleSize = this.options.ticks.sampleSize;\n let ticks = this.ticks;\n if (sampleSize < ticks.length) {\n ticks = sample(ticks, sampleSize);\n }\n\n this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length, this.options.ticks.maxTicksLimit);\n }\n\n return labelSizes;\n }\n\n /**\n\t * Returns {width, height, offset} objects for the first, last, widest, highest tick\n\t * labels where offset indicates the anchor point offset from the top in pixels.\n\t * @return {{ first: object, last: object, widest: object, highest: object, widths: Array, heights: array }}\n\t * @private\n\t */\n _computeLabelSizes(ticks, length, maxTicksLimit) {\n const {ctx, _longestTextCache: caches} = this;\n const widths = [];\n const heights = [];\n const increment = Math.floor(length / getTicksLimit(length, maxTicksLimit));\n let widestLabelSize = 0;\n let highestLabelSize = 0;\n let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel;\n\n for (i = 0; i < length; i += increment) {\n label = ticks[i].label;\n tickFont = this._resolveTickFontOptions(i);\n ctx.font = fontString = tickFont.string;\n cache = caches[fontString] = caches[fontString] || {data: {}, gc: []};\n lineHeight = tickFont.lineHeight;\n width = height = 0;\n // Undefined labels and arrays should not be measured\n if (!isNullOrUndef(label) && !isArray(label)) {\n width = _measureText(ctx, cache.data, cache.gc, width, label);\n height = lineHeight;\n } else if (isArray(label)) {\n // if it is an array let's measure each element\n for (j = 0, jlen = label.length; j < jlen; ++j) {\n nestedLabel = /** @type {string} */ (label[j]);\n // Undefined labels and arrays should not be measured\n if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n width = _measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n height += lineHeight;\n }\n }\n }\n widths.push(width);\n heights.push(height);\n widestLabelSize = Math.max(width, widestLabelSize);\n highestLabelSize = Math.max(height, highestLabelSize);\n }\n garbageCollect(caches, length);\n\n const widest = widths.indexOf(widestLabelSize);\n const highest = heights.indexOf(highestLabelSize);\n\n const valueAt = (idx) => ({width: widths[idx] || 0, height: heights[idx] || 0});\n\n return {\n first: valueAt(0),\n last: valueAt(length - 1),\n widest: valueAt(widest),\n highest: valueAt(highest),\n widths,\n heights,\n };\n }\n\n /**\n\t * Used to get the label to display in the tooltip for the given value\n\t * @param {*} value\n\t * @return {string}\n\t */\n getLabelForValue(value) {\n return value;\n }\n\n /**\n\t * Returns the location of the given data point. Value can either be an index or a numerical value\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param {*} value\n\t * @param {number} [index]\n\t * @return {number}\n\t */\n getPixelForValue(value, index) { // eslint-disable-line no-unused-vars\n return NaN;\n }\n\n /**\n\t * Used to get the data value from a given pixel. This is the inverse of getPixelForValue\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param {number} pixel\n\t * @return {*}\n\t */\n getValueForPixel(pixel) {} // eslint-disable-line no-unused-vars\n\n /**\n\t * Returns the location of the tick at the given index\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param {number} index\n\t * @return {number}\n\t */\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n\n /**\n\t * Utility for getting the pixel location of a percentage of scale\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param {number} decimal\n\t * @return {number}\n\t */\n getPixelForDecimal(decimal) {\n if (this._reversePixels) {\n decimal = 1 - decimal;\n }\n\n const pixel = this._startPixel + decimal * this._length;\n return _int16Range(this._alignToPixels ? _alignPixel(this.chart, pixel, 0) : pixel);\n }\n\n /**\n\t * @param {number} pixel\n\t * @return {number}\n\t */\n getDecimalForPixel(pixel) {\n const decimal = (pixel - this._startPixel) / this._length;\n return this._reversePixels ? 1 - decimal : decimal;\n }\n\n /**\n\t * Returns the pixel for the minimum chart value\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @return {number}\n\t */\n getBasePixel() {\n return this.getPixelForValue(this.getBaseValue());\n }\n\n /**\n\t * @return {number}\n\t */\n getBaseValue() {\n const {min, max} = this;\n\n return min < 0 && max < 0 ? max :\n min > 0 && max > 0 ? min :\n 0;\n }\n\n /**\n\t * @protected\n\t */\n getContext(index) {\n const ticks = this.ticks || [];\n\n if (index >= 0 && index < ticks.length) {\n const tick = ticks[index];\n return tick.$context ||\n\t\t\t\t(tick.$context = createTickContext(this.getContext(), index, tick));\n }\n return this.$context ||\n\t\t\t(this.$context = createScaleContext(this.chart.getContext(), this));\n }\n\n /**\n\t * @return {number}\n\t * @private\n\t */\n _tickSize() {\n const optionTicks = this.options.ticks;\n\n // Calculate space needed by label in axis direction.\n const rot = toRadians(this.labelRotation);\n const cos = Math.abs(Math.cos(rot));\n const sin = Math.abs(Math.sin(rot));\n\n const labelSizes = this._getLabelSizes();\n const padding = optionTicks.autoSkipPadding || 0;\n const w = labelSizes ? labelSizes.widest.width + padding : 0;\n const h = labelSizes ? labelSizes.highest.height + padding : 0;\n\n // Calculate space needed for 1 tick in axis direction.\n return this.isHorizontal()\n ? h * cos > w * sin ? w / cos : h / sin\n : h * sin < w * cos ? h / cos : w / sin;\n }\n\n /**\n\t * @return {boolean}\n\t * @private\n\t */\n _isVisible() {\n const display = this.options.display;\n\n if (display !== 'auto') {\n return !!display;\n }\n\n return this.getMatchingVisibleMetas().length > 0;\n }\n\n /**\n\t * @private\n\t */\n _computeGridLineItems(chartArea) {\n const axis = this.axis;\n const chart = this.chart;\n const options = this.options;\n const {grid, position, border} = options;\n const offset = grid.offset;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const ticksLength = ticks.length + (offset ? 1 : 0);\n const tl = getTickMarkLength(grid);\n const items = [];\n\n const borderOpts = border.setContext(this.getContext());\n const axisWidth = borderOpts.display ? borderOpts.width : 0;\n const axisHalfWidth = axisWidth / 2;\n const alignBorderValue = function(pixel) {\n return _alignPixel(chart, pixel, axisWidth);\n };\n let borderValue, i, lineValue, alignedLineValue;\n let tx1, ty1, tx2, ty2, x1, y1, x2, y2;\n\n if (position === 'top') {\n borderValue = alignBorderValue(this.bottom);\n ty1 = this.bottom - tl;\n ty2 = borderValue - axisHalfWidth;\n y1 = alignBorderValue(chartArea.top) + axisHalfWidth;\n y2 = chartArea.bottom;\n } else if (position === 'bottom') {\n borderValue = alignBorderValue(this.top);\n y1 = chartArea.top;\n y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\n ty1 = borderValue + axisHalfWidth;\n ty2 = this.top + tl;\n } else if (position === 'left') {\n borderValue = alignBorderValue(this.right);\n tx1 = this.right - tl;\n tx2 = borderValue - axisHalfWidth;\n x1 = alignBorderValue(chartArea.left) + axisHalfWidth;\n x2 = chartArea.right;\n } else if (position === 'right') {\n borderValue = alignBorderValue(this.left);\n x1 = chartArea.left;\n x2 = alignBorderValue(chartArea.right) - axisHalfWidth;\n tx1 = borderValue + axisHalfWidth;\n tx2 = this.left + tl;\n } else if (axis === 'x') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.top + chartArea.bottom) / 2 + 0.5);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n\n y1 = chartArea.top;\n y2 = chartArea.bottom;\n ty1 = borderValue + axisHalfWidth;\n ty2 = ty1 + tl;\n } else if (axis === 'y') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n\n tx1 = borderValue - axisHalfWidth;\n tx2 = tx1 - tl;\n x1 = chartArea.left;\n x2 = chartArea.right;\n }\n\n const limit = valueOrDefault(options.ticks.maxTicksLimit, ticksLength);\n const step = Math.max(1, Math.ceil(ticksLength / limit));\n for (i = 0; i < ticksLength; i += step) {\n const context = this.getContext(i);\n const optsAtIndex = grid.setContext(context);\n const optsAtIndexBorder = border.setContext(context);\n\n const lineWidth = optsAtIndex.lineWidth;\n const lineColor = optsAtIndex.color;\n const borderDash = optsAtIndexBorder.dash || [];\n const borderDashOffset = optsAtIndexBorder.dashOffset;\n\n const tickWidth = optsAtIndex.tickWidth;\n const tickColor = optsAtIndex.tickColor;\n const tickBorderDash = optsAtIndex.tickBorderDash || [];\n const tickBorderDashOffset = optsAtIndex.tickBorderDashOffset;\n\n lineValue = getPixelForGridLine(this, i, offset);\n\n // Skip if the pixel is out of the range\n if (lineValue === undefined) {\n continue;\n }\n\n alignedLineValue = _alignPixel(chart, lineValue, lineWidth);\n\n if (isHorizontal) {\n tx1 = tx2 = x1 = x2 = alignedLineValue;\n } else {\n ty1 = ty2 = y1 = y2 = alignedLineValue;\n }\n\n items.push({\n tx1,\n ty1,\n tx2,\n ty2,\n x1,\n y1,\n x2,\n y2,\n width: lineWidth,\n color: lineColor,\n borderDash,\n borderDashOffset,\n tickWidth,\n tickColor,\n tickBorderDash,\n tickBorderDashOffset,\n });\n }\n\n this._ticksLength = ticksLength;\n this._borderValue = borderValue;\n\n return items;\n }\n\n /**\n\t * @private\n\t */\n _computeLabelItems(chartArea) {\n const axis = this.axis;\n const options = this.options;\n const {position, ticks: optionTicks} = options;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const {align, crossAlign, padding, mirror} = optionTicks;\n const tl = getTickMarkLength(options.grid);\n const tickAndPadding = tl + padding;\n const hTickAndPadding = mirror ? -padding : tickAndPadding;\n const rotation = -toRadians(this.labelRotation);\n const items = [];\n let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n let textBaseline = 'middle';\n\n if (position === 'top') {\n y = this.bottom - hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'bottom') {\n y = this.top + hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'left') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (position === 'right') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (axis === 'x') {\n if (position === 'center') {\n y = ((chartArea.top + chartArea.bottom) / 2) + tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n y = this.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding;\n }\n textAlign = this._getXAxisLabelAlignment();\n } else if (axis === 'y') {\n if (position === 'center') {\n x = ((chartArea.left + chartArea.right) / 2) - tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n x = this.chart.scales[positionAxisID].getPixelForValue(value);\n }\n textAlign = this._getYAxisLabelAlignment(tl).textAlign;\n }\n\n if (axis === 'y') {\n if (align === 'start') {\n textBaseline = 'top';\n } else if (align === 'end') {\n textBaseline = 'bottom';\n }\n }\n\n const labelSizes = this._getLabelSizes();\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n label = tick.label;\n\n const optsAtIndex = optionTicks.setContext(this.getContext(i));\n pixel = this.getPixelForTick(i) + optionTicks.labelOffset;\n font = this._resolveTickFontOptions(i);\n lineHeight = font.lineHeight;\n lineCount = isArray(label) ? label.length : 1;\n const halfCount = lineCount / 2;\n const color = optsAtIndex.color;\n const strokeColor = optsAtIndex.textStrokeColor;\n const strokeWidth = optsAtIndex.textStrokeWidth;\n let tickTextAlign = textAlign;\n\n if (isHorizontal) {\n x = pixel;\n\n if (textAlign === 'inner') {\n if (i === ilen - 1) {\n tickTextAlign = !this.options.reverse ? 'right' : 'left';\n } else if (i === 0) {\n tickTextAlign = !this.options.reverse ? 'left' : 'right';\n } else {\n tickTextAlign = 'center';\n }\n }\n\n if (position === 'top') {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = -lineCount * lineHeight + lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight;\n } else {\n textOffset = -labelSizes.highest.height + lineHeight / 2;\n }\n } else {\n // eslint-disable-next-line no-lonely-if\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight;\n } else {\n textOffset = labelSizes.highest.height - lineCount * lineHeight;\n }\n }\n if (mirror) {\n textOffset *= -1;\n }\n if (rotation !== 0 && !optsAtIndex.showLabelBackdrop) {\n x += (lineHeight / 2) * Math.sin(rotation);\n }\n } else {\n y = pixel;\n textOffset = (1 - lineCount) * lineHeight / 2;\n }\n\n let backdrop;\n\n if (optsAtIndex.showLabelBackdrop) {\n const labelPadding = toPadding(optsAtIndex.backdropPadding);\n const height = labelSizes.heights[i];\n const width = labelSizes.widths[i];\n\n let top = textOffset - labelPadding.top;\n let left = 0 - labelPadding.left;\n\n switch (textBaseline) {\n case 'middle':\n top -= height / 2;\n break;\n case 'bottom':\n top -= height;\n break;\n default:\n break;\n }\n\n switch (textAlign) {\n case 'center':\n left -= width / 2;\n break;\n case 'right':\n left -= width;\n break;\n default:\n break;\n }\n\n backdrop = {\n left,\n top,\n width: width + labelPadding.width,\n height: height + labelPadding.height,\n\n color: optsAtIndex.backdropColor,\n };\n }\n\n items.push({\n label,\n font,\n textOffset,\n options: {\n rotation,\n color,\n strokeColor,\n strokeWidth,\n textAlign: tickTextAlign,\n textBaseline,\n translation: [x, y],\n backdrop,\n }\n });\n }\n\n return items;\n }\n\n _getXAxisLabelAlignment() {\n const {position, ticks} = this.options;\n const rotation = -toRadians(this.labelRotation);\n\n if (rotation) {\n return position === 'top' ? 'left' : 'right';\n }\n\n let align = 'center';\n\n if (ticks.align === 'start') {\n align = 'left';\n } else if (ticks.align === 'end') {\n align = 'right';\n } else if (ticks.align === 'inner') {\n align = 'inner';\n }\n\n return align;\n }\n\n _getYAxisLabelAlignment(tl) {\n const {position, ticks: {crossAlign, mirror, padding}} = this.options;\n const labelSizes = this._getLabelSizes();\n const tickAndPadding = tl + padding;\n const widest = labelSizes.widest.width;\n\n let textAlign;\n let x;\n\n if (position === 'left') {\n if (mirror) {\n x = this.right + padding;\n\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += (widest / 2);\n } else {\n textAlign = 'right';\n x += widest;\n }\n } else {\n x = this.right - tickAndPadding;\n\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= (widest / 2);\n } else {\n textAlign = 'left';\n x = this.left;\n }\n }\n } else if (position === 'right') {\n if (mirror) {\n x = this.left + padding;\n\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= (widest / 2);\n } else {\n textAlign = 'left';\n x -= widest;\n }\n } else {\n x = this.left + tickAndPadding;\n\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x = this.right;\n }\n }\n } else {\n textAlign = 'right';\n }\n\n return {textAlign, x};\n }\n\n /**\n\t * @private\n\t */\n _computeLabelArea() {\n if (this.options.ticks.mirror) {\n return;\n }\n\n const chart = this.chart;\n const position = this.options.position;\n\n if (position === 'left' || position === 'right') {\n return {top: 0, left: this.left, bottom: chart.height, right: this.right};\n } if (position === 'top' || position === 'bottom') {\n return {top: this.top, left: 0, bottom: this.bottom, right: chart.width};\n }\n }\n\n /**\n * @protected\n */\n drawBackground() {\n const {ctx, options: {backgroundColor}, left, top, width, height} = this;\n if (backgroundColor) {\n ctx.save();\n ctx.fillStyle = backgroundColor;\n ctx.fillRect(left, top, width, height);\n ctx.restore();\n }\n }\n\n getLineWidthForValue(value) {\n const grid = this.options.grid;\n if (!this._isVisible() || !grid.display) {\n return 0;\n }\n const ticks = this.ticks;\n const index = ticks.findIndex(t => t.value === value);\n if (index >= 0) {\n const opts = grid.setContext(this.getContext(index));\n return opts.lineWidth;\n }\n return 0;\n }\n\n /**\n\t * @protected\n\t */\n drawGrid(chartArea) {\n const grid = this.options.grid;\n const ctx = this.ctx;\n const items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea));\n let i, ilen;\n\n const drawLine = (p1, p2, style) => {\n if (!style.width || !style.color) {\n return;\n }\n ctx.save();\n ctx.lineWidth = style.width;\n ctx.strokeStyle = style.color;\n ctx.setLineDash(style.borderDash || []);\n ctx.lineDashOffset = style.borderDashOffset;\n\n ctx.beginPath();\n ctx.moveTo(p1.x, p1.y);\n ctx.lineTo(p2.x, p2.y);\n ctx.stroke();\n ctx.restore();\n };\n\n if (grid.display) {\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n const item = items[i];\n\n if (grid.drawOnChartArea) {\n drawLine(\n {x: item.x1, y: item.y1},\n {x: item.x2, y: item.y2},\n item\n );\n }\n\n if (grid.drawTicks) {\n drawLine(\n {x: item.tx1, y: item.ty1},\n {x: item.tx2, y: item.ty2},\n {\n color: item.tickColor,\n width: item.tickWidth,\n borderDash: item.tickBorderDash,\n borderDashOffset: item.tickBorderDashOffset\n }\n );\n }\n }\n }\n }\n\n /**\n\t * @protected\n\t */\n drawBorder() {\n const {chart, ctx, options: {border, grid}} = this;\n const borderOpts = border.setContext(this.getContext());\n const axisWidth = border.display ? borderOpts.width : 0;\n if (!axisWidth) {\n return;\n }\n const lastLineWidth = grid.setContext(this.getContext(0)).lineWidth;\n const borderValue = this._borderValue;\n let x1, x2, y1, y2;\n\n if (this.isHorizontal()) {\n x1 = _alignPixel(chart, this.left, axisWidth) - axisWidth / 2;\n x2 = _alignPixel(chart, this.right, lastLineWidth) + lastLineWidth / 2;\n y1 = y2 = borderValue;\n } else {\n y1 = _alignPixel(chart, this.top, axisWidth) - axisWidth / 2;\n y2 = _alignPixel(chart, this.bottom, lastLineWidth) + lastLineWidth / 2;\n x1 = x2 = borderValue;\n }\n ctx.save();\n ctx.lineWidth = borderOpts.width;\n ctx.strokeStyle = borderOpts.color;\n\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.stroke();\n\n ctx.restore();\n }\n\n /**\n\t * @protected\n\t */\n drawLabels(chartArea) {\n const optionTicks = this.options.ticks;\n\n if (!optionTicks.display) {\n return;\n }\n\n const ctx = this.ctx;\n\n const area = this._computeLabelArea();\n if (area) {\n clipArea(ctx, area);\n }\n\n const items = this.getLabelItems(chartArea);\n for (const item of items) {\n const renderTextOptions = item.options;\n const tickFont = item.font;\n const label = item.label;\n const y = item.textOffset;\n renderText(ctx, label, 0, y, tickFont, renderTextOptions);\n }\n\n if (area) {\n unclipArea(ctx);\n }\n }\n\n /**\n\t * @protected\n\t */\n drawTitle() {\n const {ctx, options: {position, title, reverse}} = this;\n\n if (!title.display) {\n return;\n }\n\n const font = toFont(title.font);\n const padding = toPadding(title.padding);\n const align = title.align;\n let offset = font.lineHeight / 2;\n\n if (position === 'bottom' || position === 'center' || isObject(position)) {\n offset += padding.bottom;\n if (isArray(title.text)) {\n offset += font.lineHeight * (title.text.length - 1);\n }\n } else {\n offset += padding.top;\n }\n\n const {titleX, titleY, maxWidth, rotation} = titleArgs(this, offset, position, align);\n\n renderText(ctx, title.text, 0, 0, font, {\n color: title.color,\n maxWidth,\n rotation,\n textAlign: titleAlign(align, position, reverse),\n textBaseline: 'middle',\n translation: [titleX, titleY],\n });\n }\n\n draw(chartArea) {\n if (!this._isVisible()) {\n return;\n }\n\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawBorder();\n this.drawTitle();\n this.drawLabels(chartArea);\n }\n\n /**\n\t * @return {object[]}\n\t * @private\n\t */\n _layers() {\n const opts = this.options;\n const tz = opts.ticks && opts.ticks.z || 0;\n const gz = valueOrDefault(opts.grid && opts.grid.z, -1);\n const bz = valueOrDefault(opts.border && opts.border.z, 0);\n\n if (!this._isVisible() || this.draw !== Scale.prototype.draw) {\n // backward compatibility: draw has been overridden by custom scale\n return [{\n z: tz,\n draw: (chartArea) => {\n this.draw(chartArea);\n }\n }];\n }\n\n return [{\n z: gz,\n draw: (chartArea) => {\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawTitle();\n }\n }, {\n z: bz,\n draw: () => {\n this.drawBorder();\n }\n }, {\n z: tz,\n draw: (chartArea) => {\n this.drawLabels(chartArea);\n }\n }];\n }\n\n /**\n\t * Returns visible dataset metas that are attached to this scale\n\t * @param {string} [type] - if specified, also filter by dataset type\n\t * @return {object[]}\n\t */\n getMatchingVisibleMetas(type) {\n const metas = this.chart.getSortedVisibleDatasetMetas();\n const axisID = this.axis + 'AxisID';\n const result = [];\n let i, ilen;\n\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n const meta = metas[i];\n if (meta[axisID] === this.id && (!type || meta.type === type)) {\n result.push(meta);\n }\n }\n return result;\n }\n\n /**\n\t * @param {number} index\n\t * @return {object}\n\t * @protected\n \t */\n _resolveTickFontOptions(index) {\n const opts = this.options.ticks.setContext(this.getContext(index));\n return toFont(opts.font);\n }\n\n /**\n * @protected\n */\n _maxDigits() {\n const fontSize = this._resolveTickFontOptions(0).lineHeight;\n return (this.isHorizontal() ? this.width : this.height) / fontSize;\n }\n}\n","import {merge} from '../helpers/index.js';\nimport defaults, {overrides} from './core.defaults.js';\n\n/**\n * @typedef {{id: string, defaults: any, overrides?: any, defaultRoutes: any}} IChartComponent\n */\n\nexport default class TypedRegistry {\n constructor(type, scope, override) {\n this.type = type;\n this.scope = scope;\n this.override = override;\n this.items = Object.create(null);\n }\n\n isForType(type) {\n return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype);\n }\n\n /**\n\t * @param {IChartComponent} item\n\t * @returns {string} The scope where items defaults were registered to.\n\t */\n register(item) {\n const proto = Object.getPrototypeOf(item);\n let parentScope;\n\n if (isIChartComponent(proto)) {\n // Make sure the parent is registered and note the scope where its defaults are.\n parentScope = this.register(proto);\n }\n\n const items = this.items;\n const id = item.id;\n const scope = this.scope + '.' + id;\n\n if (!id) {\n throw new Error('class does not have id: ' + item);\n }\n\n if (id in items) {\n // already registered\n return scope;\n }\n\n items[id] = item;\n registerDefaults(item, scope, parentScope);\n if (this.override) {\n defaults.override(item.id, item.overrides);\n }\n\n return scope;\n }\n\n /**\n\t * @param {string} id\n\t * @returns {object?}\n\t */\n get(id) {\n return this.items[id];\n }\n\n /**\n\t * @param {IChartComponent} item\n\t */\n unregister(item) {\n const items = this.items;\n const id = item.id;\n const scope = this.scope;\n\n if (id in items) {\n delete items[id];\n }\n\n if (scope && id in defaults[scope]) {\n delete defaults[scope][id];\n if (this.override) {\n delete overrides[id];\n }\n }\n }\n}\n\nfunction registerDefaults(item, scope, parentScope) {\n // Inherit the parent's defaults and keep existing defaults\n const itemDefaults = merge(Object.create(null), [\n parentScope ? defaults.get(parentScope) : {},\n defaults.get(scope),\n item.defaults\n ]);\n\n defaults.set(scope, itemDefaults);\n\n if (item.defaultRoutes) {\n routeDefaults(scope, item.defaultRoutes);\n }\n\n if (item.descriptors) {\n defaults.describe(scope, item.descriptors);\n }\n}\n\nfunction routeDefaults(scope, routes) {\n Object.keys(routes).forEach(property => {\n const propertyParts = property.split('.');\n const sourceName = propertyParts.pop();\n const sourceScope = [scope].concat(propertyParts).join('.');\n const parts = routes[property].split('.');\n const targetName = parts.pop();\n const targetScope = parts.join('.');\n defaults.route(sourceScope, sourceName, targetScope, targetName);\n });\n}\n\nfunction isIChartComponent(proto) {\n return 'id' in proto && 'defaults' in proto;\n}\n","import DatasetController from './core.datasetController.js';\nimport Element from './core.element.js';\nimport Scale from './core.scale.js';\nimport TypedRegistry from './core.typedRegistry.js';\nimport {each, callback as call, _capitalize} from '../helpers/helpers.core.js';\n\n/**\n * Please use the module's default export which provides a singleton instance\n * Note: class is exported for typedoc\n */\nexport class Registry {\n constructor() {\n this.controllers = new TypedRegistry(DatasetController, 'datasets', true);\n this.elements = new TypedRegistry(Element, 'elements');\n this.plugins = new TypedRegistry(Object, 'plugins');\n this.scales = new TypedRegistry(Scale, 'scales');\n // Order is important, Scale has Element in prototype chain,\n // so Scales must be before Elements. Plugins are a fallback, so not listed here.\n this._typedRegistries = [this.controllers, this.scales, this.elements];\n }\n\n /**\n\t * @param {...any} args\n\t */\n add(...args) {\n this._each('register', args);\n }\n\n remove(...args) {\n this._each('unregister', args);\n }\n\n /**\n\t * @param {...typeof DatasetController} args\n\t */\n addControllers(...args) {\n this._each('register', args, this.controllers);\n }\n\n /**\n\t * @param {...typeof Element} args\n\t */\n addElements(...args) {\n this._each('register', args, this.elements);\n }\n\n /**\n\t * @param {...any} args\n\t */\n addPlugins(...args) {\n this._each('register', args, this.plugins);\n }\n\n /**\n\t * @param {...typeof Scale} args\n\t */\n addScales(...args) {\n this._each('register', args, this.scales);\n }\n\n /**\n\t * @param {string} id\n\t * @returns {typeof DatasetController}\n\t */\n getController(id) {\n return this._get(id, this.controllers, 'controller');\n }\n\n /**\n\t * @param {string} id\n\t * @returns {typeof Element}\n\t */\n getElement(id) {\n return this._get(id, this.elements, 'element');\n }\n\n /**\n\t * @param {string} id\n\t * @returns {object}\n\t */\n getPlugin(id) {\n return this._get(id, this.plugins, 'plugin');\n }\n\n /**\n\t * @param {string} id\n\t * @returns {typeof Scale}\n\t */\n getScale(id) {\n return this._get(id, this.scales, 'scale');\n }\n\n /**\n\t * @param {...typeof DatasetController} args\n\t */\n removeControllers(...args) {\n this._each('unregister', args, this.controllers);\n }\n\n /**\n\t * @param {...typeof Element} args\n\t */\n removeElements(...args) {\n this._each('unregister', args, this.elements);\n }\n\n /**\n\t * @param {...any} args\n\t */\n removePlugins(...args) {\n this._each('unregister', args, this.plugins);\n }\n\n /**\n\t * @param {...typeof Scale} args\n\t */\n removeScales(...args) {\n this._each('unregister', args, this.scales);\n }\n\n /**\n\t * @private\n\t */\n _each(method, args, typedRegistry) {\n [...args].forEach(arg => {\n const reg = typedRegistry || this._getRegistryForType(arg);\n if (typedRegistry || reg.isForType(arg) || (reg === this.plugins && arg.id)) {\n this._exec(method, reg, arg);\n } else {\n // Handle loopable args\n // Use case:\n // import * as plugins from './plugins.js';\n // Chart.register(plugins);\n each(arg, item => {\n // If there are mixed types in the loopable, make sure those are\n // registered in correct registry\n // Use case: (treemap exporting controller, elements etc)\n // import * as treemap from 'chartjs-chart-treemap.js';\n // Chart.register(treemap);\n\n const itemReg = typedRegistry || this._getRegistryForType(item);\n this._exec(method, itemReg, item);\n });\n }\n });\n }\n\n /**\n\t * @private\n\t */\n _exec(method, registry, component) {\n const camelMethod = _capitalize(method);\n call(component['before' + camelMethod], [], component); // beforeRegister / beforeUnregister\n registry[method](component);\n call(component['after' + camelMethod], [], component); // afterRegister / afterUnregister\n }\n\n /**\n\t * @private\n\t */\n _getRegistryForType(type) {\n for (let i = 0; i < this._typedRegistries.length; i++) {\n const reg = this._typedRegistries[i];\n if (reg.isForType(type)) {\n return reg;\n }\n }\n // plugins is the fallback registry\n return this.plugins;\n }\n\n /**\n\t * @private\n\t */\n _get(id, typedRegistry, type) {\n const item = typedRegistry.get(id);\n if (item === undefined) {\n throw new Error('\"' + id + '\" is not a registered ' + type + '.');\n }\n return item;\n }\n\n}\n\n// singleton instance\nexport default /* #__PURE__ */ new Registry();\n","import registry from './core.registry.js';\nimport {callback as callCallback, isNullOrUndef, valueOrDefault} from '../helpers/helpers.core.js';\n\n/**\n * @typedef { import('./core.controller.js').default } Chart\n * @typedef { import('../types/index.js').ChartEvent } ChartEvent\n * @typedef { import('../plugins/plugin.tooltip.js').default } Tooltip\n */\n\n/**\n * @callback filterCallback\n * @param {{plugin: object, options: object}} value\n * @param {number} [index]\n * @param {array} [array]\n * @param {object} [thisArg]\n * @return {boolean}\n */\n\n\nexport default class PluginService {\n constructor() {\n this._init = [];\n }\n\n /**\n\t * Calls enabled plugins for `chart` on the specified hook and with the given args.\n\t * This method immediately returns as soon as a plugin explicitly returns false. The\n\t * returned value can be used, for instance, to interrupt the current action.\n\t * @param {Chart} chart - The chart instance for which plugins should be called.\n\t * @param {string} hook - The name of the plugin method to call (e.g. 'beforeUpdate').\n\t * @param {object} [args] - Extra arguments to apply to the hook call.\n * @param {filterCallback} [filter] - Filtering function for limiting which plugins are notified\n\t * @returns {boolean} false if any of the plugins return false, else returns true.\n\t */\n notify(chart, hook, args, filter) {\n if (hook === 'beforeInit') {\n this._init = this._createDescriptors(chart, true);\n this._notify(this._init, chart, 'install');\n }\n\n const descriptors = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart);\n const result = this._notify(descriptors, chart, hook, args);\n\n if (hook === 'afterDestroy') {\n this._notify(descriptors, chart, 'stop');\n this._notify(this._init, chart, 'uninstall');\n }\n return result;\n }\n\n /**\n\t * @private\n\t */\n _notify(descriptors, chart, hook, args) {\n args = args || {};\n for (const descriptor of descriptors) {\n const plugin = descriptor.plugin;\n const method = plugin[hook];\n const params = [chart, args, descriptor.options];\n if (callCallback(method, params, plugin) === false && args.cancelable) {\n return false;\n }\n }\n\n return true;\n }\n\n invalidate() {\n // When plugins are registered, there is the possibility of a double\n // invalidate situation. In this case, we only want to invalidate once.\n // If we invalidate multiple times, the `_oldCache` is lost and all of the\n // plugins are restarted without being correctly stopped.\n // See https://github.com/chartjs/Chart.js/issues/8147\n if (!isNullOrUndef(this._cache)) {\n this._oldCache = this._cache;\n this._cache = undefined;\n }\n }\n\n /**\n\t * @param {Chart} chart\n\t * @private\n\t */\n _descriptors(chart) {\n if (this._cache) {\n return this._cache;\n }\n\n const descriptors = this._cache = this._createDescriptors(chart);\n\n this._notifyStateChanges(chart);\n\n return descriptors;\n }\n\n _createDescriptors(chart, all) {\n const config = chart && chart.config;\n const options = valueOrDefault(config.options && config.options.plugins, {});\n const plugins = allPlugins(config);\n // options === false => all plugins are disabled\n return options === false && !all ? [] : createDescriptors(chart, plugins, options, all);\n }\n\n /**\n\t * @param {Chart} chart\n\t * @private\n\t */\n _notifyStateChanges(chart) {\n const previousDescriptors = this._oldCache || [];\n const descriptors = this._cache;\n const diff = (a, b) => a.filter(x => !b.some(y => x.plugin.id === y.plugin.id));\n this._notify(diff(previousDescriptors, descriptors), chart, 'stop');\n this._notify(diff(descriptors, previousDescriptors), chart, 'start');\n }\n}\n\n/**\n * @param {import('./core.config.js').default} config\n */\nfunction allPlugins(config) {\n const localIds = {};\n const plugins = [];\n const keys = Object.keys(registry.plugins.items);\n for (let i = 0; i < keys.length; i++) {\n plugins.push(registry.getPlugin(keys[i]));\n }\n\n const local = config.plugins || [];\n for (let i = 0; i < local.length; i++) {\n const plugin = local[i];\n\n if (plugins.indexOf(plugin) === -1) {\n plugins.push(plugin);\n localIds[plugin.id] = true;\n }\n }\n\n return {plugins, localIds};\n}\n\nfunction getOpts(options, all) {\n if (!all && options === false) {\n return null;\n }\n if (options === true) {\n return {};\n }\n return options;\n}\n\nfunction createDescriptors(chart, {plugins, localIds}, options, all) {\n const result = [];\n const context = chart.getContext();\n\n for (const plugin of plugins) {\n const id = plugin.id;\n const opts = getOpts(options[id], all);\n if (opts === null) {\n continue;\n }\n result.push({\n plugin,\n options: pluginOpts(chart.config, {plugin, local: localIds[id]}, opts, context)\n });\n }\n\n return result;\n}\n\nfunction pluginOpts(config, {plugin, local}, opts, context) {\n const keys = config.pluginScopeKeys(plugin);\n const scopes = config.getOptionScopes(opts, keys);\n if (local && plugin.defaults) {\n // make sure plugin defaults are in scopes for local (not registered) plugins\n scopes.push(plugin.defaults);\n }\n return config.createResolver(scopes, context, [''], {\n // These are just defaults that plugins can override\n scriptable: false,\n indexable: false,\n allKeys: true\n });\n}\n","import defaults, {overrides, descriptors} from './core.defaults.js';\nimport {mergeIf, resolveObjectKey, isArray, isFunction, valueOrDefault, isObject} from '../helpers/helpers.core.js';\nimport {_attachContext, _createResolver, _descriptors} from '../helpers/helpers.config.js';\n\nexport function getIndexAxis(type, options) {\n const datasetDefaults = defaults.datasets[type] || {};\n const datasetOptions = (options.datasets || {})[type] || {};\n return datasetOptions.indexAxis || options.indexAxis || datasetDefaults.indexAxis || 'x';\n}\n\nfunction getAxisFromDefaultScaleID(id, indexAxis) {\n let axis = id;\n if (id === '_index_') {\n axis = indexAxis;\n } else if (id === '_value_') {\n axis = indexAxis === 'x' ? 'y' : 'x';\n }\n return axis;\n}\n\nfunction getDefaultScaleIDFromAxis(axis, indexAxis) {\n return axis === indexAxis ? '_index_' : '_value_';\n}\n\nfunction idMatchesAxis(id) {\n if (id === 'x' || id === 'y' || id === 'r') {\n return id;\n }\n}\n\nfunction axisFromPosition(position) {\n if (position === 'top' || position === 'bottom') {\n return 'x';\n }\n if (position === 'left' || position === 'right') {\n return 'y';\n }\n}\n\nexport function determineAxis(id, ...scaleOptions) {\n if (idMatchesAxis(id)) {\n return id;\n }\n for (const opts of scaleOptions) {\n const axis = opts.axis\n || axisFromPosition(opts.position)\n || id.length > 1 && idMatchesAxis(id[0].toLowerCase());\n if (axis) {\n return axis;\n }\n }\n throw new Error(`Cannot determine type of '${id}' axis. Please provide 'axis' or 'position' option.`);\n}\n\nfunction getAxisFromDataset(id, axis, dataset) {\n if (dataset[axis + 'AxisID'] === id) {\n return {axis};\n }\n}\n\nfunction retrieveAxisFromDatasets(id, config) {\n if (config.data && config.data.datasets) {\n const boundDs = config.data.datasets.filter((d) => d.xAxisID === id || d.yAxisID === id);\n if (boundDs.length) {\n return getAxisFromDataset(id, 'x', boundDs[0]) || getAxisFromDataset(id, 'y', boundDs[0]);\n }\n }\n return {};\n}\n\nfunction mergeScaleConfig(config, options) {\n const chartDefaults = overrides[config.type] || {scales: {}};\n const configScales = options.scales || {};\n const chartIndexAxis = getIndexAxis(config.type, options);\n const scales = Object.create(null);\n\n // First figure out first scale id's per axis.\n Object.keys(configScales).forEach(id => {\n const scaleConf = configScales[id];\n if (!isObject(scaleConf)) {\n return console.error(`Invalid scale configuration for scale: ${id}`);\n }\n if (scaleConf._proxy) {\n return console.warn(`Ignoring resolver passed as options for scale: ${id}`);\n }\n const axis = determineAxis(id, scaleConf, retrieveAxisFromDatasets(id, config), defaults.scales[scaleConf.type]);\n const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis);\n const defaultScaleOptions = chartDefaults.scales || {};\n scales[id] = mergeIf(Object.create(null), [{axis}, scaleConf, defaultScaleOptions[axis], defaultScaleOptions[defaultId]]);\n });\n\n // Then merge dataset defaults to scale configs\n config.data.datasets.forEach(dataset => {\n const type = dataset.type || config.type;\n const indexAxis = dataset.indexAxis || getIndexAxis(type, options);\n const datasetDefaults = overrides[type] || {};\n const defaultScaleOptions = datasetDefaults.scales || {};\n Object.keys(defaultScaleOptions).forEach(defaultID => {\n const axis = getAxisFromDefaultScaleID(defaultID, indexAxis);\n const id = dataset[axis + 'AxisID'] || axis;\n scales[id] = scales[id] || Object.create(null);\n mergeIf(scales[id], [{axis}, configScales[id], defaultScaleOptions[defaultID]]);\n });\n });\n\n // apply scale defaults, if not overridden by dataset defaults\n Object.keys(scales).forEach(key => {\n const scale = scales[key];\n mergeIf(scale, [defaults.scales[scale.type], defaults.scale]);\n });\n\n return scales;\n}\n\nfunction initOptions(config) {\n const options = config.options || (config.options = {});\n\n options.plugins = valueOrDefault(options.plugins, {});\n options.scales = mergeScaleConfig(config, options);\n}\n\nfunction initData(data) {\n data = data || {};\n data.datasets = data.datasets || [];\n data.labels = data.labels || [];\n return data;\n}\n\nfunction initConfig(config) {\n config = config || {};\n config.data = initData(config.data);\n\n initOptions(config);\n\n return config;\n}\n\nconst keyCache = new Map();\nconst keysCached = new Set();\n\nfunction cachedKeys(cacheKey, generate) {\n let keys = keyCache.get(cacheKey);\n if (!keys) {\n keys = generate();\n keyCache.set(cacheKey, keys);\n keysCached.add(keys);\n }\n return keys;\n}\n\nconst addIfFound = (set, obj, key) => {\n const opts = resolveObjectKey(obj, key);\n if (opts !== undefined) {\n set.add(opts);\n }\n};\n\nexport default class Config {\n constructor(config) {\n this._config = initConfig(config);\n this._scopeCache = new Map();\n this._resolverCache = new Map();\n }\n\n get platform() {\n return this._config.platform;\n }\n\n get type() {\n return this._config.type;\n }\n\n set type(type) {\n this._config.type = type;\n }\n\n get data() {\n return this._config.data;\n }\n\n set data(data) {\n this._config.data = initData(data);\n }\n\n get options() {\n return this._config.options;\n }\n\n set options(options) {\n this._config.options = options;\n }\n\n get plugins() {\n return this._config.plugins;\n }\n\n update() {\n const config = this._config;\n this.clearCache();\n initOptions(config);\n }\n\n clearCache() {\n this._scopeCache.clear();\n this._resolverCache.clear();\n }\n\n /**\n * Returns the option scope keys for resolving dataset options.\n * These keys do not include the dataset itself, because it is not under options.\n * @param {string} datasetType\n * @return {string[][]}\n */\n datasetScopeKeys(datasetType) {\n return cachedKeys(datasetType,\n () => [[\n `datasets.${datasetType}`,\n ''\n ]]);\n }\n\n /**\n * Returns the option scope keys for resolving dataset animation options.\n * These keys do not include the dataset itself, because it is not under options.\n * @param {string} datasetType\n * @param {string} transition\n * @return {string[][]}\n */\n datasetAnimationScopeKeys(datasetType, transition) {\n return cachedKeys(`${datasetType}.transition.${transition}`,\n () => [\n [\n `datasets.${datasetType}.transitions.${transition}`,\n `transitions.${transition}`,\n ],\n // The following are used for looking up the `animations` and `animation` keys\n [\n `datasets.${datasetType}`,\n ''\n ]\n ]);\n }\n\n /**\n * Returns the options scope keys for resolving element options that belong\n * to an dataset. These keys do not include the dataset itself, because it\n * is not under options.\n * @param {string} datasetType\n * @param {string} elementType\n * @return {string[][]}\n */\n datasetElementScopeKeys(datasetType, elementType) {\n return cachedKeys(`${datasetType}-${elementType}`,\n () => [[\n `datasets.${datasetType}.elements.${elementType}`,\n `datasets.${datasetType}`,\n `elements.${elementType}`,\n ''\n ]]);\n }\n\n /**\n * Returns the options scope keys for resolving plugin options.\n * @param {{id: string, additionalOptionScopes?: string[]}} plugin\n * @return {string[][]}\n */\n pluginScopeKeys(plugin) {\n const id = plugin.id;\n const type = this.type;\n return cachedKeys(`${type}-plugin-${id}`,\n () => [[\n `plugins.${id}`,\n ...plugin.additionalOptionScopes || [],\n ]]);\n }\n\n /**\n * @private\n */\n _cachedScopes(mainScope, resetCache) {\n const _scopeCache = this._scopeCache;\n let cache = _scopeCache.get(mainScope);\n if (!cache || resetCache) {\n cache = new Map();\n _scopeCache.set(mainScope, cache);\n }\n return cache;\n }\n\n /**\n * Resolves the objects from options and defaults for option value resolution.\n * @param {object} mainScope - The main scope object for options\n * @param {string[][]} keyLists - The arrays of keys in resolution order\n * @param {boolean} [resetCache] - reset the cache for this mainScope\n */\n getOptionScopes(mainScope, keyLists, resetCache) {\n const {options, type} = this;\n const cache = this._cachedScopes(mainScope, resetCache);\n const cached = cache.get(keyLists);\n if (cached) {\n return cached;\n }\n\n const scopes = new Set();\n\n keyLists.forEach(keys => {\n if (mainScope) {\n scopes.add(mainScope);\n keys.forEach(key => addIfFound(scopes, mainScope, key));\n }\n keys.forEach(key => addIfFound(scopes, options, key));\n keys.forEach(key => addIfFound(scopes, overrides[type] || {}, key));\n keys.forEach(key => addIfFound(scopes, defaults, key));\n keys.forEach(key => addIfFound(scopes, descriptors, key));\n });\n\n const array = Array.from(scopes);\n if (array.length === 0) {\n array.push(Object.create(null));\n }\n if (keysCached.has(keyLists)) {\n cache.set(keyLists, array);\n }\n return array;\n }\n\n /**\n * Returns the option scopes for resolving chart options\n * @return {object[]}\n */\n chartOptionScopes() {\n const {options, type} = this;\n\n return [\n options,\n overrides[type] || {},\n defaults.datasets[type] || {}, // https://github.com/chartjs/Chart.js/issues/8531\n {type},\n defaults,\n descriptors\n ];\n }\n\n /**\n * @param {object[]} scopes\n * @param {string[]} names\n * @param {function|object} context\n * @param {string[]} [prefixes]\n * @return {object}\n */\n resolveNamedOptions(scopes, names, context, prefixes = ['']) {\n const result = {$shared: true};\n const {resolver, subPrefixes} = getResolver(this._resolverCache, scopes, prefixes);\n let options = resolver;\n if (needContext(resolver, names)) {\n result.$shared = false;\n context = isFunction(context) ? context() : context;\n // subResolver is passed to scriptable options. It should not resolve to hover options.\n const subResolver = this.createResolver(scopes, context, subPrefixes);\n options = _attachContext(resolver, context, subResolver);\n }\n\n for (const prop of names) {\n result[prop] = options[prop];\n }\n return result;\n }\n\n /**\n * @param {object[]} scopes\n * @param {object} [context]\n * @param {string[]} [prefixes]\n * @param {{scriptable: boolean, indexable: boolean, allKeys?: boolean}} [descriptorDefaults]\n */\n createResolver(scopes, context, prefixes = [''], descriptorDefaults) {\n const {resolver} = getResolver(this._resolverCache, scopes, prefixes);\n return isObject(context)\n ? _attachContext(resolver, context, undefined, descriptorDefaults)\n : resolver;\n }\n}\n\nfunction getResolver(resolverCache, scopes, prefixes) {\n let cache = resolverCache.get(scopes);\n if (!cache) {\n cache = new Map();\n resolverCache.set(scopes, cache);\n }\n const cacheKey = prefixes.join();\n let cached = cache.get(cacheKey);\n if (!cached) {\n const resolver = _createResolver(scopes, prefixes);\n cached = {\n resolver,\n subPrefixes: prefixes.filter(p => !p.toLowerCase().includes('hover'))\n };\n cache.set(cacheKey, cached);\n }\n return cached;\n}\n\nconst hasFunction = value => isObject(value)\n && Object.getOwnPropertyNames(value).reduce((acc, key) => acc || isFunction(value[key]), false);\n\nfunction needContext(proxy, names) {\n const {isScriptable, isIndexable} = _descriptors(proxy);\n\n for (const prop of names) {\n const scriptable = isScriptable(prop);\n const indexable = isIndexable(prop);\n const value = (indexable || scriptable) && proxy[prop];\n if ((scriptable && (isFunction(value) || hasFunction(value)))\n || (indexable && isArray(value))) {\n return true;\n }\n }\n return false;\n}\n","import animator from './core.animator.js';\nimport defaults, {overrides} from './core.defaults.js';\nimport Interaction from './core.interaction.js';\nimport layouts from './core.layouts.js';\nimport {_detectPlatform} from '../platform/index.js';\nimport PluginService from './core.plugins.js';\nimport registry from './core.registry.js';\nimport Config, {determineAxis, getIndexAxis} from './core.config.js';\nimport {retinaScale, _isDomSupported} from '../helpers/helpers.dom.js';\nimport {each, callback as callCallback, uid, valueOrDefault, _elementsEqual, isNullOrUndef, setsEqual, defined, isFunction, _isClickEvent} from '../helpers/helpers.core.js';\nimport {clearCanvas, clipArea, createContext, unclipArea, _isPointInArea} from '../helpers/index.js';\n// @ts-ignore\nimport {version} from '../../package.json';\nimport {debounce} from '../helpers/helpers.extras.js';\n\n/**\n * @typedef { import('../types/index.js').ChartEvent } ChartEvent\n * @typedef { import('../types/index.js').Point } Point\n */\n\nconst KNOWN_POSITIONS = ['top', 'bottom', 'left', 'right', 'chartArea'];\nfunction positionIsHorizontal(position, axis) {\n return position === 'top' || position === 'bottom' || (KNOWN_POSITIONS.indexOf(position) === -1 && axis === 'x');\n}\n\nfunction compare2Level(l1, l2) {\n return function(a, b) {\n return a[l1] === b[l1]\n ? a[l2] - b[l2]\n : a[l1] - b[l1];\n };\n}\n\nfunction onAnimationsComplete(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n\n chart.notifyPlugins('afterRender');\n callCallback(animationOptions && animationOptions.onComplete, [context], chart);\n}\n\nfunction onAnimationProgress(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n callCallback(animationOptions && animationOptions.onProgress, [context], chart);\n}\n\n/**\n * Chart.js can take a string id of a canvas element, a 2d context, or a canvas element itself.\n * Attempt to unwrap the item passed into the chart constructor so that it is a canvas element (if possible).\n */\nfunction getCanvas(item) {\n if (_isDomSupported() && typeof item === 'string') {\n item = document.getElementById(item);\n } else if (item && item.length) {\n // Support for array based queries (such as jQuery)\n item = item[0];\n }\n\n if (item && item.canvas) {\n // Support for any object associated to a canvas (including a context2d)\n item = item.canvas;\n }\n return item;\n}\n\nconst instances = {};\nconst getChart = (key) => {\n const canvas = getCanvas(key);\n return Object.values(instances).filter((c) => c.canvas === canvas).pop();\n};\n\nfunction moveNumericKeys(obj, start, move) {\n const keys = Object.keys(obj);\n for (const key of keys) {\n const intKey = +key;\n if (intKey >= start) {\n const value = obj[key];\n delete obj[key];\n if (move > 0 || intKey > start) {\n obj[intKey + move] = value;\n }\n }\n }\n}\n\n/**\n * @param {ChartEvent} e\n * @param {ChartEvent|null} lastEvent\n * @param {boolean} inChartArea\n * @param {boolean} isClick\n * @returns {ChartEvent|null}\n */\nfunction determineLastEvent(e, lastEvent, inChartArea, isClick) {\n if (!inChartArea || e.type === 'mouseout') {\n return null;\n }\n if (isClick) {\n return lastEvent;\n }\n return e;\n}\n\nfunction getSizeForArea(scale, chartArea, field) {\n return scale.options.clip ? scale[field] : chartArea[field];\n}\n\nfunction getDatasetArea(meta, chartArea) {\n const {xScale, yScale} = meta;\n if (xScale && yScale) {\n return {\n left: getSizeForArea(xScale, chartArea, 'left'),\n right: getSizeForArea(xScale, chartArea, 'right'),\n top: getSizeForArea(yScale, chartArea, 'top'),\n bottom: getSizeForArea(yScale, chartArea, 'bottom')\n };\n }\n return chartArea;\n}\n\nclass Chart {\n\n static defaults = defaults;\n static instances = instances;\n static overrides = overrides;\n static registry = registry;\n static version = version;\n static getChart = getChart;\n\n static register(...items) {\n registry.add(...items);\n invalidatePlugins();\n }\n\n static unregister(...items) {\n registry.remove(...items);\n invalidatePlugins();\n }\n\n // eslint-disable-next-line max-statements\n constructor(item, userConfig) {\n const config = this.config = new Config(userConfig);\n const initialCanvas = getCanvas(item);\n const existingChart = getChart(initialCanvas);\n if (existingChart) {\n throw new Error(\n 'Canvas is already in use. Chart with ID \\'' + existingChart.id + '\\'' +\n\t\t\t\t' must be destroyed before the canvas with ID \\'' + existingChart.canvas.id + '\\' can be reused.'\n );\n }\n\n const options = config.createResolver(config.chartOptionScopes(), this.getContext());\n\n this.platform = new (config.platform || _detectPlatform(initialCanvas))();\n this.platform.updateConfig(config);\n\n const context = this.platform.acquireContext(initialCanvas, options.aspectRatio);\n const canvas = context && context.canvas;\n const height = canvas && canvas.height;\n const width = canvas && canvas.width;\n\n this.id = uid();\n this.ctx = context;\n this.canvas = canvas;\n this.width = width;\n this.height = height;\n this._options = options;\n // Store the previously used aspect ratio to determine if a resize\n // is needed during updates. Do this after _options is set since\n // aspectRatio uses a getter\n this._aspectRatio = this.aspectRatio;\n this._layers = [];\n this._metasets = [];\n this._stacks = undefined;\n this.boxes = [];\n this.currentDevicePixelRatio = undefined;\n this.chartArea = undefined;\n this._active = [];\n this._lastEvent = undefined;\n this._listeners = {};\n /** @type {?{attach?: function, detach?: function, resize?: function}} */\n this._responsiveListeners = undefined;\n this._sortedMetasets = [];\n this.scales = {};\n this._plugins = new PluginService();\n this.$proxies = {};\n this._hiddenIndices = {};\n this.attached = false;\n this._animationsDisabled = undefined;\n this.$context = undefined;\n this._doResize = debounce(mode => this.update(mode), options.resizeDelay || 0);\n this._dataChanges = [];\n\n // Add the chart instance to the global namespace\n instances[this.id] = this;\n\n if (!context || !canvas) {\n // The given item is not a compatible context2d element, let's return before finalizing\n // the chart initialization but after setting basic chart / controller properties that\n // can help to figure out that the chart is not valid (e.g chart.canvas !== null);\n // https://github.com/chartjs/Chart.js/issues/2807\n console.error(\"Failed to create chart: can't acquire context from the given item\");\n return;\n }\n\n animator.listen(this, 'complete', onAnimationsComplete);\n animator.listen(this, 'progress', onAnimationProgress);\n\n this._initialize();\n if (this.attached) {\n this.update();\n }\n }\n\n get aspectRatio() {\n const {options: {aspectRatio, maintainAspectRatio}, width, height, _aspectRatio} = this;\n if (!isNullOrUndef(aspectRatio)) {\n // If aspectRatio is defined in options, use that.\n return aspectRatio;\n }\n\n if (maintainAspectRatio && _aspectRatio) {\n // If maintainAspectRatio is truthly and we had previously determined _aspectRatio, use that\n return _aspectRatio;\n }\n\n // Calculate\n return height ? width / height : null;\n }\n\n get data() {\n return this.config.data;\n }\n\n set data(data) {\n this.config.data = data;\n }\n\n get options() {\n return this._options;\n }\n\n set options(options) {\n this.config.options = options;\n }\n\n get registry() {\n return registry;\n }\n\n /**\n\t * @private\n\t */\n _initialize() {\n // Before init plugin notification\n this.notifyPlugins('beforeInit');\n\n if (this.options.responsive) {\n this.resize();\n } else {\n retinaScale(this, this.options.devicePixelRatio);\n }\n\n this.bindEvents();\n\n // After init plugin notification\n this.notifyPlugins('afterInit');\n\n return this;\n }\n\n clear() {\n clearCanvas(this.canvas, this.ctx);\n return this;\n }\n\n stop() {\n animator.stop(this);\n return this;\n }\n\n /**\n\t * Resize the chart to its container or to explicit dimensions.\n\t * @param {number} [width]\n\t * @param {number} [height]\n\t */\n resize(width, height) {\n if (!animator.running(this)) {\n this._resize(width, height);\n } else {\n this._resizeBeforeDraw = {width, height};\n }\n }\n\n _resize(width, height) {\n const options = this.options;\n const canvas = this.canvas;\n const aspectRatio = options.maintainAspectRatio && this.aspectRatio;\n const newSize = this.platform.getMaximumSize(canvas, width, height, aspectRatio);\n const newRatio = options.devicePixelRatio || this.platform.getDevicePixelRatio();\n const mode = this.width ? 'resize' : 'attach';\n\n this.width = newSize.width;\n this.height = newSize.height;\n this._aspectRatio = this.aspectRatio;\n if (!retinaScale(this, newRatio, true)) {\n return;\n }\n\n this.notifyPlugins('resize', {size: newSize});\n\n callCallback(options.onResize, [this, newSize], this);\n\n if (this.attached) {\n if (this._doResize(mode)) {\n // The resize update is delayed, only draw without updating.\n this.render();\n }\n }\n }\n\n ensureScalesHaveIDs() {\n const options = this.options;\n const scalesOptions = options.scales || {};\n\n each(scalesOptions, (axisOptions, axisID) => {\n axisOptions.id = axisID;\n });\n }\n\n /**\n\t * Builds a map of scale ID to scale object for future lookup.\n\t */\n buildOrUpdateScales() {\n const options = this.options;\n const scaleOpts = options.scales;\n const scales = this.scales;\n const updated = Object.keys(scales).reduce((obj, id) => {\n obj[id] = false;\n return obj;\n }, {});\n let items = [];\n\n if (scaleOpts) {\n items = items.concat(\n Object.keys(scaleOpts).map((id) => {\n const scaleOptions = scaleOpts[id];\n const axis = determineAxis(id, scaleOptions);\n const isRadial = axis === 'r';\n const isHorizontal = axis === 'x';\n return {\n options: scaleOptions,\n dposition: isRadial ? 'chartArea' : isHorizontal ? 'bottom' : 'left',\n dtype: isRadial ? 'radialLinear' : isHorizontal ? 'category' : 'linear'\n };\n })\n );\n }\n\n each(items, (item) => {\n const scaleOptions = item.options;\n const id = scaleOptions.id;\n const axis = determineAxis(id, scaleOptions);\n const scaleType = valueOrDefault(scaleOptions.type, item.dtype);\n\n if (scaleOptions.position === undefined || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) {\n scaleOptions.position = item.dposition;\n }\n\n updated[id] = true;\n let scale = null;\n if (id in scales && scales[id].type === scaleType) {\n scale = scales[id];\n } else {\n const scaleClass = registry.getScale(scaleType);\n scale = new scaleClass({\n id,\n type: scaleType,\n ctx: this.ctx,\n chart: this\n });\n scales[scale.id] = scale;\n }\n\n scale.init(scaleOptions, options);\n });\n // clear up discarded scales\n each(updated, (hasUpdated, id) => {\n if (!hasUpdated) {\n delete scales[id];\n }\n });\n\n each(scales, (scale) => {\n layouts.configure(this, scale, scale.options);\n layouts.addBox(this, scale);\n });\n }\n\n /**\n\t * @private\n\t */\n _updateMetasets() {\n const metasets = this._metasets;\n const numData = this.data.datasets.length;\n const numMeta = metasets.length;\n\n metasets.sort((a, b) => a.index - b.index);\n if (numMeta > numData) {\n for (let i = numData; i < numMeta; ++i) {\n this._destroyDatasetMeta(i);\n }\n metasets.splice(numData, numMeta - numData);\n }\n this._sortedMetasets = metasets.slice(0).sort(compare2Level('order', 'index'));\n }\n\n /**\n\t * @private\n\t */\n _removeUnreferencedMetasets() {\n const {_metasets: metasets, data: {datasets}} = this;\n if (metasets.length > datasets.length) {\n delete this._stacks;\n }\n metasets.forEach((meta, index) => {\n if (datasets.filter(x => x === meta._dataset).length === 0) {\n this._destroyDatasetMeta(index);\n }\n });\n }\n\n buildOrUpdateControllers() {\n const newControllers = [];\n const datasets = this.data.datasets;\n let i, ilen;\n\n this._removeUnreferencedMetasets();\n\n for (i = 0, ilen = datasets.length; i < ilen; i++) {\n const dataset = datasets[i];\n let meta = this.getDatasetMeta(i);\n const type = dataset.type || this.config.type;\n\n if (meta.type && meta.type !== type) {\n this._destroyDatasetMeta(i);\n meta = this.getDatasetMeta(i);\n }\n meta.type = type;\n meta.indexAxis = dataset.indexAxis || getIndexAxis(type, this.options);\n meta.order = dataset.order || 0;\n meta.index = i;\n meta.label = '' + dataset.label;\n meta.visible = this.isDatasetVisible(i);\n\n if (meta.controller) {\n meta.controller.updateIndex(i);\n meta.controller.linkScales();\n } else {\n const ControllerClass = registry.getController(type);\n const {datasetElementType, dataElementType} = defaults.datasets[type];\n Object.assign(ControllerClass, {\n dataElementType: registry.getElement(dataElementType),\n datasetElementType: datasetElementType && registry.getElement(datasetElementType)\n });\n meta.controller = new ControllerClass(this, i);\n newControllers.push(meta.controller);\n }\n }\n\n this._updateMetasets();\n return newControllers;\n }\n\n /**\n\t * Reset the elements of all datasets\n\t * @private\n\t */\n _resetElements() {\n each(this.data.datasets, (dataset, datasetIndex) => {\n this.getDatasetMeta(datasetIndex).controller.reset();\n }, this);\n }\n\n /**\n\t* Resets the chart back to its state before the initial animation\n\t*/\n reset() {\n this._resetElements();\n this.notifyPlugins('reset');\n }\n\n update(mode) {\n const config = this.config;\n\n config.update();\n const options = this._options = config.createResolver(config.chartOptionScopes(), this.getContext());\n const animsDisabled = this._animationsDisabled = !options.animation;\n\n this._updateScales();\n this._checkEventBindings();\n this._updateHiddenIndices();\n\n // plugins options references might have change, let's invalidate the cache\n // https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167\n this._plugins.invalidate();\n\n if (this.notifyPlugins('beforeUpdate', {mode, cancelable: true}) === false) {\n return;\n }\n\n // Make sure dataset controllers are updated and new controllers are reset\n const newControllers = this.buildOrUpdateControllers();\n\n this.notifyPlugins('beforeElementsUpdate');\n\n // Make sure all dataset controllers have correct meta data counts\n let minPadding = 0;\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; i++) {\n const {controller} = this.getDatasetMeta(i);\n const reset = !animsDisabled && newControllers.indexOf(controller) === -1;\n // New controllers will be reset after the layout pass, so we only want to modify\n // elements added to new datasets\n controller.buildOrUpdateElements(reset);\n minPadding = Math.max(+controller.getMaxOverflow(), minPadding);\n }\n minPadding = this._minPadding = options.layout.autoPadding ? minPadding : 0;\n this._updateLayout(minPadding);\n\n // Only reset the controllers if we have animations\n if (!animsDisabled) {\n // Can only reset the new controllers after the scales have been updated\n // Reset is done to get the starting point for the initial animation\n each(newControllers, (controller) => {\n controller.reset();\n });\n }\n\n this._updateDatasets(mode);\n\n // Do this before render so that any plugins that need final scale updates can use it\n this.notifyPlugins('afterUpdate', {mode});\n\n this._layers.sort(compare2Level('z', '_idx'));\n\n // Replay last event from before update, or set hover styles on active elements\n const {_active, _lastEvent} = this;\n if (_lastEvent) {\n this._eventHandler(_lastEvent, true);\n } else if (_active.length) {\n this._updateHoverStyles(_active, _active, true);\n }\n\n this.render();\n }\n\n /**\n * @private\n */\n _updateScales() {\n each(this.scales, (scale) => {\n layouts.removeBox(this, scale);\n });\n\n this.ensureScalesHaveIDs();\n this.buildOrUpdateScales();\n }\n\n /**\n * @private\n */\n _checkEventBindings() {\n const options = this.options;\n const existingEvents = new Set(Object.keys(this._listeners));\n const newEvents = new Set(options.events);\n\n if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== options.responsive) {\n // The configured events have changed. Rebind.\n this.unbindEvents();\n this.bindEvents();\n }\n }\n\n /**\n * @private\n */\n _updateHiddenIndices() {\n const {_hiddenIndices} = this;\n const changes = this._getUniformDataChanges() || [];\n for (const {method, start, count} of changes) {\n const move = method === '_removeElements' ? -count : count;\n moveNumericKeys(_hiddenIndices, start, move);\n }\n }\n\n /**\n * @private\n */\n _getUniformDataChanges() {\n const _dataChanges = this._dataChanges;\n if (!_dataChanges || !_dataChanges.length) {\n return;\n }\n\n this._dataChanges = [];\n const datasetCount = this.data.datasets.length;\n const makeSet = (idx) => new Set(\n _dataChanges\n .filter(c => c[0] === idx)\n .map((c, i) => i + ',' + c.splice(1).join(','))\n );\n\n const changeSet = makeSet(0);\n for (let i = 1; i < datasetCount; i++) {\n if (!setsEqual(changeSet, makeSet(i))) {\n return;\n }\n }\n return Array.from(changeSet)\n .map(c => c.split(','))\n .map(a => ({method: a[1], start: +a[2], count: +a[3]}));\n }\n\n /**\n\t * Updates the chart layout unless a plugin returns `false` to the `beforeLayout`\n\t * hook, in which case, plugins will not be called on `afterLayout`.\n\t * @private\n\t */\n _updateLayout(minPadding) {\n if (this.notifyPlugins('beforeLayout', {cancelable: true}) === false) {\n return;\n }\n\n layouts.update(this, this.width, this.height, minPadding);\n\n const area = this.chartArea;\n const noArea = area.width <= 0 || area.height <= 0;\n\n this._layers = [];\n each(this.boxes, (box) => {\n if (noArea && box.position === 'chartArea') {\n // Skip drawing and configuring chartArea boxes when chartArea is zero or negative\n return;\n }\n\n // configure is called twice, once in core.scale.update and once here.\n // Here the boxes are fully updated and at their final positions.\n if (box.configure) {\n box.configure();\n }\n this._layers.push(...box._layers());\n }, this);\n\n this._layers.forEach((item, index) => {\n item._idx = index;\n });\n\n this.notifyPlugins('afterLayout');\n }\n\n /**\n\t * Updates all datasets unless a plugin returns `false` to the `beforeDatasetsUpdate`\n\t * hook, in which case, plugins will not be called on `afterDatasetsUpdate`.\n\t * @private\n\t */\n _updateDatasets(mode) {\n if (this.notifyPlugins('beforeDatasetsUpdate', {mode, cancelable: true}) === false) {\n return;\n }\n\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this.getDatasetMeta(i).controller.configure();\n }\n\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._updateDataset(i, isFunction(mode) ? mode({datasetIndex: i}) : mode);\n }\n\n this.notifyPlugins('afterDatasetsUpdate', {mode});\n }\n\n /**\n\t * Updates dataset at index unless a plugin returns `false` to the `beforeDatasetUpdate`\n\t * hook, in which case, plugins will not be called on `afterDatasetUpdate`.\n\t * @private\n\t */\n _updateDataset(index, mode) {\n const meta = this.getDatasetMeta(index);\n const args = {meta, index, mode, cancelable: true};\n\n if (this.notifyPlugins('beforeDatasetUpdate', args) === false) {\n return;\n }\n\n meta.controller._update(mode);\n\n args.cancelable = false;\n this.notifyPlugins('afterDatasetUpdate', args);\n }\n\n render() {\n if (this.notifyPlugins('beforeRender', {cancelable: true}) === false) {\n return;\n }\n\n if (animator.has(this)) {\n if (this.attached && !animator.running(this)) {\n animator.start(this);\n }\n } else {\n this.draw();\n onAnimationsComplete({chart: this});\n }\n }\n\n draw() {\n let i;\n if (this._resizeBeforeDraw) {\n const {width, height} = this._resizeBeforeDraw;\n this._resize(width, height);\n this._resizeBeforeDraw = null;\n }\n this.clear();\n\n if (this.width <= 0 || this.height <= 0) {\n return;\n }\n\n if (this.notifyPlugins('beforeDraw', {cancelable: true}) === false) {\n return;\n }\n\n // Because of plugin hooks (before/afterDatasetsDraw), datasets can't\n // currently be part of layers. Instead, we draw\n // layers <= 0 before(default, backward compat), and the rest after\n const layers = this._layers;\n for (i = 0; i < layers.length && layers[i].z <= 0; ++i) {\n layers[i].draw(this.chartArea);\n }\n\n this._drawDatasets();\n\n // Rest of layers\n for (; i < layers.length; ++i) {\n layers[i].draw(this.chartArea);\n }\n\n this.notifyPlugins('afterDraw');\n }\n\n /**\n\t * @private\n\t */\n _getSortedDatasetMetas(filterVisible) {\n const metasets = this._sortedMetasets;\n const result = [];\n let i, ilen;\n\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n const meta = metasets[i];\n if (!filterVisible || meta.visible) {\n result.push(meta);\n }\n }\n\n return result;\n }\n\n /**\n\t * Gets the visible dataset metas in drawing order\n\t * @return {object[]}\n\t */\n getSortedVisibleDatasetMetas() {\n return this._getSortedDatasetMetas(true);\n }\n\n /**\n\t * Draws all datasets unless a plugin returns `false` to the `beforeDatasetsDraw`\n\t * hook, in which case, plugins will not be called on `afterDatasetsDraw`.\n\t * @private\n\t */\n _drawDatasets() {\n if (this.notifyPlugins('beforeDatasetsDraw', {cancelable: true}) === false) {\n return;\n }\n\n const metasets = this.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n this._drawDataset(metasets[i]);\n }\n\n this.notifyPlugins('afterDatasetsDraw');\n }\n\n /**\n\t * Draws dataset at index unless a plugin returns `false` to the `beforeDatasetDraw`\n\t * hook, in which case, plugins will not be called on `afterDatasetDraw`.\n\t * @private\n\t */\n _drawDataset(meta) {\n const ctx = this.ctx;\n const clip = meta._clip;\n const useClip = !clip.disabled;\n const area = getDatasetArea(meta, this.chartArea);\n const args = {\n meta,\n index: meta.index,\n cancelable: true\n };\n\n if (this.notifyPlugins('beforeDatasetDraw', args) === false) {\n return;\n }\n\n if (useClip) {\n clipArea(ctx, {\n left: clip.left === false ? 0 : area.left - clip.left,\n right: clip.right === false ? this.width : area.right + clip.right,\n top: clip.top === false ? 0 : area.top - clip.top,\n bottom: clip.bottom === false ? this.height : area.bottom + clip.bottom\n });\n }\n\n meta.controller.draw();\n\n if (useClip) {\n unclipArea(ctx);\n }\n\n args.cancelable = false;\n this.notifyPlugins('afterDatasetDraw', args);\n }\n\n /**\n * Checks whether the given point is in the chart area.\n * @param {Point} point - in relative coordinates (see, e.g., getRelativePosition)\n * @returns {boolean}\n */\n isPointInArea(point) {\n return _isPointInArea(point, this.chartArea, this._minPadding);\n }\n\n getElementsAtEventForMode(e, mode, options, useFinalPosition) {\n const method = Interaction.modes[mode];\n if (typeof method === 'function') {\n return method(this, e, options, useFinalPosition);\n }\n\n return [];\n }\n\n getDatasetMeta(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n const metasets = this._metasets;\n let meta = metasets.filter(x => x && x._dataset === dataset).pop();\n\n if (!meta) {\n meta = {\n type: null,\n data: [],\n dataset: null,\n controller: null,\n hidden: null,\t\t\t// See isDatasetVisible() comment\n xAxisID: null,\n yAxisID: null,\n order: dataset && dataset.order || 0,\n index: datasetIndex,\n _dataset: dataset,\n _parsed: [],\n _sorted: false\n };\n metasets.push(meta);\n }\n\n return meta;\n }\n\n getContext() {\n return this.$context || (this.$context = createContext(null, {chart: this, type: 'chart'}));\n }\n\n getVisibleDatasetCount() {\n return this.getSortedVisibleDatasetMetas().length;\n }\n\n isDatasetVisible(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n if (!dataset) {\n return false;\n }\n\n const meta = this.getDatasetMeta(datasetIndex);\n\n // meta.hidden is a per chart dataset hidden flag override with 3 states: if true or false,\n // the dataset.hidden value is ignored, else if null, the dataset hidden state is returned.\n return typeof meta.hidden === 'boolean' ? !meta.hidden : !dataset.hidden;\n }\n\n setDatasetVisibility(datasetIndex, visible) {\n const meta = this.getDatasetMeta(datasetIndex);\n meta.hidden = !visible;\n }\n\n toggleDataVisibility(index) {\n this._hiddenIndices[index] = !this._hiddenIndices[index];\n }\n\n getDataVisibility(index) {\n return !this._hiddenIndices[index];\n }\n\n /**\n\t * @private\n\t */\n _updateVisibility(datasetIndex, dataIndex, visible) {\n const mode = visible ? 'show' : 'hide';\n const meta = this.getDatasetMeta(datasetIndex);\n const anims = meta.controller._resolveAnimations(undefined, mode);\n\n if (defined(dataIndex)) {\n meta.data[dataIndex].hidden = !visible;\n this.update();\n } else {\n this.setDatasetVisibility(datasetIndex, visible);\n // Animate visible state, so hide animation can be seen. This could be handled better if update / updateDataset returned a Promise.\n anims.update(meta, {visible});\n this.update((ctx) => ctx.datasetIndex === datasetIndex ? mode : undefined);\n }\n }\n\n hide(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, false);\n }\n\n show(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, true);\n }\n\n /**\n\t * @private\n\t */\n _destroyDatasetMeta(datasetIndex) {\n const meta = this._metasets[datasetIndex];\n if (meta && meta.controller) {\n meta.controller._destroy();\n }\n delete this._metasets[datasetIndex];\n }\n\n _stop() {\n let i, ilen;\n this.stop();\n animator.remove(this);\n\n for (i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._destroyDatasetMeta(i);\n }\n }\n\n destroy() {\n this.notifyPlugins('beforeDestroy');\n const {canvas, ctx} = this;\n\n this._stop();\n this.config.clearCache();\n\n if (canvas) {\n this.unbindEvents();\n clearCanvas(canvas, ctx);\n this.platform.releaseContext(ctx);\n this.canvas = null;\n this.ctx = null;\n }\n\n delete instances[this.id];\n\n this.notifyPlugins('afterDestroy');\n }\n\n toBase64Image(...args) {\n return this.canvas.toDataURL(...args);\n }\n\n /**\n\t * @private\n\t */\n bindEvents() {\n this.bindUserEvents();\n if (this.options.responsive) {\n this.bindResponsiveEvents();\n } else {\n this.attached = true;\n }\n }\n\n /**\n * @private\n */\n bindUserEvents() {\n const listeners = this._listeners;\n const platform = this.platform;\n\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n\n const listener = (e, x, y) => {\n e.offsetX = x;\n e.offsetY = y;\n this._eventHandler(e);\n };\n\n each(this.options.events, (type) => _add(type, listener));\n }\n\n /**\n * @private\n */\n bindResponsiveEvents() {\n if (!this._responsiveListeners) {\n this._responsiveListeners = {};\n }\n const listeners = this._responsiveListeners;\n const platform = this.platform;\n\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const _remove = (type, listener) => {\n if (listeners[type]) {\n platform.removeEventListener(this, type, listener);\n delete listeners[type];\n }\n };\n\n const listener = (width, height) => {\n if (this.canvas) {\n this.resize(width, height);\n }\n };\n\n let detached; // eslint-disable-line prefer-const\n const attached = () => {\n _remove('attach', attached);\n\n this.attached = true;\n this.resize();\n\n _add('resize', listener);\n _add('detach', detached);\n };\n\n detached = () => {\n this.attached = false;\n\n _remove('resize', listener);\n\n // Stop animating and remove metasets, so when re-attached, the animations start from beginning.\n this._stop();\n this._resize(0, 0);\n\n _add('attach', attached);\n };\n\n if (platform.isAttached(this.canvas)) {\n attached();\n } else {\n detached();\n }\n }\n\n /**\n\t * @private\n\t */\n unbindEvents() {\n each(this._listeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._listeners = {};\n\n each(this._responsiveListeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._responsiveListeners = undefined;\n }\n\n updateHoverStyle(items, mode, enabled) {\n const prefix = enabled ? 'set' : 'remove';\n let meta, item, i, ilen;\n\n if (mode === 'dataset') {\n meta = this.getDatasetMeta(items[0].datasetIndex);\n meta.controller['_' + prefix + 'DatasetHoverStyle']();\n }\n\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n item = items[i];\n const controller = item && this.getDatasetMeta(item.datasetIndex).controller;\n if (controller) {\n controller[prefix + 'HoverStyle'](item.element, item.datasetIndex, item.index);\n }\n }\n }\n\n /**\n\t * Get active (hovered) elements\n\t * @returns array\n\t */\n getActiveElements() {\n return this._active || [];\n }\n\n /**\n\t * Set active (hovered) elements\n\t * @param {array} activeElements New active data points\n\t */\n setActiveElements(activeElements) {\n const lastActive = this._active || [];\n const active = activeElements.map(({datasetIndex, index}) => {\n const meta = this.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('No dataset found at index ' + datasetIndex);\n }\n\n return {\n datasetIndex,\n element: meta.data[index],\n index,\n };\n });\n const changed = !_elementsEqual(active, lastActive);\n\n if (changed) {\n this._active = active;\n // Make sure we don't use the previous mouse event to override the active elements in update.\n this._lastEvent = null;\n this._updateHoverStyles(active, lastActive);\n }\n }\n\n /**\n\t * Calls enabled plugins on the specified hook and with the given args.\n\t * This method immediately returns as soon as a plugin explicitly returns false. The\n\t * returned value can be used, for instance, to interrupt the current action.\n\t * @param {string} hook - The name of the plugin method to call (e.g. 'beforeUpdate').\n\t * @param {Object} [args] - Extra arguments to apply to the hook call.\n * @param {import('./core.plugins.js').filterCallback} [filter] - Filtering function for limiting which plugins are notified\n\t * @returns {boolean} false if any of the plugins return false, else returns true.\n\t */\n notifyPlugins(hook, args, filter) {\n return this._plugins.notify(this, hook, args, filter);\n }\n\n /**\n * Check if a plugin with the specific ID is registered and enabled\n * @param {string} pluginId - The ID of the plugin of which to check if it is enabled\n * @returns {boolean}\n */\n isPluginEnabled(pluginId) {\n return this._plugins._cache.filter(p => p.plugin.id === pluginId).length === 1;\n }\n\n /**\n\t * @private\n\t */\n _updateHoverStyles(active, lastActive, replay) {\n const hoverOptions = this.options.hover;\n const diff = (a, b) => a.filter(x => !b.some(y => x.datasetIndex === y.datasetIndex && x.index === y.index));\n const deactivated = diff(lastActive, active);\n const activated = replay ? active : diff(active, lastActive);\n\n if (deactivated.length) {\n this.updateHoverStyle(deactivated, hoverOptions.mode, false);\n }\n\n if (activated.length && hoverOptions.mode) {\n this.updateHoverStyle(activated, hoverOptions.mode, true);\n }\n }\n\n /**\n\t * @private\n\t */\n _eventHandler(e, replay) {\n const args = {\n event: e,\n replay,\n cancelable: true,\n inChartArea: this.isPointInArea(e)\n };\n const eventFilter = (plugin) => (plugin.options.events || this.options.events).includes(e.native.type);\n\n if (this.notifyPlugins('beforeEvent', args, eventFilter) === false) {\n return;\n }\n\n const changed = this._handleEvent(e, replay, args.inChartArea);\n\n args.cancelable = false;\n this.notifyPlugins('afterEvent', args, eventFilter);\n\n if (changed || args.changed) {\n this.render();\n }\n\n return this;\n }\n\n /**\n\t * Handle an event\n\t * @param {ChartEvent} e the event to handle\n\t * @param {boolean} [replay] - true if the event was replayed by `update`\n * @param {boolean} [inChartArea] - true if the event is inside chartArea\n\t * @return {boolean} true if the chart needs to re-render\n\t * @private\n\t */\n _handleEvent(e, replay, inChartArea) {\n const {_active: lastActive = [], options} = this;\n\n // If the event is replayed from `update`, we should evaluate with the final positions.\n //\n // The `replay`:\n // It's the last event (excluding click) that has occurred before `update`.\n // So mouse has not moved. It's also over the chart, because there is a `replay`.\n //\n // The why:\n // If animations are active, the elements haven't moved yet compared to state before update.\n // But if they will, we are activating the elements that would be active, if this check\n // was done after the animations have completed. => \"final positions\".\n // If there is no animations, the \"final\" and \"current\" positions are equal.\n // This is done so we do not have to evaluate the active elements each animation frame\n // - it would be expensive.\n const useFinalPosition = replay;\n const active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition);\n const isClick = _isClickEvent(e);\n const lastEvent = determineLastEvent(e, this._lastEvent, inChartArea, isClick);\n\n if (inChartArea) {\n // Set _lastEvent to null while we are processing the event handlers.\n // This prevents recursion if the handler calls chart.update()\n this._lastEvent = null;\n\n // Invoke onHover hook\n callCallback(options.onHover, [e, active, this], this);\n\n if (isClick) {\n callCallback(options.onClick, [e, active, this], this);\n }\n }\n\n const changed = !_elementsEqual(active, lastActive);\n if (changed || replay) {\n this._active = active;\n this._updateHoverStyles(active, lastActive, replay);\n }\n\n this._lastEvent = lastEvent;\n\n return changed;\n }\n\n /**\n * @param {ChartEvent} e - The event\n * @param {import('../types/index.js').ActiveElement[]} lastActive - Previously active elements\n * @param {boolean} inChartArea - Is the envent inside chartArea\n * @param {boolean} useFinalPosition - Should the evaluation be done with current or final (after animation) element positions\n * @returns {import('../types/index.js').ActiveElement[]} - The active elements\n * @pravate\n */\n _getActiveElements(e, lastActive, inChartArea, useFinalPosition) {\n if (e.type === 'mouseout') {\n return [];\n }\n\n if (!inChartArea) {\n // Let user control the active elements outside chartArea. Eg. using Legend.\n return lastActive;\n }\n\n const hoverOptions = this.options.hover;\n return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition);\n }\n}\n\n// @ts-ignore\nfunction invalidatePlugins() {\n return each(Chart.instances, (chart) => chart._plugins.invalidate());\n}\n\nexport default Chart;\n","import Element from '../core/core.element.js';\nimport {_angleBetween, getAngleFromPoint, TAU, HALF_PI, valueOrDefault} from '../helpers/index.js';\nimport {PI, _isBetween, _limitValue} from '../helpers/helpers.math.js';\nimport {_readValueToProps} from '../helpers/helpers.options.js';\nimport type {ArcOptions, Point} from '../types/index.js';\n\n\nfunction clipArc(ctx: CanvasRenderingContext2D, element: ArcElement, endAngle: number) {\n const {startAngle, pixelMargin, x, y, outerRadius, innerRadius} = element;\n let angleMargin = pixelMargin / outerRadius;\n\n // Draw an inner border by clipping the arc and drawing a double-width border\n // Enlarge the clipping arc by 0.33 pixels to eliminate glitches between borders\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n if (innerRadius > pixelMargin) {\n angleMargin = pixelMargin / innerRadius;\n ctx.arc(x, y, innerRadius, endAngle + angleMargin, startAngle - angleMargin, true);\n } else {\n ctx.arc(x, y, pixelMargin, endAngle + HALF_PI, startAngle - HALF_PI);\n }\n ctx.closePath();\n ctx.clip();\n}\n\nfunction toRadiusCorners(value) {\n return _readValueToProps(value, ['outerStart', 'outerEnd', 'innerStart', 'innerEnd']);\n}\n\n/**\n * Parse border radius from the provided options\n */\nfunction parseBorderRadius(arc: ArcElement, innerRadius: number, outerRadius: number, angleDelta: number) {\n const o = toRadiusCorners(arc.options.borderRadius);\n const halfThickness = (outerRadius - innerRadius) / 2;\n const innerLimit = Math.min(halfThickness, angleDelta * innerRadius / 2);\n\n // Outer limits are complicated. We want to compute the available angular distance at\n // a radius of outerRadius - borderRadius because for small angular distances, this term limits.\n // We compute at r = outerRadius - borderRadius because this circle defines the center of the border corners.\n //\n // If the borderRadius is large, that value can become negative.\n // This causes the outer borders to lose their radius entirely, which is rather unexpected. To solve that, if borderRadius > outerRadius\n // we know that the thickness term will dominate and compute the limits at that point\n const computeOuterLimit = (val) => {\n const outerArcLimit = (outerRadius - Math.min(halfThickness, val)) * angleDelta / 2;\n return _limitValue(val, 0, Math.min(halfThickness, outerArcLimit));\n };\n\n return {\n outerStart: computeOuterLimit(o.outerStart),\n outerEnd: computeOuterLimit(o.outerEnd),\n innerStart: _limitValue(o.innerStart, 0, innerLimit),\n innerEnd: _limitValue(o.innerEnd, 0, innerLimit),\n };\n}\n\n/**\n * Convert (r, 𝜃) to (x, y)\n */\nfunction rThetaToXY(r: number, theta: number, x: number, y: number) {\n return {\n x: x + r * Math.cos(theta),\n y: y + r * Math.sin(theta),\n };\n}\n\n\n/**\n * Path the arc, respecting border radius by separating into left and right halves.\n *\n * Start End\n *\n * 1--->a--->2 Outer\n * / \\\n * 8 3\n * | |\n * | |\n * 7 4\n * \\ /\n * 6<---b<---5 Inner\n */\nfunction pathArc(\n ctx: CanvasRenderingContext2D,\n element: ArcElement,\n offset: number,\n spacing: number,\n end: number,\n circular: boolean,\n) {\n const {x, y, startAngle: start, pixelMargin, innerRadius: innerR} = element;\n\n const outerRadius = Math.max(element.outerRadius + spacing + offset - pixelMargin, 0);\n const innerRadius = innerR > 0 ? innerR + spacing + offset + pixelMargin : 0;\n\n let spacingOffset = 0;\n const alpha = end - start;\n\n if (spacing) {\n // When spacing is present, it is the same for all items\n // So we adjust the start and end angle of the arc such that\n // the distance is the same as it would be without the spacing\n const noSpacingInnerRadius = innerR > 0 ? innerR - spacing : 0;\n const noSpacingOuterRadius = outerRadius > 0 ? outerRadius - spacing : 0;\n const avNogSpacingRadius = (noSpacingInnerRadius + noSpacingOuterRadius) / 2;\n const adjustedAngle = avNogSpacingRadius !== 0 ? (alpha * avNogSpacingRadius) / (avNogSpacingRadius + spacing) : alpha;\n spacingOffset = (alpha - adjustedAngle) / 2;\n }\n\n const beta = Math.max(0.001, alpha * outerRadius - offset / PI) / outerRadius;\n const angleOffset = (alpha - beta) / 2;\n const startAngle = start + angleOffset + spacingOffset;\n const endAngle = end - angleOffset - spacingOffset;\n const {outerStart, outerEnd, innerStart, innerEnd} = parseBorderRadius(element, innerRadius, outerRadius, endAngle - startAngle);\n\n const outerStartAdjustedRadius = outerRadius - outerStart;\n const outerEndAdjustedRadius = outerRadius - outerEnd;\n const outerStartAdjustedAngle = startAngle + outerStart / outerStartAdjustedRadius;\n const outerEndAdjustedAngle = endAngle - outerEnd / outerEndAdjustedRadius;\n\n const innerStartAdjustedRadius = innerRadius + innerStart;\n const innerEndAdjustedRadius = innerRadius + innerEnd;\n const innerStartAdjustedAngle = startAngle + innerStart / innerStartAdjustedRadius;\n const innerEndAdjustedAngle = endAngle - innerEnd / innerEndAdjustedRadius;\n\n ctx.beginPath();\n\n if (circular) {\n // The first arc segments from point 1 to point a to point 2\n const outerMidAdjustedAngle = (outerStartAdjustedAngle + outerEndAdjustedAngle) / 2;\n ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerMidAdjustedAngle);\n ctx.arc(x, y, outerRadius, outerMidAdjustedAngle, outerEndAdjustedAngle);\n\n // The corner segment from point 2 to point 3\n if (outerEnd > 0) {\n const pCenter = rThetaToXY(outerEndAdjustedRadius, outerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerEnd, outerEndAdjustedAngle, endAngle + HALF_PI);\n }\n\n // The line from point 3 to point 4\n const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y);\n ctx.lineTo(p4.x, p4.y);\n\n // The corner segment from point 4 to point 5\n if (innerEnd > 0) {\n const pCenter = rThetaToXY(innerEndAdjustedRadius, innerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerEnd, endAngle + HALF_PI, innerEndAdjustedAngle + Math.PI);\n }\n\n // The inner arc from point 5 to point b to point 6\n const innerMidAdjustedAngle = ((endAngle - (innerEnd / innerRadius)) + (startAngle + (innerStart / innerRadius))) / 2;\n ctx.arc(x, y, innerRadius, endAngle - (innerEnd / innerRadius), innerMidAdjustedAngle, true);\n ctx.arc(x, y, innerRadius, innerMidAdjustedAngle, startAngle + (innerStart / innerRadius), true);\n\n // The corner segment from point 6 to point 7\n if (innerStart > 0) {\n const pCenter = rThetaToXY(innerStartAdjustedRadius, innerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerStart, innerStartAdjustedAngle + Math.PI, startAngle - HALF_PI);\n }\n\n // The line from point 7 to point 8\n const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y);\n ctx.lineTo(p8.x, p8.y);\n\n // The corner segment from point 8 to point 1\n if (outerStart > 0) {\n const pCenter = rThetaToXY(outerStartAdjustedRadius, outerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerStart, startAngle - HALF_PI, outerStartAdjustedAngle);\n }\n } else {\n ctx.moveTo(x, y);\n\n const outerStartX = Math.cos(outerStartAdjustedAngle) * outerRadius + x;\n const outerStartY = Math.sin(outerStartAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerStartX, outerStartY);\n\n const outerEndX = Math.cos(outerEndAdjustedAngle) * outerRadius + x;\n const outerEndY = Math.sin(outerEndAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerEndX, outerEndY);\n }\n\n ctx.closePath();\n}\n\nfunction drawArc(\n ctx: CanvasRenderingContext2D,\n element: ArcElement,\n offset: number,\n spacing: number,\n circular: boolean,\n) {\n const {fullCircles, startAngle, circumference} = element;\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n for (let i = 0; i < fullCircles; ++i) {\n ctx.fill();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + (circumference % TAU || TAU);\n }\n }\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.fill();\n return endAngle;\n}\n\nfunction drawBorder(\n ctx: CanvasRenderingContext2D,\n element: ArcElement,\n offset: number,\n spacing: number,\n circular: boolean,\n) {\n const {fullCircles, startAngle, circumference, options} = element;\n const {borderWidth, borderJoinStyle, borderDash, borderDashOffset} = options;\n const inner = options.borderAlign === 'inner';\n\n if (!borderWidth) {\n return;\n }\n\n ctx.setLineDash(borderDash || []);\n ctx.lineDashOffset = borderDashOffset;\n\n if (inner) {\n ctx.lineWidth = borderWidth * 2;\n ctx.lineJoin = borderJoinStyle || 'round';\n } else {\n ctx.lineWidth = borderWidth;\n ctx.lineJoin = borderJoinStyle || 'bevel';\n }\n\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n for (let i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + (circumference % TAU || TAU);\n }\n }\n\n if (inner) {\n clipArc(ctx, element, endAngle);\n }\n\n if (!fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.stroke();\n }\n}\n\nexport interface ArcProps extends Point {\n startAngle: number;\n endAngle: number;\n innerRadius: number;\n outerRadius: number;\n circumference: number;\n}\n\nexport default class ArcElement extends Element {\n\n static id = 'arc';\n\n static defaults = {\n borderAlign: 'center',\n borderColor: '#fff',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: undefined,\n borderRadius: 0,\n borderWidth: 2,\n offset: 0,\n spacing: 0,\n angle: undefined,\n circular: true,\n };\n\n static defaultRoutes = {\n backgroundColor: 'backgroundColor'\n };\n\n static descriptors = {\n _scriptable: true,\n _indexable: (name) => name !== 'borderDash'\n };\n\n circumference: number;\n endAngle: number;\n fullCircles: number;\n innerRadius: number;\n outerRadius: number;\n pixelMargin: number;\n startAngle: number;\n\n constructor(cfg) {\n super();\n\n this.options = undefined;\n this.circumference = undefined;\n this.startAngle = undefined;\n this.endAngle = undefined;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.pixelMargin = 0;\n this.fullCircles = 0;\n\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n\n inRange(chartX: number, chartY: number, useFinalPosition: boolean) {\n const point = this.getProps(['x', 'y'], useFinalPosition);\n const {angle, distance} = getAngleFromPoint(point, {x: chartX, y: chartY});\n const {startAngle, endAngle, innerRadius, outerRadius, circumference} = this.getProps([\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference'\n ], useFinalPosition);\n const rAdjust = (this.options.spacing + this.options.borderWidth) / 2;\n const _circumference = valueOrDefault(circumference, endAngle - startAngle);\n const betweenAngles = _circumference >= TAU || _angleBetween(angle, startAngle, endAngle);\n const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);\n\n return (betweenAngles && withinRadius);\n }\n\n getCenterPoint(useFinalPosition: boolean) {\n const {x, y, startAngle, endAngle, innerRadius, outerRadius} = this.getProps([\n 'x',\n 'y',\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius'\n ], useFinalPosition);\n const {offset, spacing} = this.options;\n const halfAngle = (startAngle + endAngle) / 2;\n const halfRadius = (innerRadius + outerRadius + spacing + offset) / 2;\n return {\n x: x + Math.cos(halfAngle) * halfRadius,\n y: y + Math.sin(halfAngle) * halfRadius\n };\n }\n\n tooltipPosition(useFinalPosition: boolean) {\n return this.getCenterPoint(useFinalPosition);\n }\n\n draw(ctx: CanvasRenderingContext2D) {\n const {options, circumference} = this;\n const offset = (options.offset || 0) / 4;\n const spacing = (options.spacing || 0) / 2;\n const circular = options.circular;\n this.pixelMargin = (options.borderAlign === 'inner') ? 0.33 : 0;\n this.fullCircles = circumference > TAU ? Math.floor(circumference / TAU) : 0;\n\n if (circumference === 0 || this.innerRadius < 0 || this.outerRadius < 0) {\n return;\n }\n\n ctx.save();\n\n const halfAngle = (this.startAngle + this.endAngle) / 2;\n ctx.translate(Math.cos(halfAngle) * offset, Math.sin(halfAngle) * offset);\n const fix = 1 - Math.sin(Math.min(PI, circumference || 0));\n const radiusOffset = offset * fix;\n\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n\n drawArc(ctx, this, radiusOffset, spacing, circular);\n drawBorder(ctx, this, radiusOffset, spacing, circular);\n\n ctx.restore();\n }\n}\n","import Element from '../core/core.element.js';\nimport {_bezierInterpolation, _pointInLine, _steppedInterpolation} from '../helpers/helpers.interpolation.js';\nimport {_computeSegments, _boundSegments} from '../helpers/helpers.segment.js';\nimport {_steppedLineTo, _bezierCurveTo} from '../helpers/helpers.canvas.js';\nimport {_updateBezierControlPoints} from '../helpers/helpers.curve.js';\nimport {valueOrDefault} from '../helpers/index.js';\n\n/**\n * @typedef { import('./element.point.js').default } PointElement\n */\n\nfunction setStyle(ctx, options, style = options) {\n ctx.lineCap = valueOrDefault(style.borderCapStyle, options.borderCapStyle);\n ctx.setLineDash(valueOrDefault(style.borderDash, options.borderDash));\n ctx.lineDashOffset = valueOrDefault(style.borderDashOffset, options.borderDashOffset);\n ctx.lineJoin = valueOrDefault(style.borderJoinStyle, options.borderJoinStyle);\n ctx.lineWidth = valueOrDefault(style.borderWidth, options.borderWidth);\n ctx.strokeStyle = valueOrDefault(style.borderColor, options.borderColor);\n}\n\nfunction lineTo(ctx, previous, target) {\n ctx.lineTo(target.x, target.y);\n}\n\n/**\n * @returns {any}\n */\nfunction getLineMethod(options) {\n if (options.stepped) {\n return _steppedLineTo;\n }\n\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierCurveTo;\n }\n\n return lineTo;\n}\n\nfunction pathVars(points, segment, params = {}) {\n const count = points.length;\n const {start: paramsStart = 0, end: paramsEnd = count - 1} = params;\n const {start: segmentStart, end: segmentEnd} = segment;\n const start = Math.max(paramsStart, segmentStart);\n const end = Math.min(paramsEnd, segmentEnd);\n const outside = paramsStart < segmentStart && paramsEnd < segmentStart || paramsStart > segmentEnd && paramsEnd > segmentEnd;\n\n return {\n count,\n start,\n loop: segment.loop,\n ilen: end < start && !outside ? count + end - start : end - start\n };\n}\n\n/**\n * Create path from points, grouping by truncated x-coordinate\n * Points need to be in order by x-coordinate for this to work efficiently\n * @param {CanvasRenderingContext2D|Path2D} ctx - Context\n * @param {LineElement} line\n * @param {object} segment\n * @param {number} segment.start - start index of the segment, referring the points array\n * @param {number} segment.end - end index of the segment, referring the points array\n * @param {boolean} segment.loop - indicates that the segment is a loop\n * @param {object} params\n * @param {boolean} params.move - move to starting point (vs line to it)\n * @param {boolean} params.reverse - path the segment from end to start\n * @param {number} params.start - limit segment to points starting from `start` index\n * @param {number} params.end - limit segment to points ending at `start` + `count` index\n */\nfunction pathSegment(ctx, line, segment, params) {\n const {points, options} = line;\n const {count, start, loop, ilen} = pathVars(points, segment, params);\n const lineMethod = getLineMethod(options);\n // eslint-disable-next-line prefer-const\n let {move = true, reverse} = params || {};\n let i, point, prev;\n\n for (i = 0; i <= ilen; ++i) {\n point = points[(start + (reverse ? ilen - i : i)) % count];\n\n if (point.skip) {\n // If there is a skipped point inside a segment, spanGaps must be true\n continue;\n } else if (move) {\n ctx.moveTo(point.x, point.y);\n move = false;\n } else {\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n\n prev = point;\n }\n\n if (loop) {\n point = points[(start + (reverse ? ilen : 0)) % count];\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n\n return !!loop;\n}\n\n/**\n * Create path from points, grouping by truncated x-coordinate\n * Points need to be in order by x-coordinate for this to work efficiently\n * @param {CanvasRenderingContext2D|Path2D} ctx - Context\n * @param {LineElement} line\n * @param {object} segment\n * @param {number} segment.start - start index of the segment, referring the points array\n * @param {number} segment.end - end index of the segment, referring the points array\n * @param {boolean} segment.loop - indicates that the segment is a loop\n * @param {object} params\n * @param {boolean} params.move - move to starting point (vs line to it)\n * @param {boolean} params.reverse - path the segment from end to start\n * @param {number} params.start - limit segment to points starting from `start` index\n * @param {number} params.end - limit segment to points ending at `start` + `count` index\n */\nfunction fastPathSegment(ctx, line, segment, params) {\n const points = line.points;\n const {count, start, ilen} = pathVars(points, segment, params);\n const {move = true, reverse} = params || {};\n let avgX = 0;\n let countX = 0;\n let i, point, prevX, minY, maxY, lastY;\n\n const pointIndex = (index) => (start + (reverse ? ilen - index : index)) % count;\n const drawX = () => {\n if (minY !== maxY) {\n // Draw line to maxY and minY, using the average x-coordinate\n ctx.lineTo(avgX, maxY);\n ctx.lineTo(avgX, minY);\n // Line to y-value of last point in group. So the line continues\n // from correct position. Not using move, to have solid path.\n ctx.lineTo(avgX, lastY);\n }\n };\n\n if (move) {\n point = points[pointIndex(0)];\n ctx.moveTo(point.x, point.y);\n }\n\n for (i = 0; i <= ilen; ++i) {\n point = points[pointIndex(i)];\n\n if (point.skip) {\n // If there is a skipped point inside a segment, spanGaps must be true\n continue;\n }\n\n const x = point.x;\n const y = point.y;\n const truncX = x | 0; // truncated x-coordinate\n\n if (truncX === prevX) {\n // Determine `minY` / `maxY` and `avgX` while we stay within same x-position\n if (y < minY) {\n minY = y;\n } else if (y > maxY) {\n maxY = y;\n }\n // For first point in group, countX is `0`, so average will be `x` / 1.\n avgX = (countX * avgX + x) / ++countX;\n } else {\n drawX();\n // Draw line to next x-position, using the first (or only)\n // y-value in that group\n ctx.lineTo(x, y);\n\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n }\n // Keep track of the last y-value in group\n lastY = y;\n }\n drawX();\n}\n\n/**\n * @param {LineElement} line - the line\n * @returns {function}\n * @private\n */\nfunction _getSegmentMethod(line) {\n const opts = line.options;\n const borderDash = opts.borderDash && opts.borderDash.length;\n const useFastPath = !line._decimated && !line._loop && !opts.tension && opts.cubicInterpolationMode !== 'monotone' && !opts.stepped && !borderDash;\n return useFastPath ? fastPathSegment : pathSegment;\n}\n\n/**\n * @private\n */\nfunction _getInterpolationMethod(options) {\n if (options.stepped) {\n return _steppedInterpolation;\n }\n\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierInterpolation;\n }\n\n return _pointInLine;\n}\n\nfunction strokePathWithCache(ctx, line, start, count) {\n let path = line._path;\n if (!path) {\n path = line._path = new Path2D();\n if (line.path(path, start, count)) {\n path.closePath();\n }\n }\n setStyle(ctx, line.options);\n ctx.stroke(path);\n}\n\nfunction strokePathDirect(ctx, line, start, count) {\n const {segments, options} = line;\n const segmentMethod = _getSegmentMethod(line);\n\n for (const segment of segments) {\n setStyle(ctx, options, segment.style);\n ctx.beginPath();\n if (segmentMethod(ctx, line, segment, {start, end: start + count - 1})) {\n ctx.closePath();\n }\n ctx.stroke();\n }\n}\n\nconst usePath2D = typeof Path2D === 'function';\n\nfunction draw(ctx, line, start, count) {\n if (usePath2D && !line.options.segment) {\n strokePathWithCache(ctx, line, start, count);\n } else {\n strokePathDirect(ctx, line, start, count);\n }\n}\n\nexport default class LineElement extends Element {\n\n static id = 'line';\n\n /**\n * @type {any}\n */\n static defaults = {\n borderCapStyle: 'butt',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: 'miter',\n borderWidth: 3,\n capBezierPoints: true,\n cubicInterpolationMode: 'default',\n fill: false,\n spanGaps: false,\n stepped: false,\n tension: 0,\n };\n\n /**\n * @type {any}\n */\n static defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n };\n\n\n static descriptors = {\n _scriptable: true,\n _indexable: (name) => name !== 'borderDash' && name !== 'fill',\n };\n\n\n constructor(cfg) {\n super();\n\n this.animated = true;\n this.options = undefined;\n this._chart = undefined;\n this._loop = undefined;\n this._fullLoop = undefined;\n this._path = undefined;\n this._points = undefined;\n this._segments = undefined;\n this._decimated = false;\n this._pointsUpdated = false;\n this._datasetIndex = undefined;\n\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n\n updateControlPoints(chartArea, indexAxis) {\n const options = this.options;\n if ((options.tension || options.cubicInterpolationMode === 'monotone') && !options.stepped && !this._pointsUpdated) {\n const loop = options.spanGaps ? this._loop : this._fullLoop;\n _updateBezierControlPoints(this._points, options, chartArea, loop, indexAxis);\n this._pointsUpdated = true;\n }\n }\n\n set points(points) {\n this._points = points;\n delete this._segments;\n delete this._path;\n this._pointsUpdated = false;\n }\n\n get points() {\n return this._points;\n }\n\n get segments() {\n return this._segments || (this._segments = _computeSegments(this, this.options.segment));\n }\n\n /**\n\t * First non-skipped point on this line\n\t * @returns {PointElement|undefined}\n\t */\n first() {\n const segments = this.segments;\n const points = this.points;\n return segments.length && points[segments[0].start];\n }\n\n /**\n\t * Last non-skipped point on this line\n\t * @returns {PointElement|undefined}\n\t */\n last() {\n const segments = this.segments;\n const points = this.points;\n const count = segments.length;\n return count && points[segments[count - 1].end];\n }\n\n /**\n\t * Interpolate a point in this line at the same value on `property` as\n\t * the reference `point` provided\n\t * @param {PointElement} point - the reference point\n\t * @param {string} property - the property to match on\n\t * @returns {PointElement|undefined}\n\t */\n interpolate(point, property) {\n const options = this.options;\n const value = point[property];\n const points = this.points;\n const segments = _boundSegments(this, {property, start: value, end: value});\n\n if (!segments.length) {\n return;\n }\n\n const result = [];\n const _interpolate = _getInterpolationMethod(options);\n let i, ilen;\n for (i = 0, ilen = segments.length; i < ilen; ++i) {\n const {start, end} = segments[i];\n const p1 = points[start];\n const p2 = points[end];\n if (p1 === p2) {\n result.push(p1);\n continue;\n }\n const t = Math.abs((value - p1[property]) / (p2[property] - p1[property]));\n const interpolated = _interpolate(p1, p2, t, options.stepped);\n interpolated[property] = point[property];\n result.push(interpolated);\n }\n return result.length === 1 ? result[0] : result;\n }\n\n /**\n\t * Append a segment of this line to current path.\n\t * @param {CanvasRenderingContext2D} ctx\n\t * @param {object} segment\n\t * @param {number} segment.start - start index of the segment, referring the points array\n \t * @param {number} segment.end - end index of the segment, referring the points array\n \t * @param {boolean} segment.loop - indicates that the segment is a loop\n\t * @param {object} params\n\t * @param {boolean} params.move - move to starting point (vs line to it)\n\t * @param {boolean} params.reverse - path the segment from end to start\n\t * @param {number} params.start - limit segment to points starting from `start` index\n\t * @param {number} params.end - limit segment to points ending at `start` + `count` index\n\t * @returns {undefined|boolean} - true if the segment is a full loop (path should be closed)\n\t */\n pathSegment(ctx, segment, params) {\n const segmentMethod = _getSegmentMethod(this);\n return segmentMethod(ctx, this, segment, params);\n }\n\n /**\n\t * Append all segments of this line to current path.\n\t * @param {CanvasRenderingContext2D|Path2D} ctx\n\t * @param {number} [start]\n\t * @param {number} [count]\n\t * @returns {undefined|boolean} - true if line is a full loop (path should be closed)\n\t */\n path(ctx, start, count) {\n const segments = this.segments;\n const segmentMethod = _getSegmentMethod(this);\n let loop = this._loop;\n\n start = start || 0;\n count = count || (this.points.length - start);\n\n for (const segment of segments) {\n loop &= segmentMethod(ctx, this, segment, {start, end: start + count - 1});\n }\n return !!loop;\n }\n\n /**\n\t * Draw\n\t * @param {CanvasRenderingContext2D} ctx\n\t * @param {object} chartArea\n\t * @param {number} [start]\n\t * @param {number} [count]\n\t */\n draw(ctx, chartArea, start, count) {\n const options = this.options || {};\n const points = this.points || [];\n\n if (points.length && options.borderWidth) {\n ctx.save();\n\n draw(ctx, this, start, count);\n\n ctx.restore();\n }\n\n if (this.animated) {\n // When line is animated, the control points and path are not cached.\n this._pointsUpdated = false;\n this._path = undefined;\n }\n }\n}\n","import Element from '../core/core.element.js';\nimport {drawPoint, _isPointInArea} from '../helpers/helpers.canvas.js';\nimport type {\n CartesianParsedData,\n ChartArea,\n Point,\n PointHoverOptions,\n PointOptions,\n} from '../types/index.js';\n\nfunction inRange(el: PointElement, pos: number, axis: 'x' | 'y', useFinalPosition?: boolean) {\n const options = el.options;\n const {[axis]: value} = el.getProps([axis], useFinalPosition);\n\n return (Math.abs(pos - value) < options.radius + options.hitRadius);\n}\n\nexport type PointProps = Point\n\nexport default class PointElement extends Element {\n\n static id = 'point';\n\n parsed: CartesianParsedData;\n skip?: boolean;\n stop?: boolean;\n\n /**\n * @type {any}\n */\n static defaults = {\n borderWidth: 1,\n hitRadius: 1,\n hoverBorderWidth: 1,\n hoverRadius: 4,\n pointStyle: 'circle',\n radius: 3,\n rotation: 0\n };\n\n /**\n * @type {any}\n */\n static defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n };\n\n constructor(cfg) {\n super();\n\n this.options = undefined;\n this.parsed = undefined;\n this.skip = undefined;\n this.stop = undefined;\n\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n\n inRange(mouseX: number, mouseY: number, useFinalPosition?: boolean) {\n const options = this.options;\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return ((Math.pow(mouseX - x, 2) + Math.pow(mouseY - y, 2)) < Math.pow(options.hitRadius + options.radius, 2));\n }\n\n inXRange(mouseX: number, useFinalPosition?: boolean) {\n return inRange(this, mouseX, 'x', useFinalPosition);\n }\n\n inYRange(mouseY: number, useFinalPosition?: boolean) {\n return inRange(this, mouseY, 'y', useFinalPosition);\n }\n\n getCenterPoint(useFinalPosition?: boolean) {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y};\n }\n\n size(options?: Partial) {\n options = options || this.options || {};\n let radius = options.radius || 0;\n radius = Math.max(radius, radius && options.hoverRadius || 0);\n const borderWidth = radius && options.borderWidth || 0;\n return (radius + borderWidth) * 2;\n }\n\n draw(ctx: CanvasRenderingContext2D, area: ChartArea) {\n const options = this.options;\n\n if (this.skip || options.radius < 0.1 || !_isPointInArea(this, area, this.size(options) / 2)) {\n return;\n }\n\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.fillStyle = options.backgroundColor;\n drawPoint(ctx, options, this.x, this.y);\n }\n\n getRange() {\n const options = this.options || {};\n // @ts-expect-error Fallbacks should never be hit in practice\n return options.radius + options.hitRadius;\n }\n}\n","import Element from '../core/core.element.js';\nimport {isObject, _isBetween, _limitValue} from '../helpers/index.js';\nimport {addRoundedRectPath} from '../helpers/helpers.canvas.js';\nimport {toTRBL, toTRBLCorners} from '../helpers/helpers.options.js';\n\n/** @typedef {{ x: number, y: number, base: number, horizontal: boolean, width: number, height: number }} BarProps */\n\n/**\n * Helper function to get the bounds of the bar regardless of the orientation\n * @param {BarElement} bar the bar\n * @param {boolean} [useFinalPosition]\n * @return {object} bounds of the bar\n * @private\n */\nfunction getBarBounds(bar, useFinalPosition) {\n const {x, y, base, width, height} = /** @type {BarProps} */ (bar.getProps(['x', 'y', 'base', 'width', 'height'], useFinalPosition));\n\n let left, right, top, bottom, half;\n\n if (bar.horizontal) {\n half = height / 2;\n left = Math.min(x, base);\n right = Math.max(x, base);\n top = y - half;\n bottom = y + half;\n } else {\n half = width / 2;\n left = x - half;\n right = x + half;\n top = Math.min(y, base);\n bottom = Math.max(y, base);\n }\n\n return {left, top, right, bottom};\n}\n\nfunction skipOrLimit(skip, value, min, max) {\n return skip ? 0 : _limitValue(value, min, max);\n}\n\nfunction parseBorderWidth(bar, maxW, maxH) {\n const value = bar.options.borderWidth;\n const skip = bar.borderSkipped;\n const o = toTRBL(value);\n\n return {\n t: skipOrLimit(skip.top, o.top, 0, maxH),\n r: skipOrLimit(skip.right, o.right, 0, maxW),\n b: skipOrLimit(skip.bottom, o.bottom, 0, maxH),\n l: skipOrLimit(skip.left, o.left, 0, maxW)\n };\n}\n\nfunction parseBorderRadius(bar, maxW, maxH) {\n const {enableBorderRadius} = bar.getProps(['enableBorderRadius']);\n const value = bar.options.borderRadius;\n const o = toTRBLCorners(value);\n const maxR = Math.min(maxW, maxH);\n const skip = bar.borderSkipped;\n\n // If the value is an object, assume the user knows what they are doing\n // and apply as directed.\n const enableBorder = enableBorderRadius || isObject(value);\n\n return {\n topLeft: skipOrLimit(!enableBorder || skip.top || skip.left, o.topLeft, 0, maxR),\n topRight: skipOrLimit(!enableBorder || skip.top || skip.right, o.topRight, 0, maxR),\n bottomLeft: skipOrLimit(!enableBorder || skip.bottom || skip.left, o.bottomLeft, 0, maxR),\n bottomRight: skipOrLimit(!enableBorder || skip.bottom || skip.right, o.bottomRight, 0, maxR)\n };\n}\n\nfunction boundingRects(bar) {\n const bounds = getBarBounds(bar);\n const width = bounds.right - bounds.left;\n const height = bounds.bottom - bounds.top;\n const border = parseBorderWidth(bar, width / 2, height / 2);\n const radius = parseBorderRadius(bar, width / 2, height / 2);\n\n return {\n outer: {\n x: bounds.left,\n y: bounds.top,\n w: width,\n h: height,\n radius\n },\n inner: {\n x: bounds.left + border.l,\n y: bounds.top + border.t,\n w: width - border.l - border.r,\n h: height - border.t - border.b,\n radius: {\n topLeft: Math.max(0, radius.topLeft - Math.max(border.t, border.l)),\n topRight: Math.max(0, radius.topRight - Math.max(border.t, border.r)),\n bottomLeft: Math.max(0, radius.bottomLeft - Math.max(border.b, border.l)),\n bottomRight: Math.max(0, radius.bottomRight - Math.max(border.b, border.r)),\n }\n }\n };\n}\n\nfunction inRange(bar, x, y, useFinalPosition) {\n const skipX = x === null;\n const skipY = y === null;\n const skipBoth = skipX && skipY;\n const bounds = bar && !skipBoth && getBarBounds(bar, useFinalPosition);\n\n return bounds\n\t\t&& (skipX || _isBetween(x, bounds.left, bounds.right))\n\t\t&& (skipY || _isBetween(y, bounds.top, bounds.bottom));\n}\n\nfunction hasRadius(radius) {\n return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight;\n}\n\n/**\n * Add a path of a rectangle to the current sub-path\n * @param {CanvasRenderingContext2D} ctx Context\n * @param {*} rect Bounding rect\n */\nfunction addNormalRectPath(ctx, rect) {\n ctx.rect(rect.x, rect.y, rect.w, rect.h);\n}\n\nfunction inflateRect(rect, amount, refRect = {}) {\n const x = rect.x !== refRect.x ? -amount : 0;\n const y = rect.y !== refRect.y ? -amount : 0;\n const w = (rect.x + rect.w !== refRect.x + refRect.w ? amount : 0) - x;\n const h = (rect.y + rect.h !== refRect.y + refRect.h ? amount : 0) - y;\n return {\n x: rect.x + x,\n y: rect.y + y,\n w: rect.w + w,\n h: rect.h + h,\n radius: rect.radius\n };\n}\n\nexport default class BarElement extends Element {\n\n static id = 'bar';\n\n /**\n * @type {any}\n */\n static defaults = {\n borderSkipped: 'start',\n borderWidth: 0,\n borderRadius: 0,\n inflateAmount: 'auto',\n pointStyle: undefined\n };\n\n /**\n * @type {any}\n */\n static defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n };\n\n constructor(cfg) {\n super();\n\n this.options = undefined;\n this.horizontal = undefined;\n this.base = undefined;\n this.width = undefined;\n this.height = undefined;\n this.inflateAmount = undefined;\n\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n\n draw(ctx) {\n const {inflateAmount, options: {borderColor, backgroundColor}} = this;\n const {inner, outer} = boundingRects(this);\n const addRectPath = hasRadius(outer.radius) ? addRoundedRectPath : addNormalRectPath;\n\n ctx.save();\n\n if (outer.w !== inner.w || outer.h !== inner.h) {\n ctx.beginPath();\n addRectPath(ctx, inflateRect(outer, inflateAmount, inner));\n ctx.clip();\n addRectPath(ctx, inflateRect(inner, -inflateAmount, outer));\n ctx.fillStyle = borderColor;\n ctx.fill('evenodd');\n }\n\n ctx.beginPath();\n addRectPath(ctx, inflateRect(inner, inflateAmount));\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n\n ctx.restore();\n }\n\n inRange(mouseX, mouseY, useFinalPosition) {\n return inRange(this, mouseX, mouseY, useFinalPosition);\n }\n\n inXRange(mouseX, useFinalPosition) {\n return inRange(this, mouseX, null, useFinalPosition);\n }\n\n inYRange(mouseY, useFinalPosition) {\n return inRange(this, null, mouseY, useFinalPosition);\n }\n\n getCenterPoint(useFinalPosition) {\n const {x, y, base, horizontal} = /** @type {BarProps} */ (this.getProps(['x', 'y', 'base', 'horizontal'], useFinalPosition));\n return {\n x: horizontal ? (x + base) / 2 : x,\n y: horizontal ? y : (y + base) / 2\n };\n }\n\n getRange(axis) {\n return axis === 'x' ? this.width / 2 : this.height / 2;\n }\n}\n","import {_boundSegment, _boundSegments, _normalizeAngle} from '../../helpers/index.js';\n\nexport function _segments(line, target, property) {\n const segments = line.segments;\n const points = line.points;\n const tpoints = target.points;\n const parts = [];\n\n for (const segment of segments) {\n let {start, end} = segment;\n end = _findSegmentEnd(start, end, points);\n\n const bounds = _getBounds(property, points[start], points[end], segment.loop);\n\n if (!target.segments) {\n // Special case for boundary not supporting `segments` (simpleArc)\n // Bounds are provided as `target` for partial circle, or undefined for full circle\n parts.push({\n source: segment,\n target: bounds,\n start: points[start],\n end: points[end]\n });\n continue;\n }\n\n // Get all segments from `target` that intersect the bounds of current segment of `line`\n const targetSegments = _boundSegments(target, bounds);\n\n for (const tgt of targetSegments) {\n const subBounds = _getBounds(property, tpoints[tgt.start], tpoints[tgt.end], tgt.loop);\n const fillSources = _boundSegment(segment, points, subBounds);\n\n for (const fillSource of fillSources) {\n parts.push({\n source: fillSource,\n target: tgt,\n start: {\n [property]: _getEdge(bounds, subBounds, 'start', Math.max)\n },\n end: {\n [property]: _getEdge(bounds, subBounds, 'end', Math.min)\n }\n });\n }\n }\n }\n return parts;\n}\n\nexport function _getBounds(property, first, last, loop) {\n if (loop) {\n return;\n }\n let start = first[property];\n let end = last[property];\n\n if (property === 'angle') {\n start = _normalizeAngle(start);\n end = _normalizeAngle(end);\n }\n return {property, start, end};\n}\n\nexport function _pointsFromSegments(boundary, line) {\n const {x = null, y = null} = boundary || {};\n const linePoints = line.points;\n const points = [];\n line.segments.forEach(({start, end}) => {\n end = _findSegmentEnd(start, end, linePoints);\n const first = linePoints[start];\n const last = linePoints[end];\n if (y !== null) {\n points.push({x: first.x, y});\n points.push({x: last.x, y});\n } else if (x !== null) {\n points.push({x, y: first.y});\n points.push({x, y: last.y});\n }\n });\n return points;\n}\n\nexport function _findSegmentEnd(start, end, points) {\n for (;end > start; end--) {\n const point = points[end];\n if (!isNaN(point.x) && !isNaN(point.y)) {\n break;\n }\n }\n return end;\n}\n\nfunction _getEdge(a, b, prop, fn) {\n if (a && b) {\n return fn(a[prop], b[prop]);\n }\n return a ? a[prop] : b ? b[prop] : 0;\n}\n","/**\n * @typedef { import('../../core/core.controller.js').default } Chart\n * @typedef { import('../../core/core.scale.js').default } Scale\n * @typedef { import('../../elements/element.point.js').default } PointElement\n */\n\nimport {LineElement} from '../../elements/index.js';\nimport {isArray} from '../../helpers/index.js';\nimport {_pointsFromSegments} from './filler.segment.js';\n\n/**\n * @param {PointElement[] | { x: number; y: number; }} boundary\n * @param {LineElement} line\n * @return {LineElement?}\n */\nexport function _createBoundaryLine(boundary, line) {\n let points = [];\n let _loop = false;\n\n if (isArray(boundary)) {\n _loop = true;\n // @ts-ignore\n points = boundary;\n } else {\n points = _pointsFromSegments(boundary, line);\n }\n\n return points.length ? new LineElement({\n points,\n options: {tension: 0},\n _loop,\n _fullLoop: _loop\n }) : null;\n}\n\nexport function _shouldApplyFill(source) {\n return source && source.fill !== false;\n}\n","import {isObject, isFinite, valueOrDefault} from '../../helpers/helpers.core.js';\n\n/**\n * @typedef { import('../../core/core.scale.js').default } Scale\n * @typedef { import('../../elements/element.line.js').default } LineElement\n * @typedef { import('../../types/index.js').FillTarget } FillTarget\n * @typedef { import('../../types/index.js').ComplexFillTarget } ComplexFillTarget\n */\n\nexport function _resolveTarget(sources, index, propagate) {\n const source = sources[index];\n let fill = source.fill;\n const visited = [index];\n let target;\n\n if (!propagate) {\n return fill;\n }\n\n while (fill !== false && visited.indexOf(fill) === -1) {\n if (!isFinite(fill)) {\n return fill;\n }\n\n target = sources[fill];\n if (!target) {\n return false;\n }\n\n if (target.visible) {\n return fill;\n }\n\n visited.push(fill);\n fill = target.fill;\n }\n\n return false;\n}\n\n/**\n * @param {LineElement} line\n * @param {number} index\n * @param {number} count\n */\nexport function _decodeFill(line, index, count) {\n /** @type {string | {value: number}} */\n const fill = parseFillOption(line);\n\n if (isObject(fill)) {\n return isNaN(fill.value) ? false : fill;\n }\n\n let target = parseFloat(fill);\n\n if (isFinite(target) && Math.floor(target) === target) {\n return decodeTargetIndex(fill[0], index, target, count);\n }\n\n return ['origin', 'start', 'end', 'stack', 'shape'].indexOf(fill) >= 0 && fill;\n}\n\nfunction decodeTargetIndex(firstCh, index, target, count) {\n if (firstCh === '-' || firstCh === '+') {\n target = index + target;\n }\n\n if (target === index || target < 0 || target >= count) {\n return false;\n }\n\n return target;\n}\n\n/**\n * @param {FillTarget | ComplexFillTarget} fill\n * @param {Scale} scale\n * @returns {number | null}\n */\nexport function _getTargetPixel(fill, scale) {\n let pixel = null;\n if (fill === 'start') {\n pixel = scale.bottom;\n } else if (fill === 'end') {\n pixel = scale.top;\n } else if (isObject(fill)) {\n // @ts-ignore\n pixel = scale.getPixelForValue(fill.value);\n } else if (scale.getBasePixel) {\n pixel = scale.getBasePixel();\n }\n return pixel;\n}\n\n/**\n * @param {FillTarget | ComplexFillTarget} fill\n * @param {Scale} scale\n * @param {number} startValue\n * @returns {number | undefined}\n */\nexport function _getTargetValue(fill, scale, startValue) {\n let value;\n\n if (fill === 'start') {\n value = startValue;\n } else if (fill === 'end') {\n value = scale.options.reverse ? scale.min : scale.max;\n } else if (isObject(fill)) {\n // @ts-ignore\n value = fill.value;\n } else {\n value = scale.getBaseValue();\n }\n return value;\n}\n\n/**\n * @param {LineElement} line\n */\nfunction parseFillOption(line) {\n const options = line.options;\n const fillOption = options.fill;\n let fill = valueOrDefault(fillOption && fillOption.target, fillOption);\n\n if (fill === undefined) {\n fill = !!options.backgroundColor;\n }\n\n if (fill === false || fill === null) {\n return false;\n }\n\n if (fill === true) {\n return 'origin';\n }\n return fill;\n}\n","/**\n * @typedef { import('../../core/core.controller.js').default } Chart\n * @typedef { import('../../core/core.scale.js').default } Scale\n * @typedef { import('../../elements/element.point.js').default } PointElement\n */\n\nimport {LineElement} from '../../elements/index.js';\nimport {_isBetween} from '../../helpers/index.js';\nimport {_createBoundaryLine} from './filler.helper.js';\n\n/**\n * @param {{ chart: Chart; scale: Scale; index: number; line: LineElement; }} source\n * @return {LineElement}\n */\nexport function _buildStackLine(source) {\n const {scale, index, line} = source;\n const points = [];\n const segments = line.segments;\n const sourcePoints = line.points;\n const linesBelow = getLinesBelow(scale, index);\n linesBelow.push(_createBoundaryLine({x: null, y: scale.bottom}, line));\n\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n for (let j = segment.start; j <= segment.end; j++) {\n addPointsBelow(points, sourcePoints[j], linesBelow);\n }\n }\n return new LineElement({points, options: {}});\n}\n\n/**\n * @param {Scale} scale\n * @param {number} index\n * @return {LineElement[]}\n */\nfunction getLinesBelow(scale, index) {\n const below = [];\n const metas = scale.getMatchingVisibleMetas('line');\n\n for (let i = 0; i < metas.length; i++) {\n const meta = metas[i];\n if (meta.index === index) {\n break;\n }\n if (!meta.hidden) {\n below.unshift(meta.dataset);\n }\n }\n return below;\n}\n\n/**\n * @param {PointElement[]} points\n * @param {PointElement} sourcePoint\n * @param {LineElement[]} linesBelow\n */\nfunction addPointsBelow(points, sourcePoint, linesBelow) {\n const postponed = [];\n for (let j = 0; j < linesBelow.length; j++) {\n const line = linesBelow[j];\n const {first, last, point} = findPoint(line, sourcePoint, 'x');\n\n if (!point || (first && last)) {\n continue;\n }\n if (first) {\n // First point of an segment -> need to add another point before this,\n // from next line below.\n postponed.unshift(point);\n } else {\n points.push(point);\n if (!last) {\n // In the middle of an segment, no need to add more points.\n break;\n }\n }\n }\n points.push(...postponed);\n}\n\n/**\n * @param {LineElement} line\n * @param {PointElement} sourcePoint\n * @param {string} property\n * @returns {{point?: PointElement, first?: boolean, last?: boolean}}\n */\nfunction findPoint(line, sourcePoint, property) {\n const point = line.interpolate(sourcePoint, property);\n if (!point) {\n return {};\n }\n\n const pointValue = point[property];\n const segments = line.segments;\n const linePoints = line.points;\n let first = false;\n let last = false;\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const firstValue = linePoints[segment.start][property];\n const lastValue = linePoints[segment.end][property];\n if (_isBetween(pointValue, firstValue, lastValue)) {\n first = pointValue === firstValue;\n last = pointValue === lastValue;\n break;\n }\n }\n return {first, last, point};\n}\n","import {TAU} from '../../helpers/index.js';\n\n// TODO: use elements.ArcElement instead\nexport class simpleArc {\n constructor(opts) {\n this.x = opts.x;\n this.y = opts.y;\n this.radius = opts.radius;\n }\n\n pathSegment(ctx, bounds, opts) {\n const {x, y, radius} = this;\n bounds = bounds || {start: 0, end: TAU};\n ctx.arc(x, y, radius, bounds.end, bounds.start, true);\n return !opts.bounds;\n }\n\n interpolate(point) {\n const {x, y, radius} = this;\n const angle = point.angle;\n return {\n x: x + Math.cos(angle) * radius,\n y: y + Math.sin(angle) * radius,\n angle\n };\n }\n}\n","import {isFinite} from '../../helpers/index.js';\nimport {_createBoundaryLine} from './filler.helper.js';\nimport {_getTargetPixel, _getTargetValue} from './filler.options.js';\nimport {_buildStackLine} from './filler.target.stack.js';\nimport {simpleArc} from './simpleArc.js';\n\n/**\n * @typedef { import('../../core/core.controller.js').default } Chart\n * @typedef { import('../../core/core.scale.js').default } Scale\n * @typedef { import('../../elements/element.point.js').default } PointElement\n */\n\nexport function _getTarget(source) {\n const {chart, fill, line} = source;\n\n if (isFinite(fill)) {\n return getLineByIndex(chart, fill);\n }\n\n if (fill === 'stack') {\n return _buildStackLine(source);\n }\n\n if (fill === 'shape') {\n return true;\n }\n\n const boundary = computeBoundary(source);\n\n if (boundary instanceof simpleArc) {\n return boundary;\n }\n\n return _createBoundaryLine(boundary, line);\n}\n\n/**\n * @param {Chart} chart\n * @param {number} index\n */\nfunction getLineByIndex(chart, index) {\n const meta = chart.getDatasetMeta(index);\n const visible = meta && chart.isDatasetVisible(index);\n return visible ? meta.dataset : null;\n}\n\nfunction computeBoundary(source) {\n const scale = source.scale || {};\n\n if (scale.getPointPositionForValue) {\n return computeCircularBoundary(source);\n }\n return computeLinearBoundary(source);\n}\n\n\nfunction computeLinearBoundary(source) {\n const {scale = {}, fill} = source;\n const pixel = _getTargetPixel(fill, scale);\n\n if (isFinite(pixel)) {\n const horizontal = scale.isHorizontal();\n\n return {\n x: horizontal ? pixel : null,\n y: horizontal ? null : pixel\n };\n }\n\n return null;\n}\n\nfunction computeCircularBoundary(source) {\n const {scale, fill} = source;\n const options = scale.options;\n const length = scale.getLabels().length;\n const start = options.reverse ? scale.max : scale.min;\n const value = _getTargetValue(fill, scale, start);\n const target = [];\n\n if (options.grid.circular) {\n const center = scale.getPointPositionForValue(0, start);\n return new simpleArc({\n x: center.x,\n y: center.y,\n radius: scale.getDistanceFromCenterForValue(value)\n });\n }\n\n for (let i = 0; i < length; ++i) {\n target.push(scale.getPointPositionForValue(i, value));\n }\n return target;\n}\n\n","import {clipArea, unclipArea} from '../../helpers/index.js';\nimport {_findSegmentEnd, _getBounds, _segments} from './filler.segment.js';\nimport {_getTarget} from './filler.target.js';\n\nexport function _drawfill(ctx, source, area) {\n const target = _getTarget(source);\n const {line, scale, axis} = source;\n const lineOpts = line.options;\n const fillOption = lineOpts.fill;\n const color = lineOpts.backgroundColor;\n const {above = color, below = color} = fillOption || {};\n if (target && line.points.length) {\n clipArea(ctx, area);\n doFill(ctx, {line, target, above, below, area, scale, axis});\n unclipArea(ctx);\n }\n}\n\nfunction doFill(ctx, cfg) {\n const {line, target, above, below, area, scale} = cfg;\n const property = line._loop ? 'angle' : cfg.axis;\n\n ctx.save();\n\n if (property === 'x' && below !== above) {\n clipVertical(ctx, target, area.top);\n fill(ctx, {line, target, color: above, scale, property});\n ctx.restore();\n ctx.save();\n clipVertical(ctx, target, area.bottom);\n }\n fill(ctx, {line, target, color: below, scale, property});\n\n ctx.restore();\n}\n\nfunction clipVertical(ctx, target, clipY) {\n const {segments, points} = target;\n let first = true;\n let lineLoop = false;\n\n ctx.beginPath();\n for (const segment of segments) {\n const {start, end} = segment;\n const firstPoint = points[start];\n const lastPoint = points[_findSegmentEnd(start, end, points)];\n if (first) {\n ctx.moveTo(firstPoint.x, firstPoint.y);\n first = false;\n } else {\n ctx.lineTo(firstPoint.x, clipY);\n ctx.lineTo(firstPoint.x, firstPoint.y);\n }\n lineLoop = !!target.pathSegment(ctx, segment, {move: lineLoop});\n if (lineLoop) {\n ctx.closePath();\n } else {\n ctx.lineTo(lastPoint.x, clipY);\n }\n }\n\n ctx.lineTo(target.first().x, clipY);\n ctx.closePath();\n ctx.clip();\n}\n\nfunction fill(ctx, cfg) {\n const {line, target, property, color, scale} = cfg;\n const segments = _segments(line, target, property);\n\n for (const {source: src, target: tgt, start, end} of segments) {\n const {style: {backgroundColor = color} = {}} = src;\n const notShape = target !== true;\n\n ctx.save();\n ctx.fillStyle = backgroundColor;\n\n clipBounds(ctx, scale, notShape && _getBounds(property, start, end));\n\n ctx.beginPath();\n\n const lineLoop = !!line.pathSegment(ctx, src);\n\n let loop;\n if (notShape) {\n if (lineLoop) {\n ctx.closePath();\n } else {\n interpolatedLineTo(ctx, target, end, property);\n }\n\n const targetLoop = !!target.pathSegment(ctx, tgt, {move: lineLoop, reverse: true});\n loop = lineLoop && targetLoop;\n if (!loop) {\n interpolatedLineTo(ctx, target, start, property);\n }\n }\n\n ctx.closePath();\n ctx.fill(loop ? 'evenodd' : 'nonzero');\n\n ctx.restore();\n }\n}\n\nfunction clipBounds(ctx, scale, bounds) {\n const {top, bottom} = scale.chart.chartArea;\n const {property, start, end} = bounds || {};\n if (property === 'x') {\n ctx.beginPath();\n ctx.rect(start, top, end - start, bottom - top);\n ctx.clip();\n }\n}\n\nfunction interpolatedLineTo(ctx, target, point, property) {\n const interpolatedPoint = target.interpolate(point, property);\n if (interpolatedPoint) {\n ctx.lineTo(interpolatedPoint.x, interpolatedPoint.y);\n }\n}\n\n","/**\n * Plugin based on discussion from the following Chart.js issues:\n * @see https://github.com/chartjs/Chart.js/issues/2380#issuecomment-279961569\n * @see https://github.com/chartjs/Chart.js/issues/2440#issuecomment-256461897\n */\n\nimport LineElement from '../../elements/element.line.js';\nimport {_drawfill} from './filler.drawing.js';\nimport {_shouldApplyFill} from './filler.helper.js';\nimport {_decodeFill, _resolveTarget} from './filler.options.js';\n\nexport default {\n id: 'filler',\n\n afterDatasetsUpdate(chart, _args, options) {\n const count = (chart.data.datasets || []).length;\n const sources = [];\n let meta, i, line, source;\n\n for (i = 0; i < count; ++i) {\n meta = chart.getDatasetMeta(i);\n line = meta.dataset;\n source = null;\n\n if (line && line.options && line instanceof LineElement) {\n source = {\n visible: chart.isDatasetVisible(i),\n index: i,\n fill: _decodeFill(line, i, count),\n chart,\n axis: meta.controller.options.indexAxis,\n scale: meta.vScale,\n line,\n };\n }\n\n meta.$filler = source;\n sources.push(source);\n }\n\n for (i = 0; i < count; ++i) {\n source = sources[i];\n if (!source || source.fill === false) {\n continue;\n }\n\n source.fill = _resolveTarget(sources, i, options.propagate);\n }\n },\n\n beforeDraw(chart, _args, options) {\n const draw = options.drawTime === 'beforeDraw';\n const metasets = chart.getSortedVisibleDatasetMetas();\n const area = chart.chartArea;\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n if (!source) {\n continue;\n }\n\n source.line.updateControlPoints(area, source.axis);\n if (draw && source.fill) {\n _drawfill(chart.ctx, source, area);\n }\n }\n },\n\n beforeDatasetsDraw(chart, _args, options) {\n if (options.drawTime !== 'beforeDatasetsDraw') {\n return;\n }\n\n const metasets = chart.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n\n if (_shouldApplyFill(source)) {\n _drawfill(chart.ctx, source, chart.chartArea);\n }\n }\n },\n\n beforeDatasetDraw(chart, args, options) {\n const source = args.meta.$filler;\n\n if (!_shouldApplyFill(source) || options.drawTime !== 'beforeDatasetDraw') {\n return;\n }\n\n _drawfill(chart.ctx, source, chart.chartArea);\n },\n\n defaults: {\n propagate: true,\n drawTime: 'beforeDatasetDraw'\n }\n};\n","import defaults from '../core/core.defaults.js';\nimport Element from '../core/core.element.js';\nimport layouts from '../core/core.layouts.js';\nimport {addRoundedRectPath, drawPointLegend, renderText} from '../helpers/helpers.canvas.js';\nimport {\n _isBetween,\n callback as call,\n clipArea,\n getRtlAdapter,\n overrideTextDirection,\n restoreTextDirection,\n toFont,\n toPadding,\n unclipArea,\n valueOrDefault,\n} from '../helpers/index.js';\nimport {_alignStartEnd, _textX, _toLeftRightCenter} from '../helpers/helpers.extras.js';\nimport {toTRBLCorners} from '../helpers/helpers.options.js';\n\n/**\n * @typedef { import('../types/index.js').ChartEvent } ChartEvent\n */\n\nconst getBoxSize = (labelOpts, fontSize) => {\n let {boxHeight = fontSize, boxWidth = fontSize} = labelOpts;\n\n if (labelOpts.usePointStyle) {\n boxHeight = Math.min(boxHeight, fontSize);\n boxWidth = labelOpts.pointStyleWidth || Math.min(boxWidth, fontSize);\n }\n\n return {\n boxWidth,\n boxHeight,\n itemHeight: Math.max(fontSize, boxHeight)\n };\n};\n\nconst itemsEqual = (a, b) => a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index;\n\nexport class Legend extends Element {\n\n /**\n\t * @param {{ ctx: any; options: any; chart: any; }} config\n\t */\n constructor(config) {\n super();\n\n this._added = false;\n\n // Contains hit boxes for each dataset (in dataset order)\n this.legendHitBoxes = [];\n\n /**\n \t\t * @private\n \t\t */\n this._hoveredItem = null;\n\n // Are we in doughnut mode which has a different data type\n this.doughnutMode = false;\n\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this.legendItems = undefined;\n this.columnSizes = undefined;\n this.lineWidths = undefined;\n this.maxHeight = undefined;\n this.maxWidth = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.height = undefined;\n this.width = undefined;\n this._margins = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n\n update(maxWidth, maxHeight, margins) {\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins;\n\n this.setDimensions();\n this.buildLabels();\n this.fit();\n }\n\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = this._margins.left;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = this._margins.top;\n this.bottom = this.height;\n }\n }\n\n buildLabels() {\n const labelOpts = this.options.labels || {};\n let legendItems = call(labelOpts.generateLabels, [this.chart], this) || [];\n\n if (labelOpts.filter) {\n legendItems = legendItems.filter((item) => labelOpts.filter(item, this.chart.data));\n }\n\n if (labelOpts.sort) {\n legendItems = legendItems.sort((a, b) => labelOpts.sort(a, b, this.chart.data));\n }\n\n if (this.options.reverse) {\n legendItems.reverse();\n }\n\n this.legendItems = legendItems;\n }\n\n fit() {\n const {options, ctx} = this;\n\n // The legend may not be displayed for a variety of reasons including\n // the fact that the defaults got set to `false`.\n // When the legend is not displayed, there are no guarantees that the options\n // are correctly formatted so we need to bail out as early as possible.\n if (!options.display) {\n this.width = this.height = 0;\n return;\n }\n\n const labelOpts = options.labels;\n const labelFont = toFont(labelOpts.font);\n const fontSize = labelFont.size;\n const titleHeight = this._computeTitleHeight();\n const {boxWidth, itemHeight} = getBoxSize(labelOpts, fontSize);\n\n let width, height;\n\n ctx.font = labelFont.string;\n\n if (this.isHorizontal()) {\n width = this.maxWidth; // fill all the width\n height = this._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n } else {\n height = this.maxHeight; // fill all the height\n width = this._fitCols(titleHeight, labelFont, boxWidth, itemHeight) + 10;\n }\n\n this.width = Math.min(width, options.maxWidth || this.maxWidth);\n this.height = Math.min(height, options.maxHeight || this.maxHeight);\n }\n\n /**\n\t * @private\n\t */\n _fitRows(titleHeight, fontSize, boxWidth, itemHeight) {\n const {ctx, maxWidth, options: {labels: {padding}}} = this;\n const hitboxes = this.legendHitBoxes = [];\n // Width of each line of legend boxes. Labels wrap onto multiple lines when there are too many to fit on one\n const lineWidths = this.lineWidths = [0];\n const lineHeight = itemHeight + padding;\n let totalHeight = titleHeight;\n\n ctx.textAlign = 'left';\n ctx.textBaseline = 'middle';\n\n let row = -1;\n let top = -lineHeight;\n this.legendItems.forEach((legendItem, i) => {\n const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n\n if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) {\n totalHeight += lineHeight;\n lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\n top += lineHeight;\n row++;\n }\n\n hitboxes[i] = {left: 0, top, row, width: itemWidth, height: itemHeight};\n\n lineWidths[lineWidths.length - 1] += itemWidth + padding;\n });\n\n return totalHeight;\n }\n\n _fitCols(titleHeight, labelFont, boxWidth, _itemHeight) {\n const {ctx, maxHeight, options: {labels: {padding}}} = this;\n const hitboxes = this.legendHitBoxes = [];\n const columnSizes = this.columnSizes = [];\n const heightLimit = maxHeight - titleHeight;\n\n let totalWidth = padding;\n let currentColWidth = 0;\n let currentColHeight = 0;\n\n let left = 0;\n let col = 0;\n\n this.legendItems.forEach((legendItem, i) => {\n const {itemWidth, itemHeight} = calculateItemSize(boxWidth, labelFont, ctx, legendItem, _itemHeight);\n\n // If too tall, go to new column\n if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) {\n totalWidth += currentColWidth + padding;\n columnSizes.push({width: currentColWidth, height: currentColHeight}); // previous column size\n left += currentColWidth + padding;\n col++;\n currentColWidth = currentColHeight = 0;\n }\n\n // Store the hitbox width and height here. Final position will be updated in `draw`\n hitboxes[i] = {left, top: currentColHeight, col, width: itemWidth, height: itemHeight};\n\n // Get max width\n currentColWidth = Math.max(currentColWidth, itemWidth);\n currentColHeight += itemHeight + padding;\n });\n\n totalWidth += currentColWidth;\n columnSizes.push({width: currentColWidth, height: currentColHeight}); // previous column size\n\n return totalWidth;\n }\n\n adjustHitBoxes() {\n if (!this.options.display) {\n return;\n }\n const titleHeight = this._computeTitleHeight();\n const {legendHitBoxes: hitboxes, options: {align, labels: {padding}, rtl}} = this;\n const rtlHelper = getRtlAdapter(rtl, this.left, this.width);\n if (this.isHorizontal()) {\n let row = 0;\n let left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n for (const hitbox of hitboxes) {\n if (row !== hitbox.row) {\n row = hitbox.row;\n left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n }\n hitbox.top += this.top + titleHeight + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(left), hitbox.width);\n left += hitbox.width + padding;\n }\n } else {\n let col = 0;\n let top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n for (const hitbox of hitboxes) {\n if (hitbox.col !== col) {\n col = hitbox.col;\n top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n }\n hitbox.top = top;\n hitbox.left += this.left + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(hitbox.left), hitbox.width);\n top += hitbox.height + padding;\n }\n }\n }\n\n isHorizontal() {\n return this.options.position === 'top' || this.options.position === 'bottom';\n }\n\n draw() {\n if (this.options.display) {\n const ctx = this.ctx;\n clipArea(ctx, this);\n\n this._draw();\n\n unclipArea(ctx);\n }\n }\n\n /**\n\t * @private\n\t */\n _draw() {\n const {options: opts, columnSizes, lineWidths, ctx} = this;\n const {align, labels: labelOpts} = opts;\n const defaultColor = defaults.color;\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const labelFont = toFont(labelOpts.font);\n const {padding} = labelOpts;\n const fontSize = labelFont.size;\n const halfFontSize = fontSize / 2;\n let cursor;\n\n this.drawTitle();\n\n // Canvas setup\n ctx.textAlign = rtlHelper.textAlign('left');\n ctx.textBaseline = 'middle';\n ctx.lineWidth = 0.5;\n ctx.font = labelFont.string;\n\n const {boxWidth, boxHeight, itemHeight} = getBoxSize(labelOpts, fontSize);\n\n // current position\n const drawLegendBox = function(x, y, legendItem) {\n if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) {\n return;\n }\n\n // Set the ctx for the box\n ctx.save();\n\n const lineWidth = valueOrDefault(legendItem.lineWidth, 1);\n ctx.fillStyle = valueOrDefault(legendItem.fillStyle, defaultColor);\n ctx.lineCap = valueOrDefault(legendItem.lineCap, 'butt');\n ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, 0);\n ctx.lineJoin = valueOrDefault(legendItem.lineJoin, 'miter');\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, defaultColor);\n\n ctx.setLineDash(valueOrDefault(legendItem.lineDash, []));\n\n if (labelOpts.usePointStyle) {\n // Recalculate x and y for drawPoint() because its expecting\n // x and y to be center of figure (instead of top left)\n const drawOptions = {\n radius: boxHeight * Math.SQRT2 / 2,\n pointStyle: legendItem.pointStyle,\n rotation: legendItem.rotation,\n borderWidth: lineWidth\n };\n const centerX = rtlHelper.xPlus(x, boxWidth / 2);\n const centerY = y + halfFontSize;\n\n // Draw pointStyle as legend symbol\n drawPointLegend(ctx, drawOptions, centerX, centerY, labelOpts.pointStyleWidth && boxWidth);\n } else {\n // Draw box as legend symbol\n // Adjust position when boxHeight < fontSize (want it centered)\n const yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0);\n const xBoxLeft = rtlHelper.leftForLtr(x, boxWidth);\n const borderRadius = toTRBLCorners(legendItem.borderRadius);\n\n ctx.beginPath();\n\n if (Object.values(borderRadius).some(v => v !== 0)) {\n addRoundedRectPath(ctx, {\n x: xBoxLeft,\n y: yBoxTop,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius,\n });\n } else {\n ctx.rect(xBoxLeft, yBoxTop, boxWidth, boxHeight);\n }\n\n ctx.fill();\n if (lineWidth !== 0) {\n ctx.stroke();\n }\n }\n\n ctx.restore();\n };\n\n const fillText = function(x, y, legendItem) {\n renderText(ctx, legendItem.text, x, y + (itemHeight / 2), labelFont, {\n strikethrough: legendItem.hidden,\n textAlign: rtlHelper.textAlign(legendItem.textAlign)\n });\n };\n\n // Horizontal\n const isHorizontal = this.isHorizontal();\n const titleHeight = this._computeTitleHeight();\n if (isHorizontal) {\n cursor = {\n x: _alignStartEnd(align, this.left + padding, this.right - lineWidths[0]),\n y: this.top + padding + titleHeight,\n line: 0\n };\n } else {\n cursor = {\n x: this.left + padding,\n y: _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[0].height),\n line: 0\n };\n }\n\n overrideTextDirection(this.ctx, opts.textDirection);\n\n const lineHeight = itemHeight + padding;\n this.legendItems.forEach((legendItem, i) => {\n ctx.strokeStyle = legendItem.fontColor; // for strikethrough effect\n ctx.fillStyle = legendItem.fontColor; // render in correct colour\n\n const textWidth = ctx.measureText(legendItem.text).width;\n const textAlign = rtlHelper.textAlign(legendItem.textAlign || (legendItem.textAlign = labelOpts.textAlign));\n const width = boxWidth + halfFontSize + textWidth;\n let x = cursor.x;\n let y = cursor.y;\n\n rtlHelper.setWidth(this.width);\n\n if (isHorizontal) {\n if (i > 0 && x + width + padding > this.right) {\n y = cursor.y += lineHeight;\n cursor.line++;\n x = cursor.x = _alignStartEnd(align, this.left + padding, this.right - lineWidths[cursor.line]);\n }\n } else if (i > 0 && y + lineHeight > this.bottom) {\n x = cursor.x = x + columnSizes[cursor.line].width + padding;\n cursor.line++;\n y = cursor.y = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[cursor.line].height);\n }\n\n const realX = rtlHelper.x(x);\n\n drawLegendBox(realX, y, legendItem);\n\n x = _textX(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : this.right, opts.rtl);\n\n // Fill the actual label\n fillText(rtlHelper.x(x), y, legendItem);\n\n if (isHorizontal) {\n cursor.x += width + padding;\n } else if (typeof legendItem.text !== 'string') {\n const fontLineHeight = labelFont.lineHeight;\n cursor.y += calculateLegendItemHeight(legendItem, fontLineHeight) + padding;\n } else {\n cursor.y += lineHeight;\n }\n });\n\n restoreTextDirection(this.ctx, opts.textDirection);\n }\n\n /**\n\t * @protected\n\t */\n drawTitle() {\n const opts = this.options;\n const titleOpts = opts.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n\n if (!titleOpts.display) {\n return;\n }\n\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const ctx = this.ctx;\n const position = titleOpts.position;\n const halfFontSize = titleFont.size / 2;\n const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize;\n let y;\n\n // These defaults are used when the legend is vertical.\n // When horizontal, they are computed below.\n let left = this.left;\n let maxWidth = this.width;\n\n if (this.isHorizontal()) {\n // Move left / right so that the title is above the legend lines\n maxWidth = Math.max(...this.lineWidths);\n y = this.top + topPaddingPlusHalfFontSize;\n left = _alignStartEnd(opts.align, left, this.right - maxWidth);\n } else {\n // Move down so that the title is above the legend stack in every alignment\n const maxHeight = this.columnSizes.reduce((acc, size) => Math.max(acc, size.height), 0);\n y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, this.top, this.bottom - maxHeight - opts.labels.padding - this._computeTitleHeight());\n }\n\n // Now that we know the left edge of the inner legend box, compute the correct\n // X coordinate from the title alignment\n const x = _alignStartEnd(position, left, left + maxWidth);\n\n // Canvas setup\n ctx.textAlign = rtlHelper.textAlign(_toLeftRightCenter(position));\n ctx.textBaseline = 'middle';\n ctx.strokeStyle = titleOpts.color;\n ctx.fillStyle = titleOpts.color;\n ctx.font = titleFont.string;\n\n renderText(ctx, titleOpts.text, x, y, titleFont);\n }\n\n /**\n\t * @private\n\t */\n _computeTitleHeight() {\n const titleOpts = this.options.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n return titleOpts.display ? titleFont.lineHeight + titlePadding.height : 0;\n }\n\n /**\n\t * @private\n\t */\n _getLegendItemAt(x, y) {\n let i, hitBox, lh;\n\n if (_isBetween(x, this.left, this.right)\n && _isBetween(y, this.top, this.bottom)) {\n // See if we are touching one of the dataset boxes\n lh = this.legendHitBoxes;\n for (i = 0; i < lh.length; ++i) {\n hitBox = lh[i];\n\n if (_isBetween(x, hitBox.left, hitBox.left + hitBox.width)\n && _isBetween(y, hitBox.top, hitBox.top + hitBox.height)) {\n // Touching an element\n return this.legendItems[i];\n }\n }\n }\n\n return null;\n }\n\n /**\n\t * Handle an event\n\t * @param {ChartEvent} e - The event to handle\n\t */\n handleEvent(e) {\n const opts = this.options;\n if (!isListened(e.type, opts)) {\n return;\n }\n\n // Chart event already has relative position in it\n const hoveredItem = this._getLegendItemAt(e.x, e.y);\n\n if (e.type === 'mousemove' || e.type === 'mouseout') {\n const previous = this._hoveredItem;\n const sameItem = itemsEqual(previous, hoveredItem);\n if (previous && !sameItem) {\n call(opts.onLeave, [e, previous, this], this);\n }\n\n this._hoveredItem = hoveredItem;\n\n if (hoveredItem && !sameItem) {\n call(opts.onHover, [e, hoveredItem, this], this);\n }\n } else if (hoveredItem) {\n call(opts.onClick, [e, hoveredItem, this], this);\n }\n }\n}\n\nfunction calculateItemSize(boxWidth, labelFont, ctx, legendItem, _itemHeight) {\n const itemWidth = calculateItemWidth(legendItem, boxWidth, labelFont, ctx);\n const itemHeight = calculateItemHeight(_itemHeight, legendItem, labelFont.lineHeight);\n return {itemWidth, itemHeight};\n}\n\nfunction calculateItemWidth(legendItem, boxWidth, labelFont, ctx) {\n let legendItemText = legendItem.text;\n if (legendItemText && typeof legendItemText !== 'string') {\n legendItemText = legendItemText.reduce((a, b) => a.length > b.length ? a : b);\n }\n return boxWidth + (labelFont.size / 2) + ctx.measureText(legendItemText).width;\n}\n\nfunction calculateItemHeight(_itemHeight, legendItem, fontLineHeight) {\n let itemHeight = _itemHeight;\n if (typeof legendItem.text !== 'string') {\n itemHeight = calculateLegendItemHeight(legendItem, fontLineHeight);\n }\n return itemHeight;\n}\n\nfunction calculateLegendItemHeight(legendItem, fontLineHeight) {\n const labelHeight = legendItem.text ? legendItem.text.length : 0;\n return fontLineHeight * labelHeight;\n}\n\nfunction isListened(type, opts) {\n if ((type === 'mousemove' || type === 'mouseout') && (opts.onHover || opts.onLeave)) {\n return true;\n }\n if (opts.onClick && (type === 'click' || type === 'mouseup')) {\n return true;\n }\n return false;\n}\n\nexport default {\n id: 'legend',\n\n /**\n\t * For tests\n\t * @private\n\t */\n _element: Legend,\n\n start(chart, _args, options) {\n const legend = chart.legend = new Legend({ctx: chart.ctx, options, chart});\n layouts.configure(chart, legend, options);\n layouts.addBox(chart, legend);\n },\n\n stop(chart) {\n layouts.removeBox(chart, chart.legend);\n delete chart.legend;\n },\n\n // During the beforeUpdate step, the layout configuration needs to run\n // This ensures that if the legend position changes (via an option update)\n // the layout system respects the change. See https://github.com/chartjs/Chart.js/issues/7527\n beforeUpdate(chart, _args, options) {\n const legend = chart.legend;\n layouts.configure(chart, legend, options);\n legend.options = options;\n },\n\n // The labels need to be built after datasets are updated to ensure that colors\n // and other styling are correct. See https://github.com/chartjs/Chart.js/issues/6968\n afterUpdate(chart) {\n const legend = chart.legend;\n legend.buildLabels();\n legend.adjustHitBoxes();\n },\n\n\n afterEvent(chart, args) {\n if (!args.replay) {\n chart.legend.handleEvent(args.event);\n }\n },\n\n defaults: {\n display: true,\n position: 'top',\n align: 'center',\n fullSize: true,\n reverse: false,\n weight: 1000,\n\n // a callback that will handle\n onClick(e, legendItem, legend) {\n const index = legendItem.datasetIndex;\n const ci = legend.chart;\n if (ci.isDatasetVisible(index)) {\n ci.hide(index);\n legendItem.hidden = true;\n } else {\n ci.show(index);\n legendItem.hidden = false;\n }\n },\n\n onHover: null,\n onLeave: null,\n\n labels: {\n color: (ctx) => ctx.chart.options.color,\n boxWidth: 40,\n padding: 10,\n // Generates labels shown in the legend\n // Valid properties to return:\n // text : text to display\n // fillStyle : fill of coloured box\n // strokeStyle: stroke of coloured box\n // hidden : if this legend item refers to a hidden item\n // lineCap : cap style for line\n // lineDash\n // lineDashOffset :\n // lineJoin :\n // lineWidth :\n generateLabels(chart) {\n const datasets = chart.data.datasets;\n const {labels: {usePointStyle, pointStyle, textAlign, color, useBorderRadius, borderRadius}} = chart.legend.options;\n\n return chart._getSortedDatasetMetas().map((meta) => {\n const style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\n const borderWidth = toPadding(style.borderWidth);\n\n return {\n text: datasets[meta.index].label,\n fillStyle: style.backgroundColor,\n fontColor: color,\n hidden: !meta.visible,\n lineCap: style.borderCapStyle,\n lineDash: style.borderDash,\n lineDashOffset: style.borderDashOffset,\n lineJoin: style.borderJoinStyle,\n lineWidth: (borderWidth.width + borderWidth.height) / 4,\n strokeStyle: style.borderColor,\n pointStyle: pointStyle || style.pointStyle,\n rotation: style.rotation,\n textAlign: textAlign || style.textAlign,\n borderRadius: useBorderRadius && (borderRadius || style.borderRadius),\n\n // Below is extra data used for toggling the datasets\n datasetIndex: meta.index\n };\n }, this);\n }\n },\n\n title: {\n color: (ctx) => ctx.chart.options.color,\n display: false,\n position: 'center',\n text: '',\n }\n },\n\n descriptors: {\n _scriptable: (name) => !name.startsWith('on'),\n labels: {\n _scriptable: (name) => !['generateLabels', 'filter', 'sort'].includes(name),\n }\n },\n};\n","import Element from '../core/core.element.js';\nimport layouts from '../core/core.layouts.js';\nimport {PI, isArray, toPadding, toFont} from '../helpers/index.js';\nimport {_toLeftRightCenter, _alignStartEnd} from '../helpers/helpers.extras.js';\nimport {renderText} from '../helpers/helpers.canvas.js';\n\nexport class Title extends Element {\n /**\n\t * @param {{ ctx: any; options: any; chart: any; }} config\n\t */\n constructor(config) {\n super();\n\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this._padding = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n\n update(maxWidth, maxHeight) {\n const opts = this.options;\n\n this.left = 0;\n this.top = 0;\n\n if (!opts.display) {\n this.width = this.height = this.right = this.bottom = 0;\n return;\n }\n\n this.width = this.right = maxWidth;\n this.height = this.bottom = maxHeight;\n\n const lineCount = isArray(opts.text) ? opts.text.length : 1;\n this._padding = toPadding(opts.padding);\n const textSize = lineCount * toFont(opts.font).lineHeight + this._padding.height;\n\n if (this.isHorizontal()) {\n this.height = textSize;\n } else {\n this.width = textSize;\n }\n }\n\n isHorizontal() {\n const pos = this.options.position;\n return pos === 'top' || pos === 'bottom';\n }\n\n _drawArgs(offset) {\n const {top, left, bottom, right, options} = this;\n const align = options.align;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n\n if (this.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n titleY = top + offset;\n maxWidth = right - left;\n } else {\n if (options.position === 'left') {\n titleX = left + offset;\n titleY = _alignStartEnd(align, bottom, top);\n rotation = PI * -0.5;\n } else {\n titleX = right - offset;\n titleY = _alignStartEnd(align, top, bottom);\n rotation = PI * 0.5;\n }\n maxWidth = bottom - top;\n }\n return {titleX, titleY, maxWidth, rotation};\n }\n\n draw() {\n const ctx = this.ctx;\n const opts = this.options;\n\n if (!opts.display) {\n return;\n }\n\n const fontOpts = toFont(opts.font);\n const lineHeight = fontOpts.lineHeight;\n const offset = lineHeight / 2 + this._padding.top;\n const {titleX, titleY, maxWidth, rotation} = this._drawArgs(offset);\n\n renderText(ctx, opts.text, 0, 0, fontOpts, {\n color: opts.color,\n maxWidth,\n rotation,\n textAlign: _toLeftRightCenter(opts.align),\n textBaseline: 'middle',\n translation: [titleX, titleY],\n });\n }\n}\n\nfunction createTitle(chart, titleOpts) {\n const title = new Title({\n ctx: chart.ctx,\n options: titleOpts,\n chart\n });\n\n layouts.configure(chart, title, titleOpts);\n layouts.addBox(chart, title);\n chart.titleBlock = title;\n}\n\nexport default {\n id: 'title',\n\n /**\n\t * For tests\n\t * @private\n\t */\n _element: Title,\n\n start(chart, _args, options) {\n createTitle(chart, options);\n },\n\n stop(chart) {\n const titleBlock = chart.titleBlock;\n layouts.removeBox(chart, titleBlock);\n delete chart.titleBlock;\n },\n\n beforeUpdate(chart, _args, options) {\n const title = chart.titleBlock;\n layouts.configure(chart, title, options);\n title.options = options;\n },\n\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'bold',\n },\n fullSize: true,\n padding: 10,\n position: 'top',\n text: '',\n weight: 2000 // by default greater than legend (1000) to be above\n },\n\n defaultRoutes: {\n color: 'color'\n },\n\n descriptors: {\n _scriptable: true,\n _indexable: false,\n },\n};\n","import {Title} from './plugin.title.js';\nimport layouts from '../core/core.layouts.js';\n\nconst map = new WeakMap();\n\nexport default {\n id: 'subtitle',\n\n start(chart, _args, options) {\n const title = new Title({\n ctx: chart.ctx,\n options,\n chart\n });\n\n layouts.configure(chart, title, options);\n layouts.addBox(chart, title);\n map.set(chart, title);\n },\n\n stop(chart) {\n layouts.removeBox(chart, map.get(chart));\n map.delete(chart);\n },\n\n beforeUpdate(chart, _args, options) {\n const title = map.get(chart);\n layouts.configure(chart, title, options);\n title.options = options;\n },\n\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'normal',\n },\n fullSize: true,\n padding: 0,\n position: 'top',\n text: '',\n weight: 1500 // by default greater than legend (1000) and smaller than title (2000)\n },\n\n defaultRoutes: {\n color: 'color'\n },\n\n descriptors: {\n _scriptable: true,\n _indexable: false,\n },\n};\n","import Animations from '../core/core.animations.js';\nimport Element from '../core/core.element.js';\nimport {addRoundedRectPath} from '../helpers/helpers.canvas.js';\nimport {each, noop, isNullOrUndef, isArray, _elementsEqual, isObject} from '../helpers/helpers.core.js';\nimport {toFont, toPadding, toTRBLCorners} from '../helpers/helpers.options.js';\nimport {getRtlAdapter, overrideTextDirection, restoreTextDirection} from '../helpers/helpers.rtl.js';\nimport {distanceBetweenPoints, _limitValue} from '../helpers/helpers.math.js';\nimport {createContext, drawPoint} from '../helpers/index.js';\n\n/**\n * @typedef { import('../platform/platform.base.js').Chart } Chart\n * @typedef { import('../types/index.js').ChartEvent } ChartEvent\n * @typedef { import('../types/index.js').ActiveElement } ActiveElement\n * @typedef { import('../core/core.interaction.js').InteractionItem } InteractionItem\n */\n\nconst positioners = {\n /**\n\t * Average mode places the tooltip at the average position of the elements shown\n\t */\n average(items) {\n if (!items.length) {\n return false;\n }\n\n let i, len;\n let x = 0;\n let y = 0;\n let count = 0;\n\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const pos = el.tooltipPosition();\n x += pos.x;\n y += pos.y;\n ++count;\n }\n }\n\n return {\n x: x / count,\n y: y / count\n };\n },\n\n /**\n\t * Gets the tooltip position nearest of the item nearest to the event position\n\t */\n nearest(items, eventPosition) {\n if (!items.length) {\n return false;\n }\n\n let x = eventPosition.x;\n let y = eventPosition.y;\n let minDistance = Number.POSITIVE_INFINITY;\n let i, len, nearestElement;\n\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const center = el.getCenterPoint();\n const d = distanceBetweenPoints(eventPosition, center);\n\n if (d < minDistance) {\n minDistance = d;\n nearestElement = el;\n }\n }\n }\n\n if (nearestElement) {\n const tp = nearestElement.tooltipPosition();\n x = tp.x;\n y = tp.y;\n }\n\n return {\n x,\n y\n };\n }\n};\n\n// Helper to push or concat based on if the 2nd parameter is an array or not\nfunction pushOrConcat(base, toPush) {\n if (toPush) {\n if (isArray(toPush)) {\n // base = base.concat(toPush);\n Array.prototype.push.apply(base, toPush);\n } else {\n base.push(toPush);\n }\n }\n\n return base;\n}\n\n/**\n * Returns array of strings split by newline\n * @param {*} str - The value to split by newline.\n * @returns {string|string[]} value if newline present - Returned from String split() method\n * @function\n */\nfunction splitNewlines(str) {\n if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n return str.split('\\n');\n }\n return str;\n}\n\n\n/**\n * Private helper to create a tooltip item model\n * @param {Chart} chart\n * @param {ActiveElement} item - {element, index, datasetIndex} to create the tooltip item for\n * @return new tooltip item\n */\nfunction createTooltipItem(chart, item) {\n const {element, datasetIndex, index} = item;\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n const {label, value} = controller.getLabelAndValue(index);\n\n return {\n chart,\n label,\n parsed: controller.getParsed(index),\n raw: chart.data.datasets[datasetIndex].data[index],\n formattedValue: value,\n dataset: controller.getDataset(),\n dataIndex: index,\n datasetIndex,\n element\n };\n}\n\n/**\n * Get the size of the tooltip\n */\nfunction getTooltipSize(tooltip, options) {\n const ctx = tooltip.chart.ctx;\n const {body, footer, title} = tooltip;\n const {boxWidth, boxHeight} = options;\n const bodyFont = toFont(options.bodyFont);\n const titleFont = toFont(options.titleFont);\n const footerFont = toFont(options.footerFont);\n const titleLineCount = title.length;\n const footerLineCount = footer.length;\n const bodyLineItemCount = body.length;\n\n const padding = toPadding(options.padding);\n let height = padding.height;\n let width = 0;\n\n // Count of all lines in the body\n let combinedBodyLength = body.reduce((count, bodyItem) => count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 0);\n combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length;\n\n if (titleLineCount) {\n height += titleLineCount * titleFont.lineHeight\n\t\t\t+ (titleLineCount - 1) * options.titleSpacing\n\t\t\t+ options.titleMarginBottom;\n }\n if (combinedBodyLength) {\n // Body lines may include some extra height depending on boxHeight\n const bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight;\n height += bodyLineItemCount * bodyLineHeight\n\t\t\t+ (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight\n\t\t\t+ (combinedBodyLength - 1) * options.bodySpacing;\n }\n if (footerLineCount) {\n height += options.footerMarginTop\n\t\t\t+ footerLineCount * footerFont.lineHeight\n\t\t\t+ (footerLineCount - 1) * options.footerSpacing;\n }\n\n // Title width\n let widthPadding = 0;\n const maxLineWidth = function(line) {\n width = Math.max(width, ctx.measureText(line).width + widthPadding);\n };\n\n ctx.save();\n\n ctx.font = titleFont.string;\n each(tooltip.title, maxLineWidth);\n\n // Body width\n ctx.font = bodyFont.string;\n each(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth);\n\n // Body lines may include some extra width due to the color box\n widthPadding = options.displayColors ? (boxWidth + 2 + options.boxPadding) : 0;\n each(body, (bodyItem) => {\n each(bodyItem.before, maxLineWidth);\n each(bodyItem.lines, maxLineWidth);\n each(bodyItem.after, maxLineWidth);\n });\n\n // Reset back to 0\n widthPadding = 0;\n\n // Footer width\n ctx.font = footerFont.string;\n each(tooltip.footer, maxLineWidth);\n\n ctx.restore();\n\n // Add padding\n width += padding.width;\n\n return {width, height};\n}\n\nfunction determineYAlign(chart, size) {\n const {y, height} = size;\n\n if (y < height / 2) {\n return 'top';\n } else if (y > (chart.height - height / 2)) {\n return 'bottom';\n }\n return 'center';\n}\n\nfunction doesNotFitWithAlign(xAlign, chart, options, size) {\n const {x, width} = size;\n const caret = options.caretSize + options.caretPadding;\n if (xAlign === 'left' && x + width + caret > chart.width) {\n return true;\n }\n\n if (xAlign === 'right' && x - width - caret < 0) {\n return true;\n }\n}\n\nfunction determineXAlign(chart, options, size, yAlign) {\n const {x, width} = size;\n const {width: chartWidth, chartArea: {left, right}} = chart;\n let xAlign = 'center';\n\n if (yAlign === 'center') {\n xAlign = x <= (left + right) / 2 ? 'left' : 'right';\n } else if (x <= width / 2) {\n xAlign = 'left';\n } else if (x >= chartWidth - width / 2) {\n xAlign = 'right';\n }\n\n if (doesNotFitWithAlign(xAlign, chart, options, size)) {\n xAlign = 'center';\n }\n\n return xAlign;\n}\n\n/**\n * Helper to get the alignment of a tooltip given the size\n */\nfunction determineAlignment(chart, options, size) {\n const yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size);\n\n return {\n xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign),\n yAlign\n };\n}\n\nfunction alignX(size, xAlign) {\n let {x, width} = size;\n if (xAlign === 'right') {\n x -= width;\n } else if (xAlign === 'center') {\n x -= (width / 2);\n }\n return x;\n}\n\nfunction alignY(size, yAlign, paddingAndSize) {\n // eslint-disable-next-line prefer-const\n let {y, height} = size;\n if (yAlign === 'top') {\n y += paddingAndSize;\n } else if (yAlign === 'bottom') {\n y -= height + paddingAndSize;\n } else {\n y -= (height / 2);\n }\n return y;\n}\n\n/**\n * Helper to get the location a tooltip needs to be placed at given the initial position (via the vm) and the size and alignment\n */\nfunction getBackgroundPoint(options, size, alignment, chart) {\n const {caretSize, caretPadding, cornerRadius} = options;\n const {xAlign, yAlign} = alignment;\n const paddingAndSize = caretSize + caretPadding;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n\n let x = alignX(size, xAlign);\n const y = alignY(size, yAlign, paddingAndSize);\n\n if (yAlign === 'center') {\n if (xAlign === 'left') {\n x += paddingAndSize;\n } else if (xAlign === 'right') {\n x -= paddingAndSize;\n }\n } else if (xAlign === 'left') {\n x -= Math.max(topLeft, bottomLeft) + caretSize;\n } else if (xAlign === 'right') {\n x += Math.max(topRight, bottomRight) + caretSize;\n }\n\n return {\n x: _limitValue(x, 0, chart.width - size.width),\n y: _limitValue(y, 0, chart.height - size.height)\n };\n}\n\nfunction getAlignedX(tooltip, align, options) {\n const padding = toPadding(options.padding);\n\n return align === 'center'\n ? tooltip.x + tooltip.width / 2\n : align === 'right'\n ? tooltip.x + tooltip.width - padding.right\n : tooltip.x + padding.left;\n}\n\n/**\n * Helper to build before and after body lines\n */\nfunction getBeforeAfterBodyLines(callback) {\n return pushOrConcat([], splitNewlines(callback));\n}\n\nfunction createTooltipContext(parent, tooltip, tooltipItems) {\n return createContext(parent, {\n tooltip,\n tooltipItems,\n type: 'tooltip'\n });\n}\n\nfunction overrideCallbacks(callbacks, context) {\n const override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks;\n return override ? callbacks.override(override) : callbacks;\n}\n\nconst defaultCallbacks = {\n // Args are: (tooltipItems, data)\n beforeTitle: noop,\n title(tooltipItems) {\n if (tooltipItems.length > 0) {\n const item = tooltipItems[0];\n const labels = item.chart.data.labels;\n const labelCount = labels ? labels.length : 0;\n\n if (this && this.options && this.options.mode === 'dataset') {\n return item.dataset.label || '';\n } else if (item.label) {\n return item.label;\n } else if (labelCount > 0 && item.dataIndex < labelCount) {\n return labels[item.dataIndex];\n }\n }\n\n return '';\n },\n afterTitle: noop,\n\n // Args are: (tooltipItems, data)\n beforeBody: noop,\n\n // Args are: (tooltipItem, data)\n beforeLabel: noop,\n label(tooltipItem) {\n if (this && this.options && this.options.mode === 'dataset') {\n return tooltipItem.label + ': ' + tooltipItem.formattedValue || tooltipItem.formattedValue;\n }\n\n let label = tooltipItem.dataset.label || '';\n\n if (label) {\n label += ': ';\n }\n const value = tooltipItem.formattedValue;\n if (!isNullOrUndef(value)) {\n label += value;\n }\n return label;\n },\n labelColor(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n borderColor: options.borderColor,\n backgroundColor: options.backgroundColor,\n borderWidth: options.borderWidth,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderRadius: 0,\n };\n },\n labelTextColor() {\n return this.options.bodyColor;\n },\n labelPointStyle(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n pointStyle: options.pointStyle,\n rotation: options.rotation,\n };\n },\n afterLabel: noop,\n\n // Args are: (tooltipItems, data)\n afterBody: noop,\n\n // Args are: (tooltipItems, data)\n beforeFooter: noop,\n footer: noop,\n afterFooter: noop\n};\n\n/**\n * Invoke callback from object with context and arguments.\n * If callback returns `undefined`, then will be invoked default callback.\n * @param {Record} callbacks\n * @param {keyof typeof defaultCallbacks} name\n * @param {*} ctx\n * @param {*} arg\n * @returns {any}\n */\nfunction invokeCallbackWithFallback(callbacks, name, ctx, arg) {\n const result = callbacks[name].call(ctx, arg);\n\n if (typeof result === 'undefined') {\n return defaultCallbacks[name].call(ctx, arg);\n }\n\n return result;\n}\n\nexport class Tooltip extends Element {\n\n /**\n * @namespace Chart.Tooltip.positioners\n */\n static positioners = positioners;\n\n constructor(config) {\n super();\n\n this.opacity = 0;\n this._active = [];\n this._eventPosition = undefined;\n this._size = undefined;\n this._cachedAnimations = undefined;\n this._tooltipItems = [];\n this.$animations = undefined;\n this.$context = undefined;\n this.chart = config.chart;\n this.options = config.options;\n this.dataPoints = undefined;\n this.title = undefined;\n this.beforeBody = undefined;\n this.body = undefined;\n this.afterBody = undefined;\n this.footer = undefined;\n this.xAlign = undefined;\n this.yAlign = undefined;\n this.x = undefined;\n this.y = undefined;\n this.height = undefined;\n this.width = undefined;\n this.caretX = undefined;\n this.caretY = undefined;\n // TODO: V4, make this private, rename to `_labelStyles`, and combine with `labelPointStyles`\n // and `labelTextColors` to create a single variable\n this.labelColors = undefined;\n this.labelPointStyles = undefined;\n this.labelTextColors = undefined;\n }\n\n initialize(options) {\n this.options = options;\n this._cachedAnimations = undefined;\n this.$context = undefined;\n }\n\n /**\n\t * @private\n\t */\n _resolveAnimations() {\n const cached = this._cachedAnimations;\n\n if (cached) {\n return cached;\n }\n\n const chart = this.chart;\n const options = this.options.setContext(this.getContext());\n const opts = options.enabled && chart.options.animation && options.animations;\n const animations = new Animations(this.chart, opts);\n if (opts._cacheable) {\n this._cachedAnimations = Object.freeze(animations);\n }\n\n return animations;\n }\n\n /**\n\t * @protected\n\t */\n getContext() {\n return this.$context ||\n\t\t\t(this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems));\n }\n\n getTitle(context, options) {\n const {callbacks} = options;\n\n const beforeTitle = invokeCallbackWithFallback(callbacks, 'beforeTitle', this, context);\n const title = invokeCallbackWithFallback(callbacks, 'title', this, context);\n const afterTitle = invokeCallbackWithFallback(callbacks, 'afterTitle', this, context);\n\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeTitle));\n lines = pushOrConcat(lines, splitNewlines(title));\n lines = pushOrConcat(lines, splitNewlines(afterTitle));\n\n return lines;\n }\n\n getBeforeBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(\n invokeCallbackWithFallback(options.callbacks, 'beforeBody', this, tooltipItems)\n );\n }\n\n getBody(tooltipItems, options) {\n const {callbacks} = options;\n const bodyItems = [];\n\n each(tooltipItems, (context) => {\n const bodyItem = {\n before: [],\n lines: [],\n after: []\n };\n const scoped = overrideCallbacks(callbacks, context);\n pushOrConcat(bodyItem.before, splitNewlines(invokeCallbackWithFallback(scoped, 'beforeLabel', this, context)));\n pushOrConcat(bodyItem.lines, invokeCallbackWithFallback(scoped, 'label', this, context));\n pushOrConcat(bodyItem.after, splitNewlines(invokeCallbackWithFallback(scoped, 'afterLabel', this, context)));\n\n bodyItems.push(bodyItem);\n });\n\n return bodyItems;\n }\n\n getAfterBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(\n invokeCallbackWithFallback(options.callbacks, 'afterBody', this, tooltipItems)\n );\n }\n\n // Get the footer and beforeFooter and afterFooter lines\n getFooter(tooltipItems, options) {\n const {callbacks} = options;\n\n const beforeFooter = invokeCallbackWithFallback(callbacks, 'beforeFooter', this, tooltipItems);\n const footer = invokeCallbackWithFallback(callbacks, 'footer', this, tooltipItems);\n const afterFooter = invokeCallbackWithFallback(callbacks, 'afterFooter', this, tooltipItems);\n\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeFooter));\n lines = pushOrConcat(lines, splitNewlines(footer));\n lines = pushOrConcat(lines, splitNewlines(afterFooter));\n\n return lines;\n }\n\n /**\n\t * @private\n\t */\n _createItems(options) {\n const active = this._active;\n const data = this.chart.data;\n const labelColors = [];\n const labelPointStyles = [];\n const labelTextColors = [];\n let tooltipItems = [];\n let i, len;\n\n for (i = 0, len = active.length; i < len; ++i) {\n tooltipItems.push(createTooltipItem(this.chart, active[i]));\n }\n\n // If the user provided a filter function, use it to modify the tooltip items\n if (options.filter) {\n tooltipItems = tooltipItems.filter((element, index, array) => options.filter(element, index, array, data));\n }\n\n // If the user provided a sorting function, use it to modify the tooltip items\n if (options.itemSort) {\n tooltipItems = tooltipItems.sort((a, b) => options.itemSort(a, b, data));\n }\n\n // Determine colors for boxes\n each(tooltipItems, (context) => {\n const scoped = overrideCallbacks(options.callbacks, context);\n labelColors.push(invokeCallbackWithFallback(scoped, 'labelColor', this, context));\n labelPointStyles.push(invokeCallbackWithFallback(scoped, 'labelPointStyle', this, context));\n labelTextColors.push(invokeCallbackWithFallback(scoped, 'labelTextColor', this, context));\n });\n\n this.labelColors = labelColors;\n this.labelPointStyles = labelPointStyles;\n this.labelTextColors = labelTextColors;\n this.dataPoints = tooltipItems;\n return tooltipItems;\n }\n\n update(changed, replay) {\n const options = this.options.setContext(this.getContext());\n const active = this._active;\n let properties;\n let tooltipItems = [];\n\n if (!active.length) {\n if (this.opacity !== 0) {\n properties = {\n opacity: 0\n };\n }\n } else {\n const position = positioners[options.position].call(this, active, this._eventPosition);\n tooltipItems = this._createItems(options);\n\n this.title = this.getTitle(tooltipItems, options);\n this.beforeBody = this.getBeforeBody(tooltipItems, options);\n this.body = this.getBody(tooltipItems, options);\n this.afterBody = this.getAfterBody(tooltipItems, options);\n this.footer = this.getFooter(tooltipItems, options);\n\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, size);\n const alignment = determineAlignment(this.chart, options, positionAndSize);\n const backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, this.chart);\n\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n\n properties = {\n opacity: 1,\n x: backgroundPoint.x,\n y: backgroundPoint.y,\n width: size.width,\n height: size.height,\n caretX: position.x,\n caretY: position.y\n };\n }\n\n this._tooltipItems = tooltipItems;\n this.$context = undefined;\n\n if (properties) {\n this._resolveAnimations().update(this, properties);\n }\n\n if (changed && options.external) {\n options.external.call(this, {chart: this.chart, tooltip: this, replay});\n }\n }\n\n drawCaret(tooltipPoint, ctx, size, options) {\n const caretPosition = this.getCaretPosition(tooltipPoint, size, options);\n\n ctx.lineTo(caretPosition.x1, caretPosition.y1);\n ctx.lineTo(caretPosition.x2, caretPosition.y2);\n ctx.lineTo(caretPosition.x3, caretPosition.y3);\n }\n\n getCaretPosition(tooltipPoint, size, options) {\n const {xAlign, yAlign} = this;\n const {caretSize, cornerRadius} = options;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n const {x: ptX, y: ptY} = tooltipPoint;\n const {width, height} = size;\n let x1, x2, x3, y1, y2, y3;\n\n if (yAlign === 'center') {\n y2 = ptY + (height / 2);\n\n if (xAlign === 'left') {\n x1 = ptX;\n x2 = x1 - caretSize;\n\n // Left draws bottom -> top, this y1 is on the bottom\n y1 = y2 + caretSize;\n y3 = y2 - caretSize;\n } else {\n x1 = ptX + width;\n x2 = x1 + caretSize;\n\n // Right draws top -> bottom, thus y1 is on the top\n y1 = y2 - caretSize;\n y3 = y2 + caretSize;\n }\n\n x3 = x1;\n } else {\n if (xAlign === 'left') {\n x2 = ptX + Math.max(topLeft, bottomLeft) + (caretSize);\n } else if (xAlign === 'right') {\n x2 = ptX + width - Math.max(topRight, bottomRight) - caretSize;\n } else {\n x2 = this.caretX;\n }\n\n if (yAlign === 'top') {\n y1 = ptY;\n y2 = y1 - caretSize;\n\n // Top draws left -> right, thus x1 is on the left\n x1 = x2 - caretSize;\n x3 = x2 + caretSize;\n } else {\n y1 = ptY + height;\n y2 = y1 + caretSize;\n\n // Bottom draws right -> left, thus x1 is on the right\n x1 = x2 + caretSize;\n x3 = x2 - caretSize;\n }\n y3 = y1;\n }\n return {x1, x2, x3, y1, y2, y3};\n }\n\n drawTitle(pt, ctx, options) {\n const title = this.title;\n const length = title.length;\n let titleFont, titleSpacing, i;\n\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n\n pt.x = getAlignedX(this, options.titleAlign, options);\n\n ctx.textAlign = rtlHelper.textAlign(options.titleAlign);\n ctx.textBaseline = 'middle';\n\n titleFont = toFont(options.titleFont);\n titleSpacing = options.titleSpacing;\n\n ctx.fillStyle = options.titleColor;\n ctx.font = titleFont.string;\n\n for (i = 0; i < length; ++i) {\n ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2);\n pt.y += titleFont.lineHeight + titleSpacing; // Line Height and spacing\n\n if (i + 1 === length) {\n pt.y += options.titleMarginBottom - titleSpacing; // If Last, add margin, remove spacing\n }\n }\n }\n }\n\n /**\n\t * @private\n\t */\n _drawColorBox(ctx, pt, i, rtlHelper, options) {\n const labelColor = this.labelColors[i];\n const labelPointStyle = this.labelPointStyles[i];\n const {boxHeight, boxWidth} = options;\n const bodyFont = toFont(options.bodyFont);\n const colorX = getAlignedX(this, 'left', options);\n const rtlColorX = rtlHelper.x(colorX);\n const yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0;\n const colorY = pt.y + yOffSet;\n\n if (options.usePointStyle) {\n const drawOptions = {\n radius: Math.min(boxWidth, boxHeight) / 2, // fit the circle in the box\n pointStyle: labelPointStyle.pointStyle,\n rotation: labelPointStyle.rotation,\n borderWidth: 1\n };\n // Recalculate x and y for drawPoint() because its expecting\n // x and y to be center of figure (instead of top left)\n const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2;\n const centerY = colorY + boxHeight / 2;\n\n // Fill the point with white so that colours merge nicely if the opacity is < 1\n ctx.strokeStyle = options.multiKeyBackground;\n ctx.fillStyle = options.multiKeyBackground;\n drawPoint(ctx, drawOptions, centerX, centerY);\n\n // Draw the point\n ctx.strokeStyle = labelColor.borderColor;\n ctx.fillStyle = labelColor.backgroundColor;\n drawPoint(ctx, drawOptions, centerX, centerY);\n } else {\n // Border\n ctx.lineWidth = isObject(labelColor.borderWidth) ? Math.max(...Object.values(labelColor.borderWidth)) : (labelColor.borderWidth || 1); // TODO, v4 remove fallback\n ctx.strokeStyle = labelColor.borderColor;\n ctx.setLineDash(labelColor.borderDash || []);\n ctx.lineDashOffset = labelColor.borderDashOffset || 0;\n\n // Fill a white rect so that colours merge nicely if the opacity is < 1\n const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth);\n const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - 2);\n const borderRadius = toTRBLCorners(labelColor.borderRadius);\n\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n ctx.fillStyle = options.multiKeyBackground;\n addRoundedRectPath(ctx, {\n x: outerX,\n y: colorY,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius,\n });\n ctx.fill();\n ctx.stroke();\n\n // Inner square\n ctx.fillStyle = labelColor.backgroundColor;\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: innerX,\n y: colorY + 1,\n w: boxWidth - 2,\n h: boxHeight - 2,\n radius: borderRadius,\n });\n ctx.fill();\n } else {\n // Normal rect\n ctx.fillStyle = options.multiKeyBackground;\n ctx.fillRect(outerX, colorY, boxWidth, boxHeight);\n ctx.strokeRect(outerX, colorY, boxWidth, boxHeight);\n // Inner square\n ctx.fillStyle = labelColor.backgroundColor;\n ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2);\n }\n }\n\n // restore fillStyle\n ctx.fillStyle = this.labelTextColors[i];\n }\n\n drawBody(pt, ctx, options) {\n const {body} = this;\n const {bodySpacing, bodyAlign, displayColors, boxHeight, boxWidth, boxPadding} = options;\n const bodyFont = toFont(options.bodyFont);\n let bodyLineHeight = bodyFont.lineHeight;\n let xLinePadding = 0;\n\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n\n const fillLineOfText = function(line) {\n ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2);\n pt.y += bodyLineHeight + bodySpacing;\n };\n\n const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n let bodyItem, textColor, lines, i, j, ilen, jlen;\n\n ctx.textAlign = bodyAlign;\n ctx.textBaseline = 'middle';\n ctx.font = bodyFont.string;\n\n pt.x = getAlignedX(this, bodyAlignForCalculation, options);\n\n // Before body lines\n ctx.fillStyle = options.bodyColor;\n each(this.beforeBody, fillLineOfText);\n\n xLinePadding = displayColors && bodyAlignForCalculation !== 'right'\n ? bodyAlign === 'center' ? (boxWidth / 2 + boxPadding) : (boxWidth + 2 + boxPadding)\n : 0;\n\n // Draw body lines now\n for (i = 0, ilen = body.length; i < ilen; ++i) {\n bodyItem = body[i];\n textColor = this.labelTextColors[i];\n\n ctx.fillStyle = textColor;\n each(bodyItem.before, fillLineOfText);\n\n lines = bodyItem.lines;\n // Draw Legend-like boxes if needed\n if (displayColors && lines.length) {\n this._drawColorBox(ctx, pt, i, rtlHelper, options);\n bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight);\n }\n\n for (j = 0, jlen = lines.length; j < jlen; ++j) {\n fillLineOfText(lines[j]);\n // Reset for any lines that don't include colorbox\n bodyLineHeight = bodyFont.lineHeight;\n }\n\n each(bodyItem.after, fillLineOfText);\n }\n\n // Reset back to 0 for after body\n xLinePadding = 0;\n bodyLineHeight = bodyFont.lineHeight;\n\n // After body lines\n each(this.afterBody, fillLineOfText);\n pt.y -= bodySpacing; // Remove last body spacing\n }\n\n drawFooter(pt, ctx, options) {\n const footer = this.footer;\n const length = footer.length;\n let footerFont, i;\n\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n\n pt.x = getAlignedX(this, options.footerAlign, options);\n pt.y += options.footerMarginTop;\n\n ctx.textAlign = rtlHelper.textAlign(options.footerAlign);\n ctx.textBaseline = 'middle';\n\n footerFont = toFont(options.footerFont);\n\n ctx.fillStyle = options.footerColor;\n ctx.font = footerFont.string;\n\n for (i = 0; i < length; ++i) {\n ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2);\n pt.y += footerFont.lineHeight + options.footerSpacing;\n }\n }\n }\n\n drawBackground(pt, ctx, tooltipSize, options) {\n const {xAlign, yAlign} = this;\n const {x, y} = pt;\n const {width, height} = tooltipSize;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(options.cornerRadius);\n\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n\n ctx.beginPath();\n ctx.moveTo(x + topLeft, y);\n if (yAlign === 'top') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width - topRight, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + topRight);\n if (yAlign === 'center' && xAlign === 'right') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width, y + height - bottomRight);\n ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRight, y + height);\n if (yAlign === 'bottom') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + bottomLeft, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeft);\n if (yAlign === 'center' && xAlign === 'left') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x, y + topLeft);\n ctx.quadraticCurveTo(x, y, x + topLeft, y);\n ctx.closePath();\n\n ctx.fill();\n\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n }\n\n /**\n\t * Update x/y animation targets when _active elements are animating too\n\t * @private\n\t */\n _updateAnimationTarget(options) {\n const chart = this.chart;\n const anims = this.$animations;\n const animX = anims && anims.x;\n const animY = anims && anims.y;\n if (animX || animY) {\n const position = positioners[options.position].call(this, this._active, this._eventPosition);\n if (!position) {\n return;\n }\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, this._size);\n const alignment = determineAlignment(chart, options, positionAndSize);\n const point = getBackgroundPoint(options, positionAndSize, alignment, chart);\n if (animX._to !== point.x || animY._to !== point.y) {\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n this.width = size.width;\n this.height = size.height;\n this.caretX = position.x;\n this.caretY = position.y;\n this._resolveAnimations().update(this, point);\n }\n }\n }\n\n /**\n * Determine if the tooltip will draw anything\n * @returns {boolean} True if the tooltip will render\n */\n _willRender() {\n return !!this.opacity;\n }\n\n draw(ctx) {\n const options = this.options.setContext(this.getContext());\n let opacity = this.opacity;\n\n if (!opacity) {\n return;\n }\n\n this._updateAnimationTarget(options);\n\n const tooltipSize = {\n width: this.width,\n height: this.height\n };\n const pt = {\n x: this.x,\n y: this.y\n };\n\n // IE11/Edge does not like very small opacities, so snap to 0\n opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity;\n\n const padding = toPadding(options.padding);\n\n // Truthy/falsey value for empty tooltip\n const hasTooltipContent = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length;\n\n if (options.enabled && hasTooltipContent) {\n ctx.save();\n ctx.globalAlpha = opacity;\n\n // Draw Background\n this.drawBackground(pt, ctx, tooltipSize, options);\n\n overrideTextDirection(ctx, options.textDirection);\n\n pt.y += padding.top;\n\n // Titles\n this.drawTitle(pt, ctx, options);\n\n // Body\n this.drawBody(pt, ctx, options);\n\n // Footer\n this.drawFooter(pt, ctx, options);\n\n restoreTextDirection(ctx, options.textDirection);\n\n ctx.restore();\n }\n }\n\n /**\n\t * Get active elements in the tooltip\n\t * @returns {Array} Array of elements that are active in the tooltip\n\t */\n getActiveElements() {\n return this._active || [];\n }\n\n /**\n\t * Set active elements in the tooltip\n\t * @param {array} activeElements Array of active datasetIndex/index pairs.\n\t * @param {object} eventPosition Synthetic event position used in positioning\n\t */\n setActiveElements(activeElements, eventPosition) {\n const lastActive = this._active;\n const active = activeElements.map(({datasetIndex, index}) => {\n const meta = this.chart.getDatasetMeta(datasetIndex);\n\n if (!meta) {\n throw new Error('Cannot find a dataset at index ' + datasetIndex);\n }\n\n return {\n datasetIndex,\n element: meta.data[index],\n index,\n };\n });\n const changed = !_elementsEqual(lastActive, active);\n const positionChanged = this._positionChanged(active, eventPosition);\n\n if (changed || positionChanged) {\n this._active = active;\n this._eventPosition = eventPosition;\n this._ignoreReplayEvents = true;\n this.update(true);\n }\n }\n\n /**\n\t * Handle an event\n\t * @param {ChartEvent} e - The event to handle\n\t * @param {boolean} [replay] - This is a replayed event (from update)\n\t * @param {boolean} [inChartArea] - The event is inside chartArea\n\t * @returns {boolean} true if the tooltip changed\n\t */\n handleEvent(e, replay, inChartArea = true) {\n if (replay && this._ignoreReplayEvents) {\n return false;\n }\n this._ignoreReplayEvents = false;\n\n const options = this.options;\n const lastActive = this._active || [];\n const active = this._getActiveElements(e, lastActive, replay, inChartArea);\n\n // When there are multiple items shown, but the tooltip position is nearest mode\n // an update may need to be made because our position may have changed even though\n // the items are the same as before.\n const positionChanged = this._positionChanged(active, e);\n\n // Remember Last Actives\n const changed = replay || !_elementsEqual(active, lastActive) || positionChanged;\n\n // Only handle target event on tooltip change\n if (changed) {\n this._active = active;\n\n if (options.enabled || options.external) {\n this._eventPosition = {\n x: e.x,\n y: e.y\n };\n\n this.update(true, replay);\n }\n }\n\n return changed;\n }\n\n /**\n\t * Helper for determining the active elements for event\n\t * @param {ChartEvent} e - The event to handle\n\t * @param {InteractionItem[]} lastActive - Previously active elements\n\t * @param {boolean} [replay] - This is a replayed event (from update)\n\t * @param {boolean} [inChartArea] - The event is inside chartArea\n\t * @returns {InteractionItem[]} - Active elements\n\t * @private\n\t */\n _getActiveElements(e, lastActive, replay, inChartArea) {\n const options = this.options;\n\n if (e.type === 'mouseout') {\n return [];\n }\n\n if (!inChartArea) {\n // Let user control the active elements outside chartArea. Eg. using Legend.\n return lastActive;\n }\n\n // Find Active Elements for tooltips\n const active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay);\n\n if (options.reverse) {\n active.reverse();\n }\n\n return active;\n }\n\n /**\n\t * Determine if the active elements + event combination changes the\n\t * tooltip position\n\t * @param {array} active - Active elements\n\t * @param {ChartEvent} e - Event that triggered the position change\n\t * @returns {boolean} True if the position has changed\n\t */\n _positionChanged(active, e) {\n const {caretX, caretY, options} = this;\n const position = positioners[options.position].call(this, active, e);\n return position !== false && (caretX !== position.x || caretY !== position.y);\n }\n}\n\nexport default {\n id: 'tooltip',\n _element: Tooltip,\n positioners,\n\n afterInit(chart, _args, options) {\n if (options) {\n chart.tooltip = new Tooltip({chart, options});\n }\n },\n\n beforeUpdate(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n\n reset(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n\n afterDraw(chart) {\n const tooltip = chart.tooltip;\n\n if (tooltip && tooltip._willRender()) {\n const args = {\n tooltip\n };\n\n if (chart.notifyPlugins('beforeTooltipDraw', {...args, cancelable: true}) === false) {\n return;\n }\n\n tooltip.draw(chart.ctx);\n\n chart.notifyPlugins('afterTooltipDraw', args);\n }\n },\n\n afterEvent(chart, args) {\n if (chart.tooltip) {\n // If the event is replayed from `update`, we should evaluate with the final positions.\n const useFinalPosition = args.replay;\n if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) {\n // notify chart about the change, so it will render\n args.changed = true;\n }\n }\n },\n\n defaults: {\n enabled: true,\n external: null,\n position: 'average',\n backgroundColor: 'rgba(0,0,0,0.8)',\n titleColor: '#fff',\n titleFont: {\n weight: 'bold',\n },\n titleSpacing: 2,\n titleMarginBottom: 6,\n titleAlign: 'left',\n bodyColor: '#fff',\n bodySpacing: 2,\n bodyFont: {\n },\n bodyAlign: 'left',\n footerColor: '#fff',\n footerSpacing: 2,\n footerMarginTop: 6,\n footerFont: {\n weight: 'bold',\n },\n footerAlign: 'left',\n padding: 6,\n caretPadding: 2,\n caretSize: 5,\n cornerRadius: 6,\n boxHeight: (ctx, opts) => opts.bodyFont.size,\n boxWidth: (ctx, opts) => opts.bodyFont.size,\n multiKeyBackground: '#fff',\n displayColors: true,\n boxPadding: 0,\n borderColor: 'rgba(0,0,0,0)',\n borderWidth: 0,\n animation: {\n duration: 400,\n easing: 'easeOutQuart',\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'width', 'height', 'caretX', 'caretY'],\n },\n opacity: {\n easing: 'linear',\n duration: 200\n }\n },\n callbacks: defaultCallbacks\n },\n\n defaultRoutes: {\n bodyFont: 'font',\n footerFont: 'font',\n titleFont: 'font'\n },\n\n descriptors: {\n _scriptable: (name) => name !== 'filter' && name !== 'itemSort' && name !== 'external',\n _indexable: false,\n callbacks: {\n _scriptable: false,\n _indexable: false,\n },\n animation: {\n _fallback: false\n },\n animations: {\n _fallback: 'animation'\n }\n },\n\n // Resolve additionally from `interaction` options and defaults.\n additionalOptionScopes: ['interaction']\n};\n","import Scale from '../core/core.scale.js';\nimport {isNullOrUndef, valueOrDefault, _limitValue} from '../helpers/index.js';\n\nconst addIfString = (labels, raw, index, addedLabels) => {\n if (typeof raw === 'string') {\n index = labels.push(raw) - 1;\n addedLabels.unshift({index, label: raw});\n } else if (isNaN(raw)) {\n index = null;\n }\n return index;\n};\n\nfunction findOrAddLabel(labels, raw, index, addedLabels) {\n const first = labels.indexOf(raw);\n if (first === -1) {\n return addIfString(labels, raw, index, addedLabels);\n }\n const last = labels.lastIndexOf(raw);\n return first !== last ? index : first;\n}\n\nconst validIndex = (index, max) => index === null ? null : _limitValue(Math.round(index), 0, max);\n\nfunction _getLabelForValue(value) {\n const labels = this.getLabels();\n\n if (value >= 0 && value < labels.length) {\n return labels[value];\n }\n return value;\n}\n\nexport default class CategoryScale extends Scale {\n\n static id = 'category';\n\n /**\n * @type {any}\n */\n static defaults = {\n ticks: {\n callback: _getLabelForValue\n }\n };\n\n constructor(cfg) {\n super(cfg);\n\n /** @type {number} */\n this._startValue = undefined;\n this._valueRange = 0;\n this._addedLabels = [];\n }\n\n init(scaleOptions) {\n const added = this._addedLabels;\n if (added.length) {\n const labels = this.getLabels();\n for (const {index, label} of added) {\n if (labels[index] === label) {\n labels.splice(index, 1);\n }\n }\n this._addedLabels = [];\n }\n super.init(scaleOptions);\n }\n\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n const labels = this.getLabels();\n index = isFinite(index) && labels[index] === raw ? index\n : findOrAddLabel(labels, raw, valueOrDefault(index, raw), this._addedLabels);\n return validIndex(index, labels.length - 1);\n }\n\n determineDataLimits() {\n const {minDefined, maxDefined} = this.getUserBounds();\n let {min, max} = this.getMinMax(true);\n\n if (this.options.bounds === 'ticks') {\n if (!minDefined) {\n min = 0;\n }\n if (!maxDefined) {\n max = this.getLabels().length - 1;\n }\n }\n\n this.min = min;\n this.max = max;\n }\n\n buildTicks() {\n const min = this.min;\n const max = this.max;\n const offset = this.options.offset;\n const ticks = [];\n let labels = this.getLabels();\n\n // If we are viewing some subset of labels, slice the original array\n labels = (min === 0 && max === labels.length - 1) ? labels : labels.slice(min, max + 1);\n\n this._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1);\n this._startValue = this.min - (offset ? 0.5 : 0);\n\n for (let value = min; value <= max; value++) {\n ticks.push({value});\n }\n return ticks;\n }\n\n getLabelForValue(value) {\n return _getLabelForValue.call(this, value);\n }\n\n /**\n\t * @protected\n\t */\n configure() {\n super.configure();\n\n if (!this.isHorizontal()) {\n // For backward compatibility, vertical category scale reverse is inverted.\n this._reversePixels = !this._reversePixels;\n }\n }\n\n // Used to get data value locations. Value can either be an index or a numerical value\n getPixelForValue(value) {\n if (typeof value !== 'number') {\n value = this.parse(value);\n }\n\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n\n // Must override base implementation because it calls getPixelForValue\n // and category scale can have duplicate values\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n\n getValueForPixel(pixel) {\n return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange);\n }\n\n getBasePixel() {\n return this.bottom;\n }\n}\n","import {isNullOrUndef} from '../helpers/helpers.core.js';\nimport {almostEquals, almostWhole, niceNum, _decimalPlaces, _setMinAndMaxByKey, sign, toRadians} from '../helpers/helpers.math.js';\nimport Scale from '../core/core.scale.js';\nimport {formatNumber} from '../helpers/helpers.intl.js';\n\n/**\n * Generate a set of linear ticks for an axis\n * 1. If generationOptions.min, generationOptions.max, and generationOptions.step are defined:\n * if (max - min) / step is an integer, ticks are generated as [min, min + step, ..., max]\n * Note that the generationOptions.maxCount setting is respected in this scenario\n *\n * 2. If generationOptions.min, generationOptions.max, and generationOptions.count is defined\n * spacing = (max - min) / count\n * Ticks are generated as [min, min + spacing, ..., max]\n *\n * 3. If generationOptions.count is defined\n * spacing = (niceMax - niceMin) / count\n *\n * 4. Compute optimal spacing of ticks using niceNum algorithm\n *\n * @param generationOptions the options used to generate the ticks\n * @param dataRange the range of the data\n * @returns {object[]} array of tick objects\n */\nfunction generateTicks(generationOptions, dataRange) {\n const ticks = [];\n // To get a \"nice\" value for the tick spacing, we will use the appropriately named\n // \"nice number\" algorithm. See https://stackoverflow.com/questions/8506881/nice-label-algorithm-for-charts-with-minimum-ticks\n // for details.\n\n const MIN_SPACING = 1e-14;\n const {bounds, step, min, max, precision, count, maxTicks, maxDigits, includeBounds} = generationOptions;\n const unit = step || 1;\n const maxSpaces = maxTicks - 1;\n const {min: rmin, max: rmax} = dataRange;\n const minDefined = !isNullOrUndef(min);\n const maxDefined = !isNullOrUndef(max);\n const countDefined = !isNullOrUndef(count);\n const minSpacing = (rmax - rmin) / (maxDigits + 1);\n let spacing = niceNum((rmax - rmin) / maxSpaces / unit) * unit;\n let factor, niceMin, niceMax, numSpaces;\n\n // Beyond MIN_SPACING floating point numbers being to lose precision\n // such that we can't do the math necessary to generate ticks\n if (spacing < MIN_SPACING && !minDefined && !maxDefined) {\n return [{value: rmin}, {value: rmax}];\n }\n\n numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n if (numSpaces > maxSpaces) {\n // If the calculated num of spaces exceeds maxNumSpaces, recalculate it\n spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit;\n }\n\n if (!isNullOrUndef(precision)) {\n // If the user specified a precision, round to that number of decimal places\n factor = Math.pow(10, precision);\n spacing = Math.ceil(spacing * factor) / factor;\n }\n\n if (bounds === 'ticks') {\n niceMin = Math.floor(rmin / spacing) * spacing;\n niceMax = Math.ceil(rmax / spacing) * spacing;\n } else {\n niceMin = rmin;\n niceMax = rmax;\n }\n\n if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1000)) {\n // Case 1: If min, max and stepSize are set and they make an evenly spaced scale use it.\n // spacing = step;\n // numSpaces = (max - min) / spacing;\n // Note that we round here to handle the case where almostWhole translated an FP error\n numSpaces = Math.round(Math.min((max - min) / spacing, maxTicks));\n spacing = (max - min) / numSpaces;\n niceMin = min;\n niceMax = max;\n } else if (countDefined) {\n // Cases 2 & 3, we have a count specified. Handle optional user defined edges to the range.\n // Sometimes these are no-ops, but it makes the code a lot clearer\n // and when a user defined range is specified, we want the correct ticks\n niceMin = minDefined ? min : niceMin;\n niceMax = maxDefined ? max : niceMax;\n numSpaces = count - 1;\n spacing = (niceMax - niceMin) / numSpaces;\n } else {\n // Case 4\n numSpaces = (niceMax - niceMin) / spacing;\n\n // If very close to our rounded value, use it.\n if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n numSpaces = Math.round(numSpaces);\n } else {\n numSpaces = Math.ceil(numSpaces);\n }\n }\n\n // The spacing will have changed in cases 1, 2, and 3 so the factor cannot be computed\n // until this point\n const decimalPlaces = Math.max(\n _decimalPlaces(spacing),\n _decimalPlaces(niceMin)\n );\n factor = Math.pow(10, isNullOrUndef(precision) ? decimalPlaces : precision);\n niceMin = Math.round(niceMin * factor) / factor;\n niceMax = Math.round(niceMax * factor) / factor;\n\n let j = 0;\n if (minDefined) {\n if (includeBounds && niceMin !== min) {\n ticks.push({value: min});\n\n if (niceMin < min) {\n j++; // Skip niceMin\n }\n // If the next nice tick is close to min, skip it\n if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) {\n j++;\n }\n } else if (niceMin < min) {\n j++;\n }\n }\n\n for (; j < numSpaces; ++j) {\n const tickValue = Math.round((niceMin + j * spacing) * factor) / factor;\n if (maxDefined && tickValue > max) {\n break;\n }\n ticks.push({value: tickValue});\n }\n\n if (maxDefined && includeBounds && niceMax !== max) {\n // If the previous tick is too close to max, replace it with max, else add max\n if (ticks.length && almostEquals(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) {\n ticks[ticks.length - 1].value = max;\n } else {\n ticks.push({value: max});\n }\n } else if (!maxDefined || niceMax === max) {\n ticks.push({value: niceMax});\n }\n\n return ticks;\n}\n\nfunction relativeLabelSize(value, minSpacing, {horizontal, minRotation}) {\n const rad = toRadians(minRotation);\n const ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 0.001;\n const length = 0.75 * minSpacing * ('' + value).length;\n return Math.min(minSpacing / ratio, length);\n}\n\nexport default class LinearScaleBase extends Scale {\n\n constructor(cfg) {\n super(cfg);\n\n /** @type {number} */\n this.start = undefined;\n /** @type {number} */\n this.end = undefined;\n /** @type {number} */\n this._startValue = undefined;\n /** @type {number} */\n this._endValue = undefined;\n this._valueRange = 0;\n }\n\n parse(raw, index) { // eslint-disable-line no-unused-vars\n if (isNullOrUndef(raw)) {\n return null;\n }\n if ((typeof raw === 'number' || raw instanceof Number) && !isFinite(+raw)) {\n return null;\n }\n\n return +raw;\n }\n\n handleTickRangeOptions() {\n const {beginAtZero} = this.options;\n const {minDefined, maxDefined} = this.getUserBounds();\n let {min, max} = this;\n\n const setMin = v => (min = minDefined ? min : v);\n const setMax = v => (max = maxDefined ? max : v);\n\n if (beginAtZero) {\n const minSign = sign(min);\n const maxSign = sign(max);\n\n if (minSign < 0 && maxSign < 0) {\n setMax(0);\n } else if (minSign > 0 && maxSign > 0) {\n setMin(0);\n }\n }\n\n if (min === max) {\n let offset = max === 0 ? 1 : Math.abs(max * 0.05);\n\n setMax(max + offset);\n\n if (!beginAtZero) {\n setMin(min - offset);\n }\n }\n this.min = min;\n this.max = max;\n }\n\n getTickLimit() {\n const tickOpts = this.options.ticks;\n // eslint-disable-next-line prefer-const\n let {maxTicksLimit, stepSize} = tickOpts;\n let maxTicks;\n\n if (stepSize) {\n maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1;\n if (maxTicks > 1000) {\n console.warn(`scales.${this.id}.ticks.stepSize: ${stepSize} would result generating up to ${maxTicks} ticks. Limiting to 1000.`);\n maxTicks = 1000;\n }\n } else {\n maxTicks = this.computeTickLimit();\n maxTicksLimit = maxTicksLimit || 11;\n }\n\n if (maxTicksLimit) {\n maxTicks = Math.min(maxTicksLimit, maxTicks);\n }\n\n return maxTicks;\n }\n\n /**\n\t * @protected\n\t */\n computeTickLimit() {\n return Number.POSITIVE_INFINITY;\n }\n\n buildTicks() {\n const opts = this.options;\n const tickOpts = opts.ticks;\n\n // Figure out what the max number of ticks we can support it is based on the size of\n // the axis area. For now, we say that the minimum tick spacing in pixels must be 40\n // We also limit the maximum number of ticks to 11 which gives a nice 10 squares on\n // the graph. Make sure we always have at least 2 ticks\n let maxTicks = this.getTickLimit();\n maxTicks = Math.max(2, maxTicks);\n\n const numericGeneratorOptions = {\n maxTicks,\n bounds: opts.bounds,\n min: opts.min,\n max: opts.max,\n precision: tickOpts.precision,\n step: tickOpts.stepSize,\n count: tickOpts.count,\n maxDigits: this._maxDigits(),\n horizontal: this.isHorizontal(),\n minRotation: tickOpts.minRotation || 0,\n includeBounds: tickOpts.includeBounds !== false\n };\n const dataRange = this._range || this;\n const ticks = generateTicks(numericGeneratorOptions, dataRange);\n\n // At this point, we need to update our max and min given the tick values,\n // since we probably have expanded the range of the scale\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n\n if (opts.reverse) {\n ticks.reverse();\n\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n\n return ticks;\n }\n\n /**\n\t * @protected\n\t */\n configure() {\n const ticks = this.ticks;\n let start = this.min;\n let end = this.max;\n\n super.configure();\n\n if (this.options.offset && ticks.length) {\n const offset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\n start -= offset;\n end += offset;\n }\n this._startValue = start;\n this._endValue = end;\n this._valueRange = end - start;\n }\n\n getLabelForValue(value) {\n return formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n}\n","import {isFinite} from '../helpers/helpers.core.js';\nimport LinearScaleBase from './scale.linearbase.js';\nimport Ticks from '../core/core.ticks.js';\nimport {toRadians} from '../helpers/index.js';\n\nexport default class LinearScale extends LinearScaleBase {\n\n static id = 'linear';\n\n /**\n * @type {any}\n */\n static defaults = {\n ticks: {\n callback: Ticks.formatters.numeric\n }\n };\n\n\n determineDataLimits() {\n const {min, max} = this.getMinMax(true);\n\n this.min = isFinite(min) ? min : 0;\n this.max = isFinite(max) ? max : 1;\n\n // Common base implementation to handle min, max, beginAtZero\n this.handleTickRangeOptions();\n }\n\n /**\n\t * Returns the maximum number of ticks based on the scale dimension\n\t * @protected\n \t */\n computeTickLimit() {\n const horizontal = this.isHorizontal();\n const length = horizontal ? this.width : this.height;\n const minRotation = toRadians(this.options.ticks.minRotation);\n const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 0.001;\n const tickFont = this._resolveTickFontOptions(0);\n return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio));\n }\n\n // Utils\n getPixelForValue(value) {\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n\n getValueForPixel(pixel) {\n return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n }\n}\n","import {finiteOrDefault, isFinite} from '../helpers/helpers.core.js';\nimport {formatNumber} from '../helpers/helpers.intl.js';\nimport {_setMinAndMaxByKey, log10} from '../helpers/helpers.math.js';\nimport Scale from '../core/core.scale.js';\nimport LinearScaleBase from './scale.linearbase.js';\nimport Ticks from '../core/core.ticks.js';\n\nconst log10Floor = v => Math.floor(log10(v));\nconst changeExponent = (v, m) => Math.pow(10, log10Floor(v) + m);\n\nfunction isMajor(tickVal) {\n const remain = tickVal / (Math.pow(10, log10Floor(tickVal)));\n return remain === 1;\n}\n\nfunction steps(min, max, rangeExp) {\n const rangeStep = Math.pow(10, rangeExp);\n const start = Math.floor(min / rangeStep);\n const end = Math.ceil(max / rangeStep);\n return end - start;\n}\n\nfunction startExp(min, max) {\n const range = max - min;\n let rangeExp = log10Floor(range);\n while (steps(min, max, rangeExp) > 10) {\n rangeExp++;\n }\n while (steps(min, max, rangeExp) < 10) {\n rangeExp--;\n }\n return Math.min(rangeExp, log10Floor(min));\n}\n\n\n/**\n * Generate a set of logarithmic ticks\n * @param generationOptions the options used to generate the ticks\n * @param dataRange the range of the data\n * @returns {object[]} array of tick objects\n */\nfunction generateTicks(generationOptions, {min, max}) {\n min = finiteOrDefault(generationOptions.min, min);\n const ticks = [];\n const minExp = log10Floor(min);\n let exp = startExp(min, max);\n let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n const stepSize = Math.pow(10, exp);\n const base = minExp > exp ? Math.pow(10, minExp) : 0;\n const start = Math.round((min - base) * precision) / precision;\n const offset = Math.floor((min - base) / stepSize / 10) * stepSize * 10;\n let significand = Math.floor((start - offset) / Math.pow(10, exp));\n let value = finiteOrDefault(generationOptions.min, Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision);\n while (value < max) {\n ticks.push({value, major: isMajor(value), significand});\n if (significand >= 10) {\n significand = significand < 15 ? 15 : 20;\n } else {\n significand++;\n }\n if (significand >= 20) {\n exp++;\n significand = 2;\n precision = exp >= 0 ? 1 : precision;\n }\n value = Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision;\n }\n const lastTick = finiteOrDefault(generationOptions.max, value);\n ticks.push({value: lastTick, major: isMajor(lastTick), significand});\n\n return ticks;\n}\n\nexport default class LogarithmicScale extends Scale {\n\n static id = 'logarithmic';\n\n /**\n * @type {any}\n */\n static defaults = {\n ticks: {\n callback: Ticks.formatters.logarithmic,\n major: {\n enabled: true\n }\n }\n };\n\n\n constructor(cfg) {\n super(cfg);\n\n /** @type {number} */\n this.start = undefined;\n /** @type {number} */\n this.end = undefined;\n /** @type {number} */\n this._startValue = undefined;\n this._valueRange = 0;\n }\n\n parse(raw, index) {\n const value = LinearScaleBase.prototype.parse.apply(this, [raw, index]);\n if (value === 0) {\n this._zero = true;\n return undefined;\n }\n return isFinite(value) && value > 0 ? value : null;\n }\n\n determineDataLimits() {\n const {min, max} = this.getMinMax(true);\n\n this.min = isFinite(min) ? Math.max(0, min) : null;\n this.max = isFinite(max) ? Math.max(0, max) : null;\n\n if (this.options.beginAtZero) {\n this._zero = true;\n }\n\n // if data has `0` in it or `beginAtZero` is true, min (non zero) value is at bottom\n // of scale, and it does not equal suggestedMin, lower the min bound by one exp.\n if (this._zero && this.min !== this._suggestedMin && !isFinite(this._userMin)) {\n this.min = min === changeExponent(this.min, 0) ? changeExponent(this.min, -1) : changeExponent(this.min, 0);\n }\n\n this.handleTickRangeOptions();\n }\n\n handleTickRangeOptions() {\n const {minDefined, maxDefined} = this.getUserBounds();\n let min = this.min;\n let max = this.max;\n\n const setMin = v => (min = minDefined ? min : v);\n const setMax = v => (max = maxDefined ? max : v);\n\n if (min === max) {\n if (min <= 0) { // includes null\n setMin(1);\n setMax(10);\n } else {\n setMin(changeExponent(min, -1));\n setMax(changeExponent(max, +1));\n }\n }\n if (min <= 0) {\n setMin(changeExponent(max, -1));\n }\n if (max <= 0) {\n\n setMax(changeExponent(min, +1));\n }\n\n this.min = min;\n this.max = max;\n }\n\n buildTicks() {\n const opts = this.options;\n\n const generationOptions = {\n min: this._userMin,\n max: this._userMax\n };\n const ticks = generateTicks(generationOptions, this);\n\n // At this point, we need to update our max and min given the tick values,\n // since we probably have expanded the range of the scale\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n\n if (opts.reverse) {\n ticks.reverse();\n\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n\n return ticks;\n }\n\n /**\n\t * @param {number} value\n\t * @return {string}\n\t */\n getLabelForValue(value) {\n return value === undefined\n ? '0'\n : formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n\n /**\n\t * @protected\n\t */\n configure() {\n const start = this.min;\n\n super.configure();\n\n this._startValue = log10(start);\n this._valueRange = log10(this.max) - log10(start);\n }\n\n getPixelForValue(value) {\n if (value === undefined || value === 0) {\n value = this.min;\n }\n if (value === null || isNaN(value)) {\n return NaN;\n }\n return this.getPixelForDecimal(value === this.min\n ? 0\n : (log10(value) - this._startValue) / this._valueRange);\n }\n\n getValueForPixel(pixel) {\n const decimal = this.getDecimalForPixel(pixel);\n return Math.pow(10, this._startValue + decimal * this._valueRange);\n }\n}\n","import defaults from '../core/core.defaults.js';\nimport {_longestText, addRoundedRectPath, renderText, _isPointInArea} from '../helpers/helpers.canvas.js';\nimport {HALF_PI, TAU, toDegrees, toRadians, _normalizeAngle, PI} from '../helpers/helpers.math.js';\nimport LinearScaleBase from './scale.linearbase.js';\nimport Ticks from '../core/core.ticks.js';\nimport {valueOrDefault, isArray, isFinite, callback as callCallback, isNullOrUndef} from '../helpers/helpers.core.js';\nimport {createContext, toFont, toPadding, toTRBLCorners} from '../helpers/helpers.options.js';\n\nfunction getTickBackdropHeight(opts) {\n const tickOpts = opts.ticks;\n\n if (tickOpts.display && opts.display) {\n const padding = toPadding(tickOpts.backdropPadding);\n return valueOrDefault(tickOpts.font && tickOpts.font.size, defaults.font.size) + padding.height;\n }\n return 0;\n}\n\nfunction measureLabelSize(ctx, font, label) {\n label = isArray(label) ? label : [label];\n return {\n w: _longestText(ctx, font.string, label),\n h: label.length * font.lineHeight\n };\n}\n\nfunction determineLimits(angle, pos, size, min, max) {\n if (angle === min || angle === max) {\n return {\n start: pos - (size / 2),\n end: pos + (size / 2)\n };\n } else if (angle < min || angle > max) {\n return {\n start: pos - size,\n end: pos\n };\n }\n\n return {\n start: pos,\n end: pos + size\n };\n}\n\n/**\n * Helper function to fit a radial linear scale with point labels\n */\nfunction fitWithPointLabels(scale) {\n\n // Right, this is really confusing and there is a lot of maths going on here\n // The gist of the problem is here: https://gist.github.com/nnnick/696cc9c55f4b0beb8fe9\n //\n // Reaction: https://dl.dropboxusercontent.com/u/34601363/toomuchscience.gif\n //\n // Solution:\n //\n // We assume the radius of the polygon is half the size of the canvas at first\n // at each index we check if the text overlaps.\n //\n // Where it does, we store that angle and that index.\n //\n // After finding the largest index and angle we calculate how much we need to remove\n // from the shape radius to move the point inwards by that x.\n //\n // We average the left and right distances to get the maximum shape radius that can fit in the box\n // along with labels.\n //\n // Once we have that, we can find the centre point for the chart, by taking the x text protrusion\n // on each side, removing that from the size, halving it and adding the left x protrusion width.\n //\n // This will mean we have a shape fitted to the canvas, as large as it can be with the labels\n // and position it in the most space efficient manner\n //\n // https://dl.dropboxusercontent.com/u/34601363/yeahscience.gif\n\n // Get maximum radius of the polygon. Either half the height (minus the text width) or half the width.\n // Use this to calculate the offset + change. - Make sure L/R protrusion is at least 0 to stop issues with centre points\n const orig = {\n l: scale.left + scale._padding.left,\n r: scale.right - scale._padding.right,\n t: scale.top + scale._padding.top,\n b: scale.bottom - scale._padding.bottom\n };\n const limits = Object.assign({}, orig);\n const labelSizes = [];\n const padding = [];\n const valueCount = scale._pointLabels.length;\n const pointLabelOpts = scale.options.pointLabels;\n const additionalAngle = pointLabelOpts.centerPointLabels ? PI / valueCount : 0;\n\n for (let i = 0; i < valueCount; i++) {\n const opts = pointLabelOpts.setContext(scale.getPointLabelContext(i));\n padding[i] = opts.padding;\n const pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle);\n const plFont = toFont(opts.font);\n const textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]);\n labelSizes[i] = textSize;\n\n const angleRadians = _normalizeAngle(scale.getIndexAngle(i) + additionalAngle);\n const angle = Math.round(toDegrees(angleRadians));\n const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n const vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n updateLimits(limits, orig, angleRadians, hLimits, vLimits);\n }\n\n scale.setCenterPoint(\n orig.l - limits.l,\n limits.r - orig.r,\n orig.t - limits.t,\n limits.b - orig.b\n );\n\n // Now that text size is determined, compute the full positions\n scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding);\n}\n\nfunction updateLimits(limits, orig, angle, hLimits, vLimits) {\n const sin = Math.abs(Math.sin(angle));\n const cos = Math.abs(Math.cos(angle));\n let x = 0;\n let y = 0;\n if (hLimits.start < orig.l) {\n x = (orig.l - hLimits.start) / sin;\n limits.l = Math.min(limits.l, orig.l - x);\n } else if (hLimits.end > orig.r) {\n x = (hLimits.end - orig.r) / sin;\n limits.r = Math.max(limits.r, orig.r + x);\n }\n if (vLimits.start < orig.t) {\n y = (orig.t - vLimits.start) / cos;\n limits.t = Math.min(limits.t, orig.t - y);\n } else if (vLimits.end > orig.b) {\n y = (vLimits.end - orig.b) / cos;\n limits.b = Math.max(limits.b, orig.b + y);\n }\n}\n\nfunction createPointLabelItem(scale, index, itemOpts) {\n const outerDistance = scale.drawingArea;\n const {extra, additionalAngle, padding, size} = itemOpts;\n const pointLabelPosition = scale.getPointPosition(index, outerDistance + extra + padding, additionalAngle);\n const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));\n const y = yForAngle(pointLabelPosition.y, size.h, angle);\n const textAlign = getTextAlignForAngle(angle);\n const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign);\n return {\n // if to draw or overlapped\n visible: true,\n\n // Text position\n x: pointLabelPosition.x,\n y,\n\n // Text rendering data\n textAlign,\n\n // Bounding box\n left,\n top: y,\n right: left + size.w,\n bottom: y + size.h\n };\n}\n\nfunction isNotOverlapped(item, area) {\n if (!area) {\n return true;\n }\n const {left, top, right, bottom} = item;\n const apexesInArea = _isPointInArea({x: left, y: top}, area) || _isPointInArea({x: left, y: bottom}, area) ||\n _isPointInArea({x: right, y: top}, area) || _isPointInArea({x: right, y: bottom}, area);\n return !apexesInArea;\n}\n\nfunction buildPointLabelItems(scale, labelSizes, padding) {\n const items = [];\n const valueCount = scale._pointLabels.length;\n const opts = scale.options;\n const {centerPointLabels, display} = opts.pointLabels;\n const itemOpts = {\n extra: getTickBackdropHeight(opts) / 2,\n additionalAngle: centerPointLabels ? PI / valueCount : 0\n };\n let area;\n\n for (let i = 0; i < valueCount; i++) {\n itemOpts.padding = padding[i];\n itemOpts.size = labelSizes[i];\n\n const item = createPointLabelItem(scale, i, itemOpts);\n items.push(item);\n if (display === 'auto') {\n item.visible = isNotOverlapped(item, area);\n if (item.visible) {\n area = item;\n }\n }\n }\n return items;\n}\n\nfunction getTextAlignForAngle(angle) {\n if (angle === 0 || angle === 180) {\n return 'center';\n } else if (angle < 180) {\n return 'left';\n }\n\n return 'right';\n}\n\nfunction leftForTextAlign(x, w, align) {\n if (align === 'right') {\n x -= w;\n } else if (align === 'center') {\n x -= (w / 2);\n }\n return x;\n}\n\nfunction yForAngle(y, h, angle) {\n if (angle === 90 || angle === 270) {\n y -= (h / 2);\n } else if (angle > 270 || angle < 90) {\n y -= h;\n }\n return y;\n}\n\nfunction drawPointLabelBox(ctx, opts, item) {\n const {left, top, right, bottom} = item;\n const {backdropColor} = opts;\n\n if (!isNullOrUndef(backdropColor)) {\n const borderRadius = toTRBLCorners(opts.borderRadius);\n const padding = toPadding(opts.backdropPadding);\n ctx.fillStyle = backdropColor;\n\n const backdropLeft = left - padding.left;\n const backdropTop = top - padding.top;\n const backdropWidth = right - left + padding.width;\n const backdropHeight = bottom - top + padding.height;\n\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: backdropLeft,\n y: backdropTop,\n w: backdropWidth,\n h: backdropHeight,\n radius: borderRadius,\n });\n ctx.fill();\n } else {\n ctx.fillRect(backdropLeft, backdropTop, backdropWidth, backdropHeight);\n }\n }\n}\n\nfunction drawPointLabels(scale, labelCount) {\n const {ctx, options: {pointLabels}} = scale;\n\n for (let i = labelCount - 1; i >= 0; i--) {\n const item = scale._pointLabelItems[i];\n if (!item.visible) {\n // overlapping\n continue;\n }\n const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i));\n drawPointLabelBox(ctx, optsAtIndex, item);\n const plFont = toFont(optsAtIndex.font);\n const {x, y, textAlign} = item;\n\n renderText(\n ctx,\n scale._pointLabels[i],\n x,\n y + (plFont.lineHeight / 2),\n plFont,\n {\n color: optsAtIndex.color,\n textAlign: textAlign,\n textBaseline: 'middle'\n }\n );\n }\n}\n\nfunction pathRadiusLine(scale, radius, circular, labelCount) {\n const {ctx} = scale;\n if (circular) {\n // Draw circular arcs between the points\n ctx.arc(scale.xCenter, scale.yCenter, radius, 0, TAU);\n } else {\n // Draw straight lines connecting each index\n let pointPosition = scale.getPointPosition(0, radius);\n ctx.moveTo(pointPosition.x, pointPosition.y);\n\n for (let i = 1; i < labelCount; i++) {\n pointPosition = scale.getPointPosition(i, radius);\n ctx.lineTo(pointPosition.x, pointPosition.y);\n }\n }\n}\n\nfunction drawRadiusLine(scale, gridLineOpts, radius, labelCount, borderOpts) {\n const ctx = scale.ctx;\n const circular = gridLineOpts.circular;\n\n const {color, lineWidth} = gridLineOpts;\n\n if ((!circular && !labelCount) || !color || !lineWidth || radius < 0) {\n return;\n }\n\n ctx.save();\n ctx.strokeStyle = color;\n ctx.lineWidth = lineWidth;\n ctx.setLineDash(borderOpts.dash);\n ctx.lineDashOffset = borderOpts.dashOffset;\n\n ctx.beginPath();\n pathRadiusLine(scale, radius, circular, labelCount);\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n}\n\nfunction createPointLabelContext(parent, index, label) {\n return createContext(parent, {\n label,\n index,\n type: 'pointLabel'\n });\n}\n\nexport default class RadialLinearScale extends LinearScaleBase {\n\n static id = 'radialLinear';\n\n /**\n * @type {any}\n */\n static defaults = {\n display: true,\n\n // Boolean - Whether to animate scaling the chart from the centre\n animate: true,\n position: 'chartArea',\n\n angleLines: {\n display: true,\n lineWidth: 1,\n borderDash: [],\n borderDashOffset: 0.0\n },\n\n grid: {\n circular: false\n },\n\n startAngle: 0,\n\n // label settings\n ticks: {\n // Boolean - Show a backdrop to the scale label\n showLabelBackdrop: true,\n\n callback: Ticks.formatters.numeric\n },\n\n pointLabels: {\n backdropColor: undefined,\n\n // Number - The backdrop padding above & below the label in pixels\n backdropPadding: 2,\n\n // Boolean - if true, show point labels\n display: true,\n\n // Number - Point label font size in pixels\n font: {\n size: 10\n },\n\n // Function - Used to convert point labels\n callback(label) {\n return label;\n },\n\n // Number - Additionl padding between scale and pointLabel\n padding: 5,\n\n // Boolean - if true, center point labels to slices in polar chart\n centerPointLabels: false\n }\n };\n\n static defaultRoutes = {\n 'angleLines.color': 'borderColor',\n 'pointLabels.color': 'color',\n 'ticks.color': 'color'\n };\n\n static descriptors = {\n angleLines: {\n _fallback: 'grid'\n }\n };\n\n constructor(cfg) {\n super(cfg);\n\n /** @type {number} */\n this.xCenter = undefined;\n /** @type {number} */\n this.yCenter = undefined;\n /** @type {number} */\n this.drawingArea = undefined;\n /** @type {string[]} */\n this._pointLabels = [];\n this._pointLabelItems = [];\n }\n\n setDimensions() {\n // Set the unconstrained dimension before label rotation\n const padding = this._padding = toPadding(getTickBackdropHeight(this.options) / 2);\n const w = this.width = this.maxWidth - padding.width;\n const h = this.height = this.maxHeight - padding.height;\n this.xCenter = Math.floor(this.left + w / 2 + padding.left);\n this.yCenter = Math.floor(this.top + h / 2 + padding.top);\n this.drawingArea = Math.floor(Math.min(w, h) / 2);\n }\n\n determineDataLimits() {\n const {min, max} = this.getMinMax(false);\n\n this.min = isFinite(min) && !isNaN(min) ? min : 0;\n this.max = isFinite(max) && !isNaN(max) ? max : 0;\n\n // Common base implementation to handle min, max, beginAtZero\n this.handleTickRangeOptions();\n }\n\n /**\n\t * Returns the maximum number of ticks based on the scale dimension\n\t * @protected\n\t */\n computeTickLimit() {\n return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n }\n\n generateTickLabels(ticks) {\n LinearScaleBase.prototype.generateTickLabels.call(this, ticks);\n\n // Point labels\n this._pointLabels = this.getLabels()\n .map((value, index) => {\n const label = callCallback(this.options.pointLabels.callback, [value, index], this);\n return label || label === 0 ? label : '';\n })\n .filter((v, i) => this.chart.getDataVisibility(i));\n }\n\n fit() {\n const opts = this.options;\n\n if (opts.display && opts.pointLabels.display) {\n fitWithPointLabels(this);\n } else {\n this.setCenterPoint(0, 0, 0, 0);\n }\n }\n\n setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) {\n this.xCenter += Math.floor((leftMovement - rightMovement) / 2);\n this.yCenter += Math.floor((topMovement - bottomMovement) / 2);\n this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(leftMovement, rightMovement, topMovement, bottomMovement));\n }\n\n getIndexAngle(index) {\n const angleMultiplier = TAU / (this._pointLabels.length || 1);\n const startAngle = this.options.startAngle || 0;\n\n return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));\n }\n\n getDistanceFromCenterForValue(value) {\n if (isNullOrUndef(value)) {\n return NaN;\n }\n\n // Take into account half font size + the yPadding of the top value\n const scalingFactor = this.drawingArea / (this.max - this.min);\n if (this.options.reverse) {\n return (this.max - value) * scalingFactor;\n }\n return (value - this.min) * scalingFactor;\n }\n\n getValueForDistanceFromCenter(distance) {\n if (isNullOrUndef(distance)) {\n return NaN;\n }\n\n const scaledDistance = distance / (this.drawingArea / (this.max - this.min));\n return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance;\n }\n\n getPointLabelContext(index) {\n const pointLabels = this._pointLabels || [];\n\n if (index >= 0 && index < pointLabels.length) {\n const pointLabel = pointLabels[index];\n return createPointLabelContext(this.getContext(), index, pointLabel);\n }\n }\n\n getPointPosition(index, distanceFromCenter, additionalAngle = 0) {\n const angle = this.getIndexAngle(index) - HALF_PI + additionalAngle;\n return {\n x: Math.cos(angle) * distanceFromCenter + this.xCenter,\n y: Math.sin(angle) * distanceFromCenter + this.yCenter,\n angle\n };\n }\n\n getPointPositionForValue(index, value) {\n return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n }\n\n getBasePosition(index) {\n return this.getPointPositionForValue(index || 0, this.getBaseValue());\n }\n\n getPointLabelPosition(index) {\n const {left, top, right, bottom} = this._pointLabelItems[index];\n return {\n left,\n top,\n right,\n bottom,\n };\n }\n\n /**\n\t * @protected\n\t */\n drawBackground() {\n const {backgroundColor, grid: {circular}} = this.options;\n if (backgroundColor) {\n const ctx = this.ctx;\n ctx.save();\n ctx.beginPath();\n pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this._pointLabels.length);\n ctx.closePath();\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n }\n\n /**\n\t * @protected\n\t */\n drawGrid() {\n const ctx = this.ctx;\n const opts = this.options;\n const {angleLines, grid, border} = opts;\n const labelCount = this._pointLabels.length;\n\n let i, offset, position;\n\n if (opts.pointLabels.display) {\n drawPointLabels(this, labelCount);\n }\n\n if (grid.display) {\n this.ticks.forEach((tick, index) => {\n if (index !== 0) {\n offset = this.getDistanceFromCenterForValue(tick.value);\n const context = this.getContext(index);\n const optsAtIndex = grid.setContext(context);\n const optsAtIndexBorder = border.setContext(context);\n\n drawRadiusLine(this, optsAtIndex, offset, labelCount, optsAtIndexBorder);\n }\n });\n }\n\n if (angleLines.display) {\n ctx.save();\n\n for (i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i));\n const {color, lineWidth} = optsAtIndex;\n\n if (!lineWidth || !color) {\n continue;\n }\n\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = color;\n\n ctx.setLineDash(optsAtIndex.borderDash);\n ctx.lineDashOffset = optsAtIndex.borderDashOffset;\n\n offset = this.getDistanceFromCenterForValue(opts.ticks.reverse ? this.min : this.max);\n position = this.getPointPosition(i, offset);\n ctx.beginPath();\n ctx.moveTo(this.xCenter, this.yCenter);\n ctx.lineTo(position.x, position.y);\n ctx.stroke();\n }\n\n ctx.restore();\n }\n }\n\n /**\n\t * @protected\n\t */\n drawBorder() {}\n\n /**\n\t * @protected\n\t */\n drawLabels() {\n const ctx = this.ctx;\n const opts = this.options;\n const tickOpts = opts.ticks;\n\n if (!tickOpts.display) {\n return;\n }\n\n const startAngle = this.getIndexAngle(0);\n let offset, width;\n\n ctx.save();\n ctx.translate(this.xCenter, this.yCenter);\n ctx.rotate(startAngle);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n\n this.ticks.forEach((tick, index) => {\n if (index === 0 && !opts.reverse) {\n return;\n }\n\n const optsAtIndex = tickOpts.setContext(this.getContext(index));\n const tickFont = toFont(optsAtIndex.font);\n offset = this.getDistanceFromCenterForValue(this.ticks[index].value);\n\n if (optsAtIndex.showLabelBackdrop) {\n ctx.font = tickFont.string;\n width = ctx.measureText(tick.label).width;\n ctx.fillStyle = optsAtIndex.backdropColor;\n\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillRect(\n -width / 2 - padding.left,\n -offset - tickFont.size / 2 - padding.top,\n width + padding.width,\n tickFont.size + padding.height\n );\n }\n\n renderText(ctx, tick.label, 0, -offset, tickFont, {\n color: optsAtIndex.color,\n strokeColor: optsAtIndex.textStrokeColor,\n strokeWidth: optsAtIndex.textStrokeWidth,\n });\n });\n\n ctx.restore();\n }\n\n /**\n\t * @protected\n\t */\n drawTitle() {}\n}\n","import adapters from '../core/core.adapters.js';\nimport {callback as call, isFinite, isNullOrUndef, mergeIf, valueOrDefault} from '../helpers/helpers.core.js';\nimport {toRadians, isNumber, _limitValue} from '../helpers/helpers.math.js';\nimport Scale from '../core/core.scale.js';\nimport {_arrayUnique, _filterBetween, _lookup} from '../helpers/helpers.collection.js';\n\n/**\n * @typedef { import('../core/core.adapters.js').TimeUnit } Unit\n * @typedef {{common: boolean, size: number, steps?: number}} Interval\n * @typedef { import('../core/core.adapters.js').DateAdapter } DateAdapter\n */\n\n/**\n * @type {Object}\n */\nconst INTERVALS = {\n millisecond: {common: true, size: 1, steps: 1000},\n second: {common: true, size: 1000, steps: 60},\n minute: {common: true, size: 60000, steps: 60},\n hour: {common: true, size: 3600000, steps: 24},\n day: {common: true, size: 86400000, steps: 30},\n week: {common: false, size: 604800000, steps: 4},\n month: {common: true, size: 2.628e9, steps: 12},\n quarter: {common: false, size: 7.884e9, steps: 4},\n year: {common: true, size: 3.154e10}\n};\n\n/**\n * @type {Unit[]}\n */\nconst UNITS = /** @type Unit[] */ /* #__PURE__ */ (Object.keys(INTERVALS));\n\n/**\n * @param {number} a\n * @param {number} b\n */\nfunction sorter(a, b) {\n return a - b;\n}\n\n/**\n * @param {TimeScale} scale\n * @param {*} input\n * @return {number}\n */\nfunction parse(scale, input) {\n if (isNullOrUndef(input)) {\n return null;\n }\n\n const adapter = scale._adapter;\n const {parser, round, isoWeekday} = scale._parseOpts;\n let value = input;\n\n if (typeof parser === 'function') {\n value = parser(value);\n }\n\n // Only parse if it's not a timestamp already\n if (!isFinite(value)) {\n value = typeof parser === 'string'\n ? adapter.parse(value, /** @type {Unit} */ (parser))\n : adapter.parse(value);\n }\n\n if (value === null) {\n return null;\n }\n\n if (round) {\n value = round === 'week' && (isNumber(isoWeekday) || isoWeekday === true)\n ? adapter.startOf(value, 'isoWeek', isoWeekday)\n : adapter.startOf(value, round);\n }\n\n return +value;\n}\n\n/**\n * Figures out what unit results in an appropriate number of auto-generated ticks\n * @param {Unit} minUnit\n * @param {number} min\n * @param {number} max\n * @param {number} capacity\n * @return {object}\n */\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\n const ilen = UNITS.length;\n\n for (let i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\n const interval = INTERVALS[UNITS[i]];\n const factor = interval.steps ? interval.steps : Number.MAX_SAFE_INTEGER;\n\n if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n return UNITS[i];\n }\n }\n\n return UNITS[ilen - 1];\n}\n\n/**\n * Figures out what unit to format a set of ticks with\n * @param {TimeScale} scale\n * @param {number} numTicks\n * @param {Unit} minUnit\n * @param {number} min\n * @param {number} max\n * @return {Unit}\n */\nfunction determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\n for (let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) {\n const unit = UNITS[i];\n if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n return unit;\n }\n }\n\n return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\n\n/**\n * @param {Unit} unit\n * @return {object}\n */\nfunction determineMajorUnit(unit) {\n for (let i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\n if (INTERVALS[UNITS[i]].common) {\n return UNITS[i];\n }\n }\n}\n\n/**\n * @param {object} ticks\n * @param {number} time\n * @param {number[]} [timestamps] - if defined, snap to these timestamps\n */\nfunction addTick(ticks, time, timestamps) {\n if (!timestamps) {\n ticks[time] = true;\n } else if (timestamps.length) {\n const {lo, hi} = _lookup(timestamps, time);\n const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi];\n ticks[timestamp] = true;\n }\n}\n\n/**\n * @param {TimeScale} scale\n * @param {object[]} ticks\n * @param {object} map\n * @param {Unit} majorUnit\n * @return {object[]}\n */\nfunction setMajorTicks(scale, ticks, map, majorUnit) {\n const adapter = scale._adapter;\n const first = +adapter.startOf(ticks[0].value, majorUnit);\n const last = ticks[ticks.length - 1].value;\n let major, index;\n\n for (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) {\n index = map[major];\n if (index >= 0) {\n ticks[index].major = true;\n }\n }\n return ticks;\n}\n\n/**\n * @param {TimeScale} scale\n * @param {number[]} values\n * @param {Unit|undefined} [majorUnit]\n * @return {object[]}\n */\nfunction ticksFromTimestamps(scale, values, majorUnit) {\n const ticks = [];\n /** @type {Object} */\n const map = {};\n const ilen = values.length;\n let i, value;\n\n for (i = 0; i < ilen; ++i) {\n value = values[i];\n map[value] = i;\n\n ticks.push({\n value,\n major: false\n });\n }\n\n // We set the major ticks separately from the above loop because calling startOf for every tick\n // is expensive when there is a large number of ticks\n return (ilen === 0 || !majorUnit) ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n}\n\nexport default class TimeScale extends Scale {\n\n static id = 'time';\n\n /**\n * @type {any}\n */\n static defaults = {\n /**\n * Scale boundary strategy (bypassed by min/max time options)\n * - `data`: make sure data are fully visible, ticks outside are removed\n * - `ticks`: make sure ticks are fully visible, data outside are truncated\n * @see https://github.com/chartjs/Chart.js/pull/4556\n * @since 2.7.0\n */\n bounds: 'data',\n\n adapters: {},\n time: {\n parser: false, // false == a pattern string from or a custom callback that converts its argument to a timestamp\n unit: false, // false == automatic or override with week, month, year, etc.\n round: false, // none, or override with week, month, year, etc.\n isoWeekday: false, // override week start day\n minUnit: 'millisecond',\n displayFormats: {}\n },\n ticks: {\n /**\n * Ticks generation input values:\n * - 'auto': generates \"optimal\" ticks based on scale size and time options.\n * - 'data': generates ticks from data (including labels from data {t|x|y} objects).\n * - 'labels': generates ticks from user given `data.labels` values ONLY.\n * @see https://github.com/chartjs/Chart.js/pull/4507\n * @since 2.7.0\n */\n source: 'auto',\n\n callback: false,\n\n major: {\n enabled: false\n }\n }\n };\n\n /**\n\t * @param {object} props\n\t */\n constructor(props) {\n super(props);\n\n /** @type {{data: number[], labels: number[], all: number[]}} */\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n\n /** @type {Unit} */\n this._unit = 'day';\n /** @type {Unit=} */\n this._majorUnit = undefined;\n this._offsets = {};\n this._normalized = false;\n this._parseOpts = undefined;\n }\n\n init(scaleOpts, opts = {}) {\n const time = scaleOpts.time || (scaleOpts.time = {});\n /** @type {DateAdapter} */\n const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date);\n\n adapter.init(opts);\n\n // Backward compatibility: before introducing adapter, `displayFormats` was\n // supposed to contain *all* unit/string pairs but this can't be resolved\n // when loading the scale (adapters are loaded afterward), so let's populate\n // missing formats on update\n mergeIf(time.displayFormats, adapter.formats());\n\n this._parseOpts = {\n parser: time.parser,\n round: time.round,\n isoWeekday: time.isoWeekday\n };\n\n super.init(scaleOpts);\n\n this._normalized = opts.normalized;\n }\n\n /**\n\t * @param {*} raw\n\t * @param {number?} [index]\n\t * @return {number}\n\t */\n parse(raw, index) { // eslint-disable-line no-unused-vars\n if (raw === undefined) {\n return null;\n }\n return parse(this, raw);\n }\n\n beforeLayout() {\n super.beforeLayout();\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n }\n\n determineDataLimits() {\n const options = this.options;\n const adapter = this._adapter;\n const unit = options.time.unit || 'day';\n // eslint-disable-next-line prefer-const\n let {min, max, minDefined, maxDefined} = this.getUserBounds();\n\n /**\n\t\t * @param {object} bounds\n\t\t */\n function _applyBounds(bounds) {\n if (!minDefined && !isNaN(bounds.min)) {\n min = Math.min(min, bounds.min);\n }\n if (!maxDefined && !isNaN(bounds.max)) {\n max = Math.max(max, bounds.max);\n }\n }\n\n // If we have user provided `min` and `max` labels / data bounds can be ignored\n if (!minDefined || !maxDefined) {\n // Labels are always considered, when user did not force bounds\n _applyBounds(this._getLabelBounds());\n\n // If `bounds` is `'ticks'` and `ticks.source` is `'labels'`,\n // data bounds are ignored (and don't need to be determined)\n if (options.bounds !== 'ticks' || options.ticks.source !== 'labels') {\n _applyBounds(this.getMinMax(false));\n }\n }\n\n min = isFinite(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit);\n max = isFinite(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1;\n\n // Make sure that max is strictly higher than min (required by the timeseries lookup table)\n this.min = Math.min(min, max - 1);\n this.max = Math.max(min + 1, max);\n }\n\n /**\n\t * @private\n\t */\n _getLabelBounds() {\n const arr = this.getLabelTimestamps();\n let min = Number.POSITIVE_INFINITY;\n let max = Number.NEGATIVE_INFINITY;\n\n if (arr.length) {\n min = arr[0];\n max = arr[arr.length - 1];\n }\n return {min, max};\n }\n\n /**\n\t * @return {object[]}\n\t */\n buildTicks() {\n const options = this.options;\n const timeOpts = options.time;\n const tickOpts = options.ticks;\n const timestamps = tickOpts.source === 'labels' ? this.getLabelTimestamps() : this._generate();\n\n if (options.bounds === 'ticks' && timestamps.length) {\n this.min = this._userMin || timestamps[0];\n this.max = this._userMax || timestamps[timestamps.length - 1];\n }\n\n const min = this.min;\n const max = this.max;\n\n const ticks = _filterBetween(timestamps, min, max);\n\n // PRIVATE\n // determineUnitForFormatting relies on the number of ticks so we don't use it when\n // autoSkip is enabled because we don't yet know what the final number of ticks will be\n this._unit = timeOpts.unit || (tickOpts.autoSkip\n ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min))\n : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max));\n this._majorUnit = !tickOpts.major.enabled || this._unit === 'year' ? undefined\n : determineMajorUnit(this._unit);\n this.initOffsets(timestamps);\n\n if (options.reverse) {\n ticks.reverse();\n }\n\n return ticksFromTimestamps(this, ticks, this._majorUnit);\n }\n\n afterAutoSkip() {\n // Offsets for bar charts need to be handled with the auto skipped\n // ticks. Once ticks have been skipped, we re-compute the offsets.\n if (this.options.offsetAfterAutoskip) {\n this.initOffsets(this.ticks.map(tick => +tick.value));\n }\n }\n\n /**\n\t * Returns the start and end offsets from edges in the form of {start, end}\n\t * where each value is a relative width to the scale and ranges between 0 and 1.\n\t * They add extra margins on the both sides by scaling down the original scale.\n\t * Offsets are added when the `offset` option is true.\n\t * @param {number[]} timestamps\n\t * @protected\n\t */\n initOffsets(timestamps = []) {\n let start = 0;\n let end = 0;\n let first, last;\n\n if (this.options.offset && timestamps.length) {\n first = this.getDecimalForValue(timestamps[0]);\n if (timestamps.length === 1) {\n start = 1 - first;\n } else {\n start = (this.getDecimalForValue(timestamps[1]) - first) / 2;\n }\n last = this.getDecimalForValue(timestamps[timestamps.length - 1]);\n if (timestamps.length === 1) {\n end = last;\n } else {\n end = (last - this.getDecimalForValue(timestamps[timestamps.length - 2])) / 2;\n }\n }\n const limit = timestamps.length < 3 ? 0.5 : 0.25;\n start = _limitValue(start, 0, limit);\n end = _limitValue(end, 0, limit);\n\n this._offsets = {start, end, factor: 1 / (start + 1 + end)};\n }\n\n /**\n\t * Generates a maximum of `capacity` timestamps between min and max, rounded to the\n\t * `minor` unit using the given scale time `options`.\n\t * Important: this method can return ticks outside the min and max range, it's the\n\t * responsibility of the calling code to clamp values if needed.\n\t * @protected\n\t */\n _generate() {\n const adapter = this._adapter;\n const min = this.min;\n const max = this.max;\n const options = this.options;\n const timeOpts = options.time;\n // @ts-ignore\n const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min));\n const stepSize = valueOrDefault(options.ticks.stepSize, 1);\n const weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n const hasWeekday = isNumber(weekday) || weekday === true;\n const ticks = {};\n let first = min;\n let time, count;\n\n // For 'week' unit, handle the first day of week option\n if (hasWeekday) {\n first = +adapter.startOf(first, 'isoWeek', weekday);\n }\n\n // Align first ticks on unit\n first = +adapter.startOf(first, hasWeekday ? 'day' : minor);\n\n // Prevent browser from freezing in case user options request millions of milliseconds\n if (adapter.diff(max, min, minor) > 100000 * stepSize) {\n throw new Error(min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor);\n }\n\n const timestamps = options.ticks.source === 'data' && this.getDataTimestamps();\n for (time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++) {\n addTick(ticks, time, timestamps);\n }\n\n if (time === max || options.bounds === 'ticks' || count === 1) {\n addTick(ticks, time, timestamps);\n }\n\n // @ts-ignore\n return Object.keys(ticks).sort(sorter).map(x => +x);\n }\n\n /**\n\t * @param {number} value\n\t * @return {string}\n\t */\n getLabelForValue(value) {\n const adapter = this._adapter;\n const timeOpts = this.options.time;\n\n if (timeOpts.tooltipFormat) {\n return adapter.format(value, timeOpts.tooltipFormat);\n }\n return adapter.format(value, timeOpts.displayFormats.datetime);\n }\n\n /**\n\t * @param {number} value\n\t * @param {string|undefined} format\n\t * @return {string}\n\t */\n format(value, format) {\n const options = this.options;\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const fmt = format || formats[unit];\n return this._adapter.format(value, fmt);\n }\n\n /**\n\t * Function to format an individual tick mark\n\t * @param {number} time\n\t * @param {number} index\n\t * @param {object[]} ticks\n\t * @param {string|undefined} [format]\n\t * @return {string}\n\t * @private\n\t */\n _tickFormatFunction(time, index, ticks, format) {\n const options = this.options;\n const formatter = options.ticks.callback;\n\n if (formatter) {\n return call(formatter, [time, index, ticks], this);\n }\n\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const majorUnit = this._majorUnit;\n const minorFormat = unit && formats[unit];\n const majorFormat = majorUnit && formats[majorUnit];\n const tick = ticks[index];\n const major = majorUnit && majorFormat && tick && tick.major;\n\n return this._adapter.format(time, format || (major ? majorFormat : minorFormat));\n }\n\n /**\n\t * @param {object[]} ticks\n\t */\n generateTickLabels(ticks) {\n let i, ilen, tick;\n\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n tick.label = this._tickFormatFunction(tick.value, i, ticks);\n }\n }\n\n /**\n\t * @param {number} value - Milliseconds since epoch (1 January 1970 00:00:00 UTC)\n\t * @return {number}\n\t */\n getDecimalForValue(value) {\n return value === null ? NaN : (value - this.min) / (this.max - this.min);\n }\n\n /**\n\t * @param {number} value - Milliseconds since epoch (1 January 1970 00:00:00 UTC)\n\t * @return {number}\n\t */\n getPixelForValue(value) {\n const offsets = this._offsets;\n const pos = this.getDecimalForValue(value);\n return this.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n }\n\n /**\n\t * @param {number} pixel\n\t * @return {number}\n\t */\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const pos = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return this.min + pos * (this.max - this.min);\n }\n\n /**\n\t * @param {string} label\n\t * @return {{w:number, h:number}}\n\t * @private\n\t */\n _getLabelSize(label) {\n const ticksOpts = this.options.ticks;\n const tickLabelWidth = this.ctx.measureText(label).width;\n const angle = toRadians(this.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n const cosRotation = Math.cos(angle);\n const sinRotation = Math.sin(angle);\n const tickFontSize = this._resolveTickFontOptions(0).size;\n\n return {\n w: (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation),\n h: (tickLabelWidth * sinRotation) + (tickFontSize * cosRotation)\n };\n }\n\n /**\n\t * @param {number} exampleTime\n\t * @return {number}\n\t * @private\n\t */\n _getLabelCapacity(exampleTime) {\n const timeOpts = this.options.time;\n const displayFormats = timeOpts.displayFormats;\n\n // pick the longest format (milliseconds) for guesstimation\n const format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n const exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [exampleTime], this._majorUnit), format);\n const size = this._getLabelSize(exampleLabel);\n // subtract 1 - if offset then there's one less label than tick\n // if not offset then one half label padding is added to each end leaving room for one less label\n const capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1;\n return capacity > 0 ? capacity : 1;\n }\n\n /**\n\t * @protected\n\t */\n getDataTimestamps() {\n let timestamps = this._cache.data || [];\n let i, ilen;\n\n if (timestamps.length) {\n return timestamps;\n }\n\n const metas = this.getMatchingVisibleMetas();\n\n if (this._normalized && metas.length) {\n return (this._cache.data = metas[0].controller.getAllParsedValues(this));\n }\n\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this));\n }\n\n return (this._cache.data = this.normalize(timestamps));\n }\n\n /**\n\t * @protected\n\t */\n getLabelTimestamps() {\n const timestamps = this._cache.labels || [];\n let i, ilen;\n\n if (timestamps.length) {\n return timestamps;\n }\n\n const labels = this.getLabels();\n for (i = 0, ilen = labels.length; i < ilen; ++i) {\n timestamps.push(parse(this, labels[i]));\n }\n\n return (this._cache.labels = this._normalized ? timestamps : this.normalize(timestamps));\n }\n\n /**\n\t * @param {number[]} values\n\t * @protected\n\t */\n normalize(values) {\n // It seems to be somewhat faster to do sorting first\n return _arrayUnique(values.sort(sorter));\n }\n}\n","import TimeScale from './scale.time.js';\nimport {_lookupByKey} from '../helpers/helpers.collection.js';\n\n/**\n * Linearly interpolates the given source `val` using the table. If value is out of bounds, values\n * at edges are used for the interpolation.\n * @param {object} table\n * @param {number} val\n * @param {boolean} [reverse] lookup time based on position instead of vice versa\n * @return {object}\n */\nfunction interpolate(table, val, reverse) {\n let lo = 0;\n let hi = table.length - 1;\n let prevSource, nextSource, prevTarget, nextTarget;\n if (reverse) {\n if (val >= table[lo].pos && val <= table[hi].pos) {\n ({lo, hi} = _lookupByKey(table, 'pos', val));\n }\n ({pos: prevSource, time: prevTarget} = table[lo]);\n ({pos: nextSource, time: nextTarget} = table[hi]);\n } else {\n if (val >= table[lo].time && val <= table[hi].time) {\n ({lo, hi} = _lookupByKey(table, 'time', val));\n }\n ({time: prevSource, pos: prevTarget} = table[lo]);\n ({time: nextSource, pos: nextTarget} = table[hi]);\n }\n\n const span = nextSource - prevSource;\n return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget;\n}\n\nclass TimeSeriesScale extends TimeScale {\n\n static id = 'timeseries';\n\n /**\n * @type {any}\n */\n static defaults = TimeScale.defaults;\n\n /**\n\t * @param {object} props\n\t */\n constructor(props) {\n super(props);\n\n /** @type {object[]} */\n this._table = [];\n /** @type {number} */\n this._minPos = undefined;\n /** @type {number} */\n this._tableRange = undefined;\n }\n\n /**\n\t * @protected\n\t */\n initOffsets() {\n const timestamps = this._getTimestampsForTable();\n const table = this._table = this.buildLookupTable(timestamps);\n this._minPos = interpolate(table, this.min);\n this._tableRange = interpolate(table, this.max) - this._minPos;\n super.initOffsets(timestamps);\n }\n\n /**\n\t * Returns an array of {time, pos} objects used to interpolate a specific `time` or position\n\t * (`pos`) on the scale, by searching entries before and after the requested value. `pos` is\n\t * a decimal between 0 and 1: 0 being the start of the scale (left or top) and 1 the other\n\t * extremity (left + width or top + height). Note that it would be more optimized to directly\n\t * store pre-computed pixels, but the scale dimensions are not guaranteed at the time we need\n\t * to create the lookup table. The table ALWAYS contains at least two items: min and max.\n\t * @param {number[]} timestamps\n\t * @return {object[]}\n\t * @protected\n\t */\n buildLookupTable(timestamps) {\n const {min, max} = this;\n const items = [];\n const table = [];\n let i, ilen, prev, curr, next;\n\n for (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n curr = timestamps[i];\n if (curr >= min && curr <= max) {\n items.push(curr);\n }\n }\n\n if (items.length < 2) {\n // In case there is less that 2 timestamps between min and max, the scale is defined by min and max\n return [\n {time: min, pos: 0},\n {time: max, pos: 1}\n ];\n }\n\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n next = items[i + 1];\n prev = items[i - 1];\n curr = items[i];\n\n // only add points that breaks the scale linearity\n if (Math.round((next + prev) / 2) !== curr) {\n table.push({time: curr, pos: i / (ilen - 1)});\n }\n }\n return table;\n }\n\n /**\n * Generates all timestamps defined in the data.\n * Important: this method can return ticks outside the min and max range, it's the\n * responsibility of the calling code to clamp values if needed.\n * @protected\n */\n _generate() {\n const min = this.min;\n const max = this.max;\n let timestamps = super.getDataTimestamps();\n if (!timestamps.includes(min) || !timestamps.length) {\n timestamps.splice(0, 0, min);\n }\n if (!timestamps.includes(max) || timestamps.length === 1) {\n timestamps.push(max);\n }\n return timestamps.sort((a, b) => a - b);\n }\n\n /**\n\t * Returns all timestamps\n\t * @return {number[]}\n\t * @private\n\t */\n _getTimestampsForTable() {\n let timestamps = this._cache.all || [];\n\n if (timestamps.length) {\n return timestamps;\n }\n\n const data = this.getDataTimestamps();\n const label = this.getLabelTimestamps();\n if (data.length && label.length) {\n // If combining labels and data (data might not contain all labels),\n // we need to recheck uniqueness and sort\n timestamps = this.normalize(data.concat(label));\n } else {\n timestamps = data.length ? data : label;\n }\n timestamps = this._cache.all = timestamps;\n\n return timestamps;\n }\n\n /**\n\t * @param {number} value - Milliseconds since epoch (1 January 1970 00:00:00 UTC)\n\t * @return {number}\n\t */\n getDecimalForValue(value) {\n return (interpolate(this._table, value) - this._minPos) / this._tableRange;\n }\n\n /**\n\t * @param {number} pixel\n\t * @return {number}\n\t */\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const decimal = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return interpolate(this._table, decimal * this._tableRange + this._minPos, true);\n }\n}\n\nexport default TimeSeriesScale;\n","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}\nmodule.exports = _toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function map(project, thisArg) {\n return function mapOperation(source) {\n if (typeof project !== 'function') {\n throw new TypeError('argument is not a function. Are you looking for `mapTo()`?');\n }\n return source.lift(new MapOperator(project, thisArg));\n };\n}\nvar MapOperator = /*@__PURE__*/ (function () {\n function MapOperator(project, thisArg) {\n this.project = project;\n this.thisArg = thisArg;\n }\n MapOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new MapSubscriber(subscriber, this.project, this.thisArg));\n };\n return MapOperator;\n}());\nexport { MapOperator };\nvar MapSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(MapSubscriber, _super);\n function MapSubscriber(destination, project, thisArg) {\n var _this = _super.call(this, destination) || this;\n _this.project = project;\n _this.count = 0;\n _this.thisArg = thisArg || _this;\n return _this;\n }\n MapSubscriber.prototype._next = function (value) {\n var result;\n try {\n result = this.project.call(this.thisArg, value, this.count++);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n };\n return MapSubscriber;\n}(Subscriber));\n//# sourceMappingURL=map.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport var subscribeToArray = function (array) {\n return function (subscriber) {\n for (var i = 0, len = array.length; i < len && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n };\n};\n//# sourceMappingURL=subscribeToArray.js.map\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $findLast = require('../internals/array-iteration-from-last').findLast;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.findLast` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.findlast\nexportTypedArrayMethod('findLast', function findLast(predicate /* , thisArg */) {\n return $findLast(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","'use strict';\nvar $ = require('../internals/export');\nvar $reduce = require('../internals/array-reduce').left;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar CHROME_VERSION = require('../internals/engine-v8-version');\nvar IS_NODE = require('../internals/engine-is-node');\n\n// Chrome 80-82 has a critical bug\n// https://bugs.chromium.org/p/chromium/issues/detail?id=1049982\nvar CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;\nvar FORCED = CHROME_BUG || !arrayMethodIsStrict('reduce');\n\n// `Array.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: FORCED }, {\n reduce: function reduce(callbackfn /* , initialValue */) {\n var length = arguments.length;\n return $reduce(this, callbackfn, length, length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar classof = require('../internals/classof');\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string');\n return $String(argument);\n};\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n 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 // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","const BN = require(\"bn.js\");\nconst nacl = require(\"tweetnacl\");\nconst ethunit = require(\"ethjs-unit\");\n\nconst isCryptoAvailable = typeof self !== 'undefined' && self.crypto && self.crypto.subtle;\n\nlet myCrypto = null;\n\nif (isCryptoAvailable) { // web\n // nothing to do\n} else { // nodejs or react-native\n myCrypto = require('isomorphic-webcrypto');\n}\n\n/**\n * @param bytes {Uint8Array}\n * @return {Promise}\n */\nfunction sha256(bytes) {\n if (isCryptoAvailable) { // web\n return crypto.subtle.digest(\"SHA-256\", bytes);\n } else { // nodejs or react-native\n return myCrypto.subtle.digest({name:\"SHA-256\"}, bytes);\n }\n}\n\n/**\n * from coins to nanocoins\n * @param amount {BN | string}\n * @return {BN}\n */\nfunction toNano(amount) {\n if (!BN.isBN(amount) && !(typeof amount === 'string')) {\n throw new Error('Please pass numbers as strings or BN objects to avoid precision errors.');\n }\n\n return ethunit.toWei(amount, 'gwei');\n}\n\n/**\n * from nanocoins to coins\n * @param amount {BN | string}\n * @return {string}\n */\nfunction fromNano(amount) {\n if (!BN.isBN(amount) && !(typeof amount === 'string')) {\n throw new Error('Please pass numbers as strings or BN objects to avoid precision errors.');\n }\n\n return ethunit.fromWei(amount, 'gwei');\n}\n\n// look up tables\nconst to_hex_array = [];\nconst to_byte_map = {};\nfor (let ord = 0; ord <= 0xff; ord++) {\n let s = ord.toString(16);\n if (s.length < 2) {\n s = \"0\" + s;\n }\n to_hex_array.push(s);\n to_byte_map[s] = ord;\n}\n\n// converter using lookups\n/**\n * @param buffer {Uint8Array}\n * @return {string}\n */\nfunction bytesToHex(buffer) {\n const hex_array = [];\n //(new Uint8Array(buffer)).forEach((v) => { hex_array.push(to_hex_array[v]) });\n for (let i = 0; i < buffer.byteLength; i++) {\n hex_array.push(to_hex_array[buffer[i]]);\n }\n return hex_array.join(\"\");\n}\n\n// reverse conversion using lookups\n/**\n * @param s {string}\n * @return {Uint8Array}\n */\nfunction hexToBytes(s) {\n s = s.toLowerCase();\n const length2 = s.length;\n if (length2 % 2 !== 0) {\n throw \"hex string must have length a multiple of 2\";\n }\n const length = length2 / 2;\n const result = new Uint8Array(length);\n for (let i = 0; i < length; i++) {\n const i2 = i * 2;\n const b = s.substring(i2, i2 + 2);\n if (!to_byte_map.hasOwnProperty(b)) throw new Error('invalid hex character ' + b);\n result[i] = to_byte_map[b];\n }\n return result;\n}\n\n/**\n * @param str {string}\n * @param size {number}\n * @return {Uint8Array}\n */\nfunction stringToBytes(str, size = 1) {\n let buf;\n let bufView;\n if (size === 1) {\n buf = new ArrayBuffer(str.length);\n bufView = new Uint8Array(buf);\n }\n if (size === 2) {\n buf = new ArrayBuffer(str.length * 2);\n bufView = new Uint16Array(buf);\n }\n if (size === 4) {\n buf = new ArrayBuffer(str.length * 4);\n bufView = new Uint32Array(buf);\n }\n for (let i = 0, strLen = str.length; i < strLen; i++) {\n bufView[i] = str.charCodeAt(i);\n }\n return new Uint8Array(bufView.buffer);\n}\n\n\n/**\n * @private\n * @param crc {number}\n * @param bytes {Uint8Array}\n * @return {number}\n */\nfunction _crc32c(crc, bytes) {\n const POLY = 0x82f63b78;\n\n crc ^= 0xffffffff;\n for (let n = 0; n < bytes.length; n++) {\n crc ^= bytes[n];\n crc = crc & 1 ? (crc >>> 1) ^ POLY : crc >>> 1;\n crc = crc & 1 ? (crc >>> 1) ^ POLY : crc >>> 1;\n crc = crc & 1 ? (crc >>> 1) ^ POLY : crc >>> 1;\n crc = crc & 1 ? (crc >>> 1) ^ POLY : crc >>> 1;\n crc = crc & 1 ? (crc >>> 1) ^ POLY : crc >>> 1;\n crc = crc & 1 ? (crc >>> 1) ^ POLY : crc >>> 1;\n crc = crc & 1 ? (crc >>> 1) ^ POLY : crc >>> 1;\n crc = crc & 1 ? (crc >>> 1) ^ POLY : crc >>> 1;\n }\n return crc ^ 0xffffffff;\n}\n\n/**\n * @param bytes {Uint8Array}\n * @return {Uint8Array}\n */\nfunction crc32c(bytes) {\n //Version suitable for crc32-c of BOC\n const int_crc = _crc32c(0, bytes);\n const arr = new ArrayBuffer(4);\n const view = new DataView(arr);\n view.setUint32(0, int_crc, false);\n return new Uint8Array(arr).reverse();\n}\n\n/**\n * @param data {ArrayLike}\n * @return {Uint8Array}\n */\nfunction crc16(data) {\n const poly = 0x1021;\n let reg = 0;\n const message = new Uint8Array(data.length + 2);\n message.set(data);\n for (let byte of message) {\n let mask = 0x80;\n while (mask > 0) {\n reg <<= 1;\n if (byte & mask) {\n reg += 1;\n }\n mask >>= 1\n if (reg > 0xffff) {\n reg &= 0xffff;\n reg ^= poly;\n }\n }\n }\n return new Uint8Array([Math.floor(reg / 256), reg % 256]);\n}\n\n/**\n * @param a {Uint8Array}\n * @param b {Uint8Array}\n * @return {Uint8Array}\n */\nfunction concatBytes(a, b) {\n const c = new Uint8Array(a.length + b.length);\n c.set(a);\n c.set(b, a.length);\n return c;\n}\n\n/**\n * @param a {Uint8Array}\n * @param b {Uint8Array}\n * @return {boolean}\n */\nfunction compareBytes(a, b) {\n // TODO Make it smarter\n return a.toString() === b.toString();\n}\n\nconst base64abc = (() => {\n const abc = []\n const A = \"A\".charCodeAt(0);\n const a = \"a\".charCodeAt(0);\n const n = \"0\".charCodeAt(0);\n for (let i = 0; i < 26; ++i) {\n abc.push(String.fromCharCode(A + i));\n }\n for (let i = 0; i < 26; ++i) {\n abc.push(String.fromCharCode(a + i));\n }\n for (let i = 0; i < 10; ++i) {\n abc.push(String.fromCharCode(n + i));\n }\n abc.push(\"+\");\n abc.push(\"/\");\n return abc;\n})();\n\n/**\n * @param bytes {Uint8Array}\n * @return {string}\n */\nfunction bytesToBase64(bytes) {\n let result = \"\";\n let i;\n const l = bytes.length;\n for (i = 2; i < l; i += 3) {\n result += base64abc[bytes[i - 2] >> 2];\n result += base64abc[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)];\n result += base64abc[((bytes[i - 1] & 0x0f) << 2) | (bytes[i] >> 6)];\n result += base64abc[bytes[i] & 0x3f];\n }\n if (i === l + 1) {\n // 1 octet missing\n result += base64abc[bytes[i - 2] >> 2];\n result += base64abc[(bytes[i - 2] & 0x03) << 4];\n result += \"==\";\n }\n if (i === l) {\n // 2 octets missing\n result += base64abc[bytes[i - 2] >> 2];\n result += base64abc[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)];\n result += base64abc[(bytes[i - 1] & 0x0f) << 2];\n result += \"=\";\n }\n return result;\n}\n\n// todo: base64 decoding process could ignore one extra character at the end of string and the byte-length check below won't be able to catch it.\nfunction base64toString(base64) {\n if (typeof self === 'undefined') {\n return Buffer.from(base64, 'base64').toString('binary'); // todo: (tolya-yanot) Buffer silently ignore incorrect base64 symbols, we need to throw error\n } else {\n return atob(base64);\n }\n}\n\nfunction stringToBase64(s) {\n if (typeof self === 'undefined') {\n return Buffer.from(s, 'binary').toString('base64'); // todo: (tolya-yanot) Buffer silently ignore incorrect base64 symbols, we need to throw error\n } else {\n return btoa(s);\n }\n}\n\n/**\n * @param base64 {string}\n * @return {Uint8Array}\n */\nfunction base64ToBytes(base64) {\n const binary_string = base64toString(base64);\n const len = binary_string.length;\n const bytes = new Uint8Array(len);\n for (let i = 0; i < len; i++) {\n bytes[i] = binary_string.charCodeAt(i);\n }\n return bytes;\n}\n\n/**\n * @param n {number}\n * @param ui8array {Uint8Array}\n * @return {number}\n */\nfunction readNBytesUIntFromArray(n, ui8array) {\n let res = 0;\n for (let c = 0; c < n; c++) {\n res *= 256;\n res += ui8array[c];\n }\n return res;\n}\n\n/**\n * @param seed {Uint8Array}\n * @returns {nacl.SignKeyPair}\n */\nfunction keyPairFromSeed(seed) {\n return nacl.sign.keyPair.fromSeed(seed);\n}\n\n/**\n * @returns {nacl.SignKeyPair}\n */\nfunction newKeyPair() {\n return nacl.sign.keyPair();\n}\n\n/**\n * @returns {Uint8Array}\n */\nfunction newSeed() {\n return nacl.sign.keyPair().secretKey.slice(0, 32);\n}\n\nmodule.exports = {\n BN,\n nacl,\n sha256,\n fromNano,\n toNano,\n bytesToHex,\n hexToBytes,\n stringToBytes,\n crc32c,\n crc16,\n concatBytes,\n bytesToBase64,\n base64ToBytes,\n base64toString,\n stringToBase64,\n compareBytes,\n readNBytesUIntFromArray,\n keyPairFromSeed,\n newKeyPair,\n newSeed\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _errors = require(\"@ledgerhq/errors\");\n\nconst Tag = 0x05;\n\nfunction asUInt16BE(value) {\n const b = Buffer.alloc(2);\n b.writeUInt16BE(value, 0);\n return b;\n}\n\nconst initialAcc = {\n data: Buffer.alloc(0),\n dataLength: 0,\n sequence: 0\n};\n/**\n *\n */\n\nconst createHIDframing = (channel, packetSize) => {\n return {\n makeBlocks(apdu) {\n let data = Buffer.concat([asUInt16BE(apdu.length), apdu]);\n const blockSize = packetSize - 5;\n const nbBlocks = Math.ceil(data.length / blockSize);\n data = Buffer.concat([data, // fill data with padding\n Buffer.alloc(nbBlocks * blockSize - data.length + 1).fill(0)]);\n const blocks = [];\n\n for (let i = 0; i < nbBlocks; i++) {\n const head = Buffer.alloc(5);\n head.writeUInt16BE(channel, 0);\n head.writeUInt8(Tag, 2);\n head.writeUInt16BE(i, 3);\n const chunk = data.slice(i * blockSize, (i + 1) * blockSize);\n blocks.push(Buffer.concat([head, chunk]));\n }\n\n return blocks;\n },\n\n reduceResponse(acc, chunk) {\n let {\n data,\n dataLength,\n sequence\n } = acc || initialAcc;\n\n if (chunk.readUInt16BE(0) !== channel) {\n throw new _errors.TransportError(\"Invalid channel\", \"InvalidChannel\");\n }\n\n if (chunk.readUInt8(2) !== Tag) {\n throw new _errors.TransportError(\"Invalid tag\", \"InvalidTag\");\n }\n\n if (chunk.readUInt16BE(3) !== sequence) {\n throw new _errors.TransportError(\"Invalid sequence\", \"InvalidSequence\");\n }\n\n if (!acc) {\n dataLength = chunk.readUInt16BE(5);\n }\n\n sequence++;\n const chunkData = chunk.slice(acc ? 5 : 7);\n data = Buffer.concat([data, chunkData]);\n\n if (data.length > dataLength) {\n data = data.slice(0, dataLength);\n }\n\n return {\n data,\n dataLength,\n sequence\n };\n },\n\n getReducedResult(acc) {\n if (acc && acc.dataLength === acc.data.length) {\n return acc.data;\n }\n }\n\n };\n};\n\nvar _default = createHIDframing;\nexports.default = _default;\n//# sourceMappingURL=hid-framing.js.map","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar $String = String;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar stringSlice = uncurryThis(''.slice);\nvar replace = uncurryThis(''.replace);\nvar join = uncurryThis([].join);\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n name = '[' + replace($String(name), /^Symbol\\(([^)]*)\\)/, '$1') + ']';\n }\n if (options && options.getter) name = 'get ' + name;\n if (options && options.setter) name = 'set ' + name;\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n else value.name = name;\n }\n if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n defineProperty(value, 'length', { value: options.arity });\n }\n try {\n if (options && hasOwn(options, 'constructor') && options.constructor) {\n if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n } else if (value.prototype) value.prototype = undefined;\n } catch (error) { /* empty */ }\n var state = enforceInternalState(value);\n if (!hasOwn(state, 'source')) {\n state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n","/** PURE_IMPORTS_START _util_isArray,_util_isObject,_util_isFunction,_util_UnsubscriptionError PURE_IMPORTS_END */\nimport { isArray } from './util/isArray';\nimport { isObject } from './util/isObject';\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nvar Subscription = /*@__PURE__*/ (function () {\n function Subscription(unsubscribe) {\n this.closed = false;\n this._parentOrParents = null;\n this._subscriptions = null;\n if (unsubscribe) {\n this._ctorUnsubscribe = true;\n this._unsubscribe = unsubscribe;\n }\n }\n Subscription.prototype.unsubscribe = function () {\n var errors;\n if (this.closed) {\n return;\n }\n var _a = this, _parentOrParents = _a._parentOrParents, _ctorUnsubscribe = _a._ctorUnsubscribe, _unsubscribe = _a._unsubscribe, _subscriptions = _a._subscriptions;\n this.closed = true;\n this._parentOrParents = null;\n this._subscriptions = null;\n if (_parentOrParents instanceof Subscription) {\n _parentOrParents.remove(this);\n }\n else if (_parentOrParents !== null) {\n for (var index = 0; index < _parentOrParents.length; ++index) {\n var parent_1 = _parentOrParents[index];\n parent_1.remove(this);\n }\n }\n if (isFunction(_unsubscribe)) {\n if (_ctorUnsubscribe) {\n this._unsubscribe = undefined;\n }\n try {\n _unsubscribe.call(this);\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError ? flattenUnsubscriptionErrors(e.errors) : [e];\n }\n }\n if (isArray(_subscriptions)) {\n var index = -1;\n var len = _subscriptions.length;\n while (++index < len) {\n var sub = _subscriptions[index];\n if (isObject(sub)) {\n try {\n sub.unsubscribe();\n }\n catch (e) {\n errors = errors || [];\n if (e instanceof UnsubscriptionError) {\n errors = errors.concat(flattenUnsubscriptionErrors(e.errors));\n }\n else {\n errors.push(e);\n }\n }\n }\n }\n }\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n };\n Subscription.prototype.add = function (teardown) {\n var subscription = teardown;\n if (!teardown) {\n return Subscription.EMPTY;\n }\n switch (typeof teardown) {\n case 'function':\n subscription = new Subscription(teardown);\n case 'object':\n if (subscription === this || subscription.closed || typeof subscription.unsubscribe !== 'function') {\n return subscription;\n }\n else if (this.closed) {\n subscription.unsubscribe();\n return subscription;\n }\n else if (!(subscription instanceof Subscription)) {\n var tmp = subscription;\n subscription = new Subscription();\n subscription._subscriptions = [tmp];\n }\n break;\n default: {\n throw new Error('unrecognized teardown ' + teardown + ' added to Subscription.');\n }\n }\n var _parentOrParents = subscription._parentOrParents;\n if (_parentOrParents === null) {\n subscription._parentOrParents = this;\n }\n else if (_parentOrParents instanceof Subscription) {\n if (_parentOrParents === this) {\n return subscription;\n }\n subscription._parentOrParents = [_parentOrParents, this];\n }\n else if (_parentOrParents.indexOf(this) === -1) {\n _parentOrParents.push(this);\n }\n else {\n return subscription;\n }\n var subscriptions = this._subscriptions;\n if (subscriptions === null) {\n this._subscriptions = [subscription];\n }\n else {\n subscriptions.push(subscription);\n }\n return subscription;\n };\n Subscription.prototype.remove = function (subscription) {\n var subscriptions = this._subscriptions;\n if (subscriptions) {\n var subscriptionIndex = subscriptions.indexOf(subscription);\n if (subscriptionIndex !== -1) {\n subscriptions.splice(subscriptionIndex, 1);\n }\n }\n };\n Subscription.EMPTY = (function (empty) {\n empty.closed = true;\n return empty;\n }(new Subscription()));\n return Subscription;\n}());\nexport { Subscription };\nfunction flattenUnsubscriptionErrors(errors) {\n return errors.reduce(function (errs, err) { return errs.concat((err instanceof UnsubscriptionError) ? err.errors : err); }, []);\n}\n//# sourceMappingURL=Subscription.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber,_Subscription,_Observable,_Subject PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { Observable } from '../Observable';\nimport { Subject } from '../Subject';\nexport function groupBy(keySelector, elementSelector, durationSelector, subjectSelector) {\n return function (source) {\n return source.lift(new GroupByOperator(keySelector, elementSelector, durationSelector, subjectSelector));\n };\n}\nvar GroupByOperator = /*@__PURE__*/ (function () {\n function GroupByOperator(keySelector, elementSelector, durationSelector, subjectSelector) {\n this.keySelector = keySelector;\n this.elementSelector = elementSelector;\n this.durationSelector = durationSelector;\n this.subjectSelector = subjectSelector;\n }\n GroupByOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new GroupBySubscriber(subscriber, this.keySelector, this.elementSelector, this.durationSelector, this.subjectSelector));\n };\n return GroupByOperator;\n}());\nvar GroupBySubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(GroupBySubscriber, _super);\n function GroupBySubscriber(destination, keySelector, elementSelector, durationSelector, subjectSelector) {\n var _this = _super.call(this, destination) || this;\n _this.keySelector = keySelector;\n _this.elementSelector = elementSelector;\n _this.durationSelector = durationSelector;\n _this.subjectSelector = subjectSelector;\n _this.groups = null;\n _this.attemptedToUnsubscribe = false;\n _this.count = 0;\n return _this;\n }\n GroupBySubscriber.prototype._next = function (value) {\n var key;\n try {\n key = this.keySelector(value);\n }\n catch (err) {\n this.error(err);\n return;\n }\n this._group(value, key);\n };\n GroupBySubscriber.prototype._group = function (value, key) {\n var groups = this.groups;\n if (!groups) {\n groups = this.groups = new Map();\n }\n var group = groups.get(key);\n var element;\n if (this.elementSelector) {\n try {\n element = this.elementSelector(value);\n }\n catch (err) {\n this.error(err);\n }\n }\n else {\n element = value;\n }\n if (!group) {\n group = (this.subjectSelector ? this.subjectSelector() : new Subject());\n groups.set(key, group);\n var groupedObservable = new GroupedObservable(key, group, this);\n this.destination.next(groupedObservable);\n if (this.durationSelector) {\n var duration = void 0;\n try {\n duration = this.durationSelector(new GroupedObservable(key, group));\n }\n catch (err) {\n this.error(err);\n return;\n }\n this.add(duration.subscribe(new GroupDurationSubscriber(key, group, this)));\n }\n }\n if (!group.closed) {\n group.next(element);\n }\n };\n GroupBySubscriber.prototype._error = function (err) {\n var groups = this.groups;\n if (groups) {\n groups.forEach(function (group, key) {\n group.error(err);\n });\n groups.clear();\n }\n this.destination.error(err);\n };\n GroupBySubscriber.prototype._complete = function () {\n var groups = this.groups;\n if (groups) {\n groups.forEach(function (group, key) {\n group.complete();\n });\n groups.clear();\n }\n this.destination.complete();\n };\n GroupBySubscriber.prototype.removeGroup = function (key) {\n this.groups.delete(key);\n };\n GroupBySubscriber.prototype.unsubscribe = function () {\n if (!this.closed) {\n this.attemptedToUnsubscribe = true;\n if (this.count === 0) {\n _super.prototype.unsubscribe.call(this);\n }\n }\n };\n return GroupBySubscriber;\n}(Subscriber));\nvar GroupDurationSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(GroupDurationSubscriber, _super);\n function GroupDurationSubscriber(key, group, parent) {\n var _this = _super.call(this, group) || this;\n _this.key = key;\n _this.group = group;\n _this.parent = parent;\n return _this;\n }\n GroupDurationSubscriber.prototype._next = function (value) {\n this.complete();\n };\n GroupDurationSubscriber.prototype._unsubscribe = function () {\n var _a = this, parent = _a.parent, key = _a.key;\n this.key = this.parent = null;\n if (parent) {\n parent.removeGroup(key);\n }\n };\n return GroupDurationSubscriber;\n}(Subscriber));\nvar GroupedObservable = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(GroupedObservable, _super);\n function GroupedObservable(key, groupSubject, refCountSubscription) {\n var _this = _super.call(this) || this;\n _this.key = key;\n _this.groupSubject = groupSubject;\n _this.refCountSubscription = refCountSubscription;\n return _this;\n }\n GroupedObservable.prototype._subscribe = function (subscriber) {\n var subscription = new Subscription();\n var _a = this, refCountSubscription = _a.refCountSubscription, groupSubject = _a.groupSubject;\n if (refCountSubscription && !refCountSubscription.closed) {\n subscription.add(new InnerRefCountSubscription(refCountSubscription));\n }\n subscription.add(groupSubject.subscribe(subscriber));\n return subscription;\n };\n return GroupedObservable;\n}(Observable));\nexport { GroupedObservable };\nvar InnerRefCountSubscription = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(InnerRefCountSubscription, _super);\n function InnerRefCountSubscription(parent) {\n var _this = _super.call(this) || this;\n _this.parent = parent;\n parent.count++;\n return _this;\n }\n InnerRefCountSubscription.prototype.unsubscribe = function () {\n var parent = this.parent;\n if (!parent.closed && !this.closed) {\n _super.prototype.unsubscribe.call(this);\n parent.count -= 1;\n if (parent.count === 0 && parent.attemptedToUnsubscribe) {\n parent.unsubscribe();\n }\n }\n };\n return InnerRefCountSubscription;\n}(Subscription));\n//# sourceMappingURL=groupBy.js.map\n","/** PURE_IMPORTS_START _observable_empty,_observable_of,_observable_throwError PURE_IMPORTS_END */\nimport { empty } from './observable/empty';\nimport { of } from './observable/of';\nimport { throwError } from './observable/throwError';\nexport var NotificationKind;\n/*@__PURE__*/ (function (NotificationKind) {\n NotificationKind[\"NEXT\"] = \"N\";\n NotificationKind[\"ERROR\"] = \"E\";\n NotificationKind[\"COMPLETE\"] = \"C\";\n})(NotificationKind || (NotificationKind = {}));\nvar Notification = /*@__PURE__*/ (function () {\n function Notification(kind, value, error) {\n this.kind = kind;\n this.value = value;\n this.error = error;\n this.hasValue = kind === 'N';\n }\n Notification.prototype.observe = function (observer) {\n switch (this.kind) {\n case 'N':\n return observer.next && observer.next(this.value);\n case 'E':\n return observer.error && observer.error(this.error);\n case 'C':\n return observer.complete && observer.complete();\n }\n };\n Notification.prototype.do = function (next, error, complete) {\n var kind = this.kind;\n switch (kind) {\n case 'N':\n return next && next(this.value);\n case 'E':\n return error && error(this.error);\n case 'C':\n return complete && complete();\n }\n };\n Notification.prototype.accept = function (nextOrObserver, error, complete) {\n if (nextOrObserver && typeof nextOrObserver.next === 'function') {\n return this.observe(nextOrObserver);\n }\n else {\n return this.do(nextOrObserver, error, complete);\n }\n };\n Notification.prototype.toObservable = function () {\n var kind = this.kind;\n switch (kind) {\n case 'N':\n return of(this.value);\n case 'E':\n return throwError(this.error);\n case 'C':\n return empty();\n }\n throw new Error('unexpected notification kind value');\n };\n Notification.createNext = function (value) {\n if (typeof value !== 'undefined') {\n return new Notification('N', value);\n }\n return Notification.undefinedValueNotification;\n };\n Notification.createError = function (err) {\n return new Notification('E', undefined, err);\n };\n Notification.createComplete = function () {\n return Notification.completeNotification;\n };\n Notification.completeNotification = new Notification('C');\n Notification.undefinedValueNotification = new Notification('N', undefined);\n return Notification;\n}());\nexport { Notification };\n//# sourceMappingURL=Notification.js.map\n","/** PURE_IMPORTS_START tslib,_Subject,_util_ObjectUnsubscribedError PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subject } from './Subject';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nvar BehaviorSubject = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(BehaviorSubject, _super);\n function BehaviorSubject(_value) {\n var _this = _super.call(this) || this;\n _this._value = _value;\n return _this;\n }\n Object.defineProperty(BehaviorSubject.prototype, \"value\", {\n get: function () {\n return this.getValue();\n },\n enumerable: true,\n configurable: true\n });\n BehaviorSubject.prototype._subscribe = function (subscriber) {\n var subscription = _super.prototype._subscribe.call(this, subscriber);\n if (subscription && !subscription.closed) {\n subscriber.next(this._value);\n }\n return subscription;\n };\n BehaviorSubject.prototype.getValue = function () {\n if (this.hasError) {\n throw this.thrownError;\n }\n else if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n else {\n return this._value;\n }\n };\n BehaviorSubject.prototype.next = function (value) {\n _super.prototype.next.call(this, this._value = value);\n };\n return BehaviorSubject;\n}(Subject));\nexport { BehaviorSubject };\n//# sourceMappingURL=BehaviorSubject.js.map\n","/** PURE_IMPORTS_START tslib,_Subscription PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscription } from '../Subscription';\nvar Action = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(Action, _super);\n function Action(scheduler, work) {\n return _super.call(this) || this;\n }\n Action.prototype.schedule = function (state, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return this;\n };\n return Action;\n}(Subscription));\nexport { Action };\n//# sourceMappingURL=Action.js.map\n","/** PURE_IMPORTS_START tslib,_Action PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Action } from './Action';\nvar AsyncAction = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(AsyncAction, _super);\n function AsyncAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n _this.pending = false;\n return _this;\n }\n AsyncAction.prototype.schedule = function (state, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n if (this.closed) {\n return this;\n }\n this.state = state;\n var id = this.id;\n var scheduler = this.scheduler;\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n this.pending = true;\n this.delay = delay;\n this.id = this.id || this.requestAsyncId(scheduler, this.id, delay);\n return this;\n };\n AsyncAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return setInterval(scheduler.flush.bind(scheduler, this), delay);\n };\n AsyncAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n if (delay !== null && this.delay === delay && this.pending === false) {\n return id;\n }\n clearInterval(id);\n return undefined;\n };\n AsyncAction.prototype.execute = function (state, delay) {\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n this.pending = false;\n var error = this._execute(state, delay);\n if (error) {\n return error;\n }\n else if (this.pending === false && this.id != null) {\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n };\n AsyncAction.prototype._execute = function (state, delay) {\n var errored = false;\n var errorValue = undefined;\n try {\n this.work(state);\n }\n catch (e) {\n errored = true;\n errorValue = !!e && e || new Error(e);\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n };\n AsyncAction.prototype._unsubscribe = function () {\n var id = this.id;\n var scheduler = this.scheduler;\n var actions = scheduler.actions;\n var index = actions.indexOf(this);\n this.work = null;\n this.state = null;\n this.pending = false;\n this.scheduler = null;\n if (index !== -1) {\n actions.splice(index, 1);\n }\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n this.delay = null;\n };\n return AsyncAction;\n}(Action));\nexport { AsyncAction };\n//# sourceMappingURL=AsyncAction.js.map\n","/** PURE_IMPORTS_START tslib,_AsyncAction PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { AsyncAction } from './AsyncAction';\nvar QueueAction = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(QueueAction, _super);\n function QueueAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n return _this;\n }\n QueueAction.prototype.schedule = function (state, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n if (delay > 0) {\n return _super.prototype.schedule.call(this, state, delay);\n }\n this.delay = delay;\n this.state = state;\n this.scheduler.flush(this);\n return this;\n };\n QueueAction.prototype.execute = function (state, delay) {\n return (delay > 0 || this.closed) ?\n _super.prototype.execute.call(this, state, delay) :\n this._execute(state, delay);\n };\n QueueAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {\n return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n }\n return scheduler.flush(this);\n };\n return QueueAction;\n}(AsyncAction));\nexport { QueueAction };\n//# sourceMappingURL=QueueAction.js.map\n","var Scheduler = /*@__PURE__*/ (function () {\n function Scheduler(SchedulerAction, now) {\n if (now === void 0) {\n now = Scheduler.now;\n }\n this.SchedulerAction = SchedulerAction;\n this.now = now;\n }\n Scheduler.prototype.schedule = function (work, delay, state) {\n if (delay === void 0) {\n delay = 0;\n }\n return new this.SchedulerAction(this, work).schedule(state, delay);\n };\n Scheduler.now = function () { return Date.now(); };\n return Scheduler;\n}());\nexport { Scheduler };\n//# sourceMappingURL=Scheduler.js.map\n","/** PURE_IMPORTS_START tslib,_Scheduler PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Scheduler } from '../Scheduler';\nvar AsyncScheduler = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(AsyncScheduler, _super);\n function AsyncScheduler(SchedulerAction, now) {\n if (now === void 0) {\n now = Scheduler.now;\n }\n var _this = _super.call(this, SchedulerAction, function () {\n if (AsyncScheduler.delegate && AsyncScheduler.delegate !== _this) {\n return AsyncScheduler.delegate.now();\n }\n else {\n return now();\n }\n }) || this;\n _this.actions = [];\n _this.active = false;\n _this.scheduled = undefined;\n return _this;\n }\n AsyncScheduler.prototype.schedule = function (work, delay, state) {\n if (delay === void 0) {\n delay = 0;\n }\n if (AsyncScheduler.delegate && AsyncScheduler.delegate !== this) {\n return AsyncScheduler.delegate.schedule(work, delay, state);\n }\n else {\n return _super.prototype.schedule.call(this, work, delay, state);\n }\n };\n AsyncScheduler.prototype.flush = function (action) {\n var actions = this.actions;\n if (this.active) {\n actions.push(action);\n return;\n }\n var error;\n this.active = true;\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (action = actions.shift());\n this.active = false;\n if (error) {\n while (action = actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AsyncScheduler;\n}(Scheduler));\nexport { AsyncScheduler };\n//# sourceMappingURL=AsyncScheduler.js.map\n","/** PURE_IMPORTS_START tslib,_AsyncScheduler PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { AsyncScheduler } from './AsyncScheduler';\nvar QueueScheduler = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(QueueScheduler, _super);\n function QueueScheduler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return QueueScheduler;\n}(AsyncScheduler));\nexport { QueueScheduler };\n//# sourceMappingURL=QueueScheduler.js.map\n","/** PURE_IMPORTS_START _QueueAction,_QueueScheduler PURE_IMPORTS_END */\nimport { QueueAction } from './QueueAction';\nimport { QueueScheduler } from './QueueScheduler';\nexport var queueScheduler = /*@__PURE__*/ new QueueScheduler(QueueAction);\nexport var queue = queueScheduler;\n//# sourceMappingURL=queue.js.map\n","/** PURE_IMPORTS_START _util_isScheduler,_fromArray,_scheduled_scheduleArray PURE_IMPORTS_END */\nimport { isScheduler } from '../util/isScheduler';\nimport { fromArray } from './fromArray';\nimport { scheduleArray } from '../scheduled/scheduleArray';\nexport function of() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = args[args.length - 1];\n if (isScheduler(scheduler)) {\n args.pop();\n return scheduleArray(args, scheduler);\n }\n else {\n return fromArray(args);\n }\n}\n//# sourceMappingURL=of.js.map\n","/** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nexport function throwError(error, scheduler) {\n if (!scheduler) {\n return new Observable(function (subscriber) { return subscriber.error(error); });\n }\n else {\n return new Observable(function (subscriber) { return scheduler.schedule(dispatch, 0, { error: error, subscriber: subscriber }); });\n }\n}\nfunction dispatch(_a) {\n var error = _a.error, subscriber = _a.subscriber;\n subscriber.error(error);\n}\n//# sourceMappingURL=throwError.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber,_Notification PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nimport { Notification } from '../Notification';\nexport function observeOn(scheduler, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return function observeOnOperatorFunction(source) {\n return source.lift(new ObserveOnOperator(scheduler, delay));\n };\n}\nvar ObserveOnOperator = /*@__PURE__*/ (function () {\n function ObserveOnOperator(scheduler, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n this.scheduler = scheduler;\n this.delay = delay;\n }\n ObserveOnOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new ObserveOnSubscriber(subscriber, this.scheduler, this.delay));\n };\n return ObserveOnOperator;\n}());\nexport { ObserveOnOperator };\nvar ObserveOnSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(ObserveOnSubscriber, _super);\n function ObserveOnSubscriber(destination, scheduler, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n var _this = _super.call(this, destination) || this;\n _this.scheduler = scheduler;\n _this.delay = delay;\n return _this;\n }\n ObserveOnSubscriber.dispatch = function (arg) {\n var notification = arg.notification, destination = arg.destination;\n notification.observe(destination);\n this.unsubscribe();\n };\n ObserveOnSubscriber.prototype.scheduleMessage = function (notification) {\n var destination = this.destination;\n destination.add(this.scheduler.schedule(ObserveOnSubscriber.dispatch, this.delay, new ObserveOnMessage(notification, this.destination)));\n };\n ObserveOnSubscriber.prototype._next = function (value) {\n this.scheduleMessage(Notification.createNext(value));\n };\n ObserveOnSubscriber.prototype._error = function (err) {\n this.scheduleMessage(Notification.createError(err));\n this.unsubscribe();\n };\n ObserveOnSubscriber.prototype._complete = function () {\n this.scheduleMessage(Notification.createComplete());\n this.unsubscribe();\n };\n return ObserveOnSubscriber;\n}(Subscriber));\nexport { ObserveOnSubscriber };\nvar ObserveOnMessage = /*@__PURE__*/ (function () {\n function ObserveOnMessage(notification, destination) {\n this.notification = notification;\n this.destination = destination;\n }\n return ObserveOnMessage;\n}());\nexport { ObserveOnMessage };\n//# sourceMappingURL=observeOn.js.map\n","/** PURE_IMPORTS_START tslib,_Subject,_scheduler_queue,_Subscription,_operators_observeOn,_util_ObjectUnsubscribedError,_SubjectSubscription PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subject } from './Subject';\nimport { queue } from './scheduler/queue';\nimport { Subscription } from './Subscription';\nimport { ObserveOnSubscriber } from './operators/observeOn';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { SubjectSubscription } from './SubjectSubscription';\nvar ReplaySubject = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(ReplaySubject, _super);\n function ReplaySubject(bufferSize, windowTime, scheduler) {\n if (bufferSize === void 0) {\n bufferSize = Number.POSITIVE_INFINITY;\n }\n if (windowTime === void 0) {\n windowTime = Number.POSITIVE_INFINITY;\n }\n var _this = _super.call(this) || this;\n _this.scheduler = scheduler;\n _this._events = [];\n _this._infiniteTimeWindow = false;\n _this._bufferSize = bufferSize < 1 ? 1 : bufferSize;\n _this._windowTime = windowTime < 1 ? 1 : windowTime;\n if (windowTime === Number.POSITIVE_INFINITY) {\n _this._infiniteTimeWindow = true;\n _this.next = _this.nextInfiniteTimeWindow;\n }\n else {\n _this.next = _this.nextTimeWindow;\n }\n return _this;\n }\n ReplaySubject.prototype.nextInfiniteTimeWindow = function (value) {\n if (!this.isStopped) {\n var _events = this._events;\n _events.push(value);\n if (_events.length > this._bufferSize) {\n _events.shift();\n }\n }\n _super.prototype.next.call(this, value);\n };\n ReplaySubject.prototype.nextTimeWindow = function (value) {\n if (!this.isStopped) {\n this._events.push(new ReplayEvent(this._getNow(), value));\n this._trimBufferThenGetEvents();\n }\n _super.prototype.next.call(this, value);\n };\n ReplaySubject.prototype._subscribe = function (subscriber) {\n var _infiniteTimeWindow = this._infiniteTimeWindow;\n var _events = _infiniteTimeWindow ? this._events : this._trimBufferThenGetEvents();\n var scheduler = this.scheduler;\n var len = _events.length;\n var subscription;\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n else if (this.isStopped || this.hasError) {\n subscription = Subscription.EMPTY;\n }\n else {\n this.observers.push(subscriber);\n subscription = new SubjectSubscription(this, subscriber);\n }\n if (scheduler) {\n subscriber.add(subscriber = new ObserveOnSubscriber(subscriber, scheduler));\n }\n if (_infiniteTimeWindow) {\n for (var i = 0; i < len && !subscriber.closed; i++) {\n subscriber.next(_events[i]);\n }\n }\n else {\n for (var i = 0; i < len && !subscriber.closed; i++) {\n subscriber.next(_events[i].value);\n }\n }\n if (this.hasError) {\n subscriber.error(this.thrownError);\n }\n else if (this.isStopped) {\n subscriber.complete();\n }\n return subscription;\n };\n ReplaySubject.prototype._getNow = function () {\n return (this.scheduler || queue).now();\n };\n ReplaySubject.prototype._trimBufferThenGetEvents = function () {\n var now = this._getNow();\n var _bufferSize = this._bufferSize;\n var _windowTime = this._windowTime;\n var _events = this._events;\n var eventsCount = _events.length;\n var spliceCount = 0;\n while (spliceCount < eventsCount) {\n if ((now - _events[spliceCount].time) < _windowTime) {\n break;\n }\n spliceCount++;\n }\n if (eventsCount > _bufferSize) {\n spliceCount = Math.max(spliceCount, eventsCount - _bufferSize);\n }\n if (spliceCount > 0) {\n _events.splice(0, spliceCount);\n }\n return _events;\n };\n return ReplaySubject;\n}(Subject));\nexport { ReplaySubject };\nvar ReplayEvent = /*@__PURE__*/ (function () {\n function ReplayEvent(time, value) {\n this.time = time;\n this.value = value;\n }\n return ReplayEvent;\n}());\n//# sourceMappingURL=ReplaySubject.js.map\n","/** PURE_IMPORTS_START tslib,_Subject,_Subscription PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subject } from './Subject';\nimport { Subscription } from './Subscription';\nvar AsyncSubject = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(AsyncSubject, _super);\n function AsyncSubject() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.value = null;\n _this.hasNext = false;\n _this.hasCompleted = false;\n return _this;\n }\n AsyncSubject.prototype._subscribe = function (subscriber) {\n if (this.hasError) {\n subscriber.error(this.thrownError);\n return Subscription.EMPTY;\n }\n else if (this.hasCompleted && this.hasNext) {\n subscriber.next(this.value);\n subscriber.complete();\n return Subscription.EMPTY;\n }\n return _super.prototype._subscribe.call(this, subscriber);\n };\n AsyncSubject.prototype.next = function (value) {\n if (!this.hasCompleted) {\n this.value = value;\n this.hasNext = true;\n }\n };\n AsyncSubject.prototype.error = function (error) {\n if (!this.hasCompleted) {\n _super.prototype.error.call(this, error);\n }\n };\n AsyncSubject.prototype.complete = function () {\n this.hasCompleted = true;\n if (this.hasNext) {\n _super.prototype.next.call(this, this.value);\n }\n _super.prototype.complete.call(this);\n };\n return AsyncSubject;\n}(Subject));\nexport { AsyncSubject };\n//# sourceMappingURL=AsyncSubject.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nvar nextHandle = 1;\nvar RESOLVED = /*@__PURE__*/ (function () { return /*@__PURE__*/ Promise.resolve(); })();\nvar activeHandles = {};\nfunction findAndClearHandle(handle) {\n if (handle in activeHandles) {\n delete activeHandles[handle];\n return true;\n }\n return false;\n}\nexport var Immediate = {\n setImmediate: function (cb) {\n var handle = nextHandle++;\n activeHandles[handle] = true;\n RESOLVED.then(function () { return findAndClearHandle(handle) && cb(); });\n return handle;\n },\n clearImmediate: function (handle) {\n findAndClearHandle(handle);\n },\n};\nexport var TestTools = {\n pending: function () {\n return Object.keys(activeHandles).length;\n }\n};\n//# sourceMappingURL=Immediate.js.map\n","/** PURE_IMPORTS_START tslib,_util_Immediate,_AsyncAction PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Immediate } from '../util/Immediate';\nimport { AsyncAction } from './AsyncAction';\nvar AsapAction = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(AsapAction, _super);\n function AsapAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n return _this;\n }\n AsapAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n if (delay !== null && delay > 0) {\n return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n }\n scheduler.actions.push(this);\n return scheduler.scheduled || (scheduler.scheduled = Immediate.setImmediate(scheduler.flush.bind(scheduler, null)));\n };\n AsapAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {\n return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay);\n }\n if (scheduler.actions.length === 0) {\n Immediate.clearImmediate(id);\n scheduler.scheduled = undefined;\n }\n return undefined;\n };\n return AsapAction;\n}(AsyncAction));\nexport { AsapAction };\n//# sourceMappingURL=AsapAction.js.map\n","/** PURE_IMPORTS_START tslib,_AsyncScheduler PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { AsyncScheduler } from './AsyncScheduler';\nvar AsapScheduler = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(AsapScheduler, _super);\n function AsapScheduler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AsapScheduler.prototype.flush = function (action) {\n this.active = true;\n this.scheduled = undefined;\n var actions = this.actions;\n var error;\n var index = -1;\n var count = actions.length;\n action = action || actions.shift();\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (++index < count && (action = actions.shift()));\n this.active = false;\n if (error) {\n while (++index < count && (action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AsapScheduler;\n}(AsyncScheduler));\nexport { AsapScheduler };\n//# sourceMappingURL=AsapScheduler.js.map\n","/** PURE_IMPORTS_START _AsapAction,_AsapScheduler PURE_IMPORTS_END */\nimport { AsapAction } from './AsapAction';\nimport { AsapScheduler } from './AsapScheduler';\nexport var asapScheduler = /*@__PURE__*/ new AsapScheduler(AsapAction);\nexport var asap = asapScheduler;\n//# sourceMappingURL=asap.js.map\n","/** PURE_IMPORTS_START _AsyncAction,_AsyncScheduler PURE_IMPORTS_END */\nimport { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\nexport var asyncScheduler = /*@__PURE__*/ new AsyncScheduler(AsyncAction);\nexport var async = asyncScheduler;\n//# sourceMappingURL=async.js.map\n","/** PURE_IMPORTS_START tslib,_AsyncAction PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { AsyncAction } from './AsyncAction';\nvar AnimationFrameAction = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(AnimationFrameAction, _super);\n function AnimationFrameAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n return _this;\n }\n AnimationFrameAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n if (delay !== null && delay > 0) {\n return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n }\n scheduler.actions.push(this);\n return scheduler.scheduled || (scheduler.scheduled = requestAnimationFrame(function () { return scheduler.flush(null); }));\n };\n AnimationFrameAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {\n return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay);\n }\n if (scheduler.actions.length === 0) {\n cancelAnimationFrame(id);\n scheduler.scheduled = undefined;\n }\n return undefined;\n };\n return AnimationFrameAction;\n}(AsyncAction));\nexport { AnimationFrameAction };\n//# sourceMappingURL=AnimationFrameAction.js.map\n","/** PURE_IMPORTS_START tslib,_AsyncScheduler PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { AsyncScheduler } from './AsyncScheduler';\nvar AnimationFrameScheduler = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(AnimationFrameScheduler, _super);\n function AnimationFrameScheduler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AnimationFrameScheduler.prototype.flush = function (action) {\n this.active = true;\n this.scheduled = undefined;\n var actions = this.actions;\n var error;\n var index = -1;\n var count = actions.length;\n action = action || actions.shift();\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (++index < count && (action = actions.shift()));\n this.active = false;\n if (error) {\n while (++index < count && (action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AnimationFrameScheduler;\n}(AsyncScheduler));\nexport { AnimationFrameScheduler };\n//# sourceMappingURL=AnimationFrameScheduler.js.map\n","/** PURE_IMPORTS_START _AnimationFrameAction,_AnimationFrameScheduler PURE_IMPORTS_END */\nimport { AnimationFrameAction } from './AnimationFrameAction';\nimport { AnimationFrameScheduler } from './AnimationFrameScheduler';\nexport var animationFrameScheduler = /*@__PURE__*/ new AnimationFrameScheduler(AnimationFrameAction);\nexport var animationFrame = animationFrameScheduler;\n//# sourceMappingURL=animationFrame.js.map\n","/** PURE_IMPORTS_START tslib,_AsyncAction,_AsyncScheduler PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\nvar VirtualTimeScheduler = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(VirtualTimeScheduler, _super);\n function VirtualTimeScheduler(SchedulerAction, maxFrames) {\n if (SchedulerAction === void 0) {\n SchedulerAction = VirtualAction;\n }\n if (maxFrames === void 0) {\n maxFrames = Number.POSITIVE_INFINITY;\n }\n var _this = _super.call(this, SchedulerAction, function () { return _this.frame; }) || this;\n _this.maxFrames = maxFrames;\n _this.frame = 0;\n _this.index = -1;\n return _this;\n }\n VirtualTimeScheduler.prototype.flush = function () {\n var _a = this, actions = _a.actions, maxFrames = _a.maxFrames;\n var error, action;\n while ((action = actions[0]) && action.delay <= maxFrames) {\n actions.shift();\n this.frame = action.delay;\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n }\n if (error) {\n while (action = actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n VirtualTimeScheduler.frameTimeFactor = 10;\n return VirtualTimeScheduler;\n}(AsyncScheduler));\nexport { VirtualTimeScheduler };\nvar VirtualAction = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(VirtualAction, _super);\n function VirtualAction(scheduler, work, index) {\n if (index === void 0) {\n index = scheduler.index += 1;\n }\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n _this.index = index;\n _this.active = true;\n _this.index = scheduler.index = index;\n return _this;\n }\n VirtualAction.prototype.schedule = function (state, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n if (!this.id) {\n return _super.prototype.schedule.call(this, state, delay);\n }\n this.active = false;\n var action = new VirtualAction(this.scheduler, this.work);\n this.add(action);\n return action.schedule(state, delay);\n };\n VirtualAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n this.delay = scheduler.frame + delay;\n var actions = scheduler.actions;\n actions.push(this);\n actions.sort(VirtualAction.sortActions);\n return true;\n };\n VirtualAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return undefined;\n };\n VirtualAction.prototype._execute = function (state, delay) {\n if (this.active === true) {\n return _super.prototype._execute.call(this, state, delay);\n }\n };\n VirtualAction.sortActions = function (a, b) {\n if (a.delay === b.delay) {\n if (a.index === b.index) {\n return 0;\n }\n else if (a.index > b.index) {\n return 1;\n }\n else {\n return -1;\n }\n }\n else if (a.delay > b.delay) {\n return 1;\n }\n else {\n return -1;\n }\n };\n return VirtualAction;\n}(AsyncAction));\nexport { VirtualAction };\n//# sourceMappingURL=VirtualTimeScheduler.js.map\n","/** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nexport function isObservable(obj) {\n return !!obj && (obj instanceof Observable || (typeof obj.lift === 'function' && typeof obj.subscribe === 'function'));\n}\n//# sourceMappingURL=isObservable.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nvar TimeoutErrorImpl = /*@__PURE__*/ (function () {\n function TimeoutErrorImpl() {\n Error.call(this);\n this.message = 'Timeout has occurred';\n this.name = 'TimeoutError';\n return this;\n }\n TimeoutErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype);\n return TimeoutErrorImpl;\n})();\nexport var TimeoutError = TimeoutErrorImpl;\n//# sourceMappingURL=TimeoutError.js.map\n","/** PURE_IMPORTS_START _Observable,_AsyncSubject,_operators_map,_util_canReportError,_util_isArray,_util_isScheduler PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { AsyncSubject } from '../AsyncSubject';\nimport { map } from '../operators/map';\nimport { canReportError } from '../util/canReportError';\nimport { isArray } from '../util/isArray';\nimport { isScheduler } from '../util/isScheduler';\nexport function bindCallback(callbackFunc, resultSelector, scheduler) {\n if (resultSelector) {\n if (isScheduler(resultSelector)) {\n scheduler = resultSelector;\n }\n else {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return bindCallback(callbackFunc, scheduler).apply(void 0, args).pipe(map(function (args) { return isArray(args) ? resultSelector.apply(void 0, args) : resultSelector(args); }));\n };\n }\n }\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var context = this;\n var subject;\n var params = {\n context: context,\n subject: subject,\n callbackFunc: callbackFunc,\n scheduler: scheduler,\n };\n return new Observable(function (subscriber) {\n if (!scheduler) {\n if (!subject) {\n subject = new AsyncSubject();\n var handler = function () {\n var innerArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n innerArgs[_i] = arguments[_i];\n }\n subject.next(innerArgs.length <= 1 ? innerArgs[0] : innerArgs);\n subject.complete();\n };\n try {\n callbackFunc.apply(context, args.concat([handler]));\n }\n catch (err) {\n if (canReportError(subject)) {\n subject.error(err);\n }\n else {\n console.warn(err);\n }\n }\n }\n return subject.subscribe(subscriber);\n }\n else {\n var state = {\n args: args, subscriber: subscriber, params: params,\n };\n return scheduler.schedule(dispatch, 0, state);\n }\n });\n };\n}\nfunction dispatch(state) {\n var _this = this;\n var self = this;\n var args = state.args, subscriber = state.subscriber, params = state.params;\n var callbackFunc = params.callbackFunc, context = params.context, scheduler = params.scheduler;\n var subject = params.subject;\n if (!subject) {\n subject = params.subject = new AsyncSubject();\n var handler = function () {\n var innerArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n innerArgs[_i] = arguments[_i];\n }\n var value = innerArgs.length <= 1 ? innerArgs[0] : innerArgs;\n _this.add(scheduler.schedule(dispatchNext, 0, { value: value, subject: subject }));\n };\n try {\n callbackFunc.apply(context, args.concat([handler]));\n }\n catch (err) {\n subject.error(err);\n }\n }\n this.add(subject.subscribe(subscriber));\n}\nfunction dispatchNext(state) {\n var value = state.value, subject = state.subject;\n subject.next(value);\n subject.complete();\n}\nfunction dispatchError(state) {\n var err = state.err, subject = state.subject;\n subject.error(err);\n}\n//# sourceMappingURL=bindCallback.js.map\n","/** PURE_IMPORTS_START _Observable,_AsyncSubject,_operators_map,_util_canReportError,_util_isScheduler,_util_isArray PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { AsyncSubject } from '../AsyncSubject';\nimport { map } from '../operators/map';\nimport { canReportError } from '../util/canReportError';\nimport { isScheduler } from '../util/isScheduler';\nimport { isArray } from '../util/isArray';\nexport function bindNodeCallback(callbackFunc, resultSelector, scheduler) {\n if (resultSelector) {\n if (isScheduler(resultSelector)) {\n scheduler = resultSelector;\n }\n else {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return bindNodeCallback(callbackFunc, scheduler).apply(void 0, args).pipe(map(function (args) { return isArray(args) ? resultSelector.apply(void 0, args) : resultSelector(args); }));\n };\n }\n }\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var params = {\n subject: undefined,\n args: args,\n callbackFunc: callbackFunc,\n scheduler: scheduler,\n context: this,\n };\n return new Observable(function (subscriber) {\n var context = params.context;\n var subject = params.subject;\n if (!scheduler) {\n if (!subject) {\n subject = params.subject = new AsyncSubject();\n var handler = function () {\n var innerArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n innerArgs[_i] = arguments[_i];\n }\n var err = innerArgs.shift();\n if (err) {\n subject.error(err);\n return;\n }\n subject.next(innerArgs.length <= 1 ? innerArgs[0] : innerArgs);\n subject.complete();\n };\n try {\n callbackFunc.apply(context, args.concat([handler]));\n }\n catch (err) {\n if (canReportError(subject)) {\n subject.error(err);\n }\n else {\n console.warn(err);\n }\n }\n }\n return subject.subscribe(subscriber);\n }\n else {\n return scheduler.schedule(dispatch, 0, { params: params, subscriber: subscriber, context: context });\n }\n });\n };\n}\nfunction dispatch(state) {\n var _this = this;\n var params = state.params, subscriber = state.subscriber, context = state.context;\n var callbackFunc = params.callbackFunc, args = params.args, scheduler = params.scheduler;\n var subject = params.subject;\n if (!subject) {\n subject = params.subject = new AsyncSubject();\n var handler = function () {\n var innerArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n innerArgs[_i] = arguments[_i];\n }\n var err = innerArgs.shift();\n if (err) {\n _this.add(scheduler.schedule(dispatchError, 0, { err: err, subject: subject }));\n }\n else {\n var value = innerArgs.length <= 1 ? innerArgs[0] : innerArgs;\n _this.add(scheduler.schedule(dispatchNext, 0, { value: value, subject: subject }));\n }\n };\n try {\n callbackFunc.apply(context, args.concat([handler]));\n }\n catch (err) {\n this.add(scheduler.schedule(dispatchError, 0, { err: err, subject: subject }));\n }\n }\n this.add(subject.subscribe(subscriber));\n}\nfunction dispatchNext(arg) {\n var value = arg.value, subject = arg.subject;\n subject.next(value);\n subject.complete();\n}\nfunction dispatchError(arg) {\n var err = arg.err, subject = arg.subject;\n subject.error(err);\n}\n//# sourceMappingURL=bindNodeCallback.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from './Subscriber';\nvar OuterSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(OuterSubscriber, _super);\n function OuterSubscriber() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n OuterSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.destination.next(innerValue);\n };\n OuterSubscriber.prototype.notifyError = function (error, innerSub) {\n this.destination.error(error);\n };\n OuterSubscriber.prototype.notifyComplete = function (innerSub) {\n this.destination.complete();\n };\n return OuterSubscriber;\n}(Subscriber));\nexport { OuterSubscriber };\n//# sourceMappingURL=OuterSubscriber.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from './Subscriber';\nvar InnerSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(InnerSubscriber, _super);\n function InnerSubscriber(parent, outerValue, outerIndex) {\n var _this = _super.call(this) || this;\n _this.parent = parent;\n _this.outerValue = outerValue;\n _this.outerIndex = outerIndex;\n _this.index = 0;\n return _this;\n }\n InnerSubscriber.prototype._next = function (value) {\n this.parent.notifyNext(this.outerValue, value, this.outerIndex, this.index++, this);\n };\n InnerSubscriber.prototype._error = function (error) {\n this.parent.notifyError(error, this);\n this.unsubscribe();\n };\n InnerSubscriber.prototype._complete = function () {\n this.parent.notifyComplete(this);\n this.unsubscribe();\n };\n return InnerSubscriber;\n}(Subscriber));\nexport { InnerSubscriber };\n//# sourceMappingURL=InnerSubscriber.js.map\n","/** PURE_IMPORTS_START _InnerSubscriber,_subscribeTo,_Observable PURE_IMPORTS_END */\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeTo } from './subscribeTo';\nimport { Observable } from '../Observable';\nexport function subscribeToResult(outerSubscriber, result, outerValue, outerIndex, innerSubscriber) {\n if (innerSubscriber === void 0) {\n innerSubscriber = new InnerSubscriber(outerSubscriber, outerValue, outerIndex);\n }\n if (innerSubscriber.closed) {\n return undefined;\n }\n if (result instanceof Observable) {\n return result.subscribe(innerSubscriber);\n }\n return subscribeTo(result)(innerSubscriber);\n}\n//# sourceMappingURL=subscribeToResult.js.map\n","/** PURE_IMPORTS_START tslib,_util_isScheduler,_util_isArray,_OuterSubscriber,_util_subscribeToResult,_fromArray PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { isScheduler } from '../util/isScheduler';\nimport { isArray } from '../util/isArray';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { fromArray } from './fromArray';\nvar NONE = {};\nexport function combineLatest() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i] = arguments[_i];\n }\n var resultSelector = undefined;\n var scheduler = undefined;\n if (isScheduler(observables[observables.length - 1])) {\n scheduler = observables.pop();\n }\n if (typeof observables[observables.length - 1] === 'function') {\n resultSelector = observables.pop();\n }\n if (observables.length === 1 && isArray(observables[0])) {\n observables = observables[0];\n }\n return fromArray(observables, scheduler).lift(new CombineLatestOperator(resultSelector));\n}\nvar CombineLatestOperator = /*@__PURE__*/ (function () {\n function CombineLatestOperator(resultSelector) {\n this.resultSelector = resultSelector;\n }\n CombineLatestOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new CombineLatestSubscriber(subscriber, this.resultSelector));\n };\n return CombineLatestOperator;\n}());\nexport { CombineLatestOperator };\nvar CombineLatestSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(CombineLatestSubscriber, _super);\n function CombineLatestSubscriber(destination, resultSelector) {\n var _this = _super.call(this, destination) || this;\n _this.resultSelector = resultSelector;\n _this.active = 0;\n _this.values = [];\n _this.observables = [];\n return _this;\n }\n CombineLatestSubscriber.prototype._next = function (observable) {\n this.values.push(NONE);\n this.observables.push(observable);\n };\n CombineLatestSubscriber.prototype._complete = function () {\n var observables = this.observables;\n var len = observables.length;\n if (len === 0) {\n this.destination.complete();\n }\n else {\n this.active = len;\n this.toRespond = len;\n for (var i = 0; i < len; i++) {\n var observable = observables[i];\n this.add(subscribeToResult(this, observable, undefined, i));\n }\n }\n };\n CombineLatestSubscriber.prototype.notifyComplete = function (unused) {\n if ((this.active -= 1) === 0) {\n this.destination.complete();\n }\n };\n CombineLatestSubscriber.prototype.notifyNext = function (_outerValue, innerValue, outerIndex) {\n var values = this.values;\n var oldVal = values[outerIndex];\n var toRespond = !this.toRespond\n ? 0\n : oldVal === NONE ? --this.toRespond : this.toRespond;\n values[outerIndex] = innerValue;\n if (toRespond === 0) {\n if (this.resultSelector) {\n this._tryResultSelector(values);\n }\n else {\n this.destination.next(values.slice());\n }\n }\n };\n CombineLatestSubscriber.prototype._tryResultSelector = function (values) {\n var result;\n try {\n result = this.resultSelector.apply(this, values);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n };\n return CombineLatestSubscriber;\n}(OuterSubscriber));\nexport { CombineLatestSubscriber };\n//# sourceMappingURL=combineLatest.js.map\n","/** PURE_IMPORTS_START _mergeAll PURE_IMPORTS_END */\nimport { mergeAll } from './mergeAll';\nexport function concatAll() {\n return mergeAll(1);\n}\n//# sourceMappingURL=concatAll.js.map\n","/** PURE_IMPORTS_START _of,_operators_concatAll PURE_IMPORTS_END */\nimport { of } from './of';\nimport { concatAll } from '../operators/concatAll';\nexport function concat() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i] = arguments[_i];\n }\n return concatAll()(of.apply(void 0, observables));\n}\n//# sourceMappingURL=concat.js.map\n","/** PURE_IMPORTS_START _Observable,_util_isArray,_operators_map,_util_isObject,_from PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { isArray } from '../util/isArray';\nimport { map } from '../operators/map';\nimport { isObject } from '../util/isObject';\nimport { from } from './from';\nexport function forkJoin() {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n if (sources.length === 1) {\n var first_1 = sources[0];\n if (isArray(first_1)) {\n return forkJoinInternal(first_1, null);\n }\n if (isObject(first_1) && Object.getPrototypeOf(first_1) === Object.prototype) {\n var keys = Object.keys(first_1);\n return forkJoinInternal(keys.map(function (key) { return first_1[key]; }), keys);\n }\n }\n if (typeof sources[sources.length - 1] === 'function') {\n var resultSelector_1 = sources.pop();\n sources = (sources.length === 1 && isArray(sources[0])) ? sources[0] : sources;\n return forkJoinInternal(sources, null).pipe(map(function (args) { return resultSelector_1.apply(void 0, args); }));\n }\n return forkJoinInternal(sources, null);\n}\nfunction forkJoinInternal(sources, keys) {\n return new Observable(function (subscriber) {\n var len = sources.length;\n if (len === 0) {\n subscriber.complete();\n return;\n }\n var values = new Array(len);\n var completed = 0;\n var emitted = 0;\n var _loop_1 = function (i) {\n var source = from(sources[i]);\n var hasValue = false;\n subscriber.add(source.subscribe({\n next: function (value) {\n if (!hasValue) {\n hasValue = true;\n emitted++;\n }\n values[i] = value;\n },\n error: function (err) { return subscriber.error(err); },\n complete: function () {\n completed++;\n if (completed === len || !hasValue) {\n if (emitted === len) {\n subscriber.next(keys ?\n keys.reduce(function (result, key, i) { return (result[key] = values[i], result); }, {}) :\n values);\n }\n subscriber.complete();\n }\n }\n }));\n };\n for (var i = 0; i < len; i++) {\n _loop_1(i);\n }\n });\n}\n//# sourceMappingURL=forkJoin.js.map\n","/** PURE_IMPORTS_START _Observable,_util_isArray,_util_isFunction,_operators_map PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { isArray } from '../util/isArray';\nimport { isFunction } from '../util/isFunction';\nimport { map } from '../operators/map';\nvar toString = /*@__PURE__*/ (function () { return Object.prototype.toString; })();\nexport function fromEvent(target, eventName, options, resultSelector) {\n if (isFunction(options)) {\n resultSelector = options;\n options = undefined;\n }\n if (resultSelector) {\n return fromEvent(target, eventName, options).pipe(map(function (args) { return isArray(args) ? resultSelector.apply(void 0, args) : resultSelector(args); }));\n }\n return new Observable(function (subscriber) {\n function handler(e) {\n if (arguments.length > 1) {\n subscriber.next(Array.prototype.slice.call(arguments));\n }\n else {\n subscriber.next(e);\n }\n }\n setupSubscription(target, eventName, handler, subscriber, options);\n });\n}\nfunction setupSubscription(sourceObj, eventName, handler, subscriber, options) {\n var unsubscribe;\n if (isEventTarget(sourceObj)) {\n var source_1 = sourceObj;\n sourceObj.addEventListener(eventName, handler, options);\n unsubscribe = function () { return source_1.removeEventListener(eventName, handler, options); };\n }\n else if (isJQueryStyleEventEmitter(sourceObj)) {\n var source_2 = sourceObj;\n sourceObj.on(eventName, handler);\n unsubscribe = function () { return source_2.off(eventName, handler); };\n }\n else if (isNodeStyleEventEmitter(sourceObj)) {\n var source_3 = sourceObj;\n sourceObj.addListener(eventName, handler);\n unsubscribe = function () { return source_3.removeListener(eventName, handler); };\n }\n else if (sourceObj && sourceObj.length) {\n for (var i = 0, len = sourceObj.length; i < len; i++) {\n setupSubscription(sourceObj[i], eventName, handler, subscriber, options);\n }\n }\n else {\n throw new TypeError('Invalid event target');\n }\n subscriber.add(unsubscribe);\n}\nfunction isNodeStyleEventEmitter(sourceObj) {\n return sourceObj && typeof sourceObj.addListener === 'function' && typeof sourceObj.removeListener === 'function';\n}\nfunction isJQueryStyleEventEmitter(sourceObj) {\n return sourceObj && typeof sourceObj.on === 'function' && typeof sourceObj.off === 'function';\n}\nfunction isEventTarget(sourceObj) {\n return sourceObj && typeof sourceObj.addEventListener === 'function' && typeof sourceObj.removeEventListener === 'function';\n}\n//# sourceMappingURL=fromEvent.js.map\n","/** PURE_IMPORTS_START _Observable,_util_isArray,_util_isFunction,_operators_map PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { isArray } from '../util/isArray';\nimport { isFunction } from '../util/isFunction';\nimport { map } from '../operators/map';\nexport function fromEventPattern(addHandler, removeHandler, resultSelector) {\n if (resultSelector) {\n return fromEventPattern(addHandler, removeHandler).pipe(map(function (args) { return isArray(args) ? resultSelector.apply(void 0, args) : resultSelector(args); }));\n }\n return new Observable(function (subscriber) {\n var handler = function () {\n var e = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n e[_i] = arguments[_i];\n }\n return subscriber.next(e.length === 1 ? e[0] : e);\n };\n var retValue;\n try {\n retValue = addHandler(handler);\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n if (!isFunction(removeHandler)) {\n return undefined;\n }\n return function () { return removeHandler(handler, retValue); };\n });\n}\n//# sourceMappingURL=fromEventPattern.js.map\n","/** PURE_IMPORTS_START _Observable,_util_identity,_util_isScheduler PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { identity } from '../util/identity';\nimport { isScheduler } from '../util/isScheduler';\nexport function generate(initialStateOrOptions, condition, iterate, resultSelectorOrObservable, scheduler) {\n var resultSelector;\n var initialState;\n if (arguments.length == 1) {\n var options = initialStateOrOptions;\n initialState = options.initialState;\n condition = options.condition;\n iterate = options.iterate;\n resultSelector = options.resultSelector || identity;\n scheduler = options.scheduler;\n }\n else if (resultSelectorOrObservable === undefined || isScheduler(resultSelectorOrObservable)) {\n initialState = initialStateOrOptions;\n resultSelector = identity;\n scheduler = resultSelectorOrObservable;\n }\n else {\n initialState = initialStateOrOptions;\n resultSelector = resultSelectorOrObservable;\n }\n return new Observable(function (subscriber) {\n var state = initialState;\n if (scheduler) {\n return scheduler.schedule(dispatch, 0, {\n subscriber: subscriber,\n iterate: iterate,\n condition: condition,\n resultSelector: resultSelector,\n state: state\n });\n }\n do {\n if (condition) {\n var conditionResult = void 0;\n try {\n conditionResult = condition(state);\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n if (!conditionResult) {\n subscriber.complete();\n break;\n }\n }\n var value = void 0;\n try {\n value = resultSelector(state);\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n subscriber.next(value);\n if (subscriber.closed) {\n break;\n }\n try {\n state = iterate(state);\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n } while (true);\n return undefined;\n });\n}\nfunction dispatch(state) {\n var subscriber = state.subscriber, condition = state.condition;\n if (subscriber.closed) {\n return undefined;\n }\n if (state.needIterate) {\n try {\n state.state = state.iterate(state.state);\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n }\n else {\n state.needIterate = true;\n }\n if (condition) {\n var conditionResult = void 0;\n try {\n conditionResult = condition(state.state);\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n if (!conditionResult) {\n subscriber.complete();\n return undefined;\n }\n if (subscriber.closed) {\n return undefined;\n }\n }\n var value;\n try {\n value = state.resultSelector(state.state);\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n if (subscriber.closed) {\n return undefined;\n }\n subscriber.next(value);\n if (subscriber.closed) {\n return undefined;\n }\n return this.schedule(state);\n}\n//# sourceMappingURL=generate.js.map\n","/** PURE_IMPORTS_START _defer,_empty PURE_IMPORTS_END */\nimport { defer } from './defer';\nimport { EMPTY } from './empty';\nexport function iif(condition, trueResult, falseResult) {\n if (trueResult === void 0) {\n trueResult = EMPTY;\n }\n if (falseResult === void 0) {\n falseResult = EMPTY;\n }\n return defer(function () { return condition() ? trueResult : falseResult; });\n}\n//# sourceMappingURL=iif.js.map\n","/** PURE_IMPORTS_START _isArray PURE_IMPORTS_END */\nimport { isArray } from './isArray';\nexport function isNumeric(val) {\n return !isArray(val) && (val - parseFloat(val) + 1) >= 0;\n}\n//# sourceMappingURL=isNumeric.js.map\n","/** PURE_IMPORTS_START _Observable,_scheduler_async,_util_isNumeric PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { async } from '../scheduler/async';\nimport { isNumeric } from '../util/isNumeric';\nexport function interval(period, scheduler) {\n if (period === void 0) {\n period = 0;\n }\n if (scheduler === void 0) {\n scheduler = async;\n }\n if (!isNumeric(period) || period < 0) {\n period = 0;\n }\n if (!scheduler || typeof scheduler.schedule !== 'function') {\n scheduler = async;\n }\n return new Observable(function (subscriber) {\n subscriber.add(scheduler.schedule(dispatch, period, { subscriber: subscriber, counter: 0, period: period }));\n return subscriber;\n });\n}\nfunction dispatch(state) {\n var subscriber = state.subscriber, counter = state.counter, period = state.period;\n subscriber.next(counter);\n this.schedule({ subscriber: subscriber, counter: counter + 1, period: period }, period);\n}\n//# sourceMappingURL=interval.js.map\n","/** PURE_IMPORTS_START _Observable,_util_noop PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { noop } from '../util/noop';\nexport var NEVER = /*@__PURE__*/ new Observable(noop);\nexport function never() {\n return NEVER;\n}\n//# sourceMappingURL=never.js.map\n","/** PURE_IMPORTS_START _Observable,_from,_util_isArray,_empty PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { from } from './from';\nimport { isArray } from '../util/isArray';\nimport { EMPTY } from './empty';\nexport function onErrorResumeNext() {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n if (sources.length === 0) {\n return EMPTY;\n }\n var first = sources[0], remainder = sources.slice(1);\n if (sources.length === 1 && isArray(first)) {\n return onErrorResumeNext.apply(void 0, first);\n }\n return new Observable(function (subscriber) {\n var subNext = function () { return subscriber.add(onErrorResumeNext.apply(void 0, remainder).subscribe(subscriber)); };\n return from(first).subscribe({\n next: function (value) { subscriber.next(value); },\n error: subNext,\n complete: subNext,\n });\n });\n}\n//# sourceMappingURL=onErrorResumeNext.js.map\n","/** PURE_IMPORTS_START _Observable,_Subscription PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nexport function pairs(obj, scheduler) {\n if (!scheduler) {\n return new Observable(function (subscriber) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length && !subscriber.closed; i++) {\n var key = keys[i];\n if (obj.hasOwnProperty(key)) {\n subscriber.next([key, obj[key]]);\n }\n }\n subscriber.complete();\n });\n }\n else {\n return new Observable(function (subscriber) {\n var keys = Object.keys(obj);\n var subscription = new Subscription();\n subscription.add(scheduler.schedule(dispatch, 0, { keys: keys, index: 0, subscriber: subscriber, subscription: subscription, obj: obj }));\n return subscription;\n });\n }\n}\nexport function dispatch(state) {\n var keys = state.keys, index = state.index, subscriber = state.subscriber, subscription = state.subscription, obj = state.obj;\n if (!subscriber.closed) {\n if (index < keys.length) {\n var key = keys[index];\n subscriber.next([key, obj[key]]);\n subscription.add(this.schedule({ keys: keys, index: index + 1, subscriber: subscriber, subscription: subscription, obj: obj }));\n }\n else {\n subscriber.complete();\n }\n }\n}\n//# sourceMappingURL=pairs.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function not(pred, thisArg) {\n function notPred() {\n return !(notPred.pred.apply(notPred.thisArg, arguments));\n }\n notPred.pred = pred;\n notPred.thisArg = thisArg;\n return notPred;\n}\n//# sourceMappingURL=not.js.map\n","/** PURE_IMPORTS_START _util_not,_util_subscribeTo,_operators_filter,_Observable PURE_IMPORTS_END */\nimport { not } from '../util/not';\nimport { subscribeTo } from '../util/subscribeTo';\nimport { filter } from '../operators/filter';\nimport { Observable } from '../Observable';\nexport function partition(source, predicate, thisArg) {\n return [\n filter(predicate, thisArg)(new Observable(subscribeTo(source))),\n filter(not(predicate, thisArg))(new Observable(subscribeTo(source)))\n ];\n}\n//# sourceMappingURL=partition.js.map\n","/** PURE_IMPORTS_START tslib,_util_isArray,_fromArray,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { isArray } from '../util/isArray';\nimport { fromArray } from './fromArray';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function race() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i] = arguments[_i];\n }\n if (observables.length === 1) {\n if (isArray(observables[0])) {\n observables = observables[0];\n }\n else {\n return observables[0];\n }\n }\n return fromArray(observables, undefined).lift(new RaceOperator());\n}\nvar RaceOperator = /*@__PURE__*/ (function () {\n function RaceOperator() {\n }\n RaceOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new RaceSubscriber(subscriber));\n };\n return RaceOperator;\n}());\nexport { RaceOperator };\nvar RaceSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(RaceSubscriber, _super);\n function RaceSubscriber(destination) {\n var _this = _super.call(this, destination) || this;\n _this.hasFirst = false;\n _this.observables = [];\n _this.subscriptions = [];\n return _this;\n }\n RaceSubscriber.prototype._next = function (observable) {\n this.observables.push(observable);\n };\n RaceSubscriber.prototype._complete = function () {\n var observables = this.observables;\n var len = observables.length;\n if (len === 0) {\n this.destination.complete();\n }\n else {\n for (var i = 0; i < len && !this.hasFirst; i++) {\n var observable = observables[i];\n var subscription = subscribeToResult(this, observable, undefined, i);\n if (this.subscriptions) {\n this.subscriptions.push(subscription);\n }\n this.add(subscription);\n }\n this.observables = null;\n }\n };\n RaceSubscriber.prototype.notifyNext = function (_outerValue, innerValue, outerIndex) {\n if (!this.hasFirst) {\n this.hasFirst = true;\n for (var i = 0; i < this.subscriptions.length; i++) {\n if (i !== outerIndex) {\n var subscription = this.subscriptions[i];\n subscription.unsubscribe();\n this.remove(subscription);\n }\n }\n this.subscriptions = null;\n }\n this.destination.next(innerValue);\n };\n return RaceSubscriber;\n}(OuterSubscriber));\nexport { RaceSubscriber };\n//# sourceMappingURL=race.js.map\n","/** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nexport function range(start, count, scheduler) {\n if (start === void 0) {\n start = 0;\n }\n return new Observable(function (subscriber) {\n if (count === undefined) {\n count = start;\n start = 0;\n }\n var index = 0;\n var current = start;\n if (scheduler) {\n return scheduler.schedule(dispatch, 0, {\n index: index, count: count, start: start, subscriber: subscriber\n });\n }\n else {\n do {\n if (index++ >= count) {\n subscriber.complete();\n break;\n }\n subscriber.next(current++);\n if (subscriber.closed) {\n break;\n }\n } while (true);\n }\n return undefined;\n });\n}\nexport function dispatch(state) {\n var start = state.start, index = state.index, count = state.count, subscriber = state.subscriber;\n if (index >= count) {\n subscriber.complete();\n return;\n }\n subscriber.next(start);\n if (subscriber.closed) {\n return;\n }\n state.index = index + 1;\n state.start = start + 1;\n this.schedule(state);\n}\n//# sourceMappingURL=range.js.map\n","/** PURE_IMPORTS_START _Observable,_scheduler_async,_util_isNumeric,_util_isScheduler PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { async } from '../scheduler/async';\nimport { isNumeric } from '../util/isNumeric';\nimport { isScheduler } from '../util/isScheduler';\nexport function timer(dueTime, periodOrScheduler, scheduler) {\n if (dueTime === void 0) {\n dueTime = 0;\n }\n var period = -1;\n if (isNumeric(periodOrScheduler)) {\n period = Number(periodOrScheduler) < 1 && 1 || Number(periodOrScheduler);\n }\n else if (isScheduler(periodOrScheduler)) {\n scheduler = periodOrScheduler;\n }\n if (!isScheduler(scheduler)) {\n scheduler = async;\n }\n return new Observable(function (subscriber) {\n var due = isNumeric(dueTime)\n ? dueTime\n : (+dueTime - scheduler.now());\n return scheduler.schedule(dispatch, due, {\n index: 0, period: period, subscriber: subscriber\n });\n });\n}\nfunction dispatch(state) {\n var index = state.index, period = state.period, subscriber = state.subscriber;\n subscriber.next(index);\n if (subscriber.closed) {\n return;\n }\n else if (period === -1) {\n return subscriber.complete();\n }\n state.index = index + 1;\n this.schedule(state, period);\n}\n//# sourceMappingURL=timer.js.map\n","/** PURE_IMPORTS_START _Observable,_from,_empty PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { from } from './from';\nimport { EMPTY } from './empty';\nexport function using(resourceFactory, observableFactory) {\n return new Observable(function (subscriber) {\n var resource;\n try {\n resource = resourceFactory();\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n var result;\n try {\n result = observableFactory(resource);\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n var source = result ? from(result) : EMPTY;\n var subscription = source.subscribe(subscriber);\n return function () {\n subscription.unsubscribe();\n if (resource) {\n resource.unsubscribe();\n }\n };\n });\n}\n//# sourceMappingURL=using.js.map\n","/** PURE_IMPORTS_START tslib,_fromArray,_util_isArray,_Subscriber,_.._internal_symbol_iterator,_innerSubscribe PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { fromArray } from './fromArray';\nimport { isArray } from '../util/isArray';\nimport { Subscriber } from '../Subscriber';\nimport { iterator as Symbol_iterator } from '../../internal/symbol/iterator';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\nexport function zip() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i] = arguments[_i];\n }\n var resultSelector = observables[observables.length - 1];\n if (typeof resultSelector === 'function') {\n observables.pop();\n }\n return fromArray(observables, undefined).lift(new ZipOperator(resultSelector));\n}\nvar ZipOperator = /*@__PURE__*/ (function () {\n function ZipOperator(resultSelector) {\n this.resultSelector = resultSelector;\n }\n ZipOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new ZipSubscriber(subscriber, this.resultSelector));\n };\n return ZipOperator;\n}());\nexport { ZipOperator };\nvar ZipSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(ZipSubscriber, _super);\n function ZipSubscriber(destination, resultSelector, values) {\n if (values === void 0) {\n values = Object.create(null);\n }\n var _this = _super.call(this, destination) || this;\n _this.resultSelector = resultSelector;\n _this.iterators = [];\n _this.active = 0;\n _this.resultSelector = (typeof resultSelector === 'function') ? resultSelector : undefined;\n return _this;\n }\n ZipSubscriber.prototype._next = function (value) {\n var iterators = this.iterators;\n if (isArray(value)) {\n iterators.push(new StaticArrayIterator(value));\n }\n else if (typeof value[Symbol_iterator] === 'function') {\n iterators.push(new StaticIterator(value[Symbol_iterator]()));\n }\n else {\n iterators.push(new ZipBufferIterator(this.destination, this, value));\n }\n };\n ZipSubscriber.prototype._complete = function () {\n var iterators = this.iterators;\n var len = iterators.length;\n this.unsubscribe();\n if (len === 0) {\n this.destination.complete();\n return;\n }\n this.active = len;\n for (var i = 0; i < len; i++) {\n var iterator = iterators[i];\n if (iterator.stillUnsubscribed) {\n var destination = this.destination;\n destination.add(iterator.subscribe());\n }\n else {\n this.active--;\n }\n }\n };\n ZipSubscriber.prototype.notifyInactive = function () {\n this.active--;\n if (this.active === 0) {\n this.destination.complete();\n }\n };\n ZipSubscriber.prototype.checkIterators = function () {\n var iterators = this.iterators;\n var len = iterators.length;\n var destination = this.destination;\n for (var i = 0; i < len; i++) {\n var iterator = iterators[i];\n if (typeof iterator.hasValue === 'function' && !iterator.hasValue()) {\n return;\n }\n }\n var shouldComplete = false;\n var args = [];\n for (var i = 0; i < len; i++) {\n var iterator = iterators[i];\n var result = iterator.next();\n if (iterator.hasCompleted()) {\n shouldComplete = true;\n }\n if (result.done) {\n destination.complete();\n return;\n }\n args.push(result.value);\n }\n if (this.resultSelector) {\n this._tryresultSelector(args);\n }\n else {\n destination.next(args);\n }\n if (shouldComplete) {\n destination.complete();\n }\n };\n ZipSubscriber.prototype._tryresultSelector = function (args) {\n var result;\n try {\n result = this.resultSelector.apply(this, args);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n };\n return ZipSubscriber;\n}(Subscriber));\nexport { ZipSubscriber };\nvar StaticIterator = /*@__PURE__*/ (function () {\n function StaticIterator(iterator) {\n this.iterator = iterator;\n this.nextResult = iterator.next();\n }\n StaticIterator.prototype.hasValue = function () {\n return true;\n };\n StaticIterator.prototype.next = function () {\n var result = this.nextResult;\n this.nextResult = this.iterator.next();\n return result;\n };\n StaticIterator.prototype.hasCompleted = function () {\n var nextResult = this.nextResult;\n return Boolean(nextResult && nextResult.done);\n };\n return StaticIterator;\n}());\nvar StaticArrayIterator = /*@__PURE__*/ (function () {\n function StaticArrayIterator(array) {\n this.array = array;\n this.index = 0;\n this.length = 0;\n this.length = array.length;\n }\n StaticArrayIterator.prototype[Symbol_iterator] = function () {\n return this;\n };\n StaticArrayIterator.prototype.next = function (value) {\n var i = this.index++;\n var array = this.array;\n return i < this.length ? { value: array[i], done: false } : { value: null, done: true };\n };\n StaticArrayIterator.prototype.hasValue = function () {\n return this.array.length > this.index;\n };\n StaticArrayIterator.prototype.hasCompleted = function () {\n return this.array.length === this.index;\n };\n return StaticArrayIterator;\n}());\nvar ZipBufferIterator = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(ZipBufferIterator, _super);\n function ZipBufferIterator(destination, parent, observable) {\n var _this = _super.call(this, destination) || this;\n _this.parent = parent;\n _this.observable = observable;\n _this.stillUnsubscribed = true;\n _this.buffer = [];\n _this.isComplete = false;\n return _this;\n }\n ZipBufferIterator.prototype[Symbol_iterator] = function () {\n return this;\n };\n ZipBufferIterator.prototype.next = function () {\n var buffer = this.buffer;\n if (buffer.length === 0 && this.isComplete) {\n return { value: null, done: true };\n }\n else {\n return { value: buffer.shift(), done: false };\n }\n };\n ZipBufferIterator.prototype.hasValue = function () {\n return this.buffer.length > 0;\n };\n ZipBufferIterator.prototype.hasCompleted = function () {\n return this.buffer.length === 0 && this.isComplete;\n };\n ZipBufferIterator.prototype.notifyComplete = function () {\n if (this.buffer.length > 0) {\n this.isComplete = true;\n this.parent.notifyInactive();\n }\n else {\n this.destination.complete();\n }\n };\n ZipBufferIterator.prototype.notifyNext = function (innerValue) {\n this.buffer.push(innerValue);\n this.parent.checkIterators();\n };\n ZipBufferIterator.prototype.subscribe = function () {\n return innerSubscribe(this.observable, new SimpleInnerSubscriber(this));\n };\n return ZipBufferIterator;\n}(SimpleOuterSubscriber));\n//# sourceMappingURL=zip.js.map\n","'use strict';\nvar toPositiveInteger = require('../internals/to-positive-integer');\n\nvar $RangeError = RangeError;\n\nmodule.exports = function (it, BYTES) {\n var offset = toPositiveInteger(it);\n if (offset % BYTES) throw new $RangeError('Wrong offset');\n return offset;\n};\n","const {Cell} = require(\"../../boc\");\nconst {Address, bytesToHex} = require(\"../../utils\");\nconst {\n DNS_CATEGORY_NEXT_RESOLVER,\n DNS_CATEGORY_SITE,\n DNS_CATEGORY_WALLET,\n DNS_CATEGORY_STORAGE,\n createSmartContractAddressRecord,\n createAdnlAddressRecord,\n createStorageBagIdRecord,\n createNextResolverRecord,\n parseSmartContractAddressRecord,\n parseAdnlAddressRecord,\n parseStorageBagIdRecord,\n parseSiteRecord,\n parseNextResolverRecord,\n dnsResolve\n} = require(\"./DnsUtils\");\n\nclass Dns {\n /**\n * @param provider {HttpProvider}\n */\n constructor(provider) {\n this.provider = provider;\n }\n\n /**\n * @returns {Promise

}\n */\n async getRootDnsAddress() {\n const cell = await this.provider.getConfigParam(4);\n const byteArray = cell.bits.array;\n if (byteArray.length !== 256 / 8) throw new Error('Invalid ConfigParam 4 length ' + byteArray.length);\n const hex = bytesToHex(byteArray);\n return new Address('-1:' + hex);\n }\n\n /**\n * @param domain {string} e.g \"sub.alice.ton\"\n * @param category {string | undefined} category of requested DNS record, null for all categories\n * @param oneStep {boolean | undefined} non-recursive\n * @returns {Promise}\n */\n async resolve(domain, category, oneStep) {\n const rootDnsAddress = await this.getRootDnsAddress();\n return dnsResolve(this.provider, rootDnsAddress.toString(), domain, category, oneStep)\n }\n\n /**\n * @param domain {string} e.g \"sub.alice.ton\"\n * @returns {Promise
}\n */\n getWalletAddress(domain) {\n return this.resolve(domain, DNS_CATEGORY_WALLET);\n }\n\n /**\n * @param domain {string} e.g \"sub.alice.ton\"\n * @returns {Promise}\n */\n getSiteAddress(domain) {\n return this.resolve(domain, DNS_CATEGORY_SITE);\n }\n}\n\nDns.resolve = dnsResolve;\nDns.createSmartContractAddressRecord = createSmartContractAddressRecord;\nDns.createAdnlAddressRecord = createAdnlAddressRecord;\nDns.createStorageBagIdRecord = createStorageBagIdRecord;\nDns.createNextResolverRecord = createNextResolverRecord;\nDns.parseNextResolverRecord = parseNextResolverRecord;\nDns.parseAdnlAddressRecord = parseAdnlAddressRecord;\nDns.parseStorageBagIdRecord = parseStorageBagIdRecord;\nDns.parseSiteRecord = parseSiteRecord;\nDns.parseSmartContractAddressRecord = parseSmartContractAddressRecord;\nDns.DNS_CATEGORY_NEXT_RESOLVER = DNS_CATEGORY_NEXT_RESOLVER;\nDns.DNS_CATEGORY_WALLET = DNS_CATEGORY_WALLET;\nDns.DNS_CATEGORY_SITE = DNS_CATEGORY_SITE;\nDns.DNS_CATEGORY_STORAGE = DNS_CATEGORY_STORAGE;\n\nmodule.exports.default = Dns;","const Range = require('../classes/range')\n\n// Mostly just for testing and legacy API reasons\nconst toComparators = (range, options) =>\n new Range(range, options).set\n .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))\n\nmodule.exports = toComparators\n","const SemVer = require('../classes/semver')\nconst parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version\n }\n try {\n return new SemVer(version, options)\n } catch (er) {\n if (!throwErrors) {\n return null\n }\n throw er\n }\n}\n\nmodule.exports = parse\n","/**\n * @file Web Cryptography API shim\n * @author Artem S Vybornov \n * @license MIT\n */\n(function (global, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define([], function () {\n return factory(global);\n });\n } else if (typeof module === 'object' && module.exports) {\n // CommonJS-like environments that support module.exports\n module.exports = factory(global);\n } else {\n factory(global);\n }\n}(typeof self !== 'undefined' ? self : this, function (global) {\n 'use strict';\n\n if ( typeof Promise !== 'function' )\n throw \"Promise support required\";\n\n var _crypto = global.crypto || global.msCrypto;\n if ( !_crypto ) return;\n\n var _subtle = _crypto.subtle || _crypto.webkitSubtle;\n if ( !_subtle ) return;\n\n var _Crypto = global.Crypto || _crypto.constructor || Object,\n _SubtleCrypto = global.SubtleCrypto || _subtle.constructor || Object,\n _CryptoKey = global.CryptoKey || global.Key || Object;\n\n var isEdge = global.navigator.userAgent.indexOf('Edge/') > -1;\n var isIE = !!global.msCrypto && !isEdge;\n var isWebkit = !_crypto.subtle && !!_crypto.webkitSubtle;\n if ( !isIE && !isWebkit ) return;\n\n function s2a ( s ) {\n return btoa(s).replace(/\\=+$/, '').replace(/\\+/g, '-').replace(/\\//g, '_');\n }\n\n function a2s ( s ) {\n s += '===', s = s.slice( 0, -s.length % 4 );\n return atob( s.replace(/-/g, '+').replace(/_/g, '/') );\n }\n\n function s2b ( s ) {\n var b = new Uint8Array(s.length);\n for ( var i = 0; i < s.length; i++ ) b[i] = s.charCodeAt(i);\n return b;\n }\n\n function b2s ( b ) {\n if ( b instanceof ArrayBuffer ) b = new Uint8Array(b);\n return String.fromCharCode.apply( String, b );\n }\n\n function alg ( a ) {\n var r = { 'name': (a.name || a || '').toUpperCase().replace('V','v') };\n switch ( r.name ) {\n case 'SHA-1':\n case 'SHA-256':\n case 'SHA-384':\n case 'SHA-512':\n break;\n case 'AES-CBC':\n case 'AES-GCM':\n case 'AES-KW':\n if ( a.length ) r['length'] = a.length;\n break;\n case 'HMAC':\n if ( a.hash ) r['hash'] = alg(a.hash);\n if ( a.length ) r['length'] = a.length;\n break;\n case 'RSAES-PKCS1-v1_5':\n if ( a.publicExponent ) r['publicExponent'] = new Uint8Array(a.publicExponent);\n if ( a.modulusLength ) r['modulusLength'] = a.modulusLength;\n break;\n case 'RSASSA-PKCS1-v1_5':\n case 'RSA-OAEP':\n if ( a.hash ) r['hash'] = alg(a.hash);\n if ( a.publicExponent ) r['publicExponent'] = new Uint8Array(a.publicExponent);\n if ( a.modulusLength ) r['modulusLength'] = a.modulusLength;\n break;\n default:\n throw new SyntaxError(\"Bad algorithm name\");\n }\n return r;\n };\n\n function jwkAlg ( a ) {\n return {\n 'HMAC': {\n 'SHA-1': 'HS1',\n 'SHA-256': 'HS256',\n 'SHA-384': 'HS384',\n 'SHA-512': 'HS512',\n },\n 'RSASSA-PKCS1-v1_5': {\n 'SHA-1': 'RS1',\n 'SHA-256': 'RS256',\n 'SHA-384': 'RS384',\n 'SHA-512': 'RS512',\n },\n 'RSAES-PKCS1-v1_5': {\n '': 'RSA1_5',\n },\n 'RSA-OAEP': {\n 'SHA-1': 'RSA-OAEP',\n 'SHA-256': 'RSA-OAEP-256',\n },\n 'AES-KW': {\n '128': 'A128KW',\n '192': 'A192KW',\n '256': 'A256KW',\n },\n 'AES-GCM': {\n '128': 'A128GCM',\n '192': 'A192GCM',\n '256': 'A256GCM',\n },\n 'AES-CBC': {\n '128': 'A128CBC',\n '192': 'A192CBC',\n '256': 'A256CBC',\n },\n }[a.name][ ( a.hash || {} ).name || a.length || '' ];\n }\n\n function b2jwk ( k ) {\n if ( k instanceof ArrayBuffer || k instanceof Uint8Array ) k = JSON.parse( decodeURIComponent( escape( b2s(k) ) ) );\n var jwk = { 'kty': k.kty, 'alg': k.alg, 'ext': k.ext || k.extractable };\n switch ( jwk.kty ) {\n case 'oct':\n jwk.k = k.k;\n case 'RSA':\n [ 'n', 'e', 'd', 'p', 'q', 'dp', 'dq', 'qi', 'oth' ].forEach( function ( x ) { if ( x in k ) jwk[x] = k[x] } );\n break;\n default:\n throw new TypeError(\"Unsupported key type\");\n }\n return jwk;\n }\n\n function jwk2b ( k ) {\n var jwk = b2jwk(k);\n if ( isIE ) jwk['extractable'] = jwk.ext, delete jwk.ext;\n return s2b( unescape( encodeURIComponent( JSON.stringify(jwk) ) ) ).buffer;\n }\n\n function pkcs2jwk ( k ) {\n var info = b2der(k), prv = false;\n if ( info.length > 2 ) prv = true, info.shift(); // remove version from PKCS#8 PrivateKeyInfo structure\n var jwk = { 'ext': true };\n switch ( info[0][0] ) {\n case '1.2.840.113549.1.1.1':\n var rsaComp = [ 'n', 'e', 'd', 'p', 'q', 'dp', 'dq', 'qi' ],\n rsaKey = b2der( info[1] );\n if ( prv ) rsaKey.shift(); // remove version from PKCS#1 RSAPrivateKey structure\n for ( var i = 0; i < rsaKey.length; i++ ) {\n if ( !rsaKey[i][0] ) rsaKey[i] = rsaKey[i].subarray(1);\n jwk[ rsaComp[i] ] = s2a( b2s( rsaKey[i] ) );\n }\n jwk['kty'] = 'RSA';\n break;\n default:\n throw new TypeError(\"Unsupported key type\");\n }\n return jwk;\n }\n\n function jwk2pkcs ( k ) {\n var key, info = [ [ '', null ] ], prv = false;\n switch ( k.kty ) {\n case 'RSA':\n var rsaComp = [ 'n', 'e', 'd', 'p', 'q', 'dp', 'dq', 'qi' ],\n rsaKey = [];\n for ( var i = 0; i < rsaComp.length; i++ ) {\n if ( !( rsaComp[i] in k ) ) break;\n var b = rsaKey[i] = s2b( a2s( k[ rsaComp[i] ] ) );\n if ( b[0] & 0x80 ) rsaKey[i] = new Uint8Array(b.length + 1), rsaKey[i].set( b, 1 );\n }\n if ( rsaKey.length > 2 ) prv = true, rsaKey.unshift( new Uint8Array([0]) ); // add version to PKCS#1 RSAPrivateKey structure\n info[0][0] = '1.2.840.113549.1.1.1';\n key = rsaKey;\n break;\n default:\n throw new TypeError(\"Unsupported key type\");\n }\n info.push( new Uint8Array( der2b(key) ).buffer );\n if ( !prv ) info[1] = { 'tag': 0x03, 'value': info[1] };\n else info.unshift( new Uint8Array([0]) ); // add version to PKCS#8 PrivateKeyInfo structure\n return new Uint8Array( der2b(info) ).buffer;\n }\n\n var oid2str = { 'KoZIhvcNAQEB': '1.2.840.113549.1.1.1' },\n str2oid = { '1.2.840.113549.1.1.1': 'KoZIhvcNAQEB' };\n\n function b2der ( buf, ctx ) {\n if ( buf instanceof ArrayBuffer ) buf = new Uint8Array(buf);\n if ( !ctx ) ctx = { pos: 0, end: buf.length };\n\n if ( ctx.end - ctx.pos < 2 || ctx.end > buf.length ) throw new RangeError(\"Malformed DER\");\n\n var tag = buf[ctx.pos++],\n len = buf[ctx.pos++];\n\n if ( len >= 0x80 ) {\n len &= 0x7f;\n if ( ctx.end - ctx.pos < len ) throw new RangeError(\"Malformed DER\");\n for ( var xlen = 0; len--; ) xlen <<= 8, xlen |= buf[ctx.pos++];\n len = xlen;\n }\n\n if ( ctx.end - ctx.pos < len ) throw new RangeError(\"Malformed DER\");\n\n var rv;\n\n switch ( tag ) {\n case 0x02: // Universal Primitive INTEGER\n rv = buf.subarray( ctx.pos, ctx.pos += len );\n break;\n case 0x03: // Universal Primitive BIT STRING\n if ( buf[ctx.pos++] ) throw new Error( \"Unsupported bit string\" );\n len--;\n case 0x04: // Universal Primitive OCTET STRING\n rv = new Uint8Array( buf.subarray( ctx.pos, ctx.pos += len ) ).buffer;\n break;\n case 0x05: // Universal Primitive NULL\n rv = null;\n break;\n case 0x06: // Universal Primitive OBJECT IDENTIFIER\n var oid = btoa( b2s( buf.subarray( ctx.pos, ctx.pos += len ) ) );\n if ( !( oid in oid2str ) ) throw new Error( \"Unsupported OBJECT ID \" + oid );\n rv = oid2str[oid];\n break;\n case 0x30: // Universal Constructed SEQUENCE\n rv = [];\n for ( var end = ctx.pos + len; ctx.pos < end; ) rv.push( b2der( buf, ctx ) );\n break;\n default:\n throw new Error( \"Unsupported DER tag 0x\" + tag.toString(16) );\n }\n\n return rv;\n }\n\n function der2b ( val, buf ) {\n if ( !buf ) buf = [];\n\n var tag = 0, len = 0,\n pos = buf.length + 2;\n\n buf.push( 0, 0 ); // placeholder\n\n if ( val instanceof Uint8Array ) { // Universal Primitive INTEGER\n tag = 0x02, len = val.length;\n for ( var i = 0; i < len; i++ ) buf.push( val[i] );\n }\n else if ( val instanceof ArrayBuffer ) { // Universal Primitive OCTET STRING\n tag = 0x04, len = val.byteLength, val = new Uint8Array(val);\n for ( var i = 0; i < len; i++ ) buf.push( val[i] );\n }\n else if ( val === null ) { // Universal Primitive NULL\n tag = 0x05, len = 0;\n }\n else if ( typeof val === 'string' && val in str2oid ) { // Universal Primitive OBJECT IDENTIFIER\n var oid = s2b( atob( str2oid[val] ) );\n tag = 0x06, len = oid.length;\n for ( var i = 0; i < len; i++ ) buf.push( oid[i] );\n }\n else if ( val instanceof Array ) { // Universal Constructed SEQUENCE\n for ( var i = 0; i < val.length; i++ ) der2b( val[i], buf );\n tag = 0x30, len = buf.length - pos;\n }\n else if ( typeof val === 'object' && val.tag === 0x03 && val.value instanceof ArrayBuffer ) { // Tag hint\n val = new Uint8Array(val.value), tag = 0x03, len = val.byteLength;\n buf.push(0); for ( var i = 0; i < len; i++ ) buf.push( val[i] );\n len++;\n }\n else {\n throw new Error( \"Unsupported DER value \" + val );\n }\n\n if ( len >= 0x80 ) {\n var xlen = len, len = 4;\n buf.splice( pos, 0, (xlen >> 24) & 0xff, (xlen >> 16) & 0xff, (xlen >> 8) & 0xff, xlen & 0xff );\n while ( len > 1 && !(xlen >> 24) ) xlen <<= 8, len--;\n if ( len < 4 ) buf.splice( pos, 4 - len );\n len |= 0x80;\n }\n\n buf.splice( pos - 2, 2, tag, len );\n\n return buf;\n }\n\n function CryptoKey ( key, alg, ext, use ) {\n Object.defineProperties( this, {\n _key: {\n value: key\n },\n type: {\n value: key.type,\n enumerable: true,\n },\n extractable: {\n value: (ext === undefined) ? key.extractable : ext,\n enumerable: true,\n },\n algorithm: {\n value: (alg === undefined) ? key.algorithm : alg,\n enumerable: true,\n },\n usages: {\n value: (use === undefined) ? key.usages : use,\n enumerable: true,\n },\n });\n }\n\n function isPubKeyUse ( u ) {\n return u === 'verify' || u === 'encrypt' || u === 'wrapKey';\n }\n\n function isPrvKeyUse ( u ) {\n return u === 'sign' || u === 'decrypt' || u === 'unwrapKey';\n }\n\n [ 'generateKey', 'importKey', 'unwrapKey' ]\n .forEach( function ( m ) {\n var _fn = _subtle[m];\n\n _subtle[m] = function ( a, b, c ) {\n var args = [].slice.call(arguments),\n ka, kx, ku;\n\n switch ( m ) {\n case 'generateKey':\n ka = alg(a), kx = b, ku = c;\n break;\n case 'importKey':\n ka = alg(c), kx = args[3], ku = args[4];\n if ( a === 'jwk' ) {\n b = b2jwk(b);\n if ( !b.alg ) b.alg = jwkAlg(ka);\n if ( !b.key_ops ) b.key_ops = ( b.kty !== 'oct' ) ? ( 'd' in b ) ? ku.filter(isPrvKeyUse) : ku.filter(isPubKeyUse) : ku.slice();\n args[1] = jwk2b(b);\n }\n break;\n case 'unwrapKey':\n ka = args[4], kx = args[5], ku = args[6];\n args[2] = c._key;\n break;\n }\n\n if ( m === 'generateKey' && ka.name === 'HMAC' && ka.hash ) {\n ka.length = ka.length || { 'SHA-1': 512, 'SHA-256': 512, 'SHA-384': 1024, 'SHA-512': 1024 }[ka.hash.name];\n return _subtle.importKey( 'raw', _crypto.getRandomValues( new Uint8Array( (ka.length+7)>>3 ) ), ka, kx, ku );\n }\n\n if ( isWebkit && m === 'generateKey' && ka.name === 'RSASSA-PKCS1-v1_5' && ( !ka.modulusLength || ka.modulusLength >= 2048 ) ) {\n a = alg(a), a.name = 'RSAES-PKCS1-v1_5', delete a.hash;\n return _subtle.generateKey( a, true, [ 'encrypt', 'decrypt' ] )\n .then( function ( k ) {\n return Promise.all([\n _subtle.exportKey( 'jwk', k.publicKey ),\n _subtle.exportKey( 'jwk', k.privateKey ),\n ]);\n })\n .then( function ( keys ) {\n keys[0].alg = keys[1].alg = jwkAlg(ka);\n keys[0].key_ops = ku.filter(isPubKeyUse), keys[1].key_ops = ku.filter(isPrvKeyUse);\n return Promise.all([\n _subtle.importKey( 'jwk', keys[0], ka, true, keys[0].key_ops ),\n _subtle.importKey( 'jwk', keys[1], ka, kx, keys[1].key_ops ),\n ]);\n })\n .then( function ( keys ) {\n return {\n publicKey: keys[0],\n privateKey: keys[1],\n };\n });\n }\n\n if ( ( isWebkit || ( isIE && ( ka.hash || {} ).name === 'SHA-1' ) )\n && m === 'importKey' && a === 'jwk' && ka.name === 'HMAC' && b.kty === 'oct' ) {\n return _subtle.importKey( 'raw', s2b( a2s(b.k) ), c, args[3], args[4] );\n }\n\n if ( isWebkit && m === 'importKey' && ( a === 'spki' || a === 'pkcs8' ) ) {\n return _subtle.importKey( 'jwk', pkcs2jwk(b), c, args[3], args[4] );\n }\n\n if ( isIE && m === 'unwrapKey' ) {\n return _subtle.decrypt( args[3], c, b )\n .then( function ( k ) {\n return _subtle.importKey( a, k, args[4], args[5], args[6] );\n });\n }\n\n var op;\n try {\n op = _fn.apply( _subtle, args );\n }\n catch ( e ) {\n return Promise.reject(e);\n }\n\n if ( isIE ) {\n op = new Promise( function ( res, rej ) {\n op.onabort =\n op.onerror = function ( e ) { rej(e) };\n op.oncomplete = function ( r ) { res(r.target.result) };\n });\n }\n\n op = op.then( function ( k ) {\n if ( ka.name === 'HMAC' ) {\n if ( !ka.length ) ka.length = 8 * k.algorithm.length;\n }\n if ( ka.name.search('RSA') == 0 ) {\n if ( !ka.modulusLength ) ka.modulusLength = (k.publicKey || k).algorithm.modulusLength;\n if ( !ka.publicExponent ) ka.publicExponent = (k.publicKey || k).algorithm.publicExponent;\n }\n if ( k.publicKey && k.privateKey ) {\n k = {\n publicKey: new CryptoKey( k.publicKey, ka, kx, ku.filter(isPubKeyUse) ),\n privateKey: new CryptoKey( k.privateKey, ka, kx, ku.filter(isPrvKeyUse) ),\n };\n }\n else {\n k = new CryptoKey( k, ka, kx, ku );\n }\n return k;\n });\n\n return op;\n }\n });\n\n [ 'exportKey', 'wrapKey' ]\n .forEach( function ( m ) {\n var _fn = _subtle[m];\n\n _subtle[m] = function ( a, b, c ) {\n var args = [].slice.call(arguments);\n\n switch ( m ) {\n case 'exportKey':\n args[1] = b._key;\n break;\n case 'wrapKey':\n args[1] = b._key, args[2] = c._key;\n break;\n }\n\n if ( ( isWebkit || ( isIE && ( b.algorithm.hash || {} ).name === 'SHA-1' ) )\n && m === 'exportKey' && a === 'jwk' && b.algorithm.name === 'HMAC' ) {\n args[0] = 'raw';\n }\n\n if ( isWebkit && m === 'exportKey' && ( a === 'spki' || a === 'pkcs8' ) ) {\n args[0] = 'jwk';\n }\n\n if ( isIE && m === 'wrapKey' ) {\n return _subtle.exportKey( a, b )\n .then( function ( k ) {\n if ( a === 'jwk' ) k = s2b( unescape( encodeURIComponent( JSON.stringify( b2jwk(k) ) ) ) );\n return _subtle.encrypt( args[3], c, k );\n });\n }\n\n var op;\n try {\n op = _fn.apply( _subtle, args );\n }\n catch ( e ) {\n return Promise.reject(e);\n }\n\n if ( isIE ) {\n op = new Promise( function ( res, rej ) {\n op.onabort =\n op.onerror = function ( e ) { rej(e) };\n op.oncomplete = function ( r ) { res(r.target.result) };\n });\n }\n\n if ( m === 'exportKey' && a === 'jwk' ) {\n op = op.then( function ( k ) {\n if ( ( isWebkit || ( isIE && ( b.algorithm.hash || {} ).name === 'SHA-1' ) )\n && b.algorithm.name === 'HMAC') {\n return { 'kty': 'oct', 'alg': jwkAlg(b.algorithm), 'key_ops': b.usages.slice(), 'ext': true, 'k': s2a( b2s(k) ) };\n }\n k = b2jwk(k);\n if ( !k.alg ) k['alg'] = jwkAlg(b.algorithm);\n if ( !k.key_ops ) k['key_ops'] = ( b.type === 'public' ) ? b.usages.filter(isPubKeyUse) : ( b.type === 'private' ) ? b.usages.filter(isPrvKeyUse) : b.usages.slice();\n return k;\n });\n }\n\n if ( isWebkit && m === 'exportKey' && ( a === 'spki' || a === 'pkcs8' ) ) {\n op = op.then( function ( k ) {\n k = jwk2pkcs( b2jwk(k) );\n return k;\n });\n }\n\n return op;\n }\n });\n\n [ 'encrypt', 'decrypt', 'sign', 'verify' ]\n .forEach( function ( m ) {\n var _fn = _subtle[m];\n\n _subtle[m] = function ( a, b, c, d ) {\n if ( isIE && ( !c.byteLength || ( d && !d.byteLength ) ) )\n throw new Error(\"Empy input is not allowed\");\n\n var args = [].slice.call(arguments),\n ka = alg(a);\n\n if ( isIE && m === 'decrypt' && ka.name === 'AES-GCM' ) {\n var tl = a.tagLength >> 3;\n args[2] = (c.buffer || c).slice( 0, c.byteLength - tl ),\n a.tag = (c.buffer || c).slice( c.byteLength - tl );\n }\n\n args[1] = b._key;\n\n var op;\n try {\n op = _fn.apply( _subtle, args );\n }\n catch ( e ) {\n return Promise.reject(e);\n }\n\n if ( isIE ) {\n op = new Promise( function ( res, rej ) {\n op.onabort =\n op.onerror = function ( e ) {\n rej(e);\n };\n\n op.oncomplete = function ( r ) {\n var r = r.target.result;\n\n if ( m === 'encrypt' && r instanceof AesGcmEncryptResult ) {\n var c = r.ciphertext, t = r.tag;\n r = new Uint8Array( c.byteLength + t.byteLength );\n r.set( new Uint8Array(c), 0 );\n r.set( new Uint8Array(t), c.byteLength );\n r = r.buffer;\n }\n\n res(r);\n };\n });\n }\n\n return op;\n }\n });\n\n if ( isIE ) {\n var _digest = _subtle.digest;\n\n _subtle['digest'] = function ( a, b ) {\n if ( !b.byteLength )\n throw new Error(\"Empy input is not allowed\");\n\n var op;\n try {\n op = _digest.call( _subtle, a, b );\n }\n catch ( e ) {\n return Promise.reject(e);\n }\n\n op = new Promise( function ( res, rej ) {\n op.onabort =\n op.onerror = function ( e ) { rej(e) };\n op.oncomplete = function ( r ) { res(r.target.result) };\n });\n\n return op;\n };\n\n global.crypto = Object.create( _crypto, {\n getRandomValues: { value: function ( a ) { return _crypto.getRandomValues(a) } },\n subtle: { value: _subtle },\n });\n\n global.CryptoKey = CryptoKey;\n }\n\n if ( isWebkit ) {\n _crypto.subtle = _subtle;\n\n global.Crypto = _Crypto;\n global.SubtleCrypto = _SubtleCrypto;\n global.CryptoKey = CryptoKey;\n }\n}));\n\n export default {} // section modified by isomorphic-webcrypto build \n","'use strict';\nvar classof = require('../internals/classof');\n\nmodule.exports = function (it) {\n var klass = classof(it);\n return klass === 'BigInt64Array' || klass === 'BigUint64Array';\n};\n","'use strict';\nvar shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","const compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n","const compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n","'use strict';\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","'use strict';\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return $Object(requireObjectCoercible(argument));\n};\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function isPromise(value) {\n return !!value && typeof value.subscribe !== 'function' && typeof value.then === 'function';\n}\n//# sourceMappingURL=isPromise.js.map\n","const {Address} = require(\"../../../utils\");\nconst {Cell} = require(\"../../../boc\");\n\nconst SNAKE_DATA_PREFIX = 0x00;\nconst CHUNK_DATA_PREFIX = 0x01;\nconst ONCHAIN_CONTENT_PREFIX = 0x00;\nconst OFFCHAIN_CONTENT_PREFIX = 0x01;\n\n/**\n * @param uri {string}\n * @returns {Uint8Array}\n */\nconst serializeUri = (uri) => {\n return new TextEncoder().encode(encodeURI(uri));\n}\n\n/**\n * @param bytes {Uint8Array}\n * @return {string}\n */\nconst parseUri = (bytes) => {\n return new TextDecoder().decode(bytes);\n}\n\n/**\n * @param uri {string}\n * @return {Cell}\n */\nconst createOffchainUriCell = (uri) => {\n const cell = new Cell();\n cell.bits.writeUint(OFFCHAIN_CONTENT_PREFIX, 8);\n cell.bits.writeBytes(serializeUri(uri));\n return cell;\n}\n\n/**\n * @param cell {Cell}\n * @returns {string}\n */\nconst parseOffchainUriCell = (cell) => {\n if (cell.bits.array[0] !== OFFCHAIN_CONTENT_PREFIX) {\n throw new Error('no OFFCHAIN_CONTENT_PREFIX');\n }\n\n let length = 0;\n let c = cell;\n while (c) {\n length += c.bits.array.length;\n c = c.refs[0];\n }\n\n const bytes = new Uint8Array(length);\n length = 0;\n c = cell;\n while (c) {\n bytes.set(c.bits.array, length)\n length += c.bits.array.length;\n c = c.refs[0];\n }\n return parseUri(bytes.slice(1)); // slice OFFCHAIN_CONTENT_PREFIX\n}\n\n/**\n * @param bs {BitString}\n * @param cursor {number}\n * @param bits {number}\n * @return {BigInt}\n */\nconst readIntFromBitString = (bs, cursor, bits) => {\n let n = BigInt(0);\n for (let i = 0; i < bits; i++) {\n n *= BigInt(2);\n n += BigInt(bs.get(cursor + i));\n }\n return n;\n}\n\n/**\n * @param cell {Cell}\n * @return {Address|null}\n */\nconst parseAddress = cell => {\n let n = readIntFromBitString(cell.bits, 3, 8);\n if (n > BigInt(127)) {\n n = n - BigInt(256);\n }\n const hashPart = readIntFromBitString(cell.bits, 3 + 8, 256);\n if (n.toString(10) + \":\" + hashPart.toString(16) === '0:0') return null;\n const s = n.toString(10) + \":\" + hashPart.toString(16).padStart(64, '0');\n return new Address(s);\n};\n\n/**\n * @param provider {HttpProvider}\n * @param address {string}\n * @return {Promise<{royalty: number, royaltyFactor: number, royaltyBase: number, royaltyAddress: Address}>}\n */\nconst getRoyaltyParams = async (provider, address) => {\n const result = await provider.call2(address, 'royalty_params');\n\n const royaltyFactor = result[0].toNumber();\n const royaltyBase = result[1].toNumber();\n const royalty = royaltyFactor / royaltyBase;\n const royaltyAddress = parseAddress(result[2]);\n\n return {royalty, royaltyBase, royaltyFactor, royaltyAddress};\n}\n\nmodule.exports = {\n SNAKE_DATA_PREFIX,\n CHUNK_DATA_PREFIX,\n ONCHAIN_CONTENT_PREFIX,\n OFFCHAIN_CONTENT_PREFIX,\n parseAddress,\n serializeUri,\n parseUri,\n createOffchainUriCell,\n parseOffchainUriCell,\n getRoyaltyParams\n};","const {BitString} = require(\"./BitString\");\nconst {Cell} = require(\"./Cell\");\nconst {Slice} = require(\"./Slice\");\n\nmodule.exports = {BitString, Cell, Slice};","const compareBuild = require('./compare-build')\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n","const parse = require('./parse')\nconst prerelease = (version, options) => {\n const parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\nmodule.exports = prerelease\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\tvar nativeCodeString = '[native code]';\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","const SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n","'use strict';\nvar $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = $documentAll.IS_HTMLDDA ? function (argument) {\n return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n return typeof argument == 'function';\n};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n value = +value;\n return Number.isFinite(value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0]\n }\n\n return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable\n};\n","const outside = require('./outside')\n// Determine if version is less than all the versions possible in the range\nconst ltr = (version, range, options) => outside(version, range, '<', options)\nmodule.exports = ltr\n","'use strict';\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport var isArrayLike = (function (x) { return x && typeof x.length === 'number' && typeof x !== 'function'; });\n//# sourceMappingURL=isArrayLike.js.map\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","'use strict';\nvar global = require('../internals/global');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","const {hexToBytes, bytesToHex} = require(\"./Utils\");\n\nclass AdnlAddress {\n /**\n * @param anyForm {string | Uint8Array | AdnlAddress}\n */\n static isValid(anyForm) {\n try {\n new AdnlAddress(anyForm);\n return true;\n } catch (e) {\n return false;\n }\n }\n\n /**\n * @param anyForm {string | Uint8Array | AdnlAddress}\n */\n constructor(anyForm) {\n if (anyForm == null) {\n throw \"Invalid address\";\n }\n\n if (anyForm instanceof AdnlAddress) {\n this.bytes = anyForm.bytes;\n } else if (anyForm instanceof Uint8Array) {\n if (anyForm.length !== 32) {\n throw new Error('invalid adnl bytes length');\n }\n this.bytes = anyForm;\n } else if (typeof anyForm === 'string') {\n if (anyForm.length !== 64) {\n throw new Error('invalid adnl hex length');\n }\n this.bytes = hexToBytes(anyForm);\n } else {\n throw new Error('unsupported type')\n }\n }\n\n toHex() {\n let hex = bytesToHex(this.bytes);\n while (hex.length < 64) {\n hex = '0' + hex;\n }\n return hex;\n }\n}\n\nmodule.exports.default = AdnlAddress;\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","import EventEmitter from \"events\";\nimport { TransportRaceCondition, TransportError, StatusCodes, getAltStatusMessage, TransportStatusError } from \"@ledgerhq/errors\";\nexport { TransportError, TransportStatusError, StatusCodes, getAltStatusMessage };\n/**\n */\n\n/**\n * Transport defines the generic interface to share between node/u2f impl\n * A **Descriptor** is a parametric type that is up to be determined for the implementation.\n * it can be for instance an ID, an file path, a URL,...\n */\nexport default class Transport {\n constructor() {\n this.exchangeTimeout = 30000;\n this.unresponsiveTimeout = 15000;\n this.deviceModel = null;\n this._events = new EventEmitter();\n\n this.send = async (cla, ins, p1, p2, data = Buffer.alloc(0), statusList = [StatusCodes.OK]) => {\n if (data.length >= 256) {\n throw new TransportError(\"data.length exceed 256 bytes limit. Got: \" + data.length, \"DataLengthTooBig\");\n }\n\n const response = await this.exchange(Buffer.concat([Buffer.from([cla, ins, p1, p2]), Buffer.from([data.length]), data]));\n const sw = response.readUInt16BE(response.length - 2);\n\n if (!statusList.some(s => s === sw)) {\n throw new TransportStatusError(sw);\n }\n\n return response;\n };\n\n this.exchangeBusyPromise = void 0;\n\n this.exchangeAtomicImpl = async f => {\n if (this.exchangeBusyPromise) {\n throw new TransportRaceCondition(\"An action was already pending on the Ledger device. Please deny or reconnect.\");\n }\n\n let resolveBusy;\n const busyPromise = new Promise(r => {\n resolveBusy = r;\n });\n this.exchangeBusyPromise = busyPromise;\n let unresponsiveReached = false;\n const timeout = setTimeout(() => {\n unresponsiveReached = true;\n this.emit(\"unresponsive\");\n }, this.unresponsiveTimeout);\n\n try {\n const res = await f();\n\n if (unresponsiveReached) {\n this.emit(\"responsive\");\n }\n\n return res;\n } finally {\n clearTimeout(timeout);\n if (resolveBusy) resolveBusy();\n this.exchangeBusyPromise = null;\n }\n };\n\n this._appAPIlock = null;\n }\n\n /**\n * low level api to communicate with the device\n * This method is for implementations to implement but should not be directly called.\n * Instead, the recommanded way is to use send() method\n * @param apdu the data to send\n * @return a Promise of response data\n */\n exchange(_apdu) {\n throw new Error(\"exchange not implemented\");\n }\n /**\n * set the \"scramble key\" for the next exchanges with the device.\n * Each App can have a different scramble key and they internally will set it at instanciation.\n * @param key the scramble key\n */\n\n\n setScrambleKey(_key) {}\n /**\n * close the exchange with the device.\n * @return a Promise that ends when the transport is closed.\n */\n\n\n close() {\n return Promise.resolve();\n }\n\n /**\n * Listen to an event on an instance of transport.\n * Transport implementation can have specific events. Here is the common events:\n * * `\"disconnect\"` : triggered if Transport is disconnected\n */\n on(eventName, cb) {\n this._events.on(eventName, cb);\n }\n /**\n * Stop listening to an event on an instance of transport.\n */\n\n\n off(eventName, cb) {\n this._events.removeListener(eventName, cb);\n }\n\n emit(event, ...args) {\n this._events.emit(event, ...args);\n }\n /**\n * Enable or not logs of the binary exchange\n */\n\n\n setDebugMode() {\n console.warn(\"setDebugMode is deprecated. use @ledgerhq/logs instead. No logs are emitted in this anymore.\");\n }\n /**\n * Set a timeout (in milliseconds) for the exchange call. Only some transport might implement it. (e.g. U2F)\n */\n\n\n setExchangeTimeout(exchangeTimeout) {\n this.exchangeTimeout = exchangeTimeout;\n }\n /**\n * Define the delay before emitting \"unresponsive\" on an exchange that does not respond\n */\n\n\n setExchangeUnresponsiveTimeout(unresponsiveTimeout) {\n this.unresponsiveTimeout = unresponsiveTimeout;\n }\n /**\n * wrapper on top of exchange to simplify work of the implementation.\n * @param cla\n * @param ins\n * @param p1\n * @param p2\n * @param data\n * @param statusList is a list of accepted status code (shorts). [0x9000] by default\n * @return a Promise of response buffer\n */\n\n\n /**\n * create() allows to open the first descriptor available or\n * throw if there is none or if timeout is reached.\n * This is a light helper, alternative to using listen() and open() (that you may need for any more advanced usecase)\n * @example\n TransportFoo.create().then(transport => ...)\n */\n static create(openTimeout = 3000, listenTimeout) {\n return new Promise((resolve, reject) => {\n let found = false;\n const sub = this.listen({\n next: e => {\n found = true;\n if (sub) sub.unsubscribe();\n if (listenTimeoutId) clearTimeout(listenTimeoutId);\n this.open(e.descriptor, openTimeout).then(resolve, reject);\n },\n error: e => {\n if (listenTimeoutId) clearTimeout(listenTimeoutId);\n reject(e);\n },\n complete: () => {\n if (listenTimeoutId) clearTimeout(listenTimeoutId);\n\n if (!found) {\n reject(new TransportError(this.ErrorMessage_NoDeviceFound, \"NoDeviceFound\"));\n }\n }\n });\n const listenTimeoutId = listenTimeout ? setTimeout(() => {\n sub.unsubscribe();\n reject(new TransportError(this.ErrorMessage_ListenTimeout, \"ListenTimeout\"));\n }, listenTimeout) : null;\n });\n }\n\n decorateAppAPIMethods(self, methods, scrambleKey) {\n for (let methodName of methods) {\n self[methodName] = this.decorateAppAPIMethod(methodName, self[methodName], self, scrambleKey);\n }\n }\n\n decorateAppAPIMethod(methodName, f, ctx, scrambleKey) {\n return async (...args) => {\n const {\n _appAPIlock\n } = this;\n\n if (_appAPIlock) {\n return Promise.reject(new TransportError(\"Ledger Device is busy (lock \" + _appAPIlock + \")\", \"TransportLocked\"));\n }\n\n try {\n this._appAPIlock = methodName;\n this.setScrambleKey(scrambleKey);\n return await f.apply(ctx, args);\n } finally {\n this._appAPIlock = null;\n }\n };\n }\n\n}\nTransport.isSupported = void 0;\nTransport.list = void 0;\nTransport.listen = void 0;\nTransport.open = void 0;\nTransport.ErrorMessage_ListenTimeout = \"No Ledger device found (timeout)\";\nTransport.ErrorMessage_NoDeviceFound = \"No Ledger device found\";\n//# sourceMappingURL=Transport.js.map","const Range = require('../classes/range')\nconst validRange = (range, options) => {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\nmodule.exports = validRange\n","/**\n * A Log object\n */\nlet id = 0;\nconst subscribers = [];\n/**\n * log something\n * @param type a namespaced identifier of the log (it is not a level like \"debug\", \"error\" but more like \"apdu-in\", \"apdu-out\", etc...)\n * @param message a clear message of the log associated to the type\n */\n\nexport const log = (type, message, data) => {\n const obj = {\n type,\n id: String(++id),\n date: new Date()\n };\n if (message) obj.message = message;\n if (data) obj.data = data;\n dispatch(obj);\n};\n/**\n * listen to logs.\n * @param cb that is called for each future log() with the Log object\n * @return a function that can be called to unsubscribe the listener\n */\n\nexport const listen = cb => {\n subscribers.push(cb);\n return () => {\n const i = subscribers.indexOf(cb);\n\n if (i !== -1) {\n // equivalent of subscribers.splice(i, 1) // https://twitter.com/Rich_Harris/status/1125850391155965952\n subscribers[i] = subscribers[subscribers.length - 1];\n subscribers.pop();\n }\n };\n};\n\nfunction dispatch(log) {\n for (let i = 0; i < subscribers.length; i++) {\n try {\n subscribers[i](log);\n } catch (e) {\n console.error(e);\n }\n }\n} // for debug purpose\n\n\nif (typeof window !== \"undefined\") {\n window.__ledgerLogsListen = listen;\n}\n//# sourceMappingURL=index.js.map","'use strict';\nvar $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","const {Cell} = require(\"../boc\");\nconst {Address, BN, bytesToHex} = require(\"../utils\");\nconst {Contract} = require(\"../contract\");\n\nclass AppTon {\n\n /**\n * @param transport {Transport} @ledgerhq/hw-transport\n * @param ton {TonWeb}\n */\n constructor(transport, ton) {\n this.transport = transport;\n this.ton = ton;\n\n this.ADDRESS_FORMAT_HEX = 0;\n this.ADDRESS_FORMAT_USER_FRIENDLY = 1;\n this.ADDRESS_FORMAT_URL_SAFE = 2;\n this.ADDRESS_FORMAT_BOUNCEABLE = 4;\n this.ADDRESS_FORMAT_TEST_ONLY = 8;\n\n // todo: узнать зачем вызывается decorateAppAPIMethods\n // const scrambleKey = \"w0w\";\n // transport.decorateAppAPIMethods(\n // this,\n // [\n // \"getAppConfiguration\",\n // \"getAddress\",\n // \"sign\",\n // \"signTransfer\",\n // ],\n // scrambleKey\n // );\n }\n\n /***\n * Get App version\n * @return {{version: string}}\n */\n async getAppConfiguration() {\n const response = await this.transport.send(0xe0, 0x01, 0x00, 0x00);\n return {\n version: \"\" + response[0] + \".\" + response[1] + \".\" + response[2] // major version, minor version, patch version\n };\n }\n\n /**\n * This command returns a public key for the given account number\n * @param accountNumber {number}\n * @param isDisplay {boolean} display public key and confirm before returning\n * @return {{publicKey: Uint8Array}}\n */\n async getPublicKey(accountNumber, isDisplay) {\n const buffer = Buffer.alloc(4);\n buffer.writeInt32BE(accountNumber);\n\n const response = await this.transport\n .send(\n 0xe0,\n 0x02,\n isDisplay ? 0x01 : 0x00,\n 0x00,\n buffer\n );\n const len = response[0];\n const publicKey = new Uint8Array(response.slice(1, 1 + len));\n return {publicKey};\n }\n\n /**\n * This command returns a wallet v3R1 address for the given account number\n * @param accountNumber {number}\n * @param isDisplay {boolean} display address and confirm before returning\n * @param addressFormat {number} display address format (use sum of ADDRESS_FORMAT_ constants)\n * @return {{address: Address}}\n */\n async getAddress(accountNumber, isDisplay, addressFormat) {\n const buffer = Buffer.alloc(4);\n buffer.writeInt32BE(accountNumber);\n\n const response = await this.transport\n .send(\n 0xe0,\n 0x05,\n isDisplay ? 0x01 : 0x00,\n addressFormat,\n buffer\n );\n const len = response[0];\n const addressHex = new Uint8Array(response.slice(1, 1 + len));\n const address = new Address('0:' + bytesToHex(addressHex));\n return {address};\n }\n\n /**\n * Sign a bytes\n * @param accountNumber {number}\n * @param buffer {Buffer}\n * @return {{signature: Buffer}}\n */\n async sign(accountNumber, buffer) {\n const accountNumberBuffer = Buffer.alloc(4);\n accountNumberBuffer.writeInt32BE(accountNumber);\n const signBuffer = Buffer.concat([accountNumberBuffer, Buffer.from(buffer)]);\n\n const response = await this.transport\n .send(\n 0xe0,\n 0x03,\n 0x00,\n 0x00,\n signBuffer\n );\n\n const len = response[0];\n const signature = response.slice(1, 1 + len);\n return {signature};\n }\n\n /**\n * Sign a transfer coins message (same with TonWeb.WalletContract.createTransferMessage)\n * if seqno === 0 it will be deploy wallet + transfer coins message\n * @param accountNumber {number}\n * @param wallet {WalletContract} Sender wallet\n * @param toAddress {String | Address} Destination address in any format\n * @param amount {BN | number} Transfer value in nanograms\n * @param seqno {number}\n * @param addressFormat {number} display address format (use sum of ADDRESS_FORMAT_ constants)\n * @return\n */\n async transfer(accountNumber, wallet, toAddress, amount, seqno, addressFormat) {\n const sendMode = 3;\n\n const query = await wallet.createTransferMessage(null, toAddress, amount, seqno, null, sendMode, true);\n\n const accountNumberBuffer = Buffer.alloc(4);\n accountNumberBuffer.writeInt32BE(accountNumber);\n const msgBuffer = Buffer.concat([accountNumberBuffer, Buffer.from(await query.signingMessage.toBoc())]);\n\n const response = await this.transport\n .send(\n 0xe0,\n 0x04,\n addressFormat,\n 0x00,\n msgBuffer\n );\n\n const len = response[0];\n const signatureBuffer = response.slice(1, 1 + len);\n const signature = new Uint8Array(signatureBuffer);\n\n const body = new Cell();\n body.bits.writeBytes(signature);\n body.writeCell(query.signingMessage);\n\n let stateInit = null, code = null, data = null;\n\n if (seqno === 0) {\n const deploy = await wallet.createStateInit();\n stateInit = deploy.stateInit;\n code = deploy.code;\n data = deploy.data;\n }\n\n const selfAddress = await wallet.getAddress();\n const header = Contract.createExternalMessageHeader(selfAddress);\n const resultMessage = Contract.createCommonMsgInfo(header, stateInit, body);\n\n const resultPromise = new Promise(resolve => {\n resolve({\n address: selfAddress,\n message: resultMessage, // old wallet_send_generate_external_message\n\n body: body,\n signature: signature,\n signingMessage: query.signingMessage,\n\n stateInit,\n code,\n data,\n });\n });\n\n return Contract.createMethod(\n this.ton.provider,\n resultPromise\n );\n }\n}\n\nmodule.exports = AppTon;","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\n\nvar $TypeError = TypeError;\n\n// `ToBigInt` abstract operation\n// https://tc39.es/ecma262/#sec-tobigint\nmodule.exports = function (argument) {\n var prim = toPrimitive(argument, 'number');\n if (typeof prim == 'number') throw new $TypeError(\"Can't convert number to bigint\");\n // eslint-disable-next-line es/no-bigint -- safe\n return BigInt(prim);\n};\n","const {NftCollection} = require(\"./NftCollection.js\");\nconst {NftItem} = require(\"./NftItem.js\");\nconst {NftMarketplace} = require(\"./NftMarketplace.js\");\nconst {NftSale} = require(\"./NftSale.js\");\n\nmodule.exports.default = {\n NftCollection,\n NftItem,\n NftMarketplace,\n NftSale\n};","const {Contract} = require(\"../index\");\nconst {Cell} = require(\"../../boc\");\nconst {nacl, hexToBytes, BN} = require(\"../../utils\");\nconst {parseAddress} = require(\"../token/nft/NftUtils\");\nconst {\n writePublicKey,\n writeSignature,\n createSignatureCell,\n tag_init,\n tag_cooperative_close,\n tag_cooperative_commit,\n tag_start_uncooperative_close,\n tag_challenge_state,\n tag_settle_conditionals,\n tag_state,\n op_top_up_balance,\n op_init_channel,\n op_cooperative_close,\n op_cooperative_commit,\n op_start_uncooperative_close,\n op_challenge_quarantined_state,\n op_settle_conditionals,\n op_finish_uncooperative_close,\n op_channel_closed,\n createTopUpBalance,\n createInitChannelBody,\n createCooperativeCloseChannelBody,\n createCooperativeCommitBody,\n createConditionalPayment,\n createSemiChannelBody,\n createSemiChannelState,\n createSignedSemiChannelState,\n createStartUncooperativeCloseBody,\n createChallengeQuarantinedStateBody,\n createSettleConditionalsBody,\n createFinishUncooperativeClose,\n createOneSignature,\n createTwoSignature\n} = require(\"./PaymentUtils\");\n\nconst PAYMENT_CHANNEL_CODE_HEX = 'B5EE9C72410230010007FB000114FF00F4A413F4BCF2C80B0102012002030201480405000AF26C21F0190202CB06070201202E2F020120080902012016170201200A0B0201200C0D0009D3610F80CC001D6B5007434C7FE8034C7CC1BC0FE19E0201580E0F0201201011002D3E11DBC4BE11DBC43232C7FE11DBC47E80B2C7F2407320008B083E1B7B51343480007E187E80007E18BE80007E18F4FFC07E1934FFC07E1974DFC07E19BC01887080A7F4C7C07E1A34C7C07E1A7D01007E1AB7807080E535007E1AF7BE1B2002012012130201201415008D3E13723E11BE117E113E10540132803E10BE80BE10FE8084F2FFC4B2FFF2DFFC02887080A7FE12BE127E121400F2C7C4B2C7FD0037807080E53E12C073253E1333C5B8B27B5520004D1C3C02FE106CFCB8193E803E800C3E1096283E18BE10C0683E18FE10BE10E8006EFCB819BC032000CF1D3C02FE106CFCB819348020C235C6083E4040E4BE1124BE117890CC3E443CB81974C7C060841A5B9A5D2EBCB81A3E118074DFD66EBCB81CBE803E800C3E1094882FBE10D4882FAC3CB819807E18BE18FE12F43E800C3E10BE10E80068006E7CB8199FFE187C0320004120843777222E9C20043232C15401B3C594013E808532DA84B2C7F2DFF2407EC02002012018190201D42B2C0201201A1B0201201E1F0201201C1D00E5473F00BD401D001D401D021F90102D31F01821043436D74BAF2E068F84601D37F59BAF2E072F844544355F910F8454330F910B0F2E065D33FD33F30F84822B9F84922B9B0F2E06C21F86820F869F84A6E915B8E19F84AD0D33FFA003171D721D33F305033BC02BCB1936DF86ADEE2F800F00C8006F3E12F43E800C7E903E900C3E09DBC41CBE10D62F24CC20C1B7BE10FE11963C03FE10BE11A04020BC03DC3E185C3E189C3E18DB7E1ABC032000B51D3C02F5007400750074087E4040B4C7C0608410DB1BDCEEBCB81A3E118074DFD66EBCB81CBE111510D57E443E1150CC3E442C3CB8197E80007E18BE80007E18F4CFF4CFCC3E1208AE7E1248AE6C3CB81B007E1A3E1A7E003C042001C1573F00BF84A6EF2E06AD2008308D71820F9012392F84492F845E24130F910F2E065D31F018210556E436CBAF2E068F84601D37F59BAF2E072D401D08308D71820F901F8444130F910F2E06501D430D08308D71820F901F8454130F910F2E06501820020120222301FED31F01821043685374BAF2E068F84601D37F59BAF2E072D33FFA00F404552003D200019AD401D0D33FFA00F40430937F206DE2303205D31F01821043685374BAF2E068F84601D37F59BAF2E072D33FFA00F404552003D200019AD401D0D33FFA00F40430937F206DE23032F8485280BEF8495250BEB0524BBE1AB0527ABE19210064B05215BE14B05248BE17B0F2E06970F82305C8CB3F5004FA0215F40015CB3F5004FA0212F400CB1F12CA00CA00C9F86AF00C01C31CFC02FE129BACFCB81AF48020C235C6083E4048E4BE1124BE1178904C3E443CB81974C7C0608410DA19D46EBCB81A3E118074DFD66EBCB81CB5007420C235C6083E407E11104C3E443CB81940750C3420C235C6083E407E11504C3E443CB81940602403F71CFC02FE129BACFCB81AF48020C235C6083E4048E4BE1124BE1178904C3E443CB81974C7C0608410DB10DBAEBCB81A3E118074DFD66EBCB81CBD010C3E12B434CFFE803D0134CFFE803D0134C7FE11DBC4148828083E08EE7CB81BBE11DBC4A83E08EF3CB81C34800C151D5A64D6D4C8F7A2B98E82A49B08B8C3816028292A01FCD31F01821043685374BAF2E068F84601D37F59BAF2E072D33FFA00F404552003D200019AD401D0D33FFA00F40430937F206DE2303205D31F01821043685374BAF2E068F84601D37F59BAF2E072D33FFA00F404552003D200019AD401D0D33FFA00F40430937F206DE230325339BE5381BEB0F8495250BEB0F8485290BEB02502FE5237BE16B05262BEB0F2E06927C20097F84918BEF2E0699137E222C20097F84813BEF2E0699132E2F84AD0D33FFA00F404D33FFA00F404D31FF8476F105220A0F823BCF2E06FD200D20030B3F2E073209C3537373A5274BC5263BC12B18E11323939395250BC5299BC18B14650134440E25319BAB3F2E06D9130E30D7F05C82627002496F8476F1114A098F8476F1117A00603E203003ECB3F5004FA0215F40012CB3F5004FA0213F400CB1F12CA00CA00C9F86AF00C00620A8020F4966FA5208E213050038020F4666FA1208E1001FA00ED1E15DA119450C3A00B9133E2923430E202926C21E2B31B000C3535075063140038C8CB3F5004FA0212F400CB3F5003FA0213F400CB1FCA00C9F86AF00C00D51D3C02FE129BACFCB81AFE12B434CFFE803D010C74CFFE803D010C74C7CC3E11DBC4283E11DBC4A83E08EE7CB81C7E003E10886808E87E18BE10D400E816287E18FE10F04026BE10BE10E83E189C3E18F7BE10B04026BE10FE10A83E18DC3E18F780693E1A293E1A7C042001F53B7EF4C7C8608419F1F4A06EA4CC7C037808608403818830AEA54C7C03B6CC780C882084155DD61FAEA54C3C0476CC780820841E6849BBEEA54C3C04B6CC7808208407C546B3EEA54C3C0576CC780820840223AA8CAEA54C3C05B6CC7808208419BDBC1A6EA54C3C05F6CC780C60840950CAA46EA53C0636CC78202D0008840FF2F00075BC7FE3A7805FC25E87D007D207D20184100D0CAF6A1EC7C217C21B7817C227C22B7817C237C23FC247C24B7817C2524C3B7818823881B22A021984008DBD0CABA7805FC20C8B870FC253748B8F07C256840206B90FD0018C020EB90FD0018B8EB90E98F987C23B7882908507C11DE491839707C23B788507C23B789507C11DE48B9F03A4331C4966';\n\nclass PaymentChannel extends Contract {\n\n /**\n * @param provider {HttpProvider}\n * @param options {{isA: boolean, channelId: BN, myKeyPair: nacl.SignKeyPair, hisPublicKey: Uint8Array, initBalanceA: BN, initBalanceB: BN, addressA: Address, addressB: Address, closingConfig?: {quarantineDuration: number, misbehaviorFine: BN, conditionalCloseDuration: number}, excessFee?: BN}}\n */\n constructor(provider, options) {\n options.publicKeyA = options.isA ? options.myKeyPair.publicKey : options.hisPublicKey;\n options.publicKeyB = !options.isA ? options.myKeyPair.publicKey : options.hisPublicKey;\n\n options.wc = options.wc || 0;\n options.code = options.code || Cell.oneFromBoc(PAYMENT_CHANNEL_CODE_HEX);\n super(provider, options);\n }\n\n /**\n * @override\n * @private\n * @return {Cell} cell contains payment channel data\n */\n createDataCell() {\n const cell = new Cell();\n cell.bits.writeBit(0); // inited\n cell.bits.writeCoins(0); // balance_A\n cell.bits.writeCoins(0); // balance_B\n writePublicKey(cell, this.options.publicKeyA); // key_A\n writePublicKey(cell, this.options.publicKeyB); // key_B\n cell.bits.writeUint(this.options.channelId, 128); // channel_id\n\n const closingConfig = new Cell();\n closingConfig.bits.writeUint(this.options.closingConfig?.quarantineDuration || 0, 32); // quarantin_duration\n closingConfig.bits.writeCoins(this.options.closingConfig?.misbehaviorFine || new BN(0)); // misbehavior_fine\n closingConfig.bits.writeUint(this.options.closingConfig?.conditionalCloseDuration || 0, 32); // conditional_close_duration\n cell.refs[0] = closingConfig;\n\n cell.bits.writeUint(0, 32); // commited_seqno_A\n cell.bits.writeUint(0, 32); // commited_seqno_B\n cell.bits.writeBit(false); // quarantin ref\n\n const paymentConfig = new Cell();\n paymentConfig.bits.writeCoins(this.options.excessFee || new BN(0)); // excess_fee\n paymentConfig.bits.writeAddress(this.options.addressA); // addr_A\n paymentConfig.bits.writeAddress(this.options.addressB); // addr_B\n cell.refs[1] = paymentConfig;\n\n return cell;\n }\n\n /**\n * @private\n * @param op {number}\n * @param cellForSigning {Cell}\n * @returns {Promise<{cell: Cell, signature: Uint8Array}>}\n */\n async createOneSignature(op, cellForSigning) {\n const signature = nacl.sign.detached(await cellForSigning.hash(), this.options.myKeyPair.secretKey);\n\n const cell = createOneSignature({\n op,\n isA: this.options.isA,\n signature,\n cell: cellForSigning\n });\n\n return {cell, signature};\n }\n\n /**\n * @private\n * @param op {number}\n * @param hisSignature {Uint8Array}\n * @param cellForSigning {Cell}\n * @returns {Promise<{cell: Cell, signature: Uint8Array}>}\n */\n async createTwoSignature(op, hisSignature, cellForSigning) {\n const signature = nacl.sign.detached(await cellForSigning.hash(), this.options.myKeyPair.secretKey);\n\n const signatureA = this.options.isA ? signature : hisSignature;\n const signatureB = !this.options.isA ? signature : hisSignature;\n\n const cell = createTwoSignature({\n op,\n signatureA,\n signatureB,\n cell: cellForSigning\n });\n\n return {cell, signature};\n }\n\n /**\n * @param params {{coinsA: BN, coinsB: BN}}\n * @returns {Promise}\n */\n async createTopUpBalance(params) {\n return createTopUpBalance(params);\n }\n\n /**\n * @param params {{balanceA: BN, balanceB: BN}}\n * @returns {Promise<{cell: Cell, signature: Uint8Array}>}\n */\n async createInitChannel(params) {\n return this.createOneSignature(\n op_init_channel,\n createInitChannelBody({...params, channelId: this.options.channelId})\n );\n }\n\n /**\n * @param params {{hisSignature?: Uint8Array, balanceA: BN, balanceB: BN, seqnoA: BN, seqnoB: BN}}\n * @returns {Promise<{cell: Cell, signature: Uint8Array}>}\n */\n async createCooperativeCloseChannel(params) {\n if (!params.hisSignature) {\n params.hisSignature = new Uint8Array(512 / 8);\n }\n return this.createTwoSignature(\n op_cooperative_close,\n params.hisSignature,\n createCooperativeCloseChannelBody({...params, channelId: this.options.channelId})\n )\n }\n\n /**\n * @param params {{hisSignature?: Uint8Array, seqnoA: BN, seqnoB: BN}}\n * @returns {Promise<{cell: Cell, signature: Uint8Array}>}\n */\n async createCooperativeCommit(params) {\n if (!params.hisSignature) {\n params.hisSignature = new Uint8Array(512 / 8);\n }\n return this.createTwoSignature(\n op_cooperative_commit,\n params.hisSignature,\n createCooperativeCommitBody({...params, channelId: this.options.channelId})\n )\n }\n\n /**\n * @private\n * @param params {{mySeqno: BN, mySentCoins: BN, hisSeqno?: BN, hisSentCoins?: BN}}\n * @returns {Promise<{cell: Cell, signature: Uint8Array}>}\n */\n async createSignedSemiChannelState(params) {\n const state = createSemiChannelState({\n channelId: this.options.channelId,\n semiChannelBody: createSemiChannelBody({\n seqno: params.mySeqno,\n sentCoins: params.mySentCoins,\n conditionals: null\n }),\n counterpartySemiChannelBody: params.hisSeqno === undefined ? null : createSemiChannelBody({\n seqno: params.hisSeqno,\n sentCoins: params.hisSentCoins,\n conditionals: null\n }),\n });\n const signature = nacl.sign.detached(await state.hash(), this.options.myKeyPair.secretKey);\n const cell = createSignedSemiChannelState({signature, state});\n return {cell, signature};\n }\n\n /**\n * @param params {{balanceA: BN, balanceB: BN, seqnoA: BN, seqnoB: BN}}\n * @returns {Promise} signature\n */\n async signState(params) {\n const mySeqno = this.options.isA ? params.seqnoA : params.seqnoB;\n const hisSeqno = !this.options.isA ? params.seqnoA : params.seqnoB;\n\n const sentCoinsA = this.options.initBalanceA.gt(params.balanceA) ? this.options.initBalanceA.sub(params.balanceA) : new BN(0);\n const sentCoinsB = this.options.initBalanceB.gt(params.balanceB) ? this.options.initBalanceB.sub(params.balanceB) : new BN(0);\n\n const mySentCoins = this.options.isA ? sentCoinsA : sentCoinsB;\n const hisSentCoins = !this.options.isA ? sentCoinsA : sentCoinsB;\n\n const {cell, signature} = await this.createSignedSemiChannelState({\n mySeqno,\n mySentCoins,\n hisSeqno,\n hisSentCoins\n });\n\n return signature;\n }\n\n /**\n * @param params {{balanceA: BN, balanceB: BN, seqnoA: BN, seqnoB: BN}}\n * @param hisSignature {Uint8Array}\n * @returns {Promise}\n */\n async verifyState(params, hisSignature) {\n const mySeqno = !this.options.isA ? params.seqnoA : params.seqnoB;\n const hisSeqno = this.options.isA ? params.seqnoA : params.seqnoB;\n\n const sentCoinsA = this.options.initBalanceA.gt(params.balanceA) ? this.options.initBalanceA.sub(params.balanceA) : new BN(0);\n const sentCoinsB = this.options.initBalanceB.gt(params.balanceB) ? this.options.initBalanceB.sub(params.balanceB) : new BN(0);\n\n const mySentCoins = !this.options.isA ? sentCoinsA : sentCoinsB;\n const hisSentCoins = this.options.isA ? sentCoinsA : sentCoinsB;\n\n const state = createSemiChannelState({\n channelId: this.options.channelId,\n semiChannelBody: createSemiChannelBody({\n seqno: mySeqno,\n sentCoins: mySentCoins,\n conditionals: null\n }),\n counterpartySemiChannelBody: hisSeqno === undefined ? null : createSemiChannelBody({\n seqno: hisSeqno,\n sentCoins: hisSentCoins,\n conditionals: null\n }),\n });\n const hash = await state.hash();\n return nacl.sign.detached.verify(hash, hisSignature, this.options.isA ? this.options.publicKeyB : this.options.publicKeyA);\n }\n\n /**\n * @param params {{balanceA: BN, balanceB: BN, seqnoA: BN, seqnoB: BN}}\n * @return {Uint8Array} signature\n */\n async signClose(params) {\n const {cell, signature} = await this.createCooperativeCloseChannel(params);\n return signature;\n }\n\n /**\n * @param params {{balanceA: BN, balanceB: BN, seqnoA: BN, seqnoB: BN}}\n * @param hisSignature {Uint8Array}\n * @return {boolean}\n */\n async verifyClose(params, hisSignature) {\n const cell = await createCooperativeCloseChannelBody({...params, channelId: this.options.channelId});\n const hash = await cell.hash();\n return nacl.sign.detached.verify(hash, hisSignature, this.options.isA ? this.options.publicKeyB : this.options.publicKeyA);\n }\n\n /**\n * @param params {{signedSemiChannelStateA: Cell, signedSemiChannelStateB: Cell}} `signedSemiChannelState` created by `createSignedSemiChannelState`\n * @returns {Promise<{cell: Cell, signature: Uint8Array}>}\n */\n async createStartUncooperativeClose(params) {\n return this.createOneSignature(\n op_start_uncooperative_close,\n createStartUncooperativeCloseBody({...params, channelId: this.options.channelId})\n );\n }\n\n /**\n * @param params {{signedSemiChannelStateA: Cell, signedSemiChannelStateB: Cell}} `signedSemiChannelState` created by `createSignedSemiChannelState`\n * @returns {Promise<{cell: Cell, signature: Uint8Array}>}\n */\n async createChallengeQuarantinedState(params) {\n return this.createOneSignature(\n op_challenge_quarantined_state,\n createChallengeQuarantinedStateBody({...params, channelId: this.options.channelId})\n );\n }\n\n /**\n * @param params {{conditionalsToSettle: Cell | null}} dictionary with uint32 keys and values created by `createConditionalPayment`\n * @returns {Promise<{cell: Cell, signature: Uint8Array}>}\n */\n async createSettleConditionals(params) {\n return this.createOneSignature(\n op_settle_conditionals,\n createSettleConditionalsBody({...params, channelId: this.options.channelId})\n );\n }\n\n /**\n * @returns {Promise}\n */\n async createFinishUncooperativeClose() {\n return createFinishUncooperativeClose();\n }\n\n static STATE_UNINITED = 0;\n static STATE_OPEN = 1;\n static STATE_CLOSURE_STARTED = 2;\n static STATE_SETTLING_CONDITIONALS = 3;\n static STATE_AWAITING_FINALIZATION = 4;\n\n /**\n * @returns {Promise}\n */\n async getChannelState() {\n const myAddress = await this.getAddress();\n const result = await this.provider.call2(myAddress.toString(), 'get_channel_state', []);\n return result.toNumber();\n }\n\n /**\n * @returns {Promise<{state: number, balanceA: BN, balanceB: BN, publicKeyA: Uint8Array, publicKeyB: Uint8Array, channelId: BN, quarantineDuration: number, misbehaviorFine: BN, conditionalCloseDuration: number, seqnoA: BN, seqnoB: BN, quarantine: Cell, excessFee: BN, addressA: Address, addressB: Address}>}\n */\n async getData() {\n /**\n * @param bn {BN}\n * @return {Uint8Array}\n */\n const bnToBytes = (bn) => {\n let hex = bn.toString(16);\n if (hex.length % 2 !== 0) hex = '0' + hex;\n return hexToBytes(hex);\n }\n\n const myAddress = await this.getAddress();\n const result = await this.provider.call2(myAddress.toString(), 'get_channel_data', []);\n\n const state = result[0].toNumber();\n const balanceA = result[1][0];\n const balanceB = result[1][1];\n const publicKeyA = bnToBytes(result[2][0]);\n const publicKeyB = bnToBytes(result[2][1]);\n const channelId = result[3];\n const quarantineDuration = result[4][0].toNumber();\n const misbehaviorFine = result[4][1];\n const conditionalCloseDuration = result[4][2].toNumber();\n const seqnoA = result[5][0];\n const seqnoB = result[5][1];\n const quarantine = result[6]; // Cell\n const excessFee = result[7][0];\n const addressA = parseAddress(result[7][1]);\n const addressB = parseAddress(result[7][2]);\n return {\n state,\n balanceA,\n balanceB,\n publicKeyA,\n publicKeyB,\n channelId,\n quarantineDuration,\n misbehaviorFine,\n conditionalCloseDuration,\n seqnoA,\n seqnoB,\n quarantine,\n excessFee,\n addressA,\n addressB\n }\n }\n\n /**\n * @param params {{wallet: WalletContract, secretKey: Uint8Array}}\n * @return {{deploy: Function, init: Function, topUp: Function, close: Function, commit: Function, startUncooperativeClose: Function, challengeQuarantinedState: Function, settleConditionals: Function, finishUncooperativeClose: Function}}\n */\n fromWallet(params) {\n const {wallet, secretKey} = params;\n\n const transfer = (payloadPromise, needStateInit) => {\n\n const createPromise = async (amount) => {\n const stateInit = needStateInit ? (await this.createStateInit()).stateInit : null\n const myAddress = await this.getAddress();\n const seqno = (await wallet.methods.seqno().call()) || 0;\n const payload = await payloadPromise;\n\n return wallet.methods.transfer({\n secretKey: secretKey,\n toAddress: myAddress.toString(true, true, true),\n amount: amount,\n seqno: seqno,\n payload, // body\n stateInit,\n sendMode: 3\n });\n }\n\n return {\n /**\n * @param amount {BN} in Toncoins\n */\n send: (amount) => {\n return createPromise(amount).then(x => x.send());\n },\n /**\n * @param amount {BN} in Toncoins\n */\n estimateFee: (amount) => {\n return createPromise(amount).then(x => x.estimateFee());\n }\n }\n }\n\n return {\n deploy: () => {\n return transfer(null, true);\n },\n /**\n * @param params {{balanceA: BN, balanceB: BN}}\n */\n init: (params) => {\n return transfer(this.createInitChannel(params).then(x => x.cell));\n },\n /**\n * @param params {{coinsA: BN, coinsB: BN}}\n */\n topUp: (params) => {\n return transfer(this.createTopUpBalance(params));\n },\n /**\n * @param params {{hisSignature: Uint8Array, balanceA: BN, balanceB: BN, seqnoA: BN, seqnoB: BN}}\n */\n close: (params) => {\n return transfer(this.createCooperativeCloseChannel(params).then(x => x.cell));\n },\n /**\n * @param params {{hisSignature: Uint8Array, seqnoA: BN, seqnoB: BN}}\n */\n commit: (params) => {\n return transfer(this.createCooperativeCommit(params).then(x => x.cell));\n },\n /**\n * @param params {{signedSemiChannelStateA: Cell, signedSemiChannelStateB: Cell}}\n */\n startUncooperativeClose: (params) => {\n return transfer(this.createStartUncooperativeClose(params).then(x => x.cell));\n },\n /**\n * @param params {{signedSemiChannelStateA: Cell, signedSemiChannelStateB: Cell}}\n */\n challengeQuarantinedState: (params) => {\n return transfer(this.createChallengeQuarantinedState(params).then(x => x.cell));\n },\n /**\n * @param params {{conditionalsToSettle: Cell | null}}\n */\n settleConditionals: (params) => {\n return transfer(this.createSettleConditionals(params).then(x => x.cell));\n },\n /**\n */\n finishUncooperativeClose: () => {\n return transfer(this.createFinishUncooperativeClose());\n }\n }\n }\n\n}\n\nPaymentChannel.codeHex = PAYMENT_CHANNEL_CODE_HEX;\n\nmodule.exports = {PaymentChannel};","var BN = require('bn.js');\nvar stripHexPrefix = require('strip-hex-prefix');\n\n/**\n * Returns a BN object, converts a number value to a BN\n * @param {String|Number|Object} `arg` input a string number, hex string number, number, BigNumber or BN object\n * @return {Object} `output` BN object of the number\n * @throws if the argument is not an array, object that isn't a bignumber, not a string number or number\n */\nmodule.exports = function numberToBN(arg) {\n if (typeof arg === 'string' || typeof arg === 'number') {\n var multiplier = new BN(1); // eslint-disable-line\n var formattedString = String(arg).toLowerCase().trim();\n var isHexPrefixed = formattedString.substr(0, 2) === '0x' || formattedString.substr(0, 3) === '-0x';\n var stringArg = stripHexPrefix(formattedString); // eslint-disable-line\n if (stringArg.substr(0, 1) === '-') {\n stringArg = stripHexPrefix(stringArg.slice(1));\n multiplier = new BN(-1, 10);\n }\n stringArg = stringArg === '' ? '0' : stringArg;\n\n if ((!stringArg.match(/^-?[0-9]+$/) && stringArg.match(/^[0-9A-Fa-f]+$/))\n || stringArg.match(/^[a-fA-F]+$/)\n || (isHexPrefixed === true && stringArg.match(/^[0-9A-Fa-f]+$/))) {\n return new BN(stringArg, 16).mul(multiplier);\n }\n\n if ((stringArg.match(/^-?[0-9]+$/) || stringArg === '') && isHexPrefixed === false) {\n return new BN(stringArg, 10).mul(multiplier);\n }\n } else if (typeof arg === 'object' && arg.toString && (!arg.pop && !arg.push)) {\n if (arg.toString(10).match(/^-?[0-9]+$/) && (arg.mul || arg.dividedToIntegerBy)) {\n return new BN(arg.toString(10), 10);\n }\n }\n\n throw new Error('[number-to-bn] while converting number ' + JSON.stringify(arg) + ' to BN.js instance, error: invalid number value. Value must be an integer, hex string, BN or BigNumber instance. Note, decimals are not supported.');\n}\n","'use strict';\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it, Prototype) {\n if (isPrototypeOf(Prototype, it)) return it;\n throw new $TypeError('Incorrect invocation');\n};\n","'use strict';\nvar IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.33.0',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2023 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.33.0/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n","const {Contract} = require(\"../../index.js\");\nconst {Cell} = require(\"../../../boc\");\nconst {Address, bytesToBase64, BN} = require(\"../../../utils\");\nconst {parseAddress} = require('./NftUtils.js');\nconst {createOffchainUriCell, serializeUri, parseOffchainUriCell, getRoyaltyParams} = require(\"./NftUtils\");\n\nclass NftCollection extends Contract {\n /**\n * @param provider\n * @param options {{ownerAddress: Address, collectionContentUri: string, nftItemContentBaseUri: string, nftItemCodeHex: string, royalty: number, royaltyAddress: Address, address?: Address | string, code?: Cell}}\n */\n constructor(provider, options) {\n options.wc = 0;\n // https://github.com/ton-blockchain/token-contract/blob/1ad314a98d20b41241d5329e1786fc894ad811de/nft/nft-collection-editable.fc\n options.code = options.code || Cell.oneFromBoc('B5EE9C724102140100021F000114FF00F4A413F4BCF2C80B0102016202030202CD04050201200E0F04E7D10638048ADF000E8698180B8D848ADF07D201800E98FE99FF6A2687D20699FEA6A6A184108349E9CA829405D47141BAF8280E8410854658056B84008646582A802E78B127D010A65B509E58FE59F80E78B64C0207D80701B28B9E382F970C892E000F18112E001718112E001F181181981E0024060708090201200A0B00603502D33F5313BBF2E1925313BA01FA00D43028103459F0068E1201A44343C85005CF1613CB3FCCCCCCC9ED54925F05E200A6357003D4308E378040F4966FA5208E2906A4208100FABE93F2C18FDE81019321A05325BBF2F402FA00D43022544B30F00623BA9302A402DE04926C21E2B3E6303250444313C85005CF1613CB3FCCCCCCC9ED54002C323401FA40304144C85005CF1613CB3FCCCCCCC9ED54003C8E15D4D43010344130C85005CF1613CB3FCCCCCCC9ED54E05F04840FF2F00201200C0D003D45AF0047021F005778018C8CB0558CF165004FA0213CB6B12CCCCC971FB008002D007232CFFE0A33C5B25C083232C044FD003D0032C03260001B3E401D3232C084B281F2FFF2742002012010110025BC82DF6A2687D20699FEA6A6A182DE86A182C40043B8B5D31ED44D0FA40D33FD4D4D43010245F04D0D431D430D071C8CB0701CF16CCC980201201213002FB5DAFDA89A1F481A67FA9A9A860D883A1A61FA61FF480610002DB4F47DA89A1F481A67FA9A9A86028BE09E008E003E00B01A500C6E');\n if (options.royalty > 1) throw new Error('royalty > 1');\n options.royaltyBase = 1000;\n options.royaltyFactor = Math.floor(options.royalty * options.royaltyBase);\n super(provider, options);\n\n this.methods.getCollectionData = this.getCollectionData.bind(this);\n this.methods.getNftItemAddressByIndex = this.getNftItemAddressByIndex.bind(this);\n this.methods.getNftItemContent = this.getNftItemContent.bind(this);\n this.methods.getRoyaltyParams = this.getRoyaltyParams.bind(this);\n }\n\n /**\n * @private\n * @param params {{collectionContentUri: string, nftItemContentBaseUri: string}}\n * @return {Cell}\n */\n createContentCell(params) {\n const collectionContentCell = createOffchainUriCell(params.collectionContentUri);\n\n const commonContentCell = new Cell();\n commonContentCell.bits.writeBytes(serializeUri(params.nftItemContentBaseUri));\n\n const contentCell = new Cell();\n contentCell.refs[0] = collectionContentCell;\n contentCell.refs[1] = commonContentCell;\n\n return contentCell;\n }\n\n /**\n * @private\n * @param params {{royaltyFactor: number, royaltyBase: number, royaltyAddress: Address}}\n * @return {Cell}\n */\n createRoyaltyCell(params) {\n const royaltyCell = new Cell();\n royaltyCell.bits.writeUint(params.royaltyFactor, 16);\n royaltyCell.bits.writeUint(params.royaltyBase, 16);\n royaltyCell.bits.writeAddress(params.royaltyAddress);\n return royaltyCell;\n }\n\n /**\n * @override\n * @private\n * @return {Cell} cell contains nft collection data\n */\n createDataCell() {\n const cell = new Cell();\n cell.bits.writeAddress(this.options.ownerAddress);\n cell.bits.writeUint(0, 64); // next_item_index\n cell.refs[0] = this.createContentCell(this.options);\n cell.refs[1] = Cell.oneFromBoc(this.options.nftItemCodeHex);\n cell.refs[2] = this.createRoyaltyCell(this.options);\n return cell;\n }\n\n /**\n * params {{itemIndex: BN|number, amount: BN, itemOwnerAddress: Address, itemContentUri: string, queryId?: number}}\n * @return {Cell}\n */\n createMintBody(params) {\n const body = new Cell();\n body.bits.writeUint(1, 32); // OP deploy new nft\n body.bits.writeUint(params.queryId || 0, 64); // query_id\n body.bits.writeUint(params.itemIndex, 64);\n body.bits.writeCoins(params.amount);\n\n const nftItemContent = new Cell();\n nftItemContent.bits.writeAddress(params.itemOwnerAddress);\n\n const uriContent = new Cell();\n uriContent.bits.writeBytes(serializeUri(params.itemContentUri));\n nftItemContent.refs[0] = uriContent;\n\n body.refs[0] = nftItemContent;\n return body;\n }\n\n /**\n * params {{queryId?: number}}\n * @return {Cell}\n */\n createGetRoyaltyParamsBody(params) {\n const body = new Cell();\n body.bits.writeUint(0x693d3950, 32); // OP\n body.bits.writeUint(params.queryId || 0, 64); // query_id\n return body;\n }\n\n /**\n * params {{queryId?: number, newOwnerAddress: Address}}\n * @return {Cell}\n */\n createChangeOwnerBody(params) {\n if (params.newOwnerAddress === undefined) throw new Error('Specify newOwnerAddress');\n\n const body = new Cell();\n body.bits.writeUint(3, 32); // OP\n body.bits.writeUint(params.queryId || 0, 64); // query_id\n body.bits.writeAddress(params.newOwnerAddress);\n return body;\n }\n\n /**\n * @param params {{collectionContentUri: string, nftItemContentBaseUri: string, royalty: number, royaltyAddress: Address, queryId?: number}}\n * @return {Cell}\n */\n createEditContentBody(params) {\n if (params.royalty > 1) throw new Error('royalty > 1');\n params.royaltyBase = 1000;\n params.royaltyFactor = Math.floor(params.royalty * params.royaltyBase);\n\n const body = new Cell();\n body.bits.writeUint(4, 32); // OP\n body.bits.writeUint(params.queryId || 0, 64); // query_id\n body.refs[0] = this.createContentCell(params);\n body.refs[1] = this.createRoyaltyCell(params);\n return body;\n }\n\n /**\n * @return {Promise<{nextItemIndex: number, itemsCount: BN, ownerAddress: Address, collectionContentCell: Cell, collectionContentUri: string|null}>}\n */\n async getCollectionData() {\n const myAddress = await this.getAddress();\n const result = await this.provider.call2(myAddress.toString(), 'get_collection_data');\n\n const itemsCount = result[0];\n let nextItemIndex = NaN;\n try {\n nextItemIndex = itemsCount.toNumber();\n } catch (e) {\n }\n const collectionContentCell = result[1];\n let collectionContentUri = null;\n try {\n collectionContentUri = parseOffchainUriCell(collectionContentCell);\n } catch (e) {\n }\n const ownerAddress = parseAddress(result[2]);\n\n return {nextItemIndex, itemsCount, ownerAddress, collectionContentCell, collectionContentUri};\n }\n\n /**\n * @param nftItem {NftItem}\n * @return {Promise<{isInitialized: boolean, index: number, itemIndex: BN, collectionAddress: Address, ownerAddress: Address|null, contentCell: Cell, contentUri: string|null}>}\n */\n async getNftItemContent(nftItem) {\n const myAddress = await this.getAddress();\n const nftData = await nftItem.getData();\n if (nftData.isInitialized) {\n const result = await this.provider.call2(myAddress.toString(), 'get_nft_content', [['num', nftData.itemIndex.toString(10)], ['tvm.Cell', bytesToBase64(await nftData.contentCell.toBoc(false))]]);\n nftData.contentUri = null;\n try {\n nftData.contentUri = parseOffchainUriCell(result);\n } catch (e) {\n }\n }\n return nftData;\n }\n\n /**\n * @param index {BN|number}\n * @return {Promise
}\n */\n async getNftItemAddressByIndex(index) {\n index = new BN(index);\n const myAddress = await this.getAddress();\n const result = await this.provider.call2(myAddress.toString(), 'get_nft_address_by_index', [['num', index.toString(10)]]);\n\n return parseAddress(result);\n }\n\n /**\n * @return {Promise<{royalty: number, royaltyFactor: number, royaltyBase: number, royaltyAddress: Address}>}\n */\n async getRoyaltyParams() {\n const myAddress = await this.getAddress();\n return getRoyaltyParams(this.provider, myAddress.toString());\n }\n}\n\nmodule.exports = {NftCollection};\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","const {Contract} = require(\"../../contract/index.js\");\nconst {Cell} = require(\"../../boc\");\nconst {Address} = require(\"../../utils\");\nconst {parseAddress} = require('../token/nft/NftUtils.js');\nconst {dnsResolve} = require(\"./DnsUtils.js\")\nconst {parseOffchainUriCell} = require(\"../token/nft/NftUtils\");\n\nclass DnsCollection extends Contract {\n /**\n * @param provider\n * @param options {{collectionContent: Cell, dnsItemCodeHex: string, address?: Address | string, code?: Cell}}\n */\n constructor(provider, options) {\n options.wc = 0;\n options.code = options.code;\n super(provider, options);\n\n if (!options.collectionContent && !options.address) throw new Error('required collectionContent cell');\n\n this.methods.getCollectionData = this.getCollectionData.bind(this);\n this.methods.getNftItemAddressByIndex = this.getNftItemAddressByIndex.bind(this);\n this.methods.getNftItemContent = this.getNftItemContent.bind(this);\n this.methods.resolve = this.resolve.bind(this);\n }\n\n /**\n * @override\n * @private\n * @return {Cell} cell contains dns collection data\n */\n createDataCell() {\n const cell = new Cell();\n cell.refs[0] = this.options.collectionContent;\n cell.refs[1] = Cell.oneFromBoc(this.options.dnsItemCodeHex);\n return cell;\n }\n\n /**\n * @return {Promise<{collectionContent: Cell}>}\n */\n async getCollectionData() {\n const myAddress = await this.getAddress();\n const result = await this.provider.call2(myAddress.toString(), 'get_collection_data');\n\n const nextItemIndex = result[0].toNumber();\n const collectionContent = result[1];\n const collectionContentUri = parseOffchainUriCell(collectionContent);\n\n return {collectionContentUri, collectionContent, ownerAddress: null, nextItemIndex};\n }\n\n /**\n * @param nftItem {DnsItem}\n * @return {Promise<{isInitialized: boolean, index: BN, collectionAddress: Address|null, ownerAddress: Address|null, contentCell: Cell}>}\n */\n async getNftItemContent(nftItem) {\n const nftData = await nftItem.getData();\n return nftData;\n }\n\n /**\n * @param index {BN}\n * @return {Promise
}\n */\n async getNftItemAddressByIndex(index) {\n const myAddress = await this.getAddress();\n const result = await this.provider.call2(myAddress.toString(), 'get_nft_address_by_index', [['num', index.toString()]]);\n\n return parseAddress(result);\n }\n\n /**\n * @param domain {string} e.g \"sub.alice.ton\"\n * @param category? {string} category of requested DNS record, null for all categories\n * @param oneStep? {boolean} non-recursive\n * @returns {Promise}\n */\n async resolve(domain, category, oneStep) {\n const myAddress = await this.getAddress();\n return dnsResolve(this.provider, myAddress.toString(), domain, category, oneStep);\n }\n}\n\nmodule.exports = {DnsCollection: DnsCollection};\n","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","const {Cell} = require(\"../../boc\");\nconst {WalletContract} = require(\"./WalletContract\");\n\nclass WalletV2ContractBase extends WalletContract {\n /**\n * @override\n * @private\n * @param seqno? {number}\n * @param expireAt? {number}\n * @return {Cell}\n */\n createSigningMessage(seqno, expireAt) {\n seqno = seqno || 0;\n expireAt = expireAt || (Math.floor(Date.now() / 1e3) + 60);\n const message = new Cell();\n message.bits.writeUint(seqno, 32);\n if (seqno === 0) {\n // message.bits.writeInt(-1, 32);// todo: dont work\n for (let i = 0; i < 32; i++) {\n message.bits.writeBit(1);\n }\n } else {\n message.bits.writeUint(expireAt, 32);\n }\n return message;\n }\n}\n\nclass WalletV2ContractR1 extends WalletV2ContractBase {\n /**\n * @param provider {HttpProvider}\n * @param options? {any}\n */\n constructor(provider, options) {\n options.code = Cell.oneFromBoc(\"B5EE9C724101010100570000AAFF0020DD2082014C97BA9730ED44D0D70B1FE0A4F2608308D71820D31FD31F01F823BBF263ED44D0D31FD3FFD15131BAF2A103F901541042F910F2A2F800029320D74A96D307D402FB00E8D1A4C8CB1FCBFFC9ED54A1370BB6\");\n super(provider, options);\n }\n\n getName() {\n return 'v2R1';\n }\n}\n\nclass WalletV2ContractR2 extends WalletV2ContractBase {\n /**\n * @param provider {HttpProvider}\n * @param options? {any}\n */\n constructor(provider, options) {\n options.code = Cell.oneFromBoc(\"B5EE9C724101010100630000C2FF0020DD2082014C97BA218201339CBAB19C71B0ED44D0D31FD70BFFE304E0A4F2608308D71820D31FD31F01F823BBF263ED44D0D31FD3FFD15131BAF2A103F901541042F910F2A2F800029320D74A96D307D402FB00E8D1A4C8CB1FCBFFC9ED54044CD7A1\");\n super(provider, options);\n }\n\n getName() {\n return 'v2R2';\n }\n}\n\nmodule.exports = {WalletV2ContractR1, WalletV2ContractR2};\n","'use strict';\nvar global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","const numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n const anum = numeric.test(a)\n const bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n compareIdentifiers,\n rcompareIdentifiers,\n}\n","const Range = require('../classes/range')\nconst intersects = (r1, r2, options) => {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2, options)\n}\nmodule.exports = intersects\n","const {hexToBytes, bytesToHex} = require(\"./Utils\");\n\nclass StorageBagId {\n /**\n * @param anyForm {string | Uint8Array | StorageBagId}\n */\n static isValid(anyForm) {\n try {\n new StorageBagId(anyForm);\n return true;\n } catch (e) {\n return false;\n }\n }\n\n /**\n * @param anyForm {string | Uint8Array | StorageBagId}\n */\n constructor(anyForm) {\n if (anyForm == null) {\n throw \"Invalid address\";\n }\n\n if (anyForm instanceof StorageBagId) {\n this.bytes = anyForm.bytes;\n } else if (anyForm instanceof Uint8Array) {\n if (anyForm.length !== 32) {\n throw new Error('invalid bag id bytes length');\n }\n this.bytes = anyForm;\n } else if (typeof anyForm === 'string') {\n if (anyForm.length !== 64) {\n throw new Error('invalid bag id hex length');\n }\n this.bytes = hexToBytes(anyForm);\n } else {\n throw new Error('unsupported type')\n }\n }\n\n toHex() {\n let hex = bytesToHex(this.bytes);\n while (hex.length < 64) {\n hex = '0' + hex;\n }\n return hex;\n }\n}\n\nmodule.exports.default = StorageBagId;\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n 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 // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n Buffer = require('buf' + 'fer').Buffer;\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex (str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r <<= 4;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n }\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n r.strip();\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","const {Contract} = require(\"../index.js\");\nconst {Cell} = require(\"../../boc\");\nconst {hexToBytes, BN, nacl, bytesToBase64} = require(\"../../utils\");\n\n\nclass SubscriptionContract extends Contract {\n /**\n * @param provider\n * @param options {{wc: number, wallet: Address, beneficiary: Address, amount: BN, period: number, timeout: number, startAt: number, subscriptionId: number, address?: Address | string}}\n */\n constructor(provider, options) {\n options.code = Cell.oneFromBoc('B5EE9C7241020F01000262000114FF00F4A413F4BCF2C80B0102012002030201480405036AF230DB3C5335A127A904F82327A128A90401BC5135A0F823B913B0F29EF800725210BE945387F0078E855386DB3CA4E2F82302DB3C0B0C0D0202CD06070121A0D0C9B67813F488DE0411F488DE0410130B048FD6D9E05E8698198FD201829846382C74E2F841999E98F9841083239BA395D497803F018B841083AB735BBED9E702984E382D9C74688462F863841083AB735BBED9E70156BA4E09040B0A0A080269F10FD22184093886D9E7C12C1083239BA39384008646582A803678B2801FD010A65B5658F89659FE4B9FD803FC1083239BA396D9E40E0A04F08E8D108C5F0C708210756E6B77DB3CE00AD31F308210706C7567831EB15210BA8F48305324A126A904F82326A127A904BEF27109FA4430A619F833D078D721D70B3F5260A11BBE8E923036F82370708210737562732759DB3C5077DE106910581047103645135042DB3CE0395F076C2232821064737472BA0A0A0D09011A8E897F821064737472DB3CE0300A006821B39982100400000072FB02DE70F8276F118010C8CB055005CF1621FA0214F40013CB6912CB1F830602948100A032DEC901FB000030ED44D0FA40FA40FA00D31FD31FD31FD31FD31FD307D31F30018021FA443020813A98DB3C01A619F833D078D721D70B3FA070F8258210706C7567228018C8CB055007CF165004FA0215CB6A12CB1F13CB3F01FA02CB00C973FB000E0040C8500ACF165008CF165006FA0214CB1F12CB1FCB1FCB1FCB1FCB07CB1FC9ED54005801A615F833D020D70B078100D1BA95810088D721DED307218100DDBA028100DEBA12B1F2E047D33F30A8AB0FE5855AB4');\n super(provider, options);\n\n this.methods.pay = () => Contract.createMethod(provider, this.createPayExternalMessage());\n this.methods.getSubscriptionData = this.getSubscriptionData.bind(this);\n }\n\n /**\n * @override\n * @private\n * @return {Cell} cell contains wallet data\n */\n createDataCell() {\n const cell = new Cell();\n cell.bits.writeAddress(this.options.wallet);\n cell.bits.writeAddress(this.options.beneficiary);\n cell.bits.writeGrams(this.options.amount);\n cell.bits.writeUint(this.options.period, 32);\n cell.bits.writeUint(this.options.startAt, 32); // start_time\n cell.bits.writeUint(this.options.timeout, 32);\n cell.bits.writeUint(0, 32); // last_payment_time\n cell.bits.writeUint(0, 32); // last_request_time\n cell.bits.writeUint(0, 8); // failed_attempts\n cell.bits.writeUint(this.options.subscriptionId, 32); // subscription_id\n return cell;\n }\n\n /**\n * Payment body (from wallet to subscription)\n * @return {Cell}\n */\n createBody() {\n const body = new Cell();\n body.bits.writeUint(new BN(0x706c7567).add(new BN(0x80000000)), 32); // op\n return body;\n }\n\n /**\n * Destroy plugin body (from wallet to subscription OR from beneficiary to subscription)\n * @return {Cell}\n */\n createSelfDestructBody() {\n const body = new Cell();\n body.bits.writeUint(0x64737472, 32); // op\n return body;\n }\n\n async getSubscriptionData() {\n const parseAddress = tuple => tuple[0].toNumber() + ':' + tuple[1].toString(16);\n\n const myAddress = await this.getAddress();\n const result = await this.provider.call2(myAddress.toString(), 'get_subscription_data');\n\n const wallet = parseAddress(result[0]);\n const beneficiary = parseAddress(result[1]);\n const amount = result[2];\n const period = result[3].toNumber();\n const startAt = result[4].toNumber(); // start_time\n const timeout = result[5].toNumber();\n const lastPayment = result[6].toNumber(); // last_payment_time\n const lastRequest = result[7].toNumber(); // last_request_time\n const failedAttempts = result[8].toNumber();\n const subscriptionId = result[9].toNumber();\n\n return {wallet, beneficiary, amount, period, startAt, timeout, lastPayment, lastRequest, failedAttempts, subscriptionId};\n }\n\n /**\n * @protected\n * @return {Promise<{address: Address, signature: Uint8Array, message: Cell, cell: Cell, body: Cell, resultMessage: Cell}>}\n */\n async createPayExternalMessage() {\n const selfAddress = await this.getAddress();\n const header = Contract.createExternalMessageHeader(selfAddress);\n const resultMessage = Contract.createCommonMsgInfo(header, null, null);\n const body = new Cell();\n body.bits.writeUint(Math.floor(Date.now() / 1000), 64); // this is not required by the contract; just to make it easier to distinguish messages\n\n return {\n address: selfAddress,\n message: resultMessage,\n body: body\n };\n }\n}\n\nmodule.exports = {SubscriptionContract};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar isArray = require('../internals/is-array');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Safari < 13 does not throw an error in this case\nvar SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () {\n // makes no sense without proper strict mode support\n if (this !== undefined) return true;\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty([], 'length', { writable: false }).length = 1;\n } catch (error) {\n return error instanceof TypeError;\n }\n}();\n\nmodule.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) {\n if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) {\n throw new $TypeError('Cannot set read only .length');\n } return O.length = length;\n} : function (O, length) {\n return O.length = length;\n};\n","/** PURE_IMPORTS_START tslib,_Subscriber,_util_noop,_util_isFunction PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nimport { noop } from '../util/noop';\nimport { isFunction } from '../util/isFunction';\nexport function tap(nextOrObserver, error, complete) {\n return function tapOperatorFunction(source) {\n return source.lift(new DoOperator(nextOrObserver, error, complete));\n };\n}\nvar DoOperator = /*@__PURE__*/ (function () {\n function DoOperator(nextOrObserver, error, complete) {\n this.nextOrObserver = nextOrObserver;\n this.error = error;\n this.complete = complete;\n }\n DoOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new TapSubscriber(subscriber, this.nextOrObserver, this.error, this.complete));\n };\n return DoOperator;\n}());\nvar TapSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(TapSubscriber, _super);\n function TapSubscriber(destination, observerOrNext, error, complete) {\n var _this = _super.call(this, destination) || this;\n _this._tapNext = noop;\n _this._tapError = noop;\n _this._tapComplete = noop;\n _this._tapError = error || noop;\n _this._tapComplete = complete || noop;\n if (isFunction(observerOrNext)) {\n _this._context = _this;\n _this._tapNext = observerOrNext;\n }\n else if (observerOrNext) {\n _this._context = observerOrNext;\n _this._tapNext = observerOrNext.next || noop;\n _this._tapError = observerOrNext.error || noop;\n _this._tapComplete = observerOrNext.complete || noop;\n }\n return _this;\n }\n TapSubscriber.prototype._next = function (value) {\n try {\n this._tapNext.call(this._context, value);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(value);\n };\n TapSubscriber.prototype._error = function (err) {\n try {\n this._tapError.call(this._context, err);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.error(err);\n };\n TapSubscriber.prototype._complete = function () {\n try {\n this._tapComplete.call(this._context);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n return this.destination.complete();\n };\n return TapSubscriber;\n}(Subscriber));\n//# sourceMappingURL=tap.js.map\n","'use strict';\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","'use strict';\nvar classofRaw = require('../internals/classof-raw');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = function (fn) {\n // Nashorn bug:\n // https://github.com/zloirock/core-js/issues/1128\n // https://github.com/zloirock/core-js/issues/1130\n if (classofRaw(fn) === 'Function') return uncurryThis(fn);\n};\n","const debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n constructor (version, options) {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose &&\n version.includePrerelease === !!options.includePrerelease) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n )\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n // this isn't actually relevant for versions, but keep it so that we\n // don't run into trouble passing this.options around.\n this.includePrerelease = !!options.includePrerelease\n\n const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n }\n\n format () {\n this.version = `${this.major}.${this.minor}.${this.patch}`\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join('.')}`\n }\n return this.version\n }\n\n toString () {\n return this.version\n }\n\n compare (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n if (typeof other === 'string' && other === this.version) {\n return 0\n }\n other = new SemVer(other, this.options)\n }\n\n if (other.version === this.version) {\n return 0\n }\n\n return this.compareMain(other) || this.comparePre(other)\n }\n\n compareMain (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return (\n compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch)\n )\n }\n\n comparePre (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n let i = 0\n do {\n const a = this.prerelease[i]\n const b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n compareBuild (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n let i = 0\n do {\n const a = this.build[i]\n const b = other.build[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc (release, identifier, identifierBase) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier, identifierBase)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier, identifierBase)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier, identifierBase)\n this.inc('pre', identifier, identifierBase)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier, identifierBase)\n }\n this.inc('pre', identifier, identifierBase)\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (\n this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0\n ) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case 'pre': {\n const base = Number(identifierBase) ? 1 : 0\n\n if (!identifier && identifierBase === false) {\n throw new Error('invalid increment argument: identifier is empty')\n }\n\n if (this.prerelease.length === 0) {\n this.prerelease = [base]\n } else {\n let i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n if (identifier === this.prerelease.join('.') && identifierBase === false) {\n throw new Error('invalid increment argument: identifier already exists')\n }\n this.prerelease.push(base)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n let prerelease = [identifier, base]\n if (identifierBase === false) {\n prerelease = [identifier]\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease\n }\n } else {\n this.prerelease = prerelease\n }\n }\n break\n }\n default:\n throw new Error(`invalid increment argument: ${release}`)\n }\n this.raw = this.format()\n if (this.build.length) {\n this.raw += `+${this.build.join('.')}`\n }\n return this\n }\n}\n\nmodule.exports = SemVer\n","'use strict';\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\n// `InstallErrorCause` abstract operation\n// https://tc39.es/proposal-error-cause/#sec-errorobjects-install-error-cause\nmodule.exports = function (O, options) {\n if (isObject(options) && 'cause' in options) {\n createNonEnumerableProperty(O, 'cause', options.cause);\n }\n};\n","/** PURE_IMPORTS_START tslib,_map,_observable_from,_innerSubscribe PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { map } from './map';\nimport { from } from '../observable/from';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\nexport function mergeMap(project, resultSelector, concurrent) {\n if (concurrent === void 0) {\n concurrent = Number.POSITIVE_INFINITY;\n }\n if (typeof resultSelector === 'function') {\n return function (source) { return source.pipe(mergeMap(function (a, i) { return from(project(a, i)).pipe(map(function (b, ii) { return resultSelector(a, b, i, ii); })); }, concurrent)); };\n }\n else if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return function (source) { return source.lift(new MergeMapOperator(project, concurrent)); };\n}\nvar MergeMapOperator = /*@__PURE__*/ (function () {\n function MergeMapOperator(project, concurrent) {\n if (concurrent === void 0) {\n concurrent = Number.POSITIVE_INFINITY;\n }\n this.project = project;\n this.concurrent = concurrent;\n }\n MergeMapOperator.prototype.call = function (observer, source) {\n return source.subscribe(new MergeMapSubscriber(observer, this.project, this.concurrent));\n };\n return MergeMapOperator;\n}());\nexport { MergeMapOperator };\nvar MergeMapSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(MergeMapSubscriber, _super);\n function MergeMapSubscriber(destination, project, concurrent) {\n if (concurrent === void 0) {\n concurrent = Number.POSITIVE_INFINITY;\n }\n var _this = _super.call(this, destination) || this;\n _this.project = project;\n _this.concurrent = concurrent;\n _this.hasCompleted = false;\n _this.buffer = [];\n _this.active = 0;\n _this.index = 0;\n return _this;\n }\n MergeMapSubscriber.prototype._next = function (value) {\n if (this.active < this.concurrent) {\n this._tryNext(value);\n }\n else {\n this.buffer.push(value);\n }\n };\n MergeMapSubscriber.prototype._tryNext = function (value) {\n var result;\n var index = this.index++;\n try {\n result = this.project(value, index);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.active++;\n this._innerSub(result);\n };\n MergeMapSubscriber.prototype._innerSub = function (ish) {\n var innerSubscriber = new SimpleInnerSubscriber(this);\n var destination = this.destination;\n destination.add(innerSubscriber);\n var innerSubscription = innerSubscribe(ish, innerSubscriber);\n if (innerSubscription !== innerSubscriber) {\n destination.add(innerSubscription);\n }\n };\n MergeMapSubscriber.prototype._complete = function () {\n this.hasCompleted = true;\n if (this.active === 0 && this.buffer.length === 0) {\n this.destination.complete();\n }\n this.unsubscribe();\n };\n MergeMapSubscriber.prototype.notifyNext = function (innerValue) {\n this.destination.next(innerValue);\n };\n MergeMapSubscriber.prototype.notifyComplete = function () {\n var buffer = this.buffer;\n this.active--;\n if (buffer.length > 0) {\n this._next(buffer.shift());\n }\n else if (this.active === 0 && this.hasCompleted) {\n this.destination.complete();\n }\n };\n return MergeMapSubscriber;\n}(SimpleOuterSubscriber));\nexport { MergeMapSubscriber };\nexport var flatMap = mergeMap;\n//# sourceMappingURL=mergeMap.js.map\n","/** PURE_IMPORTS_START _mergeMap,_util_identity PURE_IMPORTS_END */\nimport { mergeMap } from './mergeMap';\nimport { identity } from '../util/identity';\nexport function mergeAll(concurrent) {\n if (concurrent === void 0) {\n concurrent = Number.POSITIVE_INFINITY;\n }\n return mergeMap(identity, concurrent);\n}\n//# sourceMappingURL=mergeAll.js.map\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst minSatisfying = (versions, range, options) => {\n let min = null\n let minSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\nmodule.exports = minSatisfying\n","'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn Object.propertyIsEnumerable.call(target, symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n 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 // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n Buffer = require('buf' + 'fer').Buffer;\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex (str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r <<= 4;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n }\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n r.strip();\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","'use strict';\n\nvar BN = require('bn.js');\nvar numberToBN = require('number-to-bn');\n\nvar zero = new BN(0);\nvar negative1 = new BN(-1);\n\n// complete ethereum unit map\nvar unitMap = {\n 'noether': '0', // eslint-disable-line\n 'wei': '1', // eslint-disable-line\n 'kwei': '1000', // eslint-disable-line\n 'Kwei': '1000', // eslint-disable-line\n 'babbage': '1000', // eslint-disable-line\n 'femtoether': '1000', // eslint-disable-line\n 'mwei': '1000000', // eslint-disable-line\n 'Mwei': '1000000', // eslint-disable-line\n 'lovelace': '1000000', // eslint-disable-line\n 'picoether': '1000000', // eslint-disable-line\n 'gwei': '1000000000', // eslint-disable-line\n 'Gwei': '1000000000', // eslint-disable-line\n 'shannon': '1000000000', // eslint-disable-line\n 'nanoether': '1000000000', // eslint-disable-line\n 'nano': '1000000000', // eslint-disable-line\n 'szabo': '1000000000000', // eslint-disable-line\n 'microether': '1000000000000', // eslint-disable-line\n 'micro': '1000000000000', // eslint-disable-line\n 'finney': '1000000000000000', // eslint-disable-line\n 'milliether': '1000000000000000', // eslint-disable-line\n 'milli': '1000000000000000', // eslint-disable-line\n 'ether': '1000000000000000000', // eslint-disable-line\n 'kether': '1000000000000000000000', // eslint-disable-line\n 'grand': '1000000000000000000000', // eslint-disable-line\n 'mether': '1000000000000000000000000', // eslint-disable-line\n 'gether': '1000000000000000000000000000', // eslint-disable-line\n 'tether': '1000000000000000000000000000000' };\n\n/**\n * Returns value of unit in Wei\n *\n * @method getValueOfUnit\n * @param {String} unit the unit to convert to, default ether\n * @returns {BigNumber} value of the unit (in Wei)\n * @throws error if the unit is not correct:w\n */\nfunction getValueOfUnit(unitInput) {\n var unit = unitInput ? unitInput.toLowerCase() : 'ether';\n var unitValue = unitMap[unit]; // eslint-disable-line\n\n if (typeof unitValue !== 'string') {\n throw new Error('[ethjs-unit] the unit provided ' + unitInput + ' doesn\\'t exists, please use the one of the following units ' + JSON.stringify(unitMap, null, 2));\n }\n\n return new BN(unitValue, 10);\n}\n\nfunction numberToString(arg) {\n if (typeof arg === 'string') {\n if (!arg.match(/^-?[0-9.]+$/)) {\n throw new Error('while converting number to string, invalid number value \\'' + arg + '\\', should be a number matching (^-?[0-9.]+).');\n }\n return arg;\n } else if (typeof arg === 'number') {\n return String(arg);\n } else if (typeof arg === 'object' && arg.toString && (arg.toTwos || arg.dividedToIntegerBy)) {\n if (arg.toPrecision) {\n return String(arg.toPrecision());\n } else {\n // eslint-disable-line\n return arg.toString(10);\n }\n }\n throw new Error('while converting number to string, invalid number value \\'' + arg + '\\' type ' + typeof arg + '.');\n}\n\nfunction fromWei(weiInput, unit, optionsInput) {\n var wei = numberToBN(weiInput); // eslint-disable-line\n var negative = wei.lt(zero); // eslint-disable-line\n var base = getValueOfUnit(unit);\n var baseLength = unitMap[unit].length - 1 || 1;\n var options = optionsInput || {};\n\n if (negative) {\n wei = wei.mul(negative1);\n }\n\n var fraction = wei.mod(base).toString(10); // eslint-disable-line\n\n while (fraction.length < baseLength) {\n fraction = '0' + fraction;\n }\n\n if (!options.pad) {\n fraction = fraction.match(/^([0-9]*[1-9]|0)(0*)/)[1];\n }\n\n var whole = wei.div(base).toString(10); // eslint-disable-line\n\n if (options.commify) {\n whole = whole.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n }\n\n var value = '' + whole + (fraction == '0' ? '' : '.' + fraction); // eslint-disable-line\n\n if (negative) {\n value = '-' + value;\n }\n\n return value;\n}\n\nfunction toWei(etherInput, unit) {\n var ether = numberToString(etherInput); // eslint-disable-line\n var base = getValueOfUnit(unit);\n var baseLength = unitMap[unit].length - 1 || 1;\n\n // Is it negative?\n var negative = ether.substring(0, 1) === '-'; // eslint-disable-line\n if (negative) {\n ether = ether.substring(1);\n }\n\n if (ether === '.') {\n throw new Error('[ethjs-unit] while converting number ' + etherInput + ' to wei, invalid value');\n }\n\n // Split it into a whole and fractional part\n var comps = ether.split('.'); // eslint-disable-line\n if (comps.length > 2) {\n throw new Error('[ethjs-unit] while converting number ' + etherInput + ' to wei, too many decimal points');\n }\n\n var whole = comps[0],\n fraction = comps[1]; // eslint-disable-line\n\n if (!whole) {\n whole = '0';\n }\n if (!fraction) {\n fraction = '0';\n }\n if (fraction.length > baseLength) {\n throw new Error('[ethjs-unit] while converting number ' + etherInput + ' to wei, too many decimal places');\n }\n\n while (fraction.length < baseLength) {\n fraction += '0';\n }\n\n whole = new BN(whole);\n fraction = new BN(fraction);\n var wei = whole.mul(base).add(fraction); // eslint-disable-line\n\n if (negative) {\n wei = wei.mul(negative1);\n }\n\n return new BN(wei.toString(10), 10);\n}\n\nmodule.exports = {\n unitMap: unitMap,\n numberToString: numberToString,\n getValueOfUnit: getValueOfUnit,\n fromWei: fromWei,\n toWei: toWei\n};","const eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n switch (op) {\n case '===':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a === b\n\n case '!==':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError(`Invalid operator: ${op}`)\n }\n}\nmodule.exports = cmp\n","'use strict';\nvar aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n","const {Cell} = require(\"../../boc\");\nconst {\n Address,\n BN,\n base64ToBytes\n} = require(\"../../utils\");\nconst {WalletContract} = require(\"../wallet/WalletContract\");\n\nconst WALLET_ID_BASE = 698983191;\n\nclass LockupWalletV1 extends WalletContract {\n\n /**\n * @param provider {HttpProvider}\n * @param options {{publicKey?: Uint8Array, address?: Address | string, wc?: number, config: any}}\n *\n * Config json is {config}\n */\n constructor(provider, options) {\n // options.config:\n // {\n // wallet_type: \"lockup-0.1\",\n // config_pubkey: ,\n // allowed_destinations: [ \"addr1\", \"addr2\", ... ]\n // }\n\n options.code = Cell.oneFromBoc(\"B5EE9C7241021E01000261000114FF00F4A413F4BCF2C80B010201200203020148040501F2F28308D71820D31FD31FD31F802403F823BB13F2F2F003802251A9BA1AF2F4802351B7BA1BF2F4801F0BF9015410C5F9101AF2F4F8005057F823F0065098F823F0062071289320D74A8E8BD30731D4511BDB3C12B001E8309229A0DF72FB02069320D74A96D307D402FB00E8D103A4476814154330F004ED541D0202CD0607020120131402012008090201200F100201200A0B002D5ED44D0D31FD31FD3FFD3FFF404FA00F404FA00F404D1803F7007434C0C05C6C2497C0F83E900C0871C02497C0F80074C7C87040A497C1383C00D46D3C00608420BABE7114AC2F6C2497C338200A208420BABE7106EE86BCBD20084AE0840EE6B2802FBCBD01E0C235C62008087E4055040DBE4404BCBD34C7E00A60840DCEAA7D04EE84BCBD34C034C7CC0078C3C412040DD78CA00C0D0E00130875D27D2A1BE95B0C60000C1039480AF00500161037410AF0050810575056001010244300F004ED540201201112004548E1E228020F4966FA520933023BB9131E2209835FA00D113A14013926C21E2B3E6308003502323287C5F287C572FFC4F2FFFD00007E80BD00007E80BD00326000431448A814C4E0083D039BE865BE803444E800A44C38B21400FE809004E0083D10C06002012015160015BDE9F780188242F847800C02012017180201481B1C002DB5187E006D88868A82609E00C6207E00C63F04EDE20B30020158191A0017ADCE76A268699F98EB85FFC00017AC78F6A268698F98EB858FC00011B325FB513435C2C7E00017B1D1BE08E0804230FB50F620002801D0D3030178B0925B7FE0FA4031FA403001F001A80EDAA4\");\n super(provider, options);\n if (!this.options.walletId) this.options.walletId = WALLET_ID_BASE + this.options.wc;\n\n this.methods.getPublicKey = this.getPublicKey.bind(this);\n this.methods.getWalletId = this.getWalletId.bind(this);\n this.methods.getLiquidBalance = this.getLiquidBalance.bind(this);\n this.methods.getNominalRestrictedBalance = this.getNominalRestrictedBalance.bind(this);\n this.methods.getNominalLockedBalance = this.getNominalLockedBalance.bind(this);\n }\n\n getName() {\n return 'lockup-0.1';\n }\n\n /**\n * @override\n * @private\n * @param seqno? {number}\n * @param expireAt?: {number}\n * @param withoutOp? {boolean}\n * @return {Cell}\n */\n createSigningMessage(seqno, expireAt, withoutOp) {\n seqno = seqno || 0;\n expireAt = expireAt || (Math.floor(Date.now() / 1e3) + 60);\n const message = new Cell();\n message.bits.writeUint(this.options.walletId, 32);\n if (seqno === 0) {\n // message.bits.writeInt(-1, 32);// todo: dont work\n for (let i = 0; i < 32; i++) {\n message.bits.writeBit(1);\n }\n } else {\n message.bits.writeUint(expireAt, 32);\n }\n message.bits.writeUint(seqno, 32);\n return message;\n }\n\n /**\n * @override\n * @return {Cell} cell contains wallet data\n */\n createDataCell() {\n // from restricted.fc:\n // .store_int(seqno, 32)\n // .store_int(subwallet_id, 32)\n // .store_uint(public_key, 256)\n // .store_uint(config_public_key, 256)\n // .store_dict(allowed_destinations)\n // .store_grams(total_locked_value)\n // .store_dict(locked)\n // .store_grams(total_restricted_value)\n // .store_dict(restricted).end_cell();\n\n const cell = new Cell();\n cell.bits.writeUint(0, 32); // seqno\n cell.bits.writeUint(this.options.walletId, 32);\n cell.bits.writeBytes(this.options.publicKey);\n\n // TODO: write config.config_public_key (need to sort out encoding - the params come in base64),\n // TODO: write the dict of allowed destinations (address is a key to an empty value).\n cell.bits.writeBytes(base64ToBytes(this.options.config.config_public_key));\n if (this.options.config.allowed_destinations) {\n cell.bits.writeUint(1, 1);\n cell.refs.push(Cell.oneFromBoc(base64ToBytes(this.options.config.allowed_destinations)));\n } else {\n cell.bits.writeUint(0, 1);\n }\n\n cell.bits.writeGrams(0); // .store_grams(total_locked_value)\n cell.bits.writeUint(0, 1); // empty locked dict\n cell.bits.writeGrams(0); // .store_grams(total_restricted_value)\n cell.bits.writeUint(0, 1); // empty locked dict\n return cell;\n }\n\n /**\n * @return {Promise}\n */\n async getWalletId() {\n const myAddress = await this.getAddress();\n const id = await this.provider.call2(myAddress.toString(), 'get_subwallet_id');\n return id.toNumber();\n }\n\n /**\n * @return {Promise}\n */\n async getPublicKey() {\n const myAddress = await this.getAddress();\n return this.provider.call2(myAddress.toString(), 'get_public_key');\n }\n\n\n /**\n * @return {Promise} Amount of nanotoncoins that can be spent immediately.\n */\n async getLiquidBalance() {\n const balances = await this.getBalances();\n return balances[0] - balances[1] - balances[2];\n }\n\n /**\n * @return {Promise} Amount of nanotoncoins that can be spent after the timelock OR to the whitelisted addresses.\n */\n async getNominalRestrictedBalance() {\n return await this.getBalances()[1];\n }\n\n /**\n * @return {Promise} Amount of nanotoncoins that can be spent after the timelock only (whitelisted addresses not used).\n */\n async getNominalLockedBalance() {\n return await this.getBalances()[2];\n }\n\n /**\n * @return {Promise<[BN,BN,BN]>} Total amount of nanotoncoins on the contract,\n * nominal restricted value\n * nominal locked value\n */\n async getBalances() {\n const myAddress = await this.getAddress();\n return this.provider.call2(myAddress.toString(), 'get_balances');\n }\n}\n\nLockupWalletV1.WALLET_ID_BASE = WALLET_ID_BASE;\n\nmodule.exports = {LockupWalletV1};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw new $TypeError(tryToString(argument) + ' is not a function');\n};\n","'use strict';\nmodule.exports = typeof navigator != 'undefined' && String(navigator.userAgent) || '';\n","const SemVer = require('../classes/semver')\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n","'use strict';\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (O, P) {\n if (!delete O[P]) throw new $TypeError('Cannot delete property ' + tryToString(P) + ' of ' + tryToString(O));\n};\n","'use strict';\n// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n return it === null || it === undefined;\n};\n","const {Contract} = require(\"../../index\");\nconst {Cell} = require(\"../../../boc\");\nconst {createOffchainUriCell, parseOffchainUriCell, parseAddress} = require(\"../nft/NftUtils\");\nconst {Address, BN, bytesToBase64} = require(\"../../../utils\");\n\nclass JettonMinter extends Contract {\n\n /**\n * @param provider\n * @param options {{adminAddress: Address, jettonContentUri: string, jettonWalletCodeHex: string, address?: Address | string, code?: Cell}}\n */\n constructor(provider, options) {\n options.wc = 0;\n options.code = options.code || Cell.oneFromBoc('B5EE9C7241020B010001ED000114FF00F4A413F4BCF2C80B0102016202030202CC040502037A60090A03EFD9910E38048ADF068698180B8D848ADF07D201800E98FE99FF6A2687D007D206A6A18400AA9385D47181A9AA8AAE382F9702480FD207D006A18106840306B90FD001812881A28217804502A906428027D012C678B666664F6AA7041083DEECBEF29385D71811A92E001F1811802600271812F82C207F97840607080093DFC142201B82A1009AA0A01E428027D012C678B00E78B666491646580897A007A00658064907C80383A6465816503E5FFE4E83BC00C646582AC678B28027D0109E5B589666664B8FD80400FE3603FA00FA40F82854120870542013541403C85004FA0258CF1601CF16CCC922C8CB0112F400F400CB00C9F9007074C8CB02CA07CBFFC9D05008C705F2E04A12A1035024C85004FA0258CF16CCCCC9ED5401FA403020D70B01C3008E1F8210D53276DB708010C8CB055003CF1622FA0212CB6ACB1FCB3FC98042FB00915BE200303515C705F2E049FA403059C85004FA0258CF16CCCCC9ED54002E5143C705F2E049D43001C85004FA0258CF16CCCCC9ED54007DADBCF6A2687D007D206A6A183618FC1400B82A1009AA0A01E428027D012C678B00E78B666491646580897A007A00658064FC80383A6465816503E5FFE4E840001FAF16F6A2687D007D206A6A183FAA904051007F09');\n super(provider, options);\n }\n\n /**\n * @override\n * @private\n * @return {Cell} cell contains jetton minter data\n */\n createDataCell() {\n const cell = new Cell();\n cell.bits.writeCoins(0); // total supply\n cell.bits.writeAddress(this.options.adminAddress);\n cell.refs[0] = createOffchainUriCell(this.options.jettonContentUri);\n cell.refs[1] = Cell.oneFromBoc(this.options.jettonWalletCodeHex);\n return cell;\n }\n\n /**\n * params {{jettonAmount: BN, destination: Address, amount: BN, queryId?: number}}\n * @return {Cell}\n */\n createMintBody(params) {\n const body = new Cell();\n body.bits.writeUint(21, 32); // OP mint\n body.bits.writeUint(params.queryId || 0, 64); // query_id\n body.bits.writeAddress(params.destination);\n body.bits.writeCoins(params.amount); // in Toncoins\n\n const transferBody = new Cell(); // internal transfer\n transferBody.bits.writeUint(0x178d4519, 32); // internal_transfer op\n transferBody.bits.writeUint(params.queryId || 0, 64);\n transferBody.bits.writeCoins(params.jettonAmount);\n transferBody.bits.writeAddress(null); // from_address\n transferBody.bits.writeAddress(null); // response_address\n transferBody.bits.writeCoins(new BN(0)); // forward_amount\n transferBody.bits.writeBit(false); // forward_payload in this slice, not separate cell\n\n body.refs[0] = transferBody;\n return body;\n }\n\n /**\n * params {{queryId?: number, newAdminAddress: Address}}\n * @return {Cell}\n */\n createChangeAdminBody(params) {\n if (params.newAdminAddress === undefined) throw new Error('Specify newAdminAddress');\n\n const body = new Cell();\n body.bits.writeUint(3, 32); // OP\n body.bits.writeUint(params.queryId || 0, 64); // query_id\n body.bits.writeAddress(params.newAdminAddress);\n return body;\n }\n\n /**\n * params {{jettonContentUri: string, queryId?: number}}\n * @return {Cell}\n */\n createEditContentBody(params) {\n const body = new Cell();\n body.bits.writeUint(4, 32); // OP\n body.bits.writeUint(params.queryId || 0, 64); // query_id\n body.refs[0] = createOffchainUriCell(params.jettonContentUri);\n return body;\n }\n\n /**\n * @return {Promise<{ totalSupply: BN, isMutable: boolean, adminAddress: Address|null, jettonContentCell: Cell, jettonContentUri: string|null, jettonWalletCode: Cell }>}\n */\n async getJettonData() {\n const myAddress = await this.getAddress();\n const result = await this.provider.call2(myAddress.toString(), 'get_jetton_data');\n\n const totalSupply = result[0];\n const isMutable = result[1].toNumber() === -1;\n const adminAddress = parseAddress(result[2]);\n const jettonContentCell = result[3];\n let jettonContentUri = null;\n try {\n jettonContentUri = parseOffchainUriCell(jettonContentCell);\n } catch (e) {\n }\n const jettonWalletCode = result[4];\n\n return {totalSupply, isMutable, adminAddress, jettonContentCell, jettonContentUri, jettonWalletCode};\n }\n\n /**\n * params {{ownerAddress: Address}}\n * @return {Promise
}\n */\n async getJettonWalletAddress(ownerAddress) {\n const myAddress = await this.getAddress();\n const cell = new Cell()\n cell.bits.writeAddress(ownerAddress)\n\n const result = await this.provider.call2(\n myAddress.toString(),\n 'get_wallet_address',\n [['tvm.Slice', bytesToBase64(await cell.toBoc(false))]],\n );\n return parseAddress(result)\n }\n\n}\n\nmodule.exports = {JettonMinter};\n","const {Cell} = require(\"../../boc\");\nconst {WalletContract} = require(\"./WalletContract\");\nconst {parseWalletV3TransferQuery, parseWalletV3TransferBody} = require(\"./WalletQueryParser\");\n\nclass WalletV3ContractBase extends WalletContract {\n\n /**\n * @override\n * @private\n * @param seqno? {number}\n * @param expireAt? {number}\n * @return {Cell}\n */\n createSigningMessage(seqno, expireAt) {\n seqno = seqno || 0;\n expireAt = expireAt || (Math.floor(Date.now() / 1e3) + 60);\n const message = new Cell();\n message.bits.writeUint(this.options.walletId, 32);\n if (seqno === 0) {\n // message.bits.writeInt(-1, 32);// todo: dont work\n for (let i = 0; i < 32; i++) {\n message.bits.writeBit(1);\n }\n } else {\n message.bits.writeUint(expireAt, 32);\n }\n message.bits.writeUint(seqno, 32);\n return message;\n }\n\n /**\n * @override\n * @return {Cell} cell contains wallet data\n */\n createDataCell() {\n const cell = new Cell();\n cell.bits.writeUint(0, 32);\n cell.bits.writeUint(this.options.walletId, 32);\n cell.bits.writeBytes(this.options.publicKey);\n return cell;\n }\n}\n\nclass WalletV3ContractR1 extends WalletV3ContractBase {\n /**\n * @param provider {HttpProvider}\n * @param options {any}\n */\n constructor(provider, options) {\n options.code = Cell.oneFromBoc(\"B5EE9C724101010100620000C0FF0020DD2082014C97BA9730ED44D0D70B1FE0A4F2608308D71820D31FD31FD31FF82313BBF263ED44D0D31FD31FD3FFD15132BAF2A15144BAF2A204F901541055F910F2A3F8009320D74A96D307D402FB00E8D101A4C8CB1FCB1FCBFFC9ED543FBE6EE0\");\n super(provider, options);\n if (!this.options.walletId) this.options.walletId = 698983191 + this.options.wc;\n }\n\n getName() {\n return 'v3R1';\n }\n}\n\nWalletV3ContractR1.parseTransferQuery = parseWalletV3TransferQuery;\nWalletV3ContractR1.parseTransferBody = parseWalletV3TransferBody;\n\nclass WalletV3ContractR2 extends WalletV3ContractBase {\n /**\n * @param provider {HttpProvider}\n * @param options {any}\n */\n constructor(provider, options) {\n options.code = Cell.oneFromBoc(\"B5EE9C724101010100710000DEFF0020DD2082014C97BA218201339CBAB19F71B0ED44D0D31FD31F31D70BFFE304E0A4F2608308D71820D31FD31FD31FF82313BBF263ED44D0D31FD31FD3FFD15132BAF2A15144BAF2A204F901541055F910F2A3F8009320D74A96D307D402FB00E8D101A4C8CB1FCB1FCBFFC9ED5410BD6DAD\");\n super(provider, options);\n if (!this.options.walletId) this.options.walletId = 698983191 + this.options.wc;\n }\n\n getName() {\n return 'v3R2';\n }\n}\n\nWalletV3ContractR2.parseTransferQuery = parseWalletV3TransferQuery;\nWalletV3ContractR2.parseTransferBody = parseWalletV3TransferBody;\n\nmodule.exports = {WalletV3ContractR1, WalletV3ContractR2};\n\n","'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","const {crc16, hexToBytes, bytesToHex, stringToBytes, base64toString, stringToBase64} = require(\"./Utils\");\n\nconst bounceable_tag = 0x11;\nconst non_bounceable_tag = 0x51;\nconst test_flag = 0x80;\n\n/**\n * @private\n * @param addressString {string}\n * @return {{isTestOnly: boolean, workchain: number, hashPart: Uint8Array, isBounceable: boolean}}\n */\nfunction parseFriendlyAddress(addressString) {\n if (addressString.length !== 48) {\n throw new Error(`User-friendly address should contain strictly 48 characters`);\n }\n const data = stringToBytes(base64toString(addressString));\n if (data.length !== 36) { // 1byte tag + 1byte workchain + 32 bytes hash + 2 byte crc\n throw \"Unknown address type: byte length is not equal to 36\";\n }\n const addr = data.slice(0, 34);\n const crc = data.slice(34, 36);\n const calcedCrc = crc16(addr);\n if (!(calcedCrc[0] === crc[0] && calcedCrc[1] === crc[1])) {\n throw \"Wrong crc16 hashsum\";\n }\n let tag = addr[0];\n let isTestOnly = false;\n let isBounceable = false;\n if (tag & test_flag) {\n isTestOnly = true;\n tag = tag ^ test_flag;\n }\n if ((tag !== bounceable_tag) && (tag !== non_bounceable_tag))\n throw \"Unknown address tag\";\n\n isBounceable = tag === bounceable_tag;\n\n let workchain = null;\n if (addr[1] === 0xff) { // TODO we should read signed integer here\n workchain = -1;\n } else {\n workchain = addr[1];\n }\n if (workchain !== 0 && workchain !== -1) throw new Error('Invalid address wc ' + workchain);\n\n const hashPart = addr.slice(2, 34);\n return {isTestOnly, isBounceable, workchain, hashPart};\n}\n\nclass Address {\n /**\n * @param anyForm {string | Address}\n */\n static isValid(anyForm) {\n try {\n new Address(anyForm);\n return true;\n } catch (e) {\n return false;\n }\n }\n\n /**\n * @param anyForm {string | Address}\n */\n constructor(anyForm) {\n if (anyForm == null) {\n throw \"Invalid address\";\n }\n\n if (anyForm instanceof Address) {\n this.wc = anyForm.wc;\n this.hashPart = anyForm.hashPart;\n this.isTestOnly = anyForm.isTestOnly;\n this.isUserFriendly = anyForm.isUserFriendly;\n this.isBounceable = anyForm.isBounceable;\n this.isUrlSafe = anyForm.isUrlSafe;\n return;\n }\n\n if (anyForm.search(/\\-/) > 0 || anyForm.search(/_/) > 0) {\n this.isUrlSafe = true;\n anyForm = anyForm.replace(/\\-/g, '+').replace(/_/g, '\\/');\n } else {\n this.isUrlSafe = false;\n }\n if (anyForm.indexOf(':') > -1) {\n const arr = anyForm.split(':');\n if (arr.length !== 2) throw new Error('Invalid address ' + anyForm);\n const wc = parseInt(arr[0]);\n if (wc !== 0 && wc !== -1) throw new Error('Invalid address wc ' + anyForm);\n const hex = arr[1];\n if (hex.length !== 64) throw new Error('Invalid address hex ' + anyForm);\n this.isUserFriendly = false;\n this.wc = wc;\n this.hashPart = hexToBytes(hex);\n this.isTestOnly = false;\n this.isBounceable = false;\n } else {\n this.isUserFriendly = true;\n const parseResult = parseFriendlyAddress(anyForm);\n this.wc = parseResult.workchain;\n this.hashPart = parseResult.hashPart;\n this.isTestOnly = parseResult.isTestOnly;\n this.isBounceable = parseResult.isBounceable;\n }\n }\n\n /**\n * @param isUserFriendly? {boolean}\n * @param isUrlSafe? {boolean}\n * @param isBounceable? {boolean}\n * @param isTestOnly? {boolean}\n * @return {string}\n */\n toString(isUserFriendly,\n isUrlSafe,\n isBounceable,\n isTestOnly) {\n\n if (isUserFriendly === undefined) isUserFriendly = this.isUserFriendly;\n if (isUrlSafe === undefined) isUrlSafe = this.isUrlSafe;\n if (isBounceable === undefined) isBounceable = this.isBounceable;\n if (isTestOnly === undefined) isTestOnly = this.isTestOnly;\n\n if (!isUserFriendly) {\n return this.wc + \":\" + bytesToHex(this.hashPart);\n } else {\n let tag = isBounceable ? bounceable_tag : non_bounceable_tag;\n if (isTestOnly) {\n tag |= test_flag;\n }\n\n const addr = new Int8Array(34);\n addr[0] = tag;\n addr[1] = this.wc;\n addr.set(this.hashPart, 2);\n\n const addressWithChecksum = new Uint8Array(36);\n addressWithChecksum.set(addr);\n addressWithChecksum.set(crc16(addr), 34);\n let addressBase64 = stringToBase64(String.fromCharCode.apply(null, new Uint8Array(addressWithChecksum)));\n\n if (isUrlSafe) {\n addressBase64 = addressBase64.replace(/\\+/g, '-').replace(/\\//g, '_');\n }\n return addressBase64;\n }\n }\n}\n\nmodule.exports.default = Address;\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","'use strict';\nvar global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.dontCallGetSet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || defineGlobalProperty(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.dontCallGetSet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty == typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n defineBuiltIn(target, key, sourceProperty, options);\n }\n};\n","const compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n","const compare = require('./compare')\nconst rcompare = (a, b, loose) => compare(b, a, loose)\nmodule.exports = rcompare\n","const {BN} = require(\"../../utils\");\n\n/**\n * @param slice {Slice}\n * @return {{seqno: number, bounce: boolean, payload: string, expireAt: number, toAddress: Address, value: BN}}\n */\nfunction parseWalletV3TransferBody(slice) {\n const signature = slice.loadBits(512);\n\n // signing message\n\n const walletId = slice.loadUint(32).toNumber();\n if (walletId !== 698983191) throw new Error('invalid walletId');\n\n const expireAt = slice.loadUint(32).toNumber();\n\n const seqno = slice.loadUint(32).toNumber();\n\n const sendMode = slice.loadUint(8).toNumber();\n if (sendMode !== 3) throw new Error('invalid sendMode');\n\n let order = slice.loadRef();\n\n // order internal header\n if (order.loadBit()) throw Error('invalid internal header');\n if (!order.loadBit()) throw Error('invalid ihrDisabled');\n const bounce = order.loadBit();\n if (order.loadBit()) throw Error('invalid bounced');\n const sourceAddress = order.loadAddress();\n if (sourceAddress !== null) throw Error('invalid externalSourceAddress');\n const destAddress = order.loadAddress();\n const value = order.loadCoins();\n\n if (order.loadBit()) throw Error('invalid currencyCollection');\n const ihrFees = order.loadCoins();\n if (!ihrFees.eq(new BN(0))) throw new Error('invalid ihrFees');\n const fwdFees = order.loadCoins();\n if (!fwdFees.eq(new BN(0))) throw new Error('invalid fwdFees');\n const createdLt = order.loadUint(64);\n if (!createdLt.eq(new BN(0))) throw new Error('invalid createdLt');\n const createdAt = order.loadUint(32);\n if (!createdAt.eq(new BN(0))) throw new Error('invalid createdAt');\n\n // order stateInit\n if (order.loadBit()) {\n order.loadRef(); // don't parse stateInit\n }\n\n // order body\n let payload = null;\n\n if (order.getFreeBits() > 0) {\n if (order.loadBit()) {\n order = order.loadRef();\n }\n\n if (order.getFreeBits() > 32) {\n const op = order.loadUint(32);\n const payloadBytes = order.loadBits(order.getFreeBits());\n payload = op.eq(new BN(0)) ? new TextDecoder().decode(payloadBytes) : '';\n }\n }\n\n // console.log(bytesToHex(signature));\n // console.log(walletId);\n // console.log(expireAt);\n // console.log(seqno);\n // console.log(sendMode);\n // console.log(bounce);\n // console.log(sourceAddress?.toString(true, true, true));\n // console.log(destAddress?.toString(true, true, true));\n // console.log(value.toNumber());\n // console.log(ihrFees);\n // console.log(fwdFees);\n // console.log(createdLt);\n // console.log(createdAt);\n // console.log(payload);\n\n return {\n toAddress: destAddress,\n value,\n bounce,\n seqno,\n expireAt,\n payload\n };\n}\n\n/**\n * @param cell {Cell}\n * @return {{seqno: number, bounce: boolean, payload: string, fromAddress: Address|null, expireAt: number, toAddress: Address, value: BN}}\n */\nfunction parseWalletV3TransferQuery(cell) {\n const slice = cell.beginParse();\n\n // header\n\n if (slice.loadUint(2).toNumber() !== 2) throw Error('invalid header');\n\n const externalSourceAddress = slice.loadAddress();\n if (externalSourceAddress !== null) throw Error('invalid externalSourceAddress');\n\n const externalDestAddress = slice.loadAddress();\n\n const externalImportFee = slice.loadCoins();\n if (!externalImportFee.eq(new BN(0))) throw new Error('invalid externalImportFee');\n\n // stateInit\n\n if (slice.loadBit()) {\n if (slice.loadBit()) {\n slice.loadRef(); // don't parse stateInit\n }\n }\n\n // body\n\n const bodySlice = slice.loadBit() ? slice.loadRef() : slice;\n\n // console.log(externalSourceAddress);\n // console.log(externalDestAddress.toString(true, true, true));\n // console.log(externalImportFee);\n\n return {\n fromAddress: externalDestAddress,\n ...parseWalletV3TransferBody(bodySlice)\n };\n}\n\nmodule.exports = {parseWalletV3TransferQuery, parseWalletV3TransferBody};\n","// NOTE: \"mc\" means masterchain, \"shards\" means shardchains\n\nconst MC_INTERVAL = 10 * 1000;\nconst SHARDS_INTERVAL = 1 * 1000;\n\nconst parseShardBlockNumber = x => {\n return {\n workchain: x.workchain,\n shardId: x.shard,\n shardBlockNumber: x.seqno\n }\n}\n\nclass BlockSubscription {\n\n /**\n * @param provider {TonWeb.HttpProvider}\n * @param storage persistent storage for storing block numbers that we have already processed.\n * @param onBlock {(blockHeader: BlockHeader) => Promise} callback which is called for of each block.\n * callback may throw an error, in this case the block processing will be interrupted and block will not be saved in the storage as processed.\n * shardchain blocks are processed OUT of chronological order.\n * masterchain blocks are processed in chronological order.\n * for masterchain workchain === -1 and shardId === '-9223372036854775808'\n * @param options? {startMcBlockNumber:? number, mcInterval?: number, shardsInterval?: number} start masterchain block number from which we start to process blocks.\n * if not specified, the subscription starts from the last block of the network at the time of launch.\n */\n constructor(provider, storage, onBlock, options) {\n this.provider = provider;\n this.storage = storage;\n this.onBlock = onBlock;\n this.startMcBlockNumber = options ? options.startMcBlockNumber : undefined;\n this.mcInterval = (options ? options.mcInterval : undefined) || MC_INTERVAL;\n this.shardsInterval = (options ? options.shardsInterval : undefined) || SHARDS_INTERVAL;\n }\n\n async start() {\n this.stop();\n\n if (!this.startMcBlockNumber) {\n this.startMcBlockNumber = (await this.provider.getMasterchainInfo()).last.seqno;\n if (!this.startMcBlockNumber) throw new Error('Cannot get start mc block number from provider');\n }\n const startMcBlockHeader = await this.provider.getMasterchainBlockHeader(this.startMcBlockNumber);\n this.startLT = startMcBlockHeader.end_lt;\n if (!this.startLT) throw new Error('Cannot get startLT from provider');\n\n // MASTERCHAIN\n\n let isMcProcessing = false;\n\n const mcTick = async () => {\n if (isMcProcessing) return;\n\n isMcProcessing = true;\n\n try {\n const lastSavedMcBlock = await this.storage.getLastMasterchainBlockNumber() || this.startMcBlockNumber;\n if (!lastSavedMcBlock) throw new Error('no init masterchain block in storage');\n const lastMcBlock = (await this.provider.getMasterchainInfo()).last.seqno;\n if (!lastMcBlock) throw new Error('invalid last masterchain block from provider');\n\n for (let i = lastSavedMcBlock + 1; i < lastMcBlock; i++) {\n const blockShards = await this.provider.getBlockShards(i);\n const blockHeader = await this.provider.getMasterchainBlockHeader(i);\n await this.onBlock(blockHeader, blockShards);\n await this.storage.insertBlocks(i, blockShards.shards.map(parseShardBlockNumber));\n }\n } catch (e) {\n console.error(e);\n }\n\n isMcProcessing = false;\n }\n\n this.mcIntervalId = setInterval(() => mcTick(), this.mcInterval);\n mcTick();\n\n // SHARDCHAINS\n\n let isShardsProcessing = false;\n\n const shardsTick = async () => {\n if (isShardsProcessing) return;\n\n isShardsProcessing = true;\n try {\n const shardBlock = await this.storage.getUnprocessedShardBlock();\n if (shardBlock) {\n const {workchain, shardId, shardBlockNumber} = shardBlock;\n const blockHeader = await this.provider.getBlockHeader(workchain, shardId, shardBlockNumber);\n if (blockHeader.end_lt < this.startLT) {\n await this.storage.setBlockProcessed(workchain, shardId, shardBlockNumber, []);\n } else {\n await this.onBlock(blockHeader);\n const prevBlocks = blockHeader.prev_blocks.map(parseShardBlockNumber);\n await this.storage.setBlockProcessed(workchain, shardId, shardBlockNumber, prevBlocks);\n }\n }\n } catch (e) {\n console.log(e);\n }\n isShardsProcessing = false;\n }\n\n this.shardsIntervalId = setInterval(() => shardsTick(), this.shardsInterval);\n }\n\n stop() {\n clearInterval(this.mcIntervalId);\n clearInterval(this.shardsIntervalId);\n }\n}\n\nmodule.exports = {BlockSubscription};\n","import { Observable } from \"rxjs\";\nimport { log } from \"@ledgerhq/logs\";\nexport const monitorCharacteristic = characteristic => Observable.create(o => {\n log(\"ble-verbose\", \"start monitor \" + characteristic.uuid);\n\n function onCharacteristicValueChanged(event) {\n const characteristic = event.target;\n\n if (characteristic.value) {\n o.next(Buffer.from(characteristic.value.buffer));\n }\n }\n\n characteristic.startNotifications().then(() => {\n characteristic.addEventListener(\"characteristicvaluechanged\", onCharacteristicValueChanged);\n });\n return () => {\n log(\"ble-verbose\", \"end monitor \" + characteristic.uuid);\n characteristic.stopNotifications();\n };\n});\n//# sourceMappingURL=monitorCharacteristic.js.map","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n return function () {\n return call.apply(fn, arguments);\n };\n};\n","'use strict';\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","'use strict';\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (isNullOrUndefined(it)) throw new $TypeError(\"Can't call method on \" + it);\n return it;\n};\n","module.exports = function(originalModule) {\n\tif (!originalModule.webpackPolyfill) {\n\t\tvar module = Object.create(originalModule);\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"exports\", {\n\t\t\tenumerable: true\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","const SemVer = require('../classes/semver')\nconst parse = require('./parse')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst coerce = (version, options) => {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version === 'number') {\n version = String(version)\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n options = options || {}\n\n let match = null\n if (!options.rtl) {\n match = version.match(re[t.COERCE])\n } else {\n // Find the right-most coercible string that does not share\n // a terminus with a more left-ward coercible string.\n // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n //\n // Walk through the string checking with a /g regexp\n // Manually set the index so as to pick up overlapping matches.\n // Stop when we get a match that ends at the string end, since no\n // coercible string can be more right-ward without the same terminus.\n let next\n while ((next = re[t.COERCERTL].exec(version)) &&\n (!match || match.index + match[0].length !== version.length)\n ) {\n if (!match ||\n next.index + next[0].length !== match.index + match[0].length) {\n match = next\n }\n re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length\n }\n // leave it in a clean state\n re[t.COERCERTL].lastIndex = -1\n }\n\n if (match === null) {\n return null\n }\n\n return parse(`${match[2]}.${match[3] || '0'}.${match[4] || '0'}`, options)\n}\nmodule.exports = coerce\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\nmodule.exports = $documentAll.IS_HTMLDDA ? function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it) || it === documentAll;\n} : function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","// parse out just the options we care about\nconst looseOption = Object.freeze({ loose: true })\nconst emptyOpts = Object.freeze({ })\nconst parseOptions = options => {\n if (!options) {\n return emptyOpts\n }\n\n if (typeof options !== 'object') {\n return looseOption\n }\n\n return options\n}\nmodule.exports = parseOptions\n","const {BN, Address, bytesToHex} = require(\"../utils\");\nconst {BitString} = require(\"./BitString\");\n\n/**\n * A partial view of a TVM cell, used for parsing data from Cells.\n */\nclass Slice {\n /**\n * @param array {Uint8Array}\n * @param length {number} length in bits\n * @param refs {Slice[]} child cells\n */\n constructor(array, length, refs) {\n this.array = array;\n this.length = length;\n this.readCursor = 0;\n\n this.refs = refs;\n this.refCursor = 0;\n }\n\n /**\n * @return {number}\n */\n getFreeBits() {\n return this.length - this.readCursor;\n }\n\n /**\n * @private\n * @param n {number}\n */\n checkRange(n) {\n if (n > this.length) {\n throw Error(\"BitString overflow\");\n }\n }\n\n /**\n * @private\n * @param n {number}\n * @return {boolean} bit value at position `n`\n */\n get(n) {\n this.checkRange(n);\n return (this.array[(n / 8) | 0] & (1 << (7 - (n % 8)))) > 0;\n }\n\n /**\n * @return {boolean} read bit\n */\n loadBit() {\n const result = this.get(this.readCursor);\n this.readCursor++;\n return result;\n }\n\n /**\n * @param bitLength {number}\n * @return {Uint8Array}\n */\n loadBits(bitLength) {\n const result = new BitString(bitLength);\n for (let i = 0; i < bitLength; i++) {\n result.writeBit(this.loadBit());\n }\n return result.array;\n }\n\n /**\n * Reads unsigned int\n *\n * @param {number} bitLength Size of uint in bits\n * @returns {BN} number\n */\n loadUint(bitLength) {\n if (bitLength < 1) {\n throw \"Incorrect bitLength\";\n }\n let s = '';\n for (let i = 0; i < bitLength; i++) {\n s += (this.loadBit() ? '1' : '0');\n }\n return new BN(s, 2);\n }\n\n /**\n * Reads signed int\n *\n * @param {number} bitLength Size of uint in bits\n * @returns {BN} number\n */\n loadInt(bitLength) {\n if (bitLength < 1) {\n throw \"Incorrect bitLength\";\n }\n const sign = this.loadBit();\n if (bitLength === 1) {\n return sign ? new BN(-1) : new BN(0);\n }\n let number = this.loadUint(bitLength - 1);\n if (sign) {\n const b = new BN(2);\n const nb = b.pow(new BN(bitLength - 1));\n number = number.sub(nb);\n }\n return number;\n }\n\n /**\n * @param bitLength {number}\n * @return {BN}\n */\n loadVarUint(bitLength) {\n const len = this.loadUint((new BN(bitLength)).toString(2).length - 1);\n if (len.toNumber() === 0) {\n return new BN(0);\n } else {\n return this.loadUint(len * 8);\n }\n }\n\n /**\n * @return {BN}\n */\n loadCoins() {\n return this.loadVarUint(16);\n }\n\n loadAddress() {\n const b = this.loadUint(2);\n if (b.toNumber() === 0) return null; // null address\n if (b.toNumber() !== 2) throw new Error('unsupported address type');\n if (this.loadBit()) throw new Error('unsupported address type');\n const wc = this.loadInt(8).toNumber();\n const hashPart = this.loadBits(256);\n return new Address(wc + ':' + bytesToHex(hashPart));\n }\n\n /**\n * @return {Slice}\n */\n loadRef() {\n if (this.refCursor >= 4) throw new Error('refs overflow');\n const result = this.refs[this.refCursor];\n this.refCursor++;\n return result;\n }\n\n}\n\nmodule.exports = {Slice};","/** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nexport var EMPTY = /*@__PURE__*/ new Observable(function (subscriber) { return subscriber.complete(); });\nexport function empty(scheduler) {\n return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\nfunction emptyScheduled(scheduler) {\n return new Observable(function (subscriber) { return scheduler.schedule(function () { return subscriber.complete(); }); });\n}\n//# sourceMappingURL=empty.js.map\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ findLast, findLastIndex }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_FIND_LAST_INDEX = TYPE === 1;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that);\n var index = lengthOfArrayLike(self);\n var value, result;\n while (index-- > 0) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (result) switch (TYPE) {\n case 0: return value; // findLast\n case 1: return index; // findLastIndex\n }\n }\n return IS_FIND_LAST_INDEX ? -1 : undefined;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.findLast` method\n // https://github.com/tc39/proposal-array-find-from-last\n findLast: createMethod(0),\n // `Array.prototype.findLastIndex` method\n // https://github.com/tc39/proposal-array-find-from-last\n findLastIndex: createMethod(1)\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n$({ global: true }, { Reflect: {} });\n\n// Reflect[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-reflect-@@tostringtag\nsetToStringTag(global.Reflect, 'Reflect', true);\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function getSymbolIterator() {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator';\n }\n return Symbol.iterator;\n}\nexport var iterator = /*@__PURE__*/ getSymbolIterator();\nexport var $$iterator = iterator;\n//# sourceMappingURL=iterator.js.map\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n 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 // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n Buffer = require('buffer').Buffer;\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this._strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex (str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n var z = 0;\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r <<= 4;\n\n var b;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n b = c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n\n r |= b;\n z |= b;\n }\n\n assert(!(z & 0xf0), 'Invalid character in ' + str);\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n }\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n r._strip();\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a !== 7;\n});\n","/** PURE_IMPORTS_START tslib,_Observable,_Subscriber,_Subscription,_util_ObjectUnsubscribedError,_SubjectSubscription,_internal_symbol_rxSubscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Observable } from './Observable';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { SubjectSubscription } from './SubjectSubscription';\nimport { rxSubscriber as rxSubscriberSymbol } from '../internal/symbol/rxSubscriber';\nvar SubjectSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SubjectSubscriber, _super);\n function SubjectSubscriber(destination) {\n var _this = _super.call(this, destination) || this;\n _this.destination = destination;\n return _this;\n }\n return SubjectSubscriber;\n}(Subscriber));\nexport { SubjectSubscriber };\nvar Subject = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(Subject, _super);\n function Subject() {\n var _this = _super.call(this) || this;\n _this.observers = [];\n _this.closed = false;\n _this.isStopped = false;\n _this.hasError = false;\n _this.thrownError = null;\n return _this;\n }\n Subject.prototype[rxSubscriberSymbol] = function () {\n return new SubjectSubscriber(this);\n };\n Subject.prototype.lift = function (operator) {\n var subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n };\n Subject.prototype.next = function (value) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n if (!this.isStopped) {\n var observers = this.observers;\n var len = observers.length;\n var copy = observers.slice();\n for (var i = 0; i < len; i++) {\n copy[i].next(value);\n }\n }\n };\n Subject.prototype.error = function (err) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n this.hasError = true;\n this.thrownError = err;\n this.isStopped = true;\n var observers = this.observers;\n var len = observers.length;\n var copy = observers.slice();\n for (var i = 0; i < len; i++) {\n copy[i].error(err);\n }\n this.observers.length = 0;\n };\n Subject.prototype.complete = function () {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n this.isStopped = true;\n var observers = this.observers;\n var len = observers.length;\n var copy = observers.slice();\n for (var i = 0; i < len; i++) {\n copy[i].complete();\n }\n this.observers.length = 0;\n };\n Subject.prototype.unsubscribe = function () {\n this.isStopped = true;\n this.closed = true;\n this.observers = null;\n };\n Subject.prototype._trySubscribe = function (subscriber) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n else {\n return _super.prototype._trySubscribe.call(this, subscriber);\n }\n };\n Subject.prototype._subscribe = function (subscriber) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n else if (this.hasError) {\n subscriber.error(this.thrownError);\n return Subscription.EMPTY;\n }\n else if (this.isStopped) {\n subscriber.complete();\n return Subscription.EMPTY;\n }\n else {\n this.observers.push(subscriber);\n return new SubjectSubscription(this, subscriber);\n }\n };\n Subject.prototype.asObservable = function () {\n var observable = new Observable();\n observable.source = this;\n return observable;\n };\n Subject.create = function (destination, source) {\n return new AnonymousSubject(destination, source);\n };\n return Subject;\n}(Observable));\nexport { Subject };\nvar AnonymousSubject = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(AnonymousSubject, _super);\n function AnonymousSubject(destination, source) {\n var _this = _super.call(this) || this;\n _this.destination = destination;\n _this.source = source;\n return _this;\n }\n AnonymousSubject.prototype.next = function (value) {\n var destination = this.destination;\n if (destination && destination.next) {\n destination.next(value);\n }\n };\n AnonymousSubject.prototype.error = function (err) {\n var destination = this.destination;\n if (destination && destination.error) {\n this.destination.error(err);\n }\n };\n AnonymousSubject.prototype.complete = function () {\n var destination = this.destination;\n if (destination && destination.complete) {\n this.destination.complete();\n }\n };\n AnonymousSubject.prototype._subscribe = function (subscriber) {\n var source = this.source;\n if (source) {\n return this.source.subscribe(subscriber);\n }\n else {\n return Subscription.EMPTY;\n }\n };\n return AnonymousSubject;\n}(Subject));\nexport { AnonymousSubject };\n//# sourceMappingURL=Subject.js.map\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","'use strict';\nvar global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Symbol = global.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name)) {\n WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n ? Symbol[name]\n : createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n","/** PURE_IMPORTS_START _observable_ConnectableObservable PURE_IMPORTS_END */\nimport { connectableObservableDescriptor } from '../observable/ConnectableObservable';\nexport function multicast(subjectOrSubjectFactory, selector) {\n return function multicastOperatorFunction(source) {\n var subjectFactory;\n if (typeof subjectOrSubjectFactory === 'function') {\n subjectFactory = subjectOrSubjectFactory;\n }\n else {\n subjectFactory = function subjectFactory() {\n return subjectOrSubjectFactory;\n };\n }\n if (typeof selector === 'function') {\n return source.lift(new MulticastOperator(subjectFactory, selector));\n }\n var connectable = Object.create(source, connectableObservableDescriptor);\n connectable.source = source;\n connectable.subjectFactory = subjectFactory;\n return connectable;\n };\n}\nvar MulticastOperator = /*@__PURE__*/ (function () {\n function MulticastOperator(subjectFactory, selector) {\n this.subjectFactory = subjectFactory;\n this.selector = selector;\n }\n MulticastOperator.prototype.call = function (subscriber, source) {\n var selector = this.selector;\n var subject = this.subjectFactory();\n var subscription = selector(subject).subscribe(subscriber);\n subscription.add(source.subscribe(subject));\n return subscription;\n };\n return MulticastOperator;\n}());\nexport { MulticastOperator };\n//# sourceMappingURL=multicast.js.map\n","/** PURE_IMPORTS_START _multicast,_refCount,_Subject PURE_IMPORTS_END */\nimport { multicast } from './multicast';\nimport { refCount } from './refCount';\nimport { Subject } from '../Subject';\nfunction shareSubjectFactory() {\n return new Subject();\n}\nexport function share() {\n return function (source) { return refCount()(multicast(shareSubjectFactory)(source)); };\n}\n//# sourceMappingURL=share.js.map\n","const SemVer = require('../classes/semver')\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n","const {Cell} = require(\"../boc\");\nconst {base64ToBytes} = require(\"../utils\");\nconst HttpProviderUtils = require('./HttpProviderUtils').default;\n\nif (typeof fetch === 'undefined') {\n fetch = require('node-fetch');\n}\n\nconst SHARD_ID_ALL = '-9223372036854775808'; // 0x8000000000000000\n\nclass HttpProvider {\n /**\n * @param host? {string}\n * @param options? {{apiKey: string}}\n */\n constructor(host, options) {\n this.host = host || \"https://toncenter.com/api/v2/jsonRPC\";\n this.options = options || {};\n }\n\n /**\n * @private\n * @param apiUrl {string}\n * @param request {any}\n * @return {Promise}\n */\n sendImpl(apiUrl, request) {\n const headers = {\n 'Content-Type': 'application/json'\n };\n if (this.options.apiKey) {\n headers['X-API-Key'] = this.options.apiKey;\n }\n\n return fetch(apiUrl, {\n method: 'POST',\n headers: headers,\n body: JSON.stringify(request)\n })\n .then((response) => response.json())\n .then(({ result, error }) => result || Promise.reject(error))\n }\n\n /**\n * @param method {string}\n * @param params {any} todo: Array\n * @return {Promise}\n */\n send(method, params) {\n return this.sendImpl(\n this.host,\n {id: 1, jsonrpc: \"2.0\", method: method, params: params}\n );\n }\n\n /**\n * Use this method to get information about address: balance, code, data, last_transaction_id.\n * @param address {string}\n */\n async getAddressInfo(address) {\n return this.send('getAddressInformation', {address: address});\n }\n\n /**\n * Similar to previous one but tries to parse additional information for known contract types. This method is based on generic.getAccountState thus number of recognizable contracts may grow. For wallets we recommend to use getWalletInformation.\n * @param address {string}\n */\n async getExtendedAddressInfo(address) {\n return this.send('getExtendedAddressInformation', {address: address});\n }\n\n /**\n * Use this method to retrieve wallet information, this method parse contract state and currently supports more wallet types than getExtendedAddressInformation: simple wallet, stadart wallet and v3 wallet.\n * @param address {string}\n */\n async getWalletInfo(address) {\n return this.send('getWalletInformation', {address: address});\n }\n\n /**\n * Use this method to get transaction history of a given address.\n * @param address {string}\n * @param limit? {number}\n * @param lt? {number}\n * @param hash? {string}\n * @param to_lt? {number}\n * @return array of transaction object\n */\n async getTransactions(address, limit = 20, lt = undefined, hash = undefined, to_lt = undefined, archival = undefined) {\n return this.send(\"getTransactions\", {address, limit, lt, hash, to_lt, archival});\n };\n\n /**\n * Use this method to get balance (in nanograms) of a given address.\n * @param address {string}\n */\n async getBalance(address) {\n return this.send('getAddressBalance', {address: address});\n }\n\n /**\n * Use this method to send serialized boc file: fully packed and serialized external message.\n * @param base64 {string} base64 of boc bytes Cell.toBoc\n */\n async sendBoc(base64) {\n return this.send(\"sendBoc\", {'boc': base64});\n };\n\n /**\n * @deprecated\n * Send external message\n * @param query object as described https://toncenter.com/api/test/v2/#sendQuerySimple\n */\n async sendQuery(query) {\n return this.send(\"sendQuerySimple\", query);\n };\n\n\n /**\n * @param query object as described https://toncenter.com/api/test/v2/#estimateFee\n * @return fees object\n */\n async getEstimateFee(query) {\n return this.send(\"estimateFee\", query);\n };\n\n /**\n * Invoke get-method of smart contract\n * todo: think about throw error if result.exit_code !== 0 (the change breaks backward compatibility)\n * @param address {string} contract address\n * @param method {string | number} method name or method id\n * @param params? Array of stack elements: [['num',3], ['cell', cell_object], ['slice', slice_object]]\n */\n async call(address, method, params = []) {\n return this.send('runGetMethod', {\n address: address,\n method: method,\n stack: params,\n });\n }\n\n /**\n * Invoke get-method of smart contract\n * @param address {string} contract address\n * @param method {string | number} method name or method id\n * @param params? Array of stack elements: [['num',3], ['cell', cell_object], ['slice', slice_object]]\n */\n async call2(address, method, params = []) {\n const result = await this.send('runGetMethod', {\n address: address,\n method: method,\n stack: params\n });\n return HttpProviderUtils.parseResponse(result);\n }\n\n /**\n * Returns network config param\n * @param configParamId {number}\n * @return {Cell}\n */\n async getConfigParam(configParamId) {\n const rawResult = await this.send('getConfigParam', {\n config_id: configParamId\n });\n if (rawResult['@type'] !== 'configInfo') throw new Error('getConfigParam expected type configInfo');\n if (!rawResult.config) throw new Error('getConfigParam expected config');\n if (rawResult.config['@type'] !== 'tvm.cell') throw new Error('getConfigParam expected type tvm.cell');\n if (!rawResult.config.bytes) throw new Error('getConfigParam expected bytes');\n return Cell.oneFromBoc(base64ToBytes(rawResult.config.bytes));\n }\n\n /**\n * Returns ID's of last and init block of masterchain\n */\n async getMasterchainInfo() {\n return this.send('getMasterchainInfo', {});\n }\n\n /**\n * Returns ID's of shardchain blocks included in this masterchain block\n * @param masterchainBlockNumber {number}\n */\n async getBlockShards(masterchainBlockNumber) {\n return this.send('shards', {\n seqno: masterchainBlockNumber\n });\n }\n\n /**\n * Returns transactions hashes included in this block\n * @param workchain {number}\n * @param shardId {string}\n * @param shardBlockNumber {number}\n */\n async getBlockTransactions(workchain, shardId, shardBlockNumber) {\n return this.send('getBlockTransactions', {\n workchain: workchain,\n shard: shardId,\n seqno: shardBlockNumber\n });\n }\n\n /**\n * Returns transactions hashes included in this masterhcain block\n * @param masterchainBlockNumber {number}\n */\n async getMasterchainBlockTransactions(masterchainBlockNumber) {\n return this.getBlockTransactions(-1, SHARD_ID_ALL, masterchainBlockNumber);\n }\n\n /**\n * Returns block header and his previous blocks ID's\n * @param workchain {number}\n * @param shardId {string}\n * @param shardBlockNumber {number}\n */\n async getBlockHeader(workchain, shardId, shardBlockNumber) {\n return this.send('getBlockHeader', {\n workchain: workchain,\n shard: shardId,\n seqno: shardBlockNumber\n });\n }\n\n /**\n * Returns masterchain block header and his previous block ID\n * @param masterchainBlockNumber {number}\n */\n async getMasterchainBlockHeader(masterchainBlockNumber) {\n return this.getBlockHeader(-1, SHARD_ID_ALL, masterchainBlockNumber);\n }\n}\n\nHttpProvider.SHARD_ID_ALL = SHARD_ID_ALL;\n\nmodule.exports.default = HttpProvider;\n","const {Contract} = require(\"../../index\");\nconst {Cell} = require(\"../../../boc\");\nconst {Address, BN} = require(\"../../../utils\");\nconst {parseAddress, getRoyaltyParams} = require('./NftUtils.js');\nconst {parseOffchainUriCell} = require(\"./NftUtils\");\n\n// https://github.com/ton-blockchain/token-contract/blob/1ad314a98d20b41241d5329e1786fc894ad811de/nft/nft-item.fc\nconst NFT_ITEM_CODE_HEX = 'B5EE9C7241020D010001D0000114FF00F4A413F4BCF2C80B0102016202030202CE04050009A11F9FE00502012006070201200B0C02D70C8871C02497C0F83434C0C05C6C2497C0F83E903E900C7E800C5C75C87E800C7E800C3C00812CE3850C1B088D148CB1C17CB865407E90350C0408FC00F801B4C7F4CFE08417F30F45148C2EA3A1CC840DD78C9004F80C0D0D0D4D60840BF2C9A884AEB8C097C12103FCBC20080900113E910C1C2EBCB8536001F65135C705F2E191FA4021F001FA40D20031FA00820AFAF0801BA121945315A0A1DE22D70B01C300209206A19136E220C2FFF2E192218E3E821005138D91C85009CF16500BCF16712449145446A0708010C8CB055007CF165005FA0215CB6A12CB1FCB3F226EB39458CF17019132E201C901FB00104794102A375BE20A00727082108B77173505C8CBFF5004CF1610248040708010C8CB055007CF165005FA0215CB6A12CB1FCB3F226EB39458CF17019132E201C901FB000082028E3526F0018210D53276DB103744006D71708010C8CB055007CF165005FA0215CB6A12CB1FCB3F226EB39458CF17019132E201C901FB0093303234E25502F003003B3B513434CFFE900835D27080269FC07E90350C04090408F80C1C165B5B60001D00F232CFD633C58073C5B3327B5520BF75041B';\n\nclass NftItem extends Contract {\n /**\n * @param provider\n * @param options {{index: number|BN, collectionAddress: Address, address?: Address | string, code?: Cell}}\n */\n constructor(provider, options) {\n options.wc = 0;\n options.code = options.code || Cell.oneFromBoc(NFT_ITEM_CODE_HEX);\n super(provider, options);\n\n this.methods.getData = this.getData.bind(this);\n }\n\n /**\n * @override\n * @private\n * @return {Cell} cell contains nft data\n */\n createDataCell() {\n const cell = new Cell();\n cell.bits.writeUint(this.options.index, 64);\n cell.bits.writeAddress(this.options.collectionAddress);\n return cell;\n }\n\n /**\n * @return {Promise<{isInitialized: boolean, index: number, itemIndex: BN, collectionAddress: Address|null, ownerAddress: Address|null, contentCell: Cell, contentUri: string|null}>}\n */\n async getData() {\n const myAddress = await this.getAddress();\n const result = await this.provider.call2(myAddress.toString(), 'get_nft_data');\n\n const isInitialized = result[0].toNumber() === -1;\n const itemIndex = result[1];\n let index = NaN;\n try {\n index = itemIndex.toNumber();\n } catch (e) {\n }\n const collectionAddress = parseAddress(result[2]);\n const ownerAddress = isInitialized ? parseAddress(result[3]) : null;\n const contentCell = result[4];\n\n let contentUri = null;\n try {\n contentUri = (isInitialized && collectionAddress === null) ? parseOffchainUriCell(contentCell) : null; // single NFT without collection\n } catch (e) {\n }\n\n return {isInitialized, index, itemIndex, collectionAddress, ownerAddress, contentCell, contentUri};\n }\n\n /**\n * @param params {{queryId?: number, newOwnerAddress: Address, forwardAmount?: BN, forwardPayload?: Uint8Array, responseAddress: Address}}\n */\n async createTransferBody(params) {\n const cell = new Cell();\n cell.bits.writeUint(0x5fcc3d14, 32); // transfer op\n cell.bits.writeUint(params.queryId || 0, 64);\n cell.bits.writeAddress(params.newOwnerAddress);\n cell.bits.writeAddress(params.responseAddress);\n cell.bits.writeBit(false); // null custom_payload\n cell.bits.writeCoins(params.forwardAmount || new BN(0));\n cell.bits.writeBit(false); // forward_payload in this slice, not separate cell\n\n if (params.forwardPayload) {\n cell.bits.writeBytes(params.forwardPayload);\n }\n return cell;\n }\n\n /**\n * params {{queryId?: number}}\n * @return {Cell}\n */\n createGetStaticDataBody(params) {\n const body = new Cell();\n body.bits.writeUint(0x2fcb26a2, 32); // OP\n body.bits.writeUint(params.queryId || 0, 64); // query_id\n return body;\n }\n\n /**\n * for single nft without collection\n * @return {Promise<{royalty: number, royaltyFactor: number, royaltyBase: number, royaltyAddress: Address}>}\n */\n async getRoyaltyParams() {\n const myAddress = await this.getAddress();\n return getRoyaltyParams(this.provider, myAddress.toString());\n }\n\n}\n\nNftItem.codeHex = NFT_ITEM_CODE_HEX;\n\nmodule.exports = {NftItem};","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call -- required for testing\n method.call(null, argument || function () { return 1; }, 1);\n });\n};\n","const {PaymentChannel} = require(\"./PaymentChannel\");\n\nclass Payments {\n /**\n * @param provider {HttpProvider}\n */\n constructor(provider) {\n this.provider = provider;\n }\n\n createChannel(options) {\n return new PaymentChannel(this.provider, options);\n }\n}\n\nmodule.exports = {Payments, PaymentChannel};","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","/** PURE_IMPORTS_START _Observable,_util_isScheduler,_operators_mergeAll,_fromArray PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { isScheduler } from '../util/isScheduler';\nimport { mergeAll } from '../operators/mergeAll';\nimport { fromArray } from './fromArray';\nexport function merge() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i] = arguments[_i];\n }\n var concurrent = Number.POSITIVE_INFINITY;\n var scheduler = null;\n var last = observables[observables.length - 1];\n if (isScheduler(last)) {\n scheduler = observables.pop();\n if (observables.length > 1 && typeof observables[observables.length - 1] === 'number') {\n concurrent = observables.pop();\n }\n }\n else if (typeof last === 'number') {\n concurrent = observables.pop();\n }\n if (scheduler === null && observables.length === 1 && observables[0] instanceof Observable) {\n return observables[0];\n }\n return mergeAll(concurrent)(fromArray(observables, scheduler));\n}\n//# sourceMappingURL=merge.js.map\n","'use strict';\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n var n = +x;\n return (n > 0 ? floor : ceil)(n);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar $Error = Error;\nvar replace = uncurryThis(''.replace);\n\nvar TEST = (function (arg) { return String(new $Error(arg).stack); })('zxcasd');\n// eslint-disable-next-line redos/no-vulnerable -- safe\nvar V8_OR_CHAKRA_STACK_ENTRY = /\\n\\s*at [^:]*:[^\\n]*/;\nvar IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);\n\nmodule.exports = function (stack, dropEntries) {\n if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) {\n while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');\n } return stack;\n};\n","const {BlockSubscription} = require(\"./BlockSubscription\");\nconst {InMemoryBlockStorage} = require(\"./InMemoryBlockStorage\");\n\nmodule.exports = {BlockSubscription, InMemoryBlockStorage};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) === 'String' ? split(it, '') : $Object(it);\n} : $Object;\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nvar ArgumentOutOfRangeErrorImpl = /*@__PURE__*/ (function () {\n function ArgumentOutOfRangeErrorImpl() {\n Error.call(this);\n this.message = 'argument out of range';\n this.name = 'ArgumentOutOfRangeError';\n return this;\n }\n ArgumentOutOfRangeErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype);\n return ArgumentOutOfRangeErrorImpl;\n})();\nexport var ArgumentOutOfRangeError = ArgumentOutOfRangeErrorImpl;\n//# sourceMappingURL=ArgumentOutOfRangeError.js.map\n","const compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nvar ObjectUnsubscribedErrorImpl = /*@__PURE__*/ (function () {\n function ObjectUnsubscribedErrorImpl() {\n Error.call(this);\n this.message = 'object unsubscribed';\n this.name = 'ObjectUnsubscribedError';\n return this;\n }\n ObjectUnsubscribedErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype);\n return ObjectUnsubscribedErrorImpl;\n})();\nexport var ObjectUnsubscribedError = ObjectUnsubscribedErrorImpl;\n//# sourceMappingURL=ObjectUnsubscribedError.js.map\n","const Dns = require(\"./Dns\").default;\nconst {DnsCollection} = require(\"./DnsCollection\");\nconst {DnsItem} = require(\"./DnsItem\");\n\nmodule.exports.default = {\n Dns, DnsCollection, DnsItem\n};","/** PURE_IMPORTS_START _Observable,_util_subscribeTo,_scheduled_scheduled PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { subscribeTo } from '../util/subscribeTo';\nimport { scheduled } from '../scheduled/scheduled';\nexport function from(input, scheduler) {\n if (!scheduler) {\n if (input instanceof Observable) {\n return input;\n }\n return new Observable(subscribeTo(input));\n }\n else {\n return scheduled(input, scheduler);\n }\n}\n//# sourceMappingURL=from.js.map\n","/** PURE_IMPORTS_START tslib,_Subscription PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscription } from './Subscription';\nvar SubjectSubscription = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SubjectSubscription, _super);\n function SubjectSubscription(subject, subscriber) {\n var _this = _super.call(this) || this;\n _this.subject = subject;\n _this.subscriber = subscriber;\n _this.closed = false;\n return _this;\n }\n SubjectSubscription.prototype.unsubscribe = function () {\n if (this.closed) {\n return;\n }\n this.closed = true;\n var subject = this.subject;\n var observers = subject.observers;\n this.subject = null;\n if (!observers || observers.length === 0 || subject.isStopped || subject.closed) {\n return;\n }\n var subscriberIndex = observers.indexOf(this.subscriber);\n if (subscriberIndex !== -1) {\n observers.splice(subscriberIndex, 1);\n }\n };\n return SubjectSubscription;\n}(Subscription));\nexport { SubjectSubscription };\n//# sourceMappingURL=SubjectSubscription.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function ignoreElements() {\n return function ignoreElementsOperatorFunction(source) {\n return source.lift(new IgnoreElementsOperator());\n };\n}\nvar IgnoreElementsOperator = /*@__PURE__*/ (function () {\n function IgnoreElementsOperator() {\n }\n IgnoreElementsOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new IgnoreElementsSubscriber(subscriber));\n };\n return IgnoreElementsOperator;\n}());\nvar IgnoreElementsSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(IgnoreElementsSubscriber, _super);\n function IgnoreElementsSubscriber() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n IgnoreElementsSubscriber.prototype._next = function (unused) {\n };\n return IgnoreElementsSubscriber;\n}(Subscriber));\n//# sourceMappingURL=ignoreElements.js.map\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar hasOwn = require('../internals/has-own-property');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar proxyAccessor = require('../internals/proxy-accessor');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar normalizeStringArgument = require('../internals/normalize-string-argument');\nvar installErrorCause = require('../internals/install-error-cause');\nvar installErrorStack = require('../internals/error-stack-install');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IS_PURE = require('../internals/is-pure');\n\nmodule.exports = function (FULL_NAME, wrapper, FORCED, IS_AGGREGATE_ERROR) {\n var STACK_TRACE_LIMIT = 'stackTraceLimit';\n var OPTIONS_POSITION = IS_AGGREGATE_ERROR ? 2 : 1;\n var path = FULL_NAME.split('.');\n var ERROR_NAME = path[path.length - 1];\n var OriginalError = getBuiltIn.apply(null, path);\n\n if (!OriginalError) return;\n\n var OriginalErrorPrototype = OriginalError.prototype;\n\n // V8 9.3- bug https://bugs.chromium.org/p/v8/issues/detail?id=12006\n if (!IS_PURE && hasOwn(OriginalErrorPrototype, 'cause')) delete OriginalErrorPrototype.cause;\n\n if (!FORCED) return OriginalError;\n\n var BaseError = getBuiltIn('Error');\n\n var WrappedError = wrapper(function (a, b) {\n var message = normalizeStringArgument(IS_AGGREGATE_ERROR ? b : a, undefined);\n var result = IS_AGGREGATE_ERROR ? new OriginalError(a) : new OriginalError();\n if (message !== undefined) createNonEnumerableProperty(result, 'message', message);\n installErrorStack(result, WrappedError, result.stack, 2);\n if (this && isPrototypeOf(OriginalErrorPrototype, this)) inheritIfRequired(result, this, WrappedError);\n if (arguments.length > OPTIONS_POSITION) installErrorCause(result, arguments[OPTIONS_POSITION]);\n return result;\n });\n\n WrappedError.prototype = OriginalErrorPrototype;\n\n if (ERROR_NAME !== 'Error') {\n if (setPrototypeOf) setPrototypeOf(WrappedError, BaseError);\n else copyConstructorProperties(WrappedError, BaseError, { name: true });\n } else if (DESCRIPTORS && STACK_TRACE_LIMIT in OriginalError) {\n proxyAccessor(WrappedError, OriginalError, STACK_TRACE_LIMIT);\n proxyAccessor(WrappedError, OriginalError, 'prepareStackTrace');\n }\n\n copyConstructorProperties(WrappedError, OriginalError);\n\n if (!IS_PURE) try {\n // Safari 13- bug: WebAssembly errors does not have a proper `.name`\n if (OriginalErrorPrototype.name !== ERROR_NAME) {\n createNonEnumerableProperty(OriginalErrorPrototype, 'name', ERROR_NAME);\n }\n OriginalErrorPrototype.constructor = WrappedError;\n } catch (error) { /* empty */ }\n\n return WrappedError;\n};\n","const ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n static get ANY () {\n return ANY\n }\n\n constructor (comp, options) {\n options = parseOptions(options)\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n comp = comp.trim().split(/\\s+/).join(' ')\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n }\n\n parse (comp) {\n const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const m = comp.match(r)\n\n if (!m) {\n throw new TypeError(`Invalid comparator: ${comp}`)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n }\n\n toString () {\n return this.value\n }\n\n test (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n }\n\n intersects (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n return new Range(comp.value, options).test(this.value)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n return new Range(this.value, options).test(comp.semver)\n }\n\n options = parseOptions(options)\n\n // Special cases where nothing can possibly be lower\n if (options.includePrerelease &&\n (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {\n return false\n }\n if (!options.includePrerelease &&\n (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {\n return false\n }\n\n // Same direction increasing (> or >=)\n if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {\n return true\n }\n // Same direction decreasing (< or <=)\n if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {\n return true\n }\n // same SemVer and both sides are inclusive (<= or >=)\n if (\n (this.semver.version === comp.semver.version) &&\n this.operator.includes('=') && comp.operator.includes('=')) {\n return true\n }\n // opposite directions less than\n if (cmp(this.semver, '<', comp.semver, options) &&\n this.operator.startsWith('>') && comp.operator.startsWith('<')) {\n return true\n }\n // opposite directions greater than\n if (cmp(this.semver, '>', comp.semver, options) &&\n this.operator.startsWith('<') && comp.operator.startsWith('>')) {\n return true\n }\n return false\n }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst { safeRe: re, t } = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n","/* globals __webpack_amd_options__ */\nmodule.exports = __webpack_amd_options__;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar protocol = require('@tonconnect/protocol');\nrequire('@tonconnect/isomorphic-eventsource');\nrequire('@tonconnect/isomorphic-fetch');\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\n\n/**\n * Base class for TonConnect errors. You can check if the error was triggered by the @tonconnect/sdk using `err instanceof TonConnectError`.\n */\nclass TonConnectError extends Error {\n constructor(message, options) {\n super(message, options);\n this.message = `${TonConnectError.prefix} ${this.constructor.name}${this.info ? ': ' + this.info : ''}${message ? '\\n' + message : ''}`;\n Object.setPrototypeOf(this, TonConnectError.prototype);\n }\n get info() {\n return '';\n }\n}\nTonConnectError.prefix = '[TON_CONNECT_SDK_ERROR]';\n\n/**\n * Thrown when passed DappMetadata is in incorrect format.\n */\nclass DappMetadataError extends TonConnectError {\n get info() {\n return 'Passed DappMetadata is in incorrect format.';\n }\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, DappMetadataError.prototype);\n }\n}\n\n/**\n * Thrown when passed manifest contains errors.\n */\nclass ManifestContentErrorError extends TonConnectError {\n get info() {\n return 'Passed `tonconnect-manifest.json` contains errors. Check format of your manifest. See more https://github.com/ton-connect/docs/blob/main/requests-responses.md#app-manifest';\n }\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, ManifestContentErrorError.prototype);\n }\n}\n\n/**\n * Thrown when wallet can't get manifest by passed manifestUrl.\n */\nclass ManifestNotFoundError extends TonConnectError {\n get info() {\n return 'Manifest not found. Make sure you added `tonconnect-manifest.json` to the root of your app or passed correct manifestUrl. See more https://github.com/ton-connect/docs/blob/main/requests-responses.md#app-manifest';\n }\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, ManifestNotFoundError.prototype);\n }\n}\n\n/**\n * Thrown when wallet connection called but wallet already connected. To avoid the error, disconnect the wallet before doing a new connection.\n */\nclass WalletAlreadyConnectedError extends TonConnectError {\n get info() {\n return 'Wallet connection called but wallet already connected. To avoid the error, disconnect the wallet before doing a new connection.';\n }\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, WalletAlreadyConnectedError.prototype);\n }\n}\n\n/**\n * Thrown when send transaction or other protocol methods called while wallet is not connected.\n */\nclass WalletNotConnectedError extends TonConnectError {\n get info() {\n return 'Send transaction or other protocol methods called while wallet is not connected.';\n }\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, WalletNotConnectedError.prototype);\n }\n}\n\nfunction isWalletConnectionSourceJS(value) {\n return 'jsBridgeKey' in value;\n}\n\n/**\n * Thrown when user rejects the action in the wallet.\n */\nclass UserRejectsError extends TonConnectError {\n get info() {\n return 'User rejects the action in the wallet.';\n }\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, UserRejectsError.prototype);\n }\n}\n\n/**\n * Thrown when request to the wallet contains errors.\n */\nclass BadRequestError extends TonConnectError {\n get info() {\n return 'Request to the wallet contains errors.';\n }\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, BadRequestError.prototype);\n }\n}\n\n/**\n * Thrown when app tries to send rpc request to the injected wallet while not connected.\n */\nclass UnknownAppError extends TonConnectError {\n get info() {\n return 'App tries to send rpc request to the injected wallet while not connected.';\n }\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, UnknownAppError.prototype);\n }\n}\n\n/**\n * Thrown when there is an attempt to connect to the injected wallet while it is not exists in the webpage.\n */\nclass WalletNotInjectedError extends TonConnectError {\n get info() {\n return 'There is an attempt to connect to the injected wallet while it is not exists in the webpage.';\n }\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, WalletNotInjectedError.prototype);\n }\n}\n\n/**\n * Thrown when `Storage` was not specified in the `DappMetadata` and default `localStorage` was not detected in the Node.js environment.\n */\nclass LocalstorageNotFoundError extends TonConnectError {\n get info() {\n return 'Storage was not specified in the `DappMetadata` and default `localStorage` was not detected in the environment.';\n }\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, LocalstorageNotFoundError.prototype);\n }\n}\n\n/**\n * Thrown when an error occurred while fetching the wallets list.\n */\nclass FetchWalletsError extends TonConnectError {\n get info() {\n return 'An error occurred while fetching the wallets list.';\n }\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, FetchWalletsError.prototype);\n }\n}\n\n/**\n * Thrown when passed address is in incorrect format.\n */\nclass WrongAddressError extends TonConnectError {\n get info() {\n return 'Passed address is in incorrect format.';\n }\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, WrongAddressError.prototype);\n }\n}\n\n/**\n * Thrown when passed hex is in incorrect format.\n */\nclass ParseHexError extends TonConnectError {\n get info() {\n return 'Passed hex is in incorrect format.';\n }\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, ParseHexError.prototype);\n }\n}\n\n/**\n * Unhanded unknown error.\n */\nclass UnknownError extends TonConnectError {\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, UnknownError.prototype);\n }\n}\n\nconst connectEventErrorsCodes = {\n [protocol.CONNECT_EVENT_ERROR_CODES.UNKNOWN_ERROR]: UnknownError,\n [protocol.CONNECT_EVENT_ERROR_CODES.USER_REJECTS_ERROR]: UserRejectsError,\n [protocol.CONNECT_EVENT_ERROR_CODES.BAD_REQUEST_ERROR]: BadRequestError,\n [protocol.CONNECT_EVENT_ERROR_CODES.UNKNOWN_APP_ERROR]: UnknownAppError,\n [protocol.CONNECT_EVENT_ERROR_CODES.MANIFEST_NOT_FOUND_ERROR]: ManifestNotFoundError,\n [protocol.CONNECT_EVENT_ERROR_CODES.MANIFEST_CONTENT_ERROR]: ManifestContentErrorError\n};\nclass ConnectErrorsParser {\n parseError(error) {\n let ErrorConstructor = UnknownError;\n if (error.code in connectEventErrorsCodes) {\n ErrorConstructor = connectEventErrorsCodes[error.code] || UnknownError;\n }\n return new ErrorConstructor(error.message);\n }\n}\nconst connectErrorsParser = new ConnectErrorsParser();\n\nclass RpcParser {\n isError(response) {\n return 'error' in response;\n }\n}\n\nconst sendTransactionErrors = {\n [protocol.SEND_TRANSACTION_ERROR_CODES.UNKNOWN_ERROR]: UnknownError,\n [protocol.SEND_TRANSACTION_ERROR_CODES.USER_REJECTS_ERROR]: UserRejectsError,\n [protocol.SEND_TRANSACTION_ERROR_CODES.BAD_REQUEST_ERROR]: BadRequestError,\n [protocol.SEND_TRANSACTION_ERROR_CODES.UNKNOWN_APP_ERROR]: UnknownAppError\n};\nclass SendTransactionParser extends RpcParser {\n convertToRpcRequest(request) {\n return {\n method: 'sendTransaction',\n params: [JSON.stringify(request)]\n };\n }\n parseAndThrowError(response) {\n let ErrorConstructor = UnknownError;\n if (response.error.code in sendTransactionErrors) {\n ErrorConstructor = sendTransactionErrors[response.error.code] || UnknownError;\n }\n throw new ErrorConstructor(response.error.message);\n }\n convertFromRpcResponse(rpcResponse) {\n return {\n boc: rpcResponse.result\n };\n }\n}\nconst sendTransactionParser = new SendTransactionParser();\n\nclass HttpBridgeGatewayStorage {\n constructor(storage, bridgeUrl) {\n this.storage = storage;\n this.storeKey = 'ton-connect-storage_http-bridge-gateway::' + bridgeUrl;\n }\n storeLastEventId(lastEventId) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.storage.setItem(this.storeKey, lastEventId);\n });\n }\n removeLastEventId() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.storage.removeItem(this.storeKey);\n });\n }\n getLastEventId() {\n return __awaiter(this, void 0, void 0, function* () {\n const stored = yield this.storage.getItem(this.storeKey);\n if (!stored) {\n return null;\n }\n return stored;\n });\n }\n}\n\nfunction removeUrlLastSlash(url) {\n if (url.slice(-1) === '/') {\n return url.slice(0, -1);\n }\n return url;\n}\nfunction addPathToUrl(url, path) {\n return removeUrlLastSlash(url) + '/' + path;\n}\nfunction isTelegramUrl(link) {\n const url = new URL(link);\n return url.protocol === 'tg:' || url.hostname === 't.me';\n}\nfunction encodeTelegramUrlParameters(parameters) {\n return parameters\n .replaceAll('.', '%2E')\n .replaceAll('-', '%2D')\n .replaceAll('_', '%5F')\n .replaceAll('&', '-')\n .replaceAll('=', '__')\n .replaceAll('%', '--');\n}\n\nclass BridgeGateway {\n constructor(storage, bridgeUrl, sessionId, listener, errorsListener) {\n this.bridgeUrl = bridgeUrl;\n this.sessionId = sessionId;\n this.listener = listener;\n this.errorsListener = errorsListener;\n this.ssePath = 'events';\n this.postPath = 'message';\n this.heartbeatMessage = 'heartbeat';\n this.defaultTtl = 300;\n this.isClosed = false;\n this.bridgeGatewayStorage = new HttpBridgeGatewayStorage(storage, bridgeUrl);\n }\n registerSession(options) {\n return __awaiter(this, void 0, void 0, function* () {\n const url = new URL(addPathToUrl(this.bridgeUrl, this.ssePath));\n url.searchParams.append('client_id', this.sessionId);\n const lastEventId = yield this.bridgeGatewayStorage.getLastEventId();\n if (this.isClosed) {\n return;\n }\n if (lastEventId) {\n url.searchParams.append('last_event_id', lastEventId);\n }\n this.eventSource = new EventSource(url.toString());\n return new Promise((resolve, reject) => {\n const timeout = (options === null || options === void 0 ? void 0 : options.openingDeadlineMS) ? setTimeout(() => {\n var _a;\n if (((_a = this.eventSource) === null || _a === void 0 ? void 0 : _a.readyState) !== EventSource.OPEN) {\n reject(new TonConnectError('Bridge connection timeout'));\n this.close();\n }\n }, options.openingDeadlineMS) : undefined;\n this.eventSource.onerror = () => reject;\n this.eventSource.onopen = () => {\n clearTimeout(timeout);\n this.isClosed = false;\n this.eventSource.onerror = this.errorsHandler.bind(this);\n this.eventSource.onmessage = this.messagesHandler.bind(this);\n resolve();\n };\n });\n });\n }\n send(message, receiver, topic, ttl) {\n return __awaiter(this, void 0, void 0, function* () {\n const url = new URL(addPathToUrl(this.bridgeUrl, this.postPath));\n url.searchParams.append('client_id', this.sessionId);\n url.searchParams.append('to', receiver);\n url.searchParams.append('ttl', (ttl || this.defaultTtl).toString());\n url.searchParams.append('topic', topic);\n yield fetch(url, {\n method: 'post',\n body: protocol.Base64.encode(message)\n });\n });\n }\n pause() {\n var _a;\n (_a = this.eventSource) === null || _a === void 0 ? void 0 : _a.close();\n }\n unPause() {\n return this.registerSession();\n }\n close() {\n var _a;\n this.isClosed = true;\n (_a = this.eventSource) === null || _a === void 0 ? void 0 : _a.close();\n }\n setListener(listener) {\n this.listener = listener;\n }\n setErrorsListener(errorsListener) {\n this.errorsListener = errorsListener;\n }\n errorsHandler(e) {\n var _a, _b;\n if (!this.isClosed) {\n if (((_a = this.eventSource) === null || _a === void 0 ? void 0 : _a.readyState) === EventSource.CLOSED) {\n this.eventSource.close();\n this.registerSession();\n return;\n }\n if (((_b = this.eventSource) === null || _b === void 0 ? void 0 : _b.readyState) === EventSource.CONNECTING) {\n console.debug('[TON_CONNET_SDK_ERROR]: Bridge error', JSON.stringify(e));\n return;\n }\n this.errorsListener(e);\n }\n }\n messagesHandler(e) {\n return __awaiter(this, void 0, void 0, function* () {\n if (e.data === this.heartbeatMessage) {\n return;\n }\n yield this.bridgeGatewayStorage.storeLastEventId(e.lastEventId);\n if (!this.isClosed) {\n let bridgeIncomingMessage;\n try {\n bridgeIncomingMessage = JSON.parse(e.data);\n }\n catch (e) {\n throw new TonConnectError(`Bridge message parse failed, message ${e.data}`);\n }\n this.listener(bridgeIncomingMessage);\n }\n });\n }\n}\n\nfunction isPendingConnectionHttp(connection) {\n return !('connectEvent' in connection);\n}\n\nclass BridgeConnectionStorage {\n constructor(storage) {\n this.storage = storage;\n this.storeKey = 'ton-connect-storage_bridge-connection';\n }\n storeConnection(connection) {\n return __awaiter(this, void 0, void 0, function* () {\n if (connection.type === 'injected') {\n return this.storage.setItem(this.storeKey, JSON.stringify(connection));\n }\n if (!isPendingConnectionHttp(connection)) {\n const rawSession = {\n sessionKeyPair: connection.session.sessionCrypto.stringifyKeypair(),\n walletPublicKey: connection.session.walletPublicKey,\n bridgeUrl: connection.session.bridgeUrl\n };\n const rawConnection = {\n type: 'http',\n connectEvent: connection.connectEvent,\n session: rawSession,\n lastWalletEventId: connection.lastWalletEventId,\n nextRpcRequestId: connection.nextRpcRequestId\n };\n return this.storage.setItem(this.storeKey, JSON.stringify(rawConnection));\n }\n const rawConnection = {\n type: 'http',\n connectionSource: connection.connectionSource,\n sessionCrypto: connection.sessionCrypto.stringifyKeypair()\n };\n return this.storage.setItem(this.storeKey, JSON.stringify(rawConnection));\n });\n }\n removeConnection() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.storage.removeItem(this.storeKey);\n });\n }\n getConnection() {\n return __awaiter(this, void 0, void 0, function* () {\n const stored = yield this.storage.getItem(this.storeKey);\n if (!stored) {\n return null;\n }\n const connection = JSON.parse(stored);\n if (connection.type === 'injected') {\n return connection;\n }\n if ('connectEvent' in connection) {\n const sessionCrypto = new protocol.SessionCrypto(connection.session.sessionKeyPair);\n return {\n type: 'http',\n connectEvent: connection.connectEvent,\n lastWalletEventId: connection.lastWalletEventId,\n nextRpcRequestId: connection.nextRpcRequestId,\n session: {\n sessionCrypto,\n bridgeUrl: connection.session.bridgeUrl,\n walletPublicKey: connection.session.walletPublicKey\n }\n };\n }\n return {\n type: 'http',\n sessionCrypto: new protocol.SessionCrypto(connection.sessionCrypto),\n connectionSource: connection.connectionSource\n };\n });\n }\n getHttpConnection() {\n return __awaiter(this, void 0, void 0, function* () {\n const connection = yield this.getConnection();\n if (!connection) {\n throw new TonConnectError('Trying to read HTTP connection source while nothing is stored');\n }\n if (connection.type === 'injected') {\n throw new TonConnectError('Trying to read HTTP connection source while injected connection is stored');\n }\n return connection;\n });\n }\n getHttpPendingConnection() {\n return __awaiter(this, void 0, void 0, function* () {\n const connection = yield this.getConnection();\n if (!connection) {\n throw new TonConnectError('Trying to read HTTP connection source while nothing is stored');\n }\n if (connection.type === 'injected') {\n throw new TonConnectError('Trying to read HTTP connection source while injected connection is stored');\n }\n if (!isPendingConnectionHttp(connection)) {\n throw new TonConnectError('Trying to read HTTP-pending connection while http connection is stored');\n }\n return connection;\n });\n }\n getInjectedConnection() {\n return __awaiter(this, void 0, void 0, function* () {\n const connection = yield this.getConnection();\n if (!connection) {\n throw new TonConnectError('Trying to read Injected bridge connection source while nothing is stored');\n }\n if ((connection === null || connection === void 0 ? void 0 : connection.type) === 'http') {\n throw new TonConnectError('Trying to read Injected bridge connection source while HTTP connection is stored');\n }\n return connection;\n });\n }\n storedConnectionType() {\n return __awaiter(this, void 0, void 0, function* () {\n const stored = yield this.storage.getItem(this.storeKey);\n if (!stored) {\n return null;\n }\n const connection = JSON.parse(stored);\n return connection.type;\n });\n }\n storeLastWalletEventId(id) {\n return __awaiter(this, void 0, void 0, function* () {\n const connection = yield this.getConnection();\n if (connection && connection.type === 'http' && !isPendingConnectionHttp(connection)) {\n connection.lastWalletEventId = id;\n return this.storeConnection(connection);\n }\n });\n }\n getLastWalletEventId() {\n return __awaiter(this, void 0, void 0, function* () {\n const connection = yield this.getConnection();\n if (connection && 'lastWalletEventId' in connection) {\n return connection.lastWalletEventId;\n }\n return undefined;\n });\n }\n increaseNextRpcRequestId() {\n return __awaiter(this, void 0, void 0, function* () {\n const connection = yield this.getConnection();\n if (connection && 'nextRpcRequestId' in connection) {\n const lastId = connection.nextRpcRequestId || 0;\n connection.nextRpcRequestId = lastId + 1;\n return this.storeConnection(connection);\n }\n });\n }\n getNextRpcRequestId() {\n return __awaiter(this, void 0, void 0, function* () {\n const connection = yield this.getConnection();\n if (connection && 'nextRpcRequestId' in connection) {\n return connection.nextRpcRequestId || 0;\n }\n return 0;\n });\n }\n}\n\nconst PROTOCOL_VERSION = 2;\n\nfunction logDebug(...args) {\n {\n try {\n console.debug('[TON_CONNECT_SDK]', ...args);\n }\n catch (_a) { }\n }\n}\nfunction logError(...args) {\n {\n try {\n console.error('[TON_CONNECT_SDK]', ...args);\n }\n catch (_a) { }\n }\n}\nfunction logWarning(...args) {\n {\n try {\n console.warn('[TON_CONNECT_SDK]', ...args);\n }\n catch (_a) { }\n }\n}\n\nclass BridgeProvider {\n constructor(storage, walletConnectionSource) {\n this.storage = storage;\n this.walletConnectionSource = walletConnectionSource;\n this.type = 'http';\n this.standardUniversalLink = 'tc://';\n this.pendingRequests = new Map();\n this.session = null;\n this.gateway = null;\n this.pendingGateways = [];\n this.listeners = [];\n this.connectionStorage = new BridgeConnectionStorage(storage);\n }\n static fromStorage(storage) {\n return __awaiter(this, void 0, void 0, function* () {\n const bridgeConnectionStorage = new BridgeConnectionStorage(storage);\n const connection = yield bridgeConnectionStorage.getHttpConnection();\n if (isPendingConnectionHttp(connection)) {\n return new BridgeProvider(storage, connection.connectionSource);\n }\n return new BridgeProvider(storage, { bridgeUrl: connection.session.bridgeUrl });\n });\n }\n connect(message) {\n this.closeGateways();\n const sessionCrypto = new protocol.SessionCrypto();\n this.session = {\n sessionCrypto,\n bridgeUrl: 'bridgeUrl' in this.walletConnectionSource\n ? this.walletConnectionSource.bridgeUrl\n : ''\n };\n this.connectionStorage\n .storeConnection({\n type: 'http',\n connectionSource: this.walletConnectionSource,\n sessionCrypto\n })\n .then(() => this.openGateways(sessionCrypto));\n const universalLink = 'universalLink' in this.walletConnectionSource &&\n this.walletConnectionSource.universalLink\n ? this.walletConnectionSource.universalLink\n : this.standardUniversalLink;\n return this.generateUniversalLink(universalLink, message);\n }\n restoreConnection() {\n return __awaiter(this, void 0, void 0, function* () {\n this.closeGateways();\n const storedConnection = yield this.connectionStorage.getHttpConnection();\n if (!storedConnection) {\n return;\n }\n if (isPendingConnectionHttp(storedConnection)) {\n this.session = {\n sessionCrypto: storedConnection.sessionCrypto,\n bridgeUrl: 'bridgeUrl' in this.walletConnectionSource\n ? this.walletConnectionSource.bridgeUrl\n : ''\n };\n return this.openGateways(storedConnection.sessionCrypto, { openingDeadlineMS: 5000 });\n }\n if (Array.isArray(this.walletConnectionSource)) {\n throw new TonConnectError('Internal error. Connection source is array while WalletConnectionSourceHTTP was expected.');\n }\n this.session = storedConnection.session;\n this.gateway = new BridgeGateway(this.storage, this.walletConnectionSource.bridgeUrl, storedConnection.session.sessionCrypto.sessionId, this.gatewayListener.bind(this), this.gatewayErrorsListener.bind(this));\n try {\n yield this.gateway.registerSession({ openingDeadlineMS: 5000 });\n }\n catch (e) {\n yield this.disconnect();\n return;\n }\n this.listeners.forEach(listener => listener(storedConnection.connectEvent));\n });\n }\n sendRequest(request, onRequestSent) {\n return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {\n if (!this.gateway || !this.session || !('walletPublicKey' in this.session)) {\n throw new TonConnectError('Trying to send bridge request without session');\n }\n const id = (yield this.connectionStorage.getNextRpcRequestId()).toString();\n yield this.connectionStorage.increaseNextRpcRequestId();\n logDebug('Send http-bridge request:', Object.assign(Object.assign({}, request), { id }));\n const encodedRequest = this.session.sessionCrypto.encrypt(JSON.stringify(Object.assign(Object.assign({}, request), { id })), protocol.hexToByteArray(this.session.walletPublicKey));\n this.gateway\n .send(encodedRequest, this.session.walletPublicKey, request.method)\n .catch(reject);\n this.pendingRequests.set(id.toString(), resolve);\n onRequestSent === null || onRequestSent === void 0 ? void 0 : onRequestSent();\n }));\n }\n closeConnection() {\n this.closeGateways();\n this.listeners = [];\n this.session = null;\n this.gateway = null;\n }\n disconnect() {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {\n let called = false;\n const onRequestSent = () => {\n called = true;\n this.removeBridgeAndSession().then(resolve);\n };\n try {\n yield this.sendRequest({ method: 'disconnect', params: [] }, onRequestSent);\n }\n catch (e) {\n console.debug(e);\n if (!called) {\n this.removeBridgeAndSession().then(resolve);\n }\n }\n }));\n });\n }\n listen(callback) {\n this.listeners.push(callback);\n return () => (this.listeners = this.listeners.filter(listener => listener !== callback));\n }\n pause() {\n var _a;\n (_a = this.gateway) === null || _a === void 0 ? void 0 : _a.pause();\n this.pendingGateways.forEach(bridge => bridge.pause());\n }\n unPause() {\n return __awaiter(this, void 0, void 0, function* () {\n const promises = this.pendingGateways.map(bridge => bridge.unPause());\n if (this.gateway) {\n promises.push(this.gateway.unPause());\n }\n yield Promise.all(promises);\n });\n }\n pendingGatewaysListener(gateway, bridgeUrl, bridgeIncomingMessage) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.pendingGateways.includes(gateway)) {\n gateway.close();\n return;\n }\n this.closeGateways({ except: gateway });\n this.session.bridgeUrl = bridgeUrl;\n this.gateway = gateway;\n this.gateway.setErrorsListener(this.gatewayErrorsListener.bind(this));\n this.gateway.setListener(this.gatewayListener.bind(this));\n return this.gatewayListener(bridgeIncomingMessage);\n });\n }\n gatewayListener(bridgeIncomingMessage) {\n return __awaiter(this, void 0, void 0, function* () {\n const walletMessage = JSON.parse(this.session.sessionCrypto.decrypt(protocol.Base64.decode(bridgeIncomingMessage.message).toUint8Array(), protocol.hexToByteArray(bridgeIncomingMessage.from)));\n logDebug('Wallet message received:', walletMessage);\n if (!('event' in walletMessage)) {\n const id = walletMessage.id.toString();\n const resolve = this.pendingRequests.get(id);\n if (!resolve) {\n logDebug(`Response id ${id} doesn't match any request's id`);\n return;\n }\n resolve(walletMessage);\n this.pendingRequests.delete(id);\n return;\n }\n if (walletMessage.id !== undefined) {\n const lastId = yield this.connectionStorage.getLastWalletEventId();\n if (lastId !== undefined && walletMessage.id <= lastId) {\n logError(`Received event id (=${walletMessage.id}) must be greater than stored last wallet event id (=${lastId}) `);\n return;\n }\n if (walletMessage.event !== 'connect') {\n yield this.connectionStorage.storeLastWalletEventId(walletMessage.id);\n }\n }\n // `this.listeners` might be modified in the event handler\n const listeners = this.listeners;\n if (walletMessage.event === 'connect') {\n yield this.updateSession(walletMessage, bridgeIncomingMessage.from);\n }\n if (walletMessage.event === 'disconnect') {\n yield this.removeBridgeAndSession();\n }\n listeners.forEach(listener => listener(walletMessage));\n });\n }\n gatewayErrorsListener(e) {\n return __awaiter(this, void 0, void 0, function* () {\n throw new TonConnectError(`Bridge error ${JSON.stringify(e)}`);\n });\n }\n updateSession(connectEvent, walletPublicKey) {\n return __awaiter(this, void 0, void 0, function* () {\n this.session = Object.assign(Object.assign({}, this.session), { walletPublicKey });\n const tonAddrItem = connectEvent.payload.items.find(item => item.name === 'ton_addr');\n const connectEventToSave = Object.assign(Object.assign({}, connectEvent), { payload: Object.assign(Object.assign({}, connectEvent.payload), { items: [tonAddrItem] }) });\n yield this.connectionStorage.storeConnection({\n type: 'http',\n session: this.session,\n lastWalletEventId: connectEvent.id,\n connectEvent: connectEventToSave,\n nextRpcRequestId: 0\n });\n });\n }\n removeBridgeAndSession() {\n return __awaiter(this, void 0, void 0, function* () {\n this.closeConnection();\n yield this.connectionStorage.removeConnection();\n });\n }\n generateUniversalLink(universalLink, message) {\n if (isTelegramUrl(universalLink)) {\n return this.generateTGUniversalLink(universalLink, message);\n }\n return this.generateRegularUniversalLink(universalLink, message);\n }\n generateRegularUniversalLink(universalLink, message) {\n const url = new URL(universalLink);\n url.searchParams.append('v', PROTOCOL_VERSION.toString());\n url.searchParams.append('id', this.session.sessionCrypto.sessionId);\n url.searchParams.append('r', JSON.stringify(message));\n return url.toString();\n }\n generateTGUniversalLink(universalLink, message) {\n const urlToWrap = this.generateRegularUniversalLink('about:blank', message);\n const linkParams = urlToWrap.split('?')[1];\n const startattach = 'tonconnect-' + encodeTelegramUrlParameters(linkParams);\n const url = new URL(universalLink);\n url.searchParams.append('startattach', startattach);\n return url.toString();\n }\n openGateways(sessionCrypto, options) {\n return __awaiter(this, void 0, void 0, function* () {\n if (Array.isArray(this.walletConnectionSource)) {\n this.pendingGateways = this.walletConnectionSource.map(source => {\n const gateway = new BridgeGateway(this.storage, source.bridgeUrl, sessionCrypto.sessionId, () => { }, e => {\n console.error(e);\n });\n gateway.setListener(message => this.pendingGatewaysListener(gateway, source.bridgeUrl, message));\n return gateway;\n });\n yield Promise.allSettled(this.pendingGateways.map(bridge => bridge.registerSession(options)));\n return;\n }\n else {\n this.gateway = new BridgeGateway(this.storage, this.walletConnectionSource.bridgeUrl, sessionCrypto.sessionId, this.gatewayListener.bind(this), this.gatewayErrorsListener.bind(this));\n return this.gateway.registerSession(options);\n }\n });\n }\n closeGateways(options) {\n var _a;\n (_a = this.gateway) === null || _a === void 0 ? void 0 : _a.close();\n this.pendingGateways\n .filter(item => item !== (options === null || options === void 0 ? void 0 : options.except))\n .forEach(bridge => bridge.close());\n this.pendingGateways = [];\n }\n}\n\nfunction hasProperty(value, propertyKey) {\n return hasProperties(value, [propertyKey]);\n}\nfunction hasProperties(value, propertyKeys) {\n if (!value || typeof value !== 'object') {\n return false;\n }\n return propertyKeys.every(propertyKey => propertyKey in value);\n}\n\nfunction isJSBridgeWithMetadata(value) {\n try {\n if (!hasProperty(value, 'tonconnect') || !hasProperty(value.tonconnect, 'walletInfo')) {\n return false;\n }\n return hasProperties(value.tonconnect.walletInfo, [\n 'name',\n 'app_name',\n 'image',\n 'about_url',\n 'platforms'\n ]);\n }\n catch (_a) {\n return false;\n }\n}\n\n/**\n * In memory storage like localStorage, but without persistence.\n * Uses as a fallback for localStorage in Safari's private mode.\n */\nclass InMemoryStorage {\n constructor() {\n this.storage = {};\n }\n static getInstance() {\n if (!InMemoryStorage.instance) {\n InMemoryStorage.instance = new InMemoryStorage();\n }\n return InMemoryStorage.instance;\n }\n get length() {\n return Object.keys(this.storage).length;\n }\n clear() {\n this.storage = {};\n }\n getItem(key) {\n var _a;\n return (_a = this.storage[key]) !== null && _a !== void 0 ? _a : null;\n }\n key(index) {\n var _a;\n const keys = Object.keys(this.storage);\n if (index < 0 || index >= keys.length) {\n return null;\n }\n return (_a = keys[index]) !== null && _a !== void 0 ? _a : null;\n }\n removeItem(key) {\n delete this.storage[key];\n }\n setItem(key, value) {\n this.storage[key] = value;\n }\n}\n\nfunction getWindow() {\n if (typeof window === 'undefined') {\n return undefined;\n }\n return window;\n}\n/**\n * The function try to get window keys, if it is not available it returns empty array.\n * As an example, for Safari's private mode it returns empty array, because the browser does not allow to get window keys.\n */\nfunction tryGetWindowKeys() {\n const window = getWindow();\n if (!window) {\n return [];\n }\n try {\n return Object.keys(window);\n }\n catch (_a) {\n return [];\n }\n}\nfunction getDocument() {\n if (typeof document === 'undefined') {\n return undefined;\n }\n return document;\n}\nfunction getWebPageManifest() {\n var _a;\n const origin = (_a = getWindow()) === null || _a === void 0 ? void 0 : _a.location.origin;\n if (origin) {\n return origin + '/tonconnect-manifest.json';\n }\n return '';\n}\n/**\n * Returns `localStorage` if it is available. In Safari's private mode, it returns `InMemoryStorage`. In Node.js, it throws an error.\n */\nfunction tryGetLocalStorage() {\n if (isLocalStorageAvailable()) {\n return localStorage;\n }\n if (isNodeJs()) {\n throw new TonConnectError('`localStorage` is unavailable, but it is required for TonConnect. For more details, see https://github.com/ton-connect/sdk/tree/main/packages/sdk#init-connector');\n }\n return InMemoryStorage.getInstance();\n}\n/**\n * Checks if `localStorage` is available.\n */\nfunction isLocalStorageAvailable() {\n // We use a try/catch block because Safari's private mode throws an error when attempting to access localStorage.\n try {\n return typeof localStorage !== 'undefined';\n }\n catch (_a) {\n return false;\n }\n}\n/**\n * Checks if the environment is Node.js.\n */\nfunction isNodeJs() {\n return (typeof process !== 'undefined' && process.versions != null && process.versions.node != null);\n}\n\nclass InjectedProvider {\n constructor(storage, injectedWalletKey) {\n this.injectedWalletKey = injectedWalletKey;\n this.type = 'injected';\n this.unsubscribeCallback = null;\n this.listenSubscriptions = false;\n this.listeners = [];\n const window = InjectedProvider.window;\n if (!InjectedProvider.isWindowContainsWallet(window, injectedWalletKey)) {\n throw new WalletNotInjectedError();\n }\n this.connectionStorage = new BridgeConnectionStorage(storage);\n this.injectedWallet = window[injectedWalletKey].tonconnect;\n }\n static fromStorage(storage) {\n return __awaiter(this, void 0, void 0, function* () {\n const bridgeConnectionStorage = new BridgeConnectionStorage(storage);\n const connection = yield bridgeConnectionStorage.getInjectedConnection();\n return new InjectedProvider(storage, connection.jsBridgeKey);\n });\n }\n static isWalletInjected(injectedWalletKey) {\n return InjectedProvider.isWindowContainsWallet(this.window, injectedWalletKey);\n }\n static isInsideWalletBrowser(injectedWalletKey) {\n if (InjectedProvider.isWindowContainsWallet(this.window, injectedWalletKey)) {\n return this.window[injectedWalletKey].tonconnect.isWalletBrowser;\n }\n return false;\n }\n static getCurrentlyInjectedWallets() {\n if (!this.window) {\n return [];\n }\n const windowKeys = tryGetWindowKeys();\n const wallets = windowKeys.filter(([_, value]) => isJSBridgeWithMetadata(value));\n return wallets.map(([jsBridgeKey, wallet]) => ({\n name: wallet.tonconnect.walletInfo.name,\n appName: wallet.tonconnect.walletInfo.app_name,\n aboutUrl: wallet.tonconnect.walletInfo.about_url,\n imageUrl: wallet.tonconnect.walletInfo.image,\n tondns: wallet.tonconnect.walletInfo.tondns,\n jsBridgeKey,\n injected: true,\n embedded: wallet.tonconnect.isWalletBrowser,\n platforms: wallet.tonconnect.walletInfo.platforms\n }));\n }\n static isWindowContainsWallet(window, injectedWalletKey) {\n return (!!window &&\n injectedWalletKey in window &&\n typeof window[injectedWalletKey] === 'object' &&\n 'tonconnect' in window[injectedWalletKey]);\n }\n connect(message) {\n this._connect(PROTOCOL_VERSION, message);\n }\n restoreConnection() {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n logDebug(`Injected Provider restoring connection...`);\n const connectEvent = yield this.injectedWallet.restoreConnection();\n logDebug('Injected Provider restoring connection response', connectEvent);\n if (connectEvent.event === 'connect') {\n this.makeSubscriptions();\n this.listeners.forEach(listener => listener(connectEvent));\n }\n else {\n yield this.connectionStorage.removeConnection();\n }\n }\n catch (e) {\n yield this.connectionStorage.removeConnection();\n console.error(e);\n }\n });\n }\n closeConnection() {\n if (this.listenSubscriptions) {\n this.injectedWallet.disconnect();\n }\n this.closeAllListeners();\n }\n disconnect() {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise(resolve => {\n const onRequestSent = () => {\n this.closeAllListeners();\n this.connectionStorage.removeConnection().then(resolve);\n };\n try {\n this.injectedWallet.disconnect();\n onRequestSent();\n }\n catch (e) {\n logDebug(e);\n this.sendRequest({\n method: 'disconnect',\n params: []\n }, onRequestSent);\n }\n });\n });\n }\n closeAllListeners() {\n var _a;\n this.listenSubscriptions = false;\n this.listeners = [];\n (_a = this.unsubscribeCallback) === null || _a === void 0 ? void 0 : _a.call(this);\n }\n listen(eventsCallback) {\n this.listeners.push(eventsCallback);\n return () => (this.listeners = this.listeners.filter(listener => listener !== eventsCallback));\n }\n sendRequest(request, onRequestSent) {\n return __awaiter(this, void 0, void 0, function* () {\n const id = (yield this.connectionStorage.getNextRpcRequestId()).toString();\n yield this.connectionStorage.increaseNextRpcRequestId();\n logDebug('Send injected-bridge request:', Object.assign(Object.assign({}, request), { id }));\n const result = this.injectedWallet.send(Object.assign(Object.assign({}, request), { id }));\n result.then(response => logDebug('Wallet message received:', response));\n onRequestSent === null || onRequestSent === void 0 ? void 0 : onRequestSent();\n return result;\n });\n }\n _connect(protocolVersion, message) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n logDebug(`Injected Provider connect request: protocolVersion: ${protocolVersion}, message:`, message);\n const connectEvent = yield this.injectedWallet.connect(protocolVersion, message);\n logDebug('Injected Provider connect response:', connectEvent);\n if (connectEvent.event === 'connect') {\n yield this.updateSession();\n this.makeSubscriptions();\n }\n this.listeners.forEach(listener => listener(connectEvent));\n }\n catch (e) {\n logDebug(e);\n const connectEventError = {\n event: 'connect_error',\n payload: {\n code: 0,\n message: e === null || e === void 0 ? void 0 : e.toString()\n }\n };\n this.listeners.forEach(listener => listener(connectEventError));\n }\n });\n }\n makeSubscriptions() {\n this.listenSubscriptions = true;\n this.unsubscribeCallback = this.injectedWallet.listen(e => {\n logDebug('Wallet message received:', e);\n if (this.listenSubscriptions) {\n this.listeners.forEach(listener => listener(e));\n }\n if (e.event === 'disconnect') {\n this.disconnect();\n }\n });\n }\n updateSession() {\n return this.connectionStorage.storeConnection({\n type: 'injected',\n jsBridgeKey: this.injectedWalletKey,\n nextRpcRequestId: 0\n });\n }\n}\nInjectedProvider.window = getWindow();\n\n/**\n * Default storage to save protocol data, uses `localStorage` if it is available. In Safari's private mode, it uses `InMemoryStorage`. In Node.js, it throws an error.\n */\nclass DefaultStorage {\n constructor() {\n this.localStorage = tryGetLocalStorage();\n }\n getItem(key) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.localStorage.getItem(key);\n });\n }\n removeItem(key) {\n return __awaiter(this, void 0, void 0, function* () {\n this.localStorage.removeItem(key);\n });\n }\n setItem(key, value) {\n return __awaiter(this, void 0, void 0, function* () {\n this.localStorage.setItem(key, value);\n });\n }\n}\n\n/**\n * Checks if `WalletInfo` is `WalletInfoInjectable` and `WalletInfo` is injected to the current webpage (`walletInfo.injected === true`).\n * @param value WalletInfo to check.\n */\nfunction isWalletInfoCurrentlyInjected(value) {\n return isWalletInfoInjectable(value) && value.injected;\n}\n/**\n * Checks if `WalletInfo` is `WalletInfoInjectable` and dApp is opened inside this wallet's browser.\n * @param value WalletInfo to check.\n */\nfunction isWalletInfoCurrentlyEmbedded(value) {\n return isWalletInfoCurrentlyInjected(value) && value.embedded;\n}\n/**\n * Checks if `WalletInfo` is `WalletInfoInjected`, but doesn't check if it is injected to the page or not.\n * @param value WalletInfo to check.\n */\nfunction isWalletInfoInjectable(value) {\n return 'jsBridgeKey' in value;\n}\n/**\n * Checks if `WalletInfo` is `WalletInfoRemote`.\n * @param value WalletInfo to check.\n */\nfunction isWalletInfoRemote(value) {\n return 'bridgeUrl' in value;\n}\n/**\n * @deprecated use `isWalletInfoInjectable` or `isWalletInfoCurrentlyInjected` instead.\n * @param value WalletInfo to check.\n */\nfunction isWalletInfoInjected(value) {\n return 'jsBridgeKey' in value;\n}\n\nconst FALLBACK_WALLETS_LIST = [\n {\n app_name: 'telegram-wallet',\n name: 'Wallet',\n image: 'https://wallet.tg/images/logo-288.png',\n about_url: 'https://wallet.tg/',\n universal_url: 'https://t.me/wallet?attach=wallet',\n bridge: [\n {\n type: 'sse',\n url: 'https://bridge.tonapi.io/bridge'\n }\n ],\n platforms: ['ios', 'android', 'macos', 'windows', 'linux']\n },\n {\n app_name: 'tonkeeper',\n name: 'Tonkeeper',\n image: 'https://tonkeeper.com/assets/tonconnect-icon.png',\n tondns: 'tonkeeper.ton',\n about_url: 'https://tonkeeper.com',\n universal_url: 'https://app.tonkeeper.com/ton-connect',\n bridge: [\n {\n type: 'sse',\n url: 'https://bridge.tonapi.io/bridge'\n },\n {\n type: 'js',\n key: 'tonkeeper'\n }\n ],\n platforms: ['ios', 'android', 'chrome', 'firefox']\n },\n {\n app_name: 'openmask',\n name: 'OpenMask',\n image: 'https://raw.githubusercontent.com/OpenProduct/openmask-extension/main/public/openmask-logo-288.png',\n about_url: 'https://www.openmask.app/',\n bridge: [\n {\n type: 'js',\n key: 'openmask'\n }\n ],\n platforms: ['chrome']\n },\n {\n app_name: 'mytonwallet',\n name: 'MyTonWallet',\n image: 'https://mytonwallet.io/icon-256.png',\n about_url: 'https://mytonwallet.io',\n universal_url: 'https://connect.mytonwallet.org',\n bridge: [\n {\n type: 'js',\n key: 'mytonwallet'\n },\n {\n type: 'sse',\n url: 'https://tonconnectbridge.mytonwallet.org/bridge/'\n }\n ],\n platforms: ['chrome', 'windows', 'macos', 'linux']\n },\n {\n app_name: 'tonhub',\n name: 'Tonhub',\n image: 'https://tonhub.com/tonconnect_logo.png',\n about_url: 'https://tonhub.com',\n universal_url: 'https://tonhub.com/ton-connect',\n bridge: [\n {\n type: 'js',\n key: 'tonhub'\n },\n {\n type: 'sse',\n url: 'https://connect.tonhubapi.com/tonconnect'\n }\n ],\n platforms: ['ios', 'android']\n },\n {\n app_name: 'tonflow',\n name: 'TonFlow',\n image: 'https://tonflow.net/assets/images/tonflow_ico_192.png',\n about_url: 'https://tonflow.net',\n bridge: [\n {\n type: 'js',\n key: 'tonflow'\n }\n ],\n platforms: ['chrome']\n },\n {\n app_name: 'dewallet',\n name: 'DeWallet',\n image: 'https://app.delabwallet.com/logo_black.png',\n about_url: 'https://delabwallet.com',\n bridge: [\n {\n type: 'js',\n key: 'dewallet'\n }\n ],\n platforms: ['chrome']\n },\n {\n app_name: 'xtonwallet',\n name: 'XTONWallet',\n image: 'https://xtonwallet.com/assets/img/icon-256-back.png',\n about_url: 'https://xtonwallet.com',\n bridge: [\n {\n type: 'js',\n key: 'xtonwallet'\n }\n ],\n platforms: ['chrome', 'firefox']\n },\n {\n app_name: 'tonwallet',\n name: 'TON Wallet',\n image: 'https://wallet.ton.org/assets/ui/qr-logo.png',\n about_url: 'https://chrome.google.com/webstore/detail/ton-wallet/nphplpgoakhhjchkkhmiggakijnkhfnd',\n bridge: [\n {\n type: 'js',\n key: 'tonwallet'\n }\n ],\n platforms: ['chrome']\n }\n];\n\nclass WalletsListManager {\n constructor(options) {\n this.walletsListCache = null;\n this.walletsListCacheCreationTimestamp = null;\n this.walletsListSource = 'https://raw.githubusercontent.com/ton-blockchain/wallets-list/main/wallets-v2.json';\n if (options === null || options === void 0 ? void 0 : options.walletsListSource) {\n this.walletsListSource = options.walletsListSource;\n }\n if (options === null || options === void 0 ? void 0 : options.cacheTTLMs) {\n this.cacheTTLMs = options.cacheTTLMs;\n }\n }\n getWallets() {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.cacheTTLMs &&\n this.walletsListCacheCreationTimestamp &&\n Date.now() > this.walletsListCacheCreationTimestamp + this.cacheTTLMs) {\n this.walletsListCache = null;\n }\n if (!this.walletsListCache) {\n this.walletsListCache = this.fetchWalletsList();\n this.walletsListCache\n .then(() => {\n this.walletsListCacheCreationTimestamp = Date.now();\n })\n .catch(() => {\n this.walletsListCache = null;\n this.walletsListCacheCreationTimestamp = null;\n });\n }\n return this.walletsListCache;\n });\n }\n getEmbeddedWallet() {\n return __awaiter(this, void 0, void 0, function* () {\n const walletsList = yield this.getWallets();\n const embeddedWallets = walletsList.filter(isWalletInfoCurrentlyEmbedded);\n if (embeddedWallets.length !== 1) {\n return null;\n }\n return embeddedWallets[0];\n });\n }\n fetchWalletsList() {\n return __awaiter(this, void 0, void 0, function* () {\n let walletsList = [];\n try {\n const walletsResponse = yield fetch(this.walletsListSource);\n walletsList = yield walletsResponse.json();\n if (!Array.isArray(walletsList)) {\n throw new FetchWalletsError('Wrong wallets list format, wallets list must be an array.');\n }\n const wrongFormatWallets = walletsList.filter(wallet => !this.isCorrectWalletConfigDTO(wallet));\n if (wrongFormatWallets.length) {\n logError(`Wallet(s) ${wrongFormatWallets\n .map(wallet => wallet.name)\n .join(', ')} config format is wrong. They were removed from the wallets list.`);\n walletsList = walletsList.filter(wallet => this.isCorrectWalletConfigDTO(wallet));\n }\n }\n catch (e) {\n logError(e);\n walletsList = FALLBACK_WALLETS_LIST;\n }\n let currentlyInjectedWallets = [];\n try {\n currentlyInjectedWallets = InjectedProvider.getCurrentlyInjectedWallets();\n }\n catch (e) {\n logError(e);\n }\n return this.mergeWalletsLists(this.walletConfigDTOListToWalletConfigList(walletsList), currentlyInjectedWallets);\n });\n }\n walletConfigDTOListToWalletConfigList(walletConfigDTO) {\n return walletConfigDTO.map(walletConfigDTO => {\n const walletConfigBase = {\n name: walletConfigDTO.name,\n appName: walletConfigDTO.app_name,\n imageUrl: walletConfigDTO.image,\n aboutUrl: walletConfigDTO.about_url,\n tondns: walletConfigDTO.tondns,\n platforms: walletConfigDTO.platforms\n };\n const walletConfig = walletConfigBase;\n walletConfigDTO.bridge.forEach(bridge => {\n if (bridge.type === 'sse') {\n walletConfig.bridgeUrl = bridge.url;\n walletConfig.universalLink =\n walletConfigDTO.universal_url;\n walletConfig.deepLink = walletConfigDTO.deepLink;\n }\n if (bridge.type === 'js') {\n const jsBridgeKey = bridge.key;\n walletConfig.jsBridgeKey = jsBridgeKey;\n walletConfig.injected =\n InjectedProvider.isWalletInjected(jsBridgeKey);\n walletConfig.embedded =\n InjectedProvider.isInsideWalletBrowser(jsBridgeKey);\n }\n });\n return walletConfig;\n });\n }\n mergeWalletsLists(list1, list2) {\n const names = new Set(list1.concat(list2).map(item => item.name));\n return [...names.values()].map(name => {\n const list1Item = list1.find(item => item.name === name);\n const list2Item = list2.find(item => item.name === name);\n return Object.assign(Object.assign({}, (list1Item && Object.assign({}, list1Item))), (list2Item && Object.assign({}, list2Item)));\n });\n }\n // eslint-disable-next-line complexity\n isCorrectWalletConfigDTO(value) {\n if (!value || !(typeof value === 'object')) {\n return false;\n }\n const containsName = 'name' in value;\n const containsAppName = 'app_name' in value;\n const containsImage = 'image' in value;\n const containsAbout = 'about_url' in value;\n const containsPlatforms = 'platforms' in value;\n if (!containsName ||\n !containsImage ||\n !containsAbout ||\n !containsPlatforms ||\n !containsAppName) {\n return false;\n }\n if (!value.platforms ||\n !Array.isArray(value.platforms) ||\n !value.platforms.length) {\n return false;\n }\n if (!('bridge' in value) ||\n !Array.isArray(value.bridge) ||\n !value.bridge.length) {\n return false;\n }\n const bridge = value.bridge;\n if (bridge.some(item => !item || typeof item !== 'object' || !('type' in item))) {\n return false;\n }\n const sseBridge = bridge.find(item => item.type === 'sse');\n if (sseBridge) {\n if (!('url' in sseBridge) ||\n !sseBridge.url ||\n !value.universal_url) {\n return false;\n }\n }\n const jsBridge = bridge.find(item => item.type === 'js');\n if (jsBridge) {\n if (!('key' in jsBridge) || !jsBridge.key) {\n return false;\n }\n }\n return true;\n }\n}\n\n/**\n * Thrown when wallet doesn't support requested feature method.\n */\nclass WalletNotSupportFeatureError extends TonConnectError {\n get info() {\n return \"Wallet doesn't support requested feature method.\";\n }\n constructor(...args) {\n super(...args);\n Object.setPrototypeOf(this, WalletNotSupportFeatureError.prototype);\n }\n}\n\nfunction checkSendTransactionSupport(features, options) {\n const supportsDeprecatedSendTransactionFeature = features.includes('SendTransaction');\n const sendTransactionFeature = features.find(feature => feature && typeof feature === 'object' && feature.name === 'SendTransaction');\n if (!supportsDeprecatedSendTransactionFeature && !sendTransactionFeature) {\n throw new WalletNotSupportFeatureError(\"Wallet doesn't support SendTransaction feature.\");\n }\n if (sendTransactionFeature && sendTransactionFeature.maxMessages !== undefined) {\n if (sendTransactionFeature.maxMessages < options.requiredMessagesNumber) {\n throw new WalletNotSupportFeatureError(`Wallet is not able to handle such SendTransaction request. Max support messages number is ${sendTransactionFeature.maxMessages}, but ${options.requiredMessagesNumber} is required.`);\n }\n return;\n }\n logWarning(\"Connected wallet didn't provide information about max allowed messages in the SendTransaction request. Request may be rejected by the wallet.\");\n}\n\nclass TonConnect {\n constructor(options) {\n this.walletsList = new WalletsListManager();\n this._wallet = null;\n this.provider = null;\n this.statusChangeSubscriptions = [];\n this.statusChangeErrorSubscriptions = [];\n this.dappSettings = {\n manifestUrl: (options === null || options === void 0 ? void 0 : options.manifestUrl) || getWebPageManifest(),\n storage: (options === null || options === void 0 ? void 0 : options.storage) || new DefaultStorage()\n };\n this.walletsList = new WalletsListManager({\n walletsListSource: options === null || options === void 0 ? void 0 : options.walletsListSource,\n cacheTTLMs: options === null || options === void 0 ? void 0 : options.walletsListCacheTTLMs\n });\n if (!this.dappSettings.manifestUrl) {\n throw new DappMetadataError('Dapp tonconnect-manifest.json must be specified if window.location.origin is undefined. See more https://github.com/ton-connect/docs/blob/main/requests-responses.md#app-manifest');\n }\n this.bridgeConnectionStorage = new BridgeConnectionStorage(this.dappSettings.storage);\n if (!(options === null || options === void 0 ? void 0 : options.disableAutoPauseConnection)) {\n this.addWindowFocusAndBlurSubscriptions();\n }\n }\n /**\n * Returns available wallets list.\n */\n static getWallets() {\n return this.walletsList.getWallets();\n }\n /**\n * Shows if the wallet is connected right now.\n */\n get connected() {\n return this._wallet !== null;\n }\n /**\n * Current connected account or null if no account is connected.\n */\n get account() {\n var _a;\n return ((_a = this._wallet) === null || _a === void 0 ? void 0 : _a.account) || null;\n }\n /**\n * Current connected wallet or null if no account is connected.\n */\n get wallet() {\n return this._wallet;\n }\n set wallet(value) {\n this._wallet = value;\n this.statusChangeSubscriptions.forEach(callback => callback(this._wallet));\n }\n /**\n * Returns available wallets list.\n */\n getWallets() {\n return this.walletsList.getWallets();\n }\n /**\n * Allows to subscribe to connection status changes and handle connection errors.\n * @param callback will be called after connections status changes with actual wallet or null.\n * @param errorsHandler (optional) will be called with some instance of TonConnectError when connect error is received.\n * @returns unsubscribe callback.\n */\n onStatusChange(callback, errorsHandler) {\n this.statusChangeSubscriptions.push(callback);\n if (errorsHandler) {\n this.statusChangeErrorSubscriptions.push(errorsHandler);\n }\n return () => {\n this.statusChangeSubscriptions = this.statusChangeSubscriptions.filter(item => item !== callback);\n if (errorsHandler) {\n this.statusChangeErrorSubscriptions = this.statusChangeErrorSubscriptions.filter(item => item !== errorsHandler);\n }\n };\n }\n connect(wallet, request) {\n var _a;\n if (this.connected) {\n throw new WalletAlreadyConnectedError();\n }\n (_a = this.provider) === null || _a === void 0 ? void 0 : _a.closeConnection();\n this.provider = this.createProvider(wallet);\n return this.provider.connect(this.createConnectRequest(request));\n }\n /**\n * Try to restore existing session and reconnect to the corresponding wallet. Call it immediately when your app is loaded.\n */\n restoreConnection() {\n return __awaiter(this, void 0, void 0, function* () {\n const [bridgeConnectionType, embeddedWallet] = yield Promise.all([\n this.bridgeConnectionStorage.storedConnectionType(),\n this.walletsList.getEmbeddedWallet()\n ]);\n try {\n switch (bridgeConnectionType) {\n case 'http':\n this.provider = yield BridgeProvider.fromStorage(this.dappSettings.storage);\n break;\n case 'injected':\n this.provider = yield InjectedProvider.fromStorage(this.dappSettings.storage);\n break;\n default:\n if (embeddedWallet) {\n this.provider = yield this.createProvider(embeddedWallet);\n }\n else {\n return;\n }\n }\n }\n catch (_a) {\n yield this.bridgeConnectionStorage.removeConnection();\n this.provider = null;\n return;\n }\n this.provider.listen(this.walletEventsListener.bind(this));\n return this.provider.restoreConnection();\n });\n }\n /**\n * Asks connected wallet to sign and send the transaction.\n * @param transaction transaction to send.\n * @returns signed transaction boc that allows you to find the transaction in the blockchain.\n * If user rejects transaction, method will throw the corresponding error.\n */\n sendTransaction(transaction) {\n return __awaiter(this, void 0, void 0, function* () {\n this.checkConnection();\n checkSendTransactionSupport(this.wallet.device.features, {\n requiredMessagesNumber: transaction.messages.length\n });\n const { validUntil } = transaction, tx = __rest(transaction, [\"validUntil\"]);\n const from = transaction.from || this.account.address;\n const network = transaction.network || this.account.chain;\n const response = yield this.provider.sendRequest(sendTransactionParser.convertToRpcRequest(Object.assign(Object.assign({}, tx), { valid_until: validUntil, from,\n network })));\n if (sendTransactionParser.isError(response)) {\n return sendTransactionParser.parseAndThrowError(response);\n }\n return sendTransactionParser.convertFromRpcResponse(response);\n });\n }\n /**\n * Disconnect form thw connected wallet and drop current session.\n */\n disconnect() {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.connected) {\n throw new WalletNotConnectedError();\n }\n yield this.provider.disconnect();\n this.onWalletDisconnected();\n });\n }\n /**\n * Pause bridge HTTP connection. Might be helpful, if you want to pause connections while browser tab is unfocused,\n * or if you use SDK with NodeJS and want to save server resources.\n */\n pauseConnection() {\n var _a;\n if (((_a = this.provider) === null || _a === void 0 ? void 0 : _a.type) !== 'http') {\n return;\n }\n this.provider.pause();\n }\n /**\n * Unpause bridge HTTP connection if it is paused.\n */\n unPauseConnection() {\n var _a;\n if (((_a = this.provider) === null || _a === void 0 ? void 0 : _a.type) !== 'http') {\n return Promise.resolve();\n }\n return this.provider.unPause();\n }\n addWindowFocusAndBlurSubscriptions() {\n const document = getDocument();\n if (!document) {\n return;\n }\n try {\n document.addEventListener('visibilitychange', () => {\n if (document.hidden) {\n this.pauseConnection();\n }\n else {\n this.unPauseConnection();\n }\n });\n }\n catch (e) {\n console.error('Cannot subscribe to the document.visibilitychange: ', e);\n }\n }\n createProvider(wallet) {\n let provider;\n if (!Array.isArray(wallet) && isWalletConnectionSourceJS(wallet)) {\n provider = new InjectedProvider(this.dappSettings.storage, wallet.jsBridgeKey);\n }\n else {\n provider = new BridgeProvider(this.dappSettings.storage, wallet);\n }\n provider.listen(this.walletEventsListener.bind(this));\n return provider;\n }\n walletEventsListener(e) {\n switch (e.event) {\n case 'connect':\n this.onWalletConnected(e.payload);\n break;\n case 'connect_error':\n this.onWalletConnectError(e.payload);\n break;\n case 'disconnect':\n this.onWalletDisconnected();\n }\n }\n onWalletConnected(connectEvent) {\n const tonAccountItem = connectEvent.items.find(item => item.name === 'ton_addr');\n const tonProofItem = connectEvent.items.find(item => item.name === 'ton_proof');\n if (!tonAccountItem) {\n throw new TonConnectError('ton_addr connection item was not found');\n }\n const wallet = {\n device: connectEvent.device,\n provider: this.provider.type,\n account: {\n address: tonAccountItem.address,\n chain: tonAccountItem.network,\n walletStateInit: tonAccountItem.walletStateInit,\n publicKey: tonAccountItem.publicKey\n }\n };\n if (tonProofItem) {\n wallet.connectItems = {\n tonProof: tonProofItem\n };\n }\n this.wallet = wallet;\n }\n onWalletConnectError(connectEventError) {\n const error = connectErrorsParser.parseError(connectEventError);\n this.statusChangeErrorSubscriptions.forEach(errorsHandler => errorsHandler(error));\n console.debug(error);\n if (error instanceof ManifestNotFoundError || error instanceof ManifestContentErrorError) {\n console.error(error);\n throw error;\n }\n }\n onWalletDisconnected() {\n this.wallet = null;\n }\n checkConnection() {\n if (!this.connected) {\n throw new WalletNotConnectedError();\n }\n }\n createConnectRequest(request) {\n const items = [\n {\n name: 'ton_addr'\n }\n ];\n if (request === null || request === void 0 ? void 0 : request.tonProof) {\n items.push({\n name: 'ton_proof',\n payload: request.tonProof\n });\n }\n return {\n manifestUrl: this.dappSettings.manifestUrl,\n items\n };\n }\n}\nTonConnect.walletsList = new WalletsListManager();\n/**\n * Check if specified wallet is injected and available to use with the app.\n * @param walletJSKey target wallet's js bridge key.\n */\nTonConnect.isWalletInjected = (walletJSKey) => InjectedProvider.isWalletInjected(walletJSKey);\n/**\n * Check if the app is opened inside specified wallet's browser.\n * @param walletJSKey target wallet's js bridge key.\n */\nTonConnect.isInsideWalletBrowser = (walletJSKey) => InjectedProvider.isInsideWalletBrowser(walletJSKey);\n\nconst noBounceableTag = 0x51;\nconst testOnlyTag = 0x80;\n/**\n * Converts raw TON address to no-bounceable user-friendly format. [See details]{@link https://ton.org/docs/learn/overviews/addresses#user-friendly-address}\n * @param hexAddress raw TON address formatted as \"0:\".\n * @param [testOnly=false] convert address to test-only form. [See details]{@link https://ton.org/docs/learn/overviews/addresses#user-friendly-address}\n */\nfunction toUserFriendlyAddress(hexAddress, testOnly = false) {\n const { wc, hex } = parseHexAddress(hexAddress);\n let tag = noBounceableTag;\n if (testOnly) {\n tag |= testOnlyTag;\n }\n const addr = new Int8Array(34);\n addr[0] = tag;\n addr[1] = wc;\n addr.set(hex, 2);\n const addressWithChecksum = new Uint8Array(36);\n addressWithChecksum.set(addr);\n addressWithChecksum.set(crc16(addr), 34);\n let addressBase64 = protocol.Base64.encode(addressWithChecksum);\n return addressBase64.replace(/\\+/g, '-').replace(/\\//g, '_');\n}\nfunction parseHexAddress(hexAddress) {\n if (!hexAddress.includes(':')) {\n throw new WrongAddressError(`Wrong address ${hexAddress}. Address must include \":\".`);\n }\n const parts = hexAddress.split(':');\n if (parts.length !== 2) {\n throw new WrongAddressError(`Wrong address ${hexAddress}. Address must include \":\" only once.`);\n }\n const wc = parseInt(parts[0]);\n if (wc !== 0 && wc !== -1) {\n throw new WrongAddressError(`Wrong address ${hexAddress}. WC must be eq 0 or -1, but ${wc} received.`);\n }\n const hex = parts[1];\n if ((hex === null || hex === void 0 ? void 0 : hex.length) !== 64) {\n throw new WrongAddressError(`Wrong address ${hexAddress}. Hex part must be 64bytes length, but ${hex === null || hex === void 0 ? void 0 : hex.length} received.`);\n }\n return {\n wc,\n hex: hexToBytes(hex)\n };\n}\nfunction crc16(data) {\n const poly = 0x1021;\n let reg = 0;\n const message = new Uint8Array(data.length + 2);\n message.set(data);\n for (let byte of message) {\n let mask = 0x80;\n while (mask > 0) {\n reg <<= 1;\n if (byte & mask) {\n reg += 1;\n }\n mask >>= 1;\n if (reg > 0xffff) {\n reg &= 0xffff;\n reg ^= poly;\n }\n }\n }\n return new Uint8Array([Math.floor(reg / 256), reg % 256]);\n}\nconst toByteMap = {};\nfor (let ord = 0; ord <= 0xff; ord++) {\n let s = ord.toString(16);\n if (s.length < 2) {\n s = '0' + s;\n }\n toByteMap[s] = ord;\n}\nfunction hexToBytes(hex) {\n hex = hex.toLowerCase();\n const length2 = hex.length;\n if (length2 % 2 !== 0) {\n throw new ParseHexError('Hex string must have length a multiple of 2: ' + hex);\n }\n const length = length2 / 2;\n const result = new Uint8Array(length);\n for (let i = 0; i < length; i++) {\n const doubled = i * 2;\n const hexSubstring = hex.substring(doubled, doubled + 2);\n if (!toByteMap.hasOwnProperty(hexSubstring)) {\n throw new ParseHexError('Invalid hex character: ' + hexSubstring);\n }\n result[i] = toByteMap[hexSubstring];\n }\n return result;\n}\n\nObject.defineProperty(exports, 'CHAIN', {\n enumerable: true,\n get: function () { return protocol.CHAIN; }\n});\nObject.defineProperty(exports, 'CONNECT_ITEM_ERROR_CODES', {\n enumerable: true,\n get: function () { return protocol.CONNECT_ITEM_ERROR_CODES; }\n});\nexports.BadRequestError = BadRequestError;\nexports.FetchWalletsError = FetchWalletsError;\nexports.LocalstorageNotFoundError = LocalstorageNotFoundError;\nexports.ParseHexError = ParseHexError;\nexports.TonConnect = TonConnect;\nexports.TonConnectError = TonConnectError;\nexports.UnknownAppError = UnknownAppError;\nexports.UnknownError = UnknownError;\nexports.UserRejectsError = UserRejectsError;\nexports.WalletAlreadyConnectedError = WalletAlreadyConnectedError;\nexports.WalletNotConnectedError = WalletNotConnectedError;\nexports.WalletNotInjectedError = WalletNotInjectedError;\nexports.WalletsListManager = WalletsListManager;\nexports.WrongAddressError = WrongAddressError;\nexports[\"default\"] = TonConnect;\nexports.encodeTelegramUrlParameters = encodeTelegramUrlParameters;\nexports.isTelegramUrl = isTelegramUrl;\nexports.isWalletInfoCurrentlyEmbedded = isWalletInfoCurrentlyEmbedded;\nexports.isWalletInfoCurrentlyInjected = isWalletInfoCurrentlyInjected;\nexports.isWalletInfoInjectable = isWalletInfoInjectable;\nexports.isWalletInfoInjected = isWalletInfoInjected;\nexports.isWalletInfoRemote = isWalletInfoRemote;\nexports.toUserFriendlyAddress = toUserFriendlyAddress;\n//# sourceMappingURL=index.cjs.map\n","const SemVer = require('../classes/semver')\n\nconst inc = (version, release, options, identifier, identifierBase) => {\n if (typeof (options) === 'string') {\n identifierBase = identifier\n identifier = options\n options = undefined\n }\n\n try {\n return new SemVer(\n version instanceof SemVer ? version.version : version,\n options\n ).inc(release, identifier, identifierBase).version\n } catch (er) {\n return null\n }\n}\nmodule.exports = inc\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function identity(x) {\n return x;\n}\n//# sourceMappingURL=identity.js.map\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n isCallable(NewTarget = dummy.constructor) &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n","'use strict'\n\n// A linked list to keep track of recently-used-ness\nconst Yallist = require('yallist')\n\nconst MAX = Symbol('max')\nconst LENGTH = Symbol('length')\nconst LENGTH_CALCULATOR = Symbol('lengthCalculator')\nconst ALLOW_STALE = Symbol('allowStale')\nconst MAX_AGE = Symbol('maxAge')\nconst DISPOSE = Symbol('dispose')\nconst NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet')\nconst LRU_LIST = Symbol('lruList')\nconst CACHE = Symbol('cache')\nconst UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet')\n\nconst naiveLength = () => 1\n\n// lruList is a yallist where the head is the youngest\n// item, and the tail is the oldest. the list contains the Hit\n// objects as the entries.\n// Each Hit object has a reference to its Yallist.Node. This\n// never changes.\n//\n// cache is a Map (or PseudoMap) that matches the keys to\n// the Yallist.Node object.\nclass LRUCache {\n constructor (options) {\n if (typeof options === 'number')\n options = { max: options }\n\n if (!options)\n options = {}\n\n if (options.max && (typeof options.max !== 'number' || options.max < 0))\n throw new TypeError('max must be a non-negative number')\n // Kind of weird to have a default max of Infinity, but oh well.\n const max = this[MAX] = options.max || Infinity\n\n const lc = options.length || naiveLength\n this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc\n this[ALLOW_STALE] = options.stale || false\n if (options.maxAge && typeof options.maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n this[MAX_AGE] = options.maxAge || 0\n this[DISPOSE] = options.dispose\n this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false\n this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false\n this.reset()\n }\n\n // resize the cache when the max changes.\n set max (mL) {\n if (typeof mL !== 'number' || mL < 0)\n throw new TypeError('max must be a non-negative number')\n\n this[MAX] = mL || Infinity\n trim(this)\n }\n get max () {\n return this[MAX]\n }\n\n set allowStale (allowStale) {\n this[ALLOW_STALE] = !!allowStale\n }\n get allowStale () {\n return this[ALLOW_STALE]\n }\n\n set maxAge (mA) {\n if (typeof mA !== 'number')\n throw new TypeError('maxAge must be a non-negative number')\n\n this[MAX_AGE] = mA\n trim(this)\n }\n get maxAge () {\n return this[MAX_AGE]\n }\n\n // resize the cache when the lengthCalculator changes.\n set lengthCalculator (lC) {\n if (typeof lC !== 'function')\n lC = naiveLength\n\n if (lC !== this[LENGTH_CALCULATOR]) {\n this[LENGTH_CALCULATOR] = lC\n this[LENGTH] = 0\n this[LRU_LIST].forEach(hit => {\n hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key)\n this[LENGTH] += hit.length\n })\n }\n trim(this)\n }\n get lengthCalculator () { return this[LENGTH_CALCULATOR] }\n\n get length () { return this[LENGTH] }\n get itemCount () { return this[LRU_LIST].length }\n\n rforEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].tail; walker !== null;) {\n const prev = walker.prev\n forEachStep(this, fn, walker, thisp)\n walker = prev\n }\n }\n\n forEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].head; walker !== null;) {\n const next = walker.next\n forEachStep(this, fn, walker, thisp)\n walker = next\n }\n }\n\n keys () {\n return this[LRU_LIST].toArray().map(k => k.key)\n }\n\n values () {\n return this[LRU_LIST].toArray().map(k => k.value)\n }\n\n reset () {\n if (this[DISPOSE] &&\n this[LRU_LIST] &&\n this[LRU_LIST].length) {\n this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value))\n }\n\n this[CACHE] = new Map() // hash of items by key\n this[LRU_LIST] = new Yallist() // list of items in order of use recency\n this[LENGTH] = 0 // length of items in the list\n }\n\n dump () {\n return this[LRU_LIST].map(hit =>\n isStale(this, hit) ? false : {\n k: hit.key,\n v: hit.value,\n e: hit.now + (hit.maxAge || 0)\n }).toArray().filter(h => h)\n }\n\n dumpLru () {\n return this[LRU_LIST]\n }\n\n set (key, value, maxAge) {\n maxAge = maxAge || this[MAX_AGE]\n\n if (maxAge && typeof maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n\n const now = maxAge ? Date.now() : 0\n const len = this[LENGTH_CALCULATOR](value, key)\n\n if (this[CACHE].has(key)) {\n if (len > this[MAX]) {\n del(this, this[CACHE].get(key))\n return false\n }\n\n const node = this[CACHE].get(key)\n const item = node.value\n\n // dispose of the old one before overwriting\n // split out into 2 ifs for better coverage tracking\n if (this[DISPOSE]) {\n if (!this[NO_DISPOSE_ON_SET])\n this[DISPOSE](key, item.value)\n }\n\n item.now = now\n item.maxAge = maxAge\n item.value = value\n this[LENGTH] += len - item.length\n item.length = len\n this.get(key)\n trim(this)\n return true\n }\n\n const hit = new Entry(key, value, len, now, maxAge)\n\n // oversized objects fall out of cache automatically.\n if (hit.length > this[MAX]) {\n if (this[DISPOSE])\n this[DISPOSE](key, value)\n\n return false\n }\n\n this[LENGTH] += hit.length\n this[LRU_LIST].unshift(hit)\n this[CACHE].set(key, this[LRU_LIST].head)\n trim(this)\n return true\n }\n\n has (key) {\n if (!this[CACHE].has(key)) return false\n const hit = this[CACHE].get(key).value\n return !isStale(this, hit)\n }\n\n get (key) {\n return get(this, key, true)\n }\n\n peek (key) {\n return get(this, key, false)\n }\n\n pop () {\n const node = this[LRU_LIST].tail\n if (!node)\n return null\n\n del(this, node)\n return node.value\n }\n\n del (key) {\n del(this, this[CACHE].get(key))\n }\n\n load (arr) {\n // reset the cache\n this.reset()\n\n const now = Date.now()\n // A previous serialized cache has the most recent items first\n for (let l = arr.length - 1; l >= 0; l--) {\n const hit = arr[l]\n const expiresAt = hit.e || 0\n if (expiresAt === 0)\n // the item was created without expiration in a non aged cache\n this.set(hit.k, hit.v)\n else {\n const maxAge = expiresAt - now\n // dont add already expired items\n if (maxAge > 0) {\n this.set(hit.k, hit.v, maxAge)\n }\n }\n }\n }\n\n prune () {\n this[CACHE].forEach((value, key) => get(this, key, false))\n }\n}\n\nconst get = (self, key, doUse) => {\n const node = self[CACHE].get(key)\n if (node) {\n const hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n return undefined\n } else {\n if (doUse) {\n if (self[UPDATE_AGE_ON_GET])\n node.value.now = Date.now()\n self[LRU_LIST].unshiftNode(node)\n }\n }\n return hit.value\n }\n}\n\nconst isStale = (self, hit) => {\n if (!hit || (!hit.maxAge && !self[MAX_AGE]))\n return false\n\n const diff = Date.now() - hit.now\n return hit.maxAge ? diff > hit.maxAge\n : self[MAX_AGE] && (diff > self[MAX_AGE])\n}\n\nconst trim = self => {\n if (self[LENGTH] > self[MAX]) {\n for (let walker = self[LRU_LIST].tail;\n self[LENGTH] > self[MAX] && walker !== null;) {\n // We know that we're about to delete this one, and also\n // what the next least recently used key will be, so just\n // go ahead and set it now.\n const prev = walker.prev\n del(self, walker)\n walker = prev\n }\n }\n}\n\nconst del = (self, node) => {\n if (node) {\n const hit = node.value\n if (self[DISPOSE])\n self[DISPOSE](hit.key, hit.value)\n\n self[LENGTH] -= hit.length\n self[CACHE].delete(hit.key)\n self[LRU_LIST].removeNode(node)\n }\n}\n\nclass Entry {\n constructor (key, value, length, now, maxAge) {\n this.key = key\n this.value = value\n this.length = length\n this.now = now\n this.maxAge = maxAge || 0\n }\n}\n\nconst forEachStep = (self, fn, node, thisp) => {\n let hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n hit = undefined\n }\n if (hit)\n fn.call(thisp, hit.value, hit.key, self)\n}\n\nmodule.exports = LRUCache\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nvar EmptyErrorImpl = /*@__PURE__*/ (function () {\n function EmptyErrorImpl() {\n Error.call(this);\n this.message = 'no elements in sequence';\n this.name = 'EmptyError';\n return this;\n }\n EmptyErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype);\n return EmptyErrorImpl;\n})();\nexport var EmptyError = EmptyErrorImpl;\n//# sourceMappingURL=EmptyError.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nvar _enable_super_gross_mode_that_will_cause_bad_things = false;\nexport var config = {\n Promise: undefined,\n set useDeprecatedSynchronousErrorHandling(value) {\n if (value) {\n var error = /*@__PURE__*/ new Error();\n /*@__PURE__*/ console.warn('DEPRECATED! RxJS was set to use deprecated synchronous error handling behavior by code at: \\n' + error.stack);\n }\n else if (_enable_super_gross_mode_that_will_cause_bad_things) {\n /*@__PURE__*/ console.log('RxJS: Back to a better error behavior. Thank you. <3');\n }\n _enable_super_gross_mode_that_will_cause_bad_things = value;\n },\n get useDeprecatedSynchronousErrorHandling() {\n return _enable_super_gross_mode_that_will_cause_bad_things;\n },\n};\n//# sourceMappingURL=config.js.map\n","const {Cell} = require(\"../../boc\");\nconst {Address, BN, toNano, bytesToHex, hexToBytes, nacl, stringToBytes, bytesToBase64} = require(\"../../utils\");\nconst {Contract} = require(\"../index.js\");\nconst {SimpleWalletContractR1, SimpleWalletContractR2, SimpleWalletContractR3} = require(\"./WalletContractSimple\");\nconst {WalletV2ContractR1, WalletV2ContractR2} = require(\"./WalletContractV2\");\nconst {WalletV3ContractR1, WalletV3ContractR2} = require(\"./WalletContractV3\");\nconst {WalletV4ContractR1} = require(\"./WalletContractV4\");\nconst {WalletV4ContractR2} = require(\"./WalletContractV4R2\");\n\nconst ALL = {\n 'simpleR1': SimpleWalletContractR1,\n 'simpleR2': SimpleWalletContractR2,\n 'simpleR3': SimpleWalletContractR3,\n 'v2R1': WalletV2ContractR1,\n 'v2R2': WalletV2ContractR2,\n 'v3R1': WalletV3ContractR1,\n 'v3R2': WalletV3ContractR2,\n 'v4R1': WalletV4ContractR1,\n 'v4R2': WalletV4ContractR2\n};\n\nconst LIST = [SimpleWalletContractR1, SimpleWalletContractR2, SimpleWalletContractR3, WalletV2ContractR1, WalletV2ContractR2, WalletV3ContractR1, WalletV3ContractR2, WalletV4ContractR1, WalletV4ContractR2];\n\nclass Wallets {\n /**\n * @param provider {HttpProvider}\n */\n constructor(provider) {\n this.provider = provider;\n this.all = ALL;\n this.list = LIST;\n this.defaultVersion = 'v3R1';\n this.default = this.all[this.defaultVersion];\n }\n\n create(options) {\n return new this.default(this.provider, options);\n }\n}\n\nWallets.all = ALL;\nWallets.list = LIST;\n\nmodule.exports.default = Wallets;\n","import Transport from \"@ledgerhq/hw-transport\";\nimport hidFraming from \"@ledgerhq/devices/lib/hid-framing\";\nimport { identifyUSBProductId, ledgerUSBVendorId } from \"@ledgerhq/devices\";\nimport { log } from \"@ledgerhq/logs\";\nimport { TransportOpenUserCancelled, DisconnectedDeviceDuringOperation, DisconnectedDevice, TransportError } from \"@ledgerhq/errors\";\nconst ledgerDevices = [{\n vendorId: ledgerUSBVendorId\n}];\n\nconst isSupported = () => Promise.resolve(!!(global.navigator && global.navigator.hid));\n\nconst getHID = () => {\n // $FlowFixMe\n const {\n hid\n } = navigator;\n if (!hid) throw new TransportError(\"navigator.hid is not supported\", \"HIDNotSupported\");\n return hid;\n};\n\nasync function requestLedgerDevices() {\n const device = await getHID().requestDevice({\n filters: ledgerDevices\n });\n if (Array.isArray(device)) return device;\n return [device];\n}\n\nasync function getLedgerDevices() {\n const devices = await getHID().getDevices();\n return devices.filter(d => d.vendorId === ledgerUSBVendorId);\n}\n\nasync function getFirstLedgerDevice() {\n const existingDevices = await getLedgerDevices();\n if (existingDevices.length > 0) return existingDevices[0];\n const devices = await requestLedgerDevices();\n return devices[0];\n}\n/**\n * WebHID Transport implementation\n * @example\n * import TransportWebHID from \"@ledgerhq/hw-transport-webhid\";\n * ...\n * TransportWebHID.create().then(transport => ...)\n */\n\n\nexport default class TransportWebHID extends Transport {\n constructor(device) {\n super();\n this.device = void 0;\n this.deviceModel = void 0;\n this.channel = Math.floor(Math.random() * 0xffff);\n this.packetSize = 64;\n this.inputs = [];\n this.inputCallback = void 0;\n\n this.read = () => {\n if (this.inputs.length) {\n return Promise.resolve(this.inputs.shift());\n }\n\n return new Promise(success => {\n this.inputCallback = success;\n });\n };\n\n this.onInputReport = e => {\n const buffer = Buffer.from(e.data.buffer);\n\n if (this.inputCallback) {\n this.inputCallback(buffer);\n this.inputCallback = null;\n } else {\n this.inputs.push(buffer);\n }\n };\n\n this._disconnectEmitted = false;\n\n this._emitDisconnect = e => {\n if (this._disconnectEmitted) return;\n this._disconnectEmitted = true;\n this.emit(\"disconnect\", e);\n };\n\n this.exchange = apdu => this.exchangeAtomicImpl(async () => {\n const {\n channel,\n packetSize\n } = this;\n log(\"apdu\", \"=> \" + apdu.toString(\"hex\"));\n const framing = hidFraming(channel, packetSize); // Write...\n\n const blocks = framing.makeBlocks(apdu);\n\n for (let i = 0; i < blocks.length; i++) {\n await this.device.sendReport(0, blocks[i]);\n } // Read...\n\n\n let result;\n let acc;\n\n while (!(result = framing.getReducedResult(acc))) {\n const buffer = await this.read();\n acc = framing.reduceResponse(acc, buffer);\n }\n\n log(\"apdu\", \"<= \" + result.toString(\"hex\"));\n return result;\n }).catch(e => {\n if (e && e.message && e.message.includes(\"write\")) {\n this._emitDisconnect(e);\n\n throw new DisconnectedDeviceDuringOperation(e.message);\n }\n\n throw e;\n });\n\n this.device = device;\n this.deviceModel = identifyUSBProductId(device.productId);\n device.addEventListener(\"inputreport\", this.onInputReport);\n }\n\n /**\n * Similar to create() except it will always display the device permission (even if some devices are already accepted).\n */\n static async request() {\n const [device] = await requestLedgerDevices();\n return TransportWebHID.open(device);\n }\n /**\n * Similar to create() except it will never display the device permission (it returns a Promise, null if it fails to find a device).\n */\n\n\n static async openConnected() {\n const devices = await getLedgerDevices();\n if (devices.length === 0) return null;\n return TransportWebHID.open(devices[0]);\n }\n /**\n * Create a Ledger transport with a HIDDevice\n */\n\n\n static async open(device) {\n await device.open();\n const transport = new TransportWebHID(device);\n\n const onDisconnect = e => {\n if (device === e.device) {\n getHID().removeEventListener(\"disconnect\", onDisconnect);\n\n transport._emitDisconnect(new DisconnectedDevice());\n }\n };\n\n getHID().addEventListener(\"disconnect\", onDisconnect);\n return transport;\n }\n\n /**\n * Release the transport device\n */\n async close() {\n await this.exchangeBusyPromise;\n this.device.removeEventListener(\"inputreport\", this.onInputReport);\n await this.device.close();\n }\n /**\n * Exchange with the device using APDU protocol.\n * @param apdu\n * @returns a promise of apdu response\n */\n\n\n setScrambleKey() {}\n\n}\nTransportWebHID.isSupported = isSupported;\nTransportWebHID.list = getLedgerDevices;\n\nTransportWebHID.listen = observer => {\n let unsubscribed = false;\n getFirstLedgerDevice().then(device => {\n if (!device) {\n observer.error(new TransportOpenUserCancelled(\"Access denied to use Ledger device\"));\n } else if (!unsubscribed) {\n const deviceModel = identifyUSBProductId(device.productId);\n observer.next({\n type: \"add\",\n descriptor: device,\n deviceModel\n });\n observer.complete();\n }\n }, error => {\n observer.error(new TransportOpenUserCancelled(error.message));\n });\n\n function unsubscribe() {\n unsubscribed = true;\n }\n\n return {\n unsubscribe\n };\n};\n//# sourceMappingURL=TransportWebHID.js.map","const {Contract} = require(\"../../index\");\nconst {Cell} = require(\"../../../boc\");\nconst {parseAddress} = require(\"../nft/NftUtils\");\nconst {BN} = require(\"../../../utils\");\n\nconst JETTON_WALLET_CODE_HEX = 'B5EE9C7241021201000328000114FF00F4A413F4BCF2C80B0102016202030202CC0405001BA0F605DA89A1F401F481F481A8610201D40607020148080900BB0831C02497C138007434C0C05C6C2544D7C0FC02F83E903E900C7E800C5C75C87E800C7E800C00B4C7E08403E29FA954882EA54C4D167C0238208405E3514654882EA58C511100FC02780D60841657C1EF2EA4D67C02B817C12103FCBC2000113E910C1C2EBCB853600201200A0B020120101101F500F4CFFE803E90087C007B51343E803E903E90350C144DA8548AB1C17CB8B04A30BFFCB8B0950D109C150804D50500F214013E809633C58073C5B33248B232C044BD003D0032C032483E401C1D3232C0B281F2FFF274013E903D010C7E801DE0063232C1540233C59C3E8085F2DAC4F3208405E351467232C7C6600C03F73B51343E803E903E90350C0234CFFE80145468017E903E9014D6F1C1551CDB5C150804D50500F214013E809633C58073C5B33248B232C044BD003D0032C0327E401C1D3232C0B281F2FFF274140371C1472C7CB8B0C2BE80146A2860822625A020822625A004AD822860822625A028062849F8C3C975C2C070C008E00D0E0F009ACB3F5007FA0222CF165006CF1625FA025003CF16C95005CC2391729171E25008A813A08208989680AA008208989680A0A014BCF2E2C504C98040FB001023C85004FA0258CF1601CF16CCC9ED5400705279A018A182107362D09CC8CB1F5230CB3F58FA025007CF165007CF16C9718018C8CB0524CF165006FA0215CB6A14CCC971FB0010241023000E10491038375F040076C200B08E218210D53276DB708010C8CB055008CF165004FA0216CB6A12CB1F12CB3FC972FB0093356C21E203C85004FA0258CF1601CF16CCC9ED5400DB3B51343E803E903E90350C01F4CFFE803E900C145468549271C17CB8B049F0BFFCB8B0A0822625A02A8005A805AF3CB8B0E0841EF765F7B232C7C572CFD400FE8088B3C58073C5B25C60063232C14933C59C3E80B2DAB33260103EC01004F214013E809633C58073C5B3327B55200083200835C87B51343E803E903E90350C0134C7E08405E3514654882EA0841EF765F784EE84AC7CB8B174CFCC7E800C04E81408F214013E809633C58073C5B3327B55205ECCF23D';\n\nclass JettonWallet extends Contract {\n /**\n * @param provider\n * @param options {{address?: Address | string, code?: Cell}}\n */\n constructor(provider, options) {\n options.wc = 0;\n options.code = options.code || Cell.oneFromBoc(JETTON_WALLET_CODE_HEX);\n super(provider, options);\n }\n\n /**\n * @param params {{queryId?: number, jettonAmount: BN, toAddress: Address, responseAddress: Address, forwardAmount: BN, forwardPayload: Uint8Array}}\n */\n async createTransferBody(params) {\n const cell = new Cell();\n cell.bits.writeUint(0xf8a7ea5, 32); // request_transfer op\n cell.bits.writeUint(params.queryId || 0, 64);\n cell.bits.writeCoins(params.jettonAmount);\n cell.bits.writeAddress(params.toAddress);\n cell.bits.writeAddress(params.responseAddress);\n cell.bits.writeBit(false); // null custom_payload\n cell.bits.writeCoins(params.forwardAmount || new BN(0));\n cell.bits.writeBit(false); // forward_payload in this slice, not separate cell\n if (params.forwardPayload) {\n cell.bits.writeBytes(params.forwardPayload);\n }\n return cell;\n }\n\n /**\n * @param params {{queryId?: number, jettonAmount: BN, responseAddress: Address}}\n */\n async createBurnBody(params) {\n const cell = new Cell();\n cell.bits.writeUint(0x595f07bc, 32); // burn op\n cell.bits.writeUint(params.queryId || 0, 64);\n cell.bits.writeCoins(params.jettonAmount);\n cell.bits.writeAddress(params.responseAddress);\n return cell;\n }\n\n async getData() {\n const myAddress = await this.getAddress();\n const result = await this.provider.call2(myAddress.toString(), 'get_wallet_data');\n\n const balance = result[0];\n const ownerAddress = parseAddress(result[1]);\n const jettonMinterAddress = parseAddress(result[2]);\n const jettonWalletCode = result[3];\n\n return {balance, ownerAddress, jettonMinterAddress, jettonWalletCode};\n }\n}\n\nJettonWallet.codeHex = JETTON_WALLET_CODE_HEX;\n\nmodule.exports = {JettonWallet};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar INCORRECT_VALUE = global.self !== global;\n\n// `self` getter\n// https://html.spec.whatwg.org/multipage/window-object.html#dom-self\ntry {\n if (DESCRIPTORS) {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n var descriptor = Object.getOwnPropertyDescriptor(global, 'self');\n // some engines have `self`, but with incorrect descriptor\n // https://github.com/denoland/deno/issues/15765\n if (INCORRECT_VALUE || !descriptor || !descriptor.get || !descriptor.enumerable) {\n defineBuiltInAccessor(global, 'self', {\n get: function self() {\n return global;\n },\n set: function self(value) {\n if (this !== global) throw new $TypeError('Illegal invocation');\n defineProperty(global, 'self', {\n value: value,\n writable: true,\n configurable: true,\n enumerable: true\n });\n },\n configurable: true,\n enumerable: true\n });\n }\n } else $({ global: true, simple: true, forced: INCORRECT_VALUE }, {\n self: global\n });\n} catch (error) { /* empty */ }\n","/** PURE_IMPORTS_START _config,_util_hostReportError PURE_IMPORTS_END */\nimport { config } from './config';\nimport { hostReportError } from './util/hostReportError';\nexport var empty = {\n closed: true,\n next: function (value) { },\n error: function (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n else {\n hostReportError(err);\n }\n },\n complete: function () { }\n};\n//# sourceMappingURL=Observer.js.map\n","// given a set of versions and a range, create a \"simplified\" range\n// that includes the same versions that the original range does\n// If the original range is shorter than the simplified one, return that.\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\nmodule.exports = (versions, range, options) => {\n const set = []\n let first = null\n let prev = null\n const v = versions.sort((a, b) => compare(a, b, options))\n for (const version of v) {\n const included = satisfies(version, range, options)\n if (included) {\n prev = version\n if (!first) {\n first = version\n }\n } else {\n if (prev) {\n set.push([first, prev])\n }\n prev = null\n first = null\n }\n }\n if (first) {\n set.push([first, null])\n }\n\n const ranges = []\n for (const [min, max] of set) {\n if (min === max) {\n ranges.push(min)\n } else if (!max && min === v[0]) {\n ranges.push('*')\n } else if (!max) {\n ranges.push(`>=${min}`)\n } else if (min === v[0]) {\n ranges.push(`<=${max}`)\n } else {\n ranges.push(`${min} - ${max}`)\n }\n }\n const simplified = ranges.join(' || ')\n const original = typeof range.raw === 'string' ? range.raw : String(range)\n return simplified.length < original.length ? simplified : range\n}\n","'use strict';\nvar trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : trunc(number);\n};\n","'use strict';\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","const {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH,\n} = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst safeRe = exports.safeRe = []\nconst src = exports.src = []\nconst t = exports.t = {}\nlet R = 0\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]'\n\n// Replace some greedy regex tokens to prevent regex dos issues. These regex are\n// used internally via the safeRe object since all inputs in this library get\n// normalized first to trim and collapse all extra whitespace. The original\n// regexes are exported for userland consumption and lower level usage. A\n// future breaking change could export the safer regex only with a note that\n// all input should have extra whitespace removed.\nconst safeRegexReplacements = [\n ['\\\\s', 1],\n ['\\\\d', MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],\n]\n\nconst makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value\n .split(`${token}*`).join(`${token}{0,${max}}`)\n .split(`${token}+`).join(`${token}{1,${max}}`)\n }\n return value\n}\n\nconst createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value)\n const index = R++\n debug(name, index, value)\n t[name] = index\n src[index] = value\n re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '\\\\d+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:${src[t.PRERELEASE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:${src[t.PRERELEASELOOSE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCE', `${'(^|[^\\\\d])' +\n '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAIN]})` +\n `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$')\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar arrayFromConstructorAndList = require('../internals/array-from-constructor-and-list');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar sort = uncurryThis(ArrayBufferViewCore.TypedArrayPrototype.sort);\n\n// `%TypedArray%.prototype.toSorted` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tosorted\nexportTypedArrayMethod('toSorted', function toSorted(compareFn) {\n if (compareFn !== undefined) aCallable(compareFn);\n var O = aTypedArray(this);\n var A = arrayFromConstructorAndList(getTypedArrayConstructor(O), O);\n return sort(A, compareFn);\n});\n","'use strict';\nmodule.exports = {\n IndexSizeError: { s: 'INDEX_SIZE_ERR', c: 1, m: 1 },\n DOMStringSizeError: { s: 'DOMSTRING_SIZE_ERR', c: 2, m: 0 },\n HierarchyRequestError: { s: 'HIERARCHY_REQUEST_ERR', c: 3, m: 1 },\n WrongDocumentError: { s: 'WRONG_DOCUMENT_ERR', c: 4, m: 1 },\n InvalidCharacterError: { s: 'INVALID_CHARACTER_ERR', c: 5, m: 1 },\n NoDataAllowedError: { s: 'NO_DATA_ALLOWED_ERR', c: 6, m: 0 },\n NoModificationAllowedError: { s: 'NO_MODIFICATION_ALLOWED_ERR', c: 7, m: 1 },\n NotFoundError: { s: 'NOT_FOUND_ERR', c: 8, m: 1 },\n NotSupportedError: { s: 'NOT_SUPPORTED_ERR', c: 9, m: 1 },\n InUseAttributeError: { s: 'INUSE_ATTRIBUTE_ERR', c: 10, m: 1 },\n InvalidStateError: { s: 'INVALID_STATE_ERR', c: 11, m: 1 },\n SyntaxError: { s: 'SYNTAX_ERR', c: 12, m: 1 },\n InvalidModificationError: { s: 'INVALID_MODIFICATION_ERR', c: 13, m: 1 },\n NamespaceError: { s: 'NAMESPACE_ERR', c: 14, m: 1 },\n InvalidAccessError: { s: 'INVALID_ACCESS_ERR', c: 15, m: 1 },\n ValidationError: { s: 'VALIDATION_ERR', c: 16, m: 0 },\n TypeMismatchError: { s: 'TYPE_MISMATCH_ERR', c: 17, m: 1 },\n SecurityError: { s: 'SECURITY_ERR', c: 18, m: 1 },\n NetworkError: { s: 'NETWORK_ERR', c: 19, m: 1 },\n AbortError: { s: 'ABORT_ERR', c: 20, m: 1 },\n URLMismatchError: { s: 'URL_MISMATCH_ERR', c: 21, m: 1 },\n QuotaExceededError: { s: 'QUOTA_EXCEEDED_ERR', c: 22, m: 1 },\n TimeoutError: { s: 'TIMEOUT_ERR', c: 23, m: 1 },\n InvalidNodeTypeError: { s: 'INVALID_NODE_TYPE_ERR', c: 24, m: 1 },\n DataCloneError: { s: 'DATA_CLONE_ERR', c: 25, m: 1 }\n};\n","const compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n","/*!\n * Vue.js v2.7.14\n * (c) 2014-2022 Evan You\n * Released under the MIT License.\n */\nvar emptyObject = Object.freeze({});\nvar isArray = Array.isArray;\n// These helpers produce better VM code in JS engines due to their\n// explicitness and function inlining.\nfunction isUndef(v) {\n return v === undefined || v === null;\n}\nfunction isDef(v) {\n return v !== undefined && v !== null;\n}\nfunction isTrue(v) {\n return v === true;\n}\nfunction isFalse(v) {\n return v === false;\n}\n/**\n * Check if value is primitive.\n */\nfunction isPrimitive(value) {\n return (typeof value === 'string' ||\n typeof value === 'number' ||\n // $flow-disable-line\n typeof value === 'symbol' ||\n typeof value === 'boolean');\n}\nfunction isFunction(value) {\n return typeof value === 'function';\n}\n/**\n * Quick object check - this is primarily used to tell\n * objects from primitive values when we know the value\n * is a JSON-compliant type.\n */\nfunction isObject(obj) {\n return obj !== null && typeof obj === 'object';\n}\n/**\n * Get the raw type string of a value, e.g., [object Object].\n */\nvar _toString = Object.prototype.toString;\nfunction toRawType(value) {\n return _toString.call(value).slice(8, -1);\n}\n/**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\nfunction isPlainObject(obj) {\n return _toString.call(obj) === '[object Object]';\n}\nfunction isRegExp(v) {\n return _toString.call(v) === '[object RegExp]';\n}\n/**\n * Check if val is a valid array index.\n */\nfunction isValidArrayIndex(val) {\n var n = parseFloat(String(val));\n return n >= 0 && Math.floor(n) === n && isFinite(val);\n}\nfunction isPromise(val) {\n return (isDef(val) &&\n typeof val.then === 'function' &&\n typeof val.catch === 'function');\n}\n/**\n * Convert a value to a string that is actually rendered.\n */\nfunction toString(val) {\n return val == null\n ? ''\n : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)\n ? JSON.stringify(val, null, 2)\n : String(val);\n}\n/**\n * Convert an input value to a number for persistence.\n * If the conversion fails, return original string.\n */\nfunction toNumber(val) {\n var n = parseFloat(val);\n return isNaN(n) ? val : n;\n}\n/**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\nfunction makeMap(str, expectsLowerCase) {\n var map = Object.create(null);\n var list = str.split(',');\n for (var i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase ? function (val) { return map[val.toLowerCase()]; } : function (val) { return map[val]; };\n}\n/**\n * Check if a tag is a built-in tag.\n */\nvar isBuiltInTag = makeMap('slot,component', true);\n/**\n * Check if an attribute is a reserved attribute.\n */\nvar isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');\n/**\n * Remove an item from an array.\n */\nfunction remove$2(arr, item) {\n var len = arr.length;\n if (len) {\n // fast path for the only / last item\n if (item === arr[len - 1]) {\n arr.length = len - 1;\n return;\n }\n var index = arr.indexOf(item);\n if (index > -1) {\n return arr.splice(index, 1);\n }\n }\n}\n/**\n * Check whether an object has the property.\n */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn(obj, key) {\n return hasOwnProperty.call(obj, key);\n}\n/**\n * Create a cached version of a pure function.\n */\nfunction cached(fn) {\n var cache = Object.create(null);\n return function cachedFn(str) {\n var hit = cache[str];\n return hit || (cache[str] = fn(str));\n };\n}\n/**\n * Camelize a hyphen-delimited string.\n */\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cached(function (str) {\n return str.replace(camelizeRE, function (_, c) { return (c ? c.toUpperCase() : ''); });\n});\n/**\n * Capitalize a string.\n */\nvar capitalize = cached(function (str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n});\n/**\n * Hyphenate a camelCase string.\n */\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = cached(function (str) {\n return str.replace(hyphenateRE, '-$1').toLowerCase();\n});\n/**\n * Simple bind polyfill for environments that do not support it,\n * e.g., PhantomJS 1.x. Technically, we don't need this anymore\n * since native bind is now performant enough in most browsers.\n * But removing it would mean breaking code that was able to run in\n * PhantomJS 1.x, so this must be kept for backward compatibility.\n */\n/* istanbul ignore next */\nfunction polyfillBind(fn, ctx) {\n function boundFn(a) {\n var l = arguments.length;\n return l\n ? l > 1\n ? fn.apply(ctx, arguments)\n : fn.call(ctx, a)\n : fn.call(ctx);\n }\n boundFn._length = fn.length;\n return boundFn;\n}\nfunction nativeBind(fn, ctx) {\n return fn.bind(ctx);\n}\n// @ts-expect-error bind cannot be `undefined`\nvar bind = Function.prototype.bind ? nativeBind : polyfillBind;\n/**\n * Convert an Array-like object to a real Array.\n */\nfunction toArray(list, start) {\n start = start || 0;\n var i = list.length - start;\n var ret = new Array(i);\n while (i--) {\n ret[i] = list[i + start];\n }\n return ret;\n}\n/**\n * Mix properties into target object.\n */\nfunction extend(to, _from) {\n for (var key in _from) {\n to[key] = _from[key];\n }\n return to;\n}\n/**\n * Merge an Array of Objects into a single Object.\n */\nfunction toObject(arr) {\n var res = {};\n for (var i = 0; i < arr.length; i++) {\n if (arr[i]) {\n extend(res, arr[i]);\n }\n }\n return res;\n}\n/* eslint-disable no-unused-vars */\n/**\n * Perform no operation.\n * Stubbing args to make Flow happy without leaving useless transpiled code\n * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).\n */\nfunction noop(a, b, c) { }\n/**\n * Always return false.\n */\nvar no = function (a, b, c) { return false; };\n/* eslint-enable no-unused-vars */\n/**\n * Return the same value.\n */\nvar identity = function (_) { return _; };\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n */\nfunction looseEqual(a, b) {\n if (a === b)\n return true;\n var isObjectA = isObject(a);\n var isObjectB = isObject(b);\n if (isObjectA && isObjectB) {\n try {\n var isArrayA = Array.isArray(a);\n var isArrayB = Array.isArray(b);\n if (isArrayA && isArrayB) {\n return (a.length === b.length &&\n a.every(function (e, i) {\n return looseEqual(e, b[i]);\n }));\n }\n else if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime();\n }\n else if (!isArrayA && !isArrayB) {\n var keysA = Object.keys(a);\n var keysB = Object.keys(b);\n return (keysA.length === keysB.length &&\n keysA.every(function (key) {\n return looseEqual(a[key], b[key]);\n }));\n }\n else {\n /* istanbul ignore next */\n return false;\n }\n }\n catch (e) {\n /* istanbul ignore next */\n return false;\n }\n }\n else if (!isObjectA && !isObjectB) {\n return String(a) === String(b);\n }\n else {\n return false;\n }\n}\n/**\n * Return the first index at which a loosely equal value can be\n * found in the array (if value is a plain object, the array must\n * contain an object of the same shape), or -1 if it is not present.\n */\nfunction looseIndexOf(arr, val) {\n for (var i = 0; i < arr.length; i++) {\n if (looseEqual(arr[i], val))\n return i;\n }\n return -1;\n}\n/**\n * Ensure a function is called only once.\n */\nfunction once(fn) {\n var called = false;\n return function () {\n if (!called) {\n called = true;\n fn.apply(this, arguments);\n }\n };\n}\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is#polyfill\nfunction hasChanged(x, y) {\n if (x === y) {\n return x === 0 && 1 / x !== 1 / y;\n }\n else {\n return x === x || y === y;\n }\n}\n\nvar SSR_ATTR = 'data-server-rendered';\nvar ASSET_TYPES = ['component', 'directive', 'filter'];\nvar LIFECYCLE_HOOKS = [\n 'beforeCreate',\n 'created',\n 'beforeMount',\n 'mounted',\n 'beforeUpdate',\n 'updated',\n 'beforeDestroy',\n 'destroyed',\n 'activated',\n 'deactivated',\n 'errorCaptured',\n 'serverPrefetch',\n 'renderTracked',\n 'renderTriggered'\n];\n\nvar config = {\n /**\n * Option merge strategies (used in core/util/options)\n */\n // $flow-disable-line\n optionMergeStrategies: Object.create(null),\n /**\n * Whether to suppress warnings.\n */\n silent: false,\n /**\n * Show production mode tip message on boot?\n */\n productionTip: process.env.NODE_ENV !== 'production',\n /**\n * Whether to enable devtools\n */\n devtools: process.env.NODE_ENV !== 'production',\n /**\n * Whether to record perf\n */\n performance: false,\n /**\n * Error handler for watcher errors\n */\n errorHandler: null,\n /**\n * Warn handler for watcher warns\n */\n warnHandler: null,\n /**\n * Ignore certain custom elements\n */\n ignoredElements: [],\n /**\n * Custom user key aliases for v-on\n */\n // $flow-disable-line\n keyCodes: Object.create(null),\n /**\n * Check if a tag is reserved so that it cannot be registered as a\n * component. This is platform-dependent and may be overwritten.\n */\n isReservedTag: no,\n /**\n * Check if an attribute is reserved so that it cannot be used as a component\n * prop. This is platform-dependent and may be overwritten.\n */\n isReservedAttr: no,\n /**\n * Check if a tag is an unknown element.\n * Platform-dependent.\n */\n isUnknownElement: no,\n /**\n * Get the namespace of an element\n */\n getTagNamespace: noop,\n /**\n * Parse the real tag name for the specific platform.\n */\n parsePlatformTagName: identity,\n /**\n * Check if an attribute must be bound using property, e.g. value\n * Platform-dependent.\n */\n mustUseProp: no,\n /**\n * Perform updates asynchronously. Intended to be used by Vue Test Utils\n * This will significantly reduce performance if set to false.\n */\n async: true,\n /**\n * Exposed for legacy reasons\n */\n _lifecycleHooks: LIFECYCLE_HOOKS\n};\n\n/**\n * unicode letters used for parsing html tags, component names and property paths.\n * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname\n * skipping \\u10000-\\uEFFFF due to it freezing up PhantomJS\n */\nvar unicodeRegExp = /a-zA-Z\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u203F-\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD/;\n/**\n * Check if a string starts with $ or _\n */\nfunction isReserved(str) {\n var c = (str + '').charCodeAt(0);\n return c === 0x24 || c === 0x5f;\n}\n/**\n * Define a property.\n */\nfunction def(obj, key, val, enumerable) {\n Object.defineProperty(obj, key, {\n value: val,\n enumerable: !!enumerable,\n writable: true,\n configurable: true\n });\n}\n/**\n * Parse simple path.\n */\nvar bailRE = new RegExp(\"[^\".concat(unicodeRegExp.source, \".$_\\\\d]\"));\nfunction parsePath(path) {\n if (bailRE.test(path)) {\n return;\n }\n var segments = path.split('.');\n return function (obj) {\n for (var i = 0; i < segments.length; i++) {\n if (!obj)\n return;\n obj = obj[segments[i]];\n }\n return obj;\n };\n}\n\n// can we use __proto__?\nvar hasProto = '__proto__' in {};\n// Browser environment sniffing\nvar inBrowser = typeof window !== 'undefined';\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\nvar isIE = UA && /msie|trident/.test(UA);\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nvar isEdge = UA && UA.indexOf('edge/') > 0;\nUA && UA.indexOf('android') > 0;\nvar isIOS = UA && /iphone|ipad|ipod|ios/.test(UA);\nUA && /chrome\\/\\d+/.test(UA) && !isEdge;\nUA && /phantomjs/.test(UA);\nvar isFF = UA && UA.match(/firefox\\/(\\d+)/);\n// Firefox has a \"watch\" function on Object.prototype...\n// @ts-expect-error firebox support\nvar nativeWatch = {}.watch;\nvar supportsPassive = false;\nif (inBrowser) {\n try {\n var opts = {};\n Object.defineProperty(opts, 'passive', {\n get: function () {\n /* istanbul ignore next */\n supportsPassive = true;\n }\n }); // https://github.com/facebook/flow/issues/285\n window.addEventListener('test-passive', null, opts);\n }\n catch (e) { }\n}\n// this needs to be lazy-evaled because vue may be required before\n// vue-server-renderer can set VUE_ENV\nvar _isServer;\nvar isServerRendering = function () {\n if (_isServer === undefined) {\n /* istanbul ignore if */\n if (!inBrowser && typeof global !== 'undefined') {\n // detect presence of vue-server-renderer and avoid\n // Webpack shimming the process\n _isServer =\n global['process'] && global['process'].env.VUE_ENV === 'server';\n }\n else {\n _isServer = false;\n }\n }\n return _isServer;\n};\n// detect devtools\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n/* istanbul ignore next */\nfunction isNative(Ctor) {\n return typeof Ctor === 'function' && /native code/.test(Ctor.toString());\n}\nvar hasSymbol = typeof Symbol !== 'undefined' &&\n isNative(Symbol) &&\n typeof Reflect !== 'undefined' &&\n isNative(Reflect.ownKeys);\nvar _Set; // $flow-disable-line\n/* istanbul ignore if */ if (typeof Set !== 'undefined' && isNative(Set)) {\n // use native Set when available.\n _Set = Set;\n}\nelse {\n // a non-standard Set polyfill that only works with primitive keys.\n _Set = /** @class */ (function () {\n function Set() {\n this.set = Object.create(null);\n }\n Set.prototype.has = function (key) {\n return this.set[key] === true;\n };\n Set.prototype.add = function (key) {\n this.set[key] = true;\n };\n Set.prototype.clear = function () {\n this.set = Object.create(null);\n };\n return Set;\n }());\n}\n\nvar currentInstance = null;\n/**\n * This is exposed for compatibility with v3 (e.g. some functions in VueUse\n * relies on it). Do not use this internally, just use `currentInstance`.\n *\n * @internal this function needs manual type declaration because it relies\n * on previously manually authored types from Vue 2\n */\nfunction getCurrentInstance() {\n return currentInstance && { proxy: currentInstance };\n}\n/**\n * @internal\n */\nfunction setCurrentInstance(vm) {\n if (vm === void 0) { vm = null; }\n if (!vm)\n currentInstance && currentInstance._scope.off();\n currentInstance = vm;\n vm && vm._scope.on();\n}\n\n/**\n * @internal\n */\nvar VNode = /** @class */ (function () {\n function VNode(tag, data, children, text, elm, context, componentOptions, asyncFactory) {\n this.tag = tag;\n this.data = data;\n this.children = children;\n this.text = text;\n this.elm = elm;\n this.ns = undefined;\n this.context = context;\n this.fnContext = undefined;\n this.fnOptions = undefined;\n this.fnScopeId = undefined;\n this.key = data && data.key;\n this.componentOptions = componentOptions;\n this.componentInstance = undefined;\n this.parent = undefined;\n this.raw = false;\n this.isStatic = false;\n this.isRootInsert = true;\n this.isComment = false;\n this.isCloned = false;\n this.isOnce = false;\n this.asyncFactory = asyncFactory;\n this.asyncMeta = undefined;\n this.isAsyncPlaceholder = false;\n }\n Object.defineProperty(VNode.prototype, \"child\", {\n // DEPRECATED: alias for componentInstance for backwards compat.\n /* istanbul ignore next */\n get: function () {\n return this.componentInstance;\n },\n enumerable: false,\n configurable: true\n });\n return VNode;\n}());\nvar createEmptyVNode = function (text) {\n if (text === void 0) { text = ''; }\n var node = new VNode();\n node.text = text;\n node.isComment = true;\n return node;\n};\nfunction createTextVNode(val) {\n return new VNode(undefined, undefined, undefined, String(val));\n}\n// optimized shallow clone\n// used for static nodes and slot nodes because they may be reused across\n// multiple renders, cloning them avoids errors when DOM manipulations rely\n// on their elm reference.\nfunction cloneVNode(vnode) {\n var cloned = new VNode(vnode.tag, vnode.data, \n // #7975\n // clone children array to avoid mutating original in case of cloning\n // a child.\n vnode.children && vnode.children.slice(), vnode.text, vnode.elm, vnode.context, vnode.componentOptions, vnode.asyncFactory);\n cloned.ns = vnode.ns;\n cloned.isStatic = vnode.isStatic;\n cloned.key = vnode.key;\n cloned.isComment = vnode.isComment;\n cloned.fnContext = vnode.fnContext;\n cloned.fnOptions = vnode.fnOptions;\n cloned.fnScopeId = vnode.fnScopeId;\n cloned.asyncMeta = vnode.asyncMeta;\n cloned.isCloned = true;\n return cloned;\n}\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\n\nvar uid$2 = 0;\nvar pendingCleanupDeps = [];\nvar cleanupDeps = function () {\n for (var i = 0; i < pendingCleanupDeps.length; i++) {\n var dep = pendingCleanupDeps[i];\n dep.subs = dep.subs.filter(function (s) { return s; });\n dep._pending = false;\n }\n pendingCleanupDeps.length = 0;\n};\n/**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n * @internal\n */\nvar Dep = /** @class */ (function () {\n function Dep() {\n // pending subs cleanup\n this._pending = false;\n this.id = uid$2++;\n this.subs = [];\n }\n Dep.prototype.addSub = function (sub) {\n this.subs.push(sub);\n };\n Dep.prototype.removeSub = function (sub) {\n // #12696 deps with massive amount of subscribers are extremely slow to\n // clean up in Chromium\n // to workaround this, we unset the sub for now, and clear them on\n // next scheduler flush.\n this.subs[this.subs.indexOf(sub)] = null;\n if (!this._pending) {\n this._pending = true;\n pendingCleanupDeps.push(this);\n }\n };\n Dep.prototype.depend = function (info) {\n if (Dep.target) {\n Dep.target.addDep(this);\n if (process.env.NODE_ENV !== 'production' && info && Dep.target.onTrack) {\n Dep.target.onTrack(__assign({ effect: Dep.target }, info));\n }\n }\n };\n Dep.prototype.notify = function (info) {\n // stabilize the subscriber list first\n var subs = this.subs.filter(function (s) { return s; });\n if (process.env.NODE_ENV !== 'production' && !config.async) {\n // subs aren't sorted in scheduler if not running async\n // we need to sort them now to make sure they fire in correct\n // order\n subs.sort(function (a, b) { return a.id - b.id; });\n }\n for (var i = 0, l = subs.length; i < l; i++) {\n var sub = subs[i];\n if (process.env.NODE_ENV !== 'production' && info) {\n sub.onTrigger &&\n sub.onTrigger(__assign({ effect: subs[i] }, info));\n }\n sub.update();\n }\n };\n return Dep;\n}());\n// The current target watcher being evaluated.\n// This is globally unique because only one watcher\n// can be evaluated at a time.\nDep.target = null;\nvar targetStack = [];\nfunction pushTarget(target) {\n targetStack.push(target);\n Dep.target = target;\n}\nfunction popTarget() {\n targetStack.pop();\n Dep.target = targetStack[targetStack.length - 1];\n}\n\n/*\n * not type checking this file because flow doesn't play well with\n * dynamically accessing methods on Array prototype\n */\nvar arrayProto = Array.prototype;\nvar arrayMethods = Object.create(arrayProto);\nvar methodsToPatch = [\n 'push',\n 'pop',\n 'shift',\n 'unshift',\n 'splice',\n 'sort',\n 'reverse'\n];\n/**\n * Intercept mutating methods and emit events\n */\nmethodsToPatch.forEach(function (method) {\n // cache original method\n var original = arrayProto[method];\n def(arrayMethods, method, function mutator() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var result = original.apply(this, args);\n var ob = this.__ob__;\n var inserted;\n switch (method) {\n case 'push':\n case 'unshift':\n inserted = args;\n break;\n case 'splice':\n inserted = args.slice(2);\n break;\n }\n if (inserted)\n ob.observeArray(inserted);\n // notify change\n if (process.env.NODE_ENV !== 'production') {\n ob.dep.notify({\n type: \"array mutation\" /* TriggerOpTypes.ARRAY_MUTATION */,\n target: this,\n key: method\n });\n }\n else {\n ob.dep.notify();\n }\n return result;\n });\n});\n\nvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\nvar NO_INIITIAL_VALUE = {};\n/**\n * In some cases we may want to disable observation inside a component's\n * update computation.\n */\nvar shouldObserve = true;\nfunction toggleObserving(value) {\n shouldObserve = value;\n}\n// ssr mock dep\nvar mockDep = {\n notify: noop,\n depend: noop,\n addSub: noop,\n removeSub: noop\n};\n/**\n * Observer class that is attached to each observed\n * object. Once attached, the observer converts the target\n * object's property keys into getter/setters that\n * collect dependencies and dispatch updates.\n */\nvar Observer = /** @class */ (function () {\n function Observer(value, shallow, mock) {\n if (shallow === void 0) { shallow = false; }\n if (mock === void 0) { mock = false; }\n this.value = value;\n this.shallow = shallow;\n this.mock = mock;\n // this.value = value\n this.dep = mock ? mockDep : new Dep();\n this.vmCount = 0;\n def(value, '__ob__', this);\n if (isArray(value)) {\n if (!mock) {\n if (hasProto) {\n value.__proto__ = arrayMethods;\n /* eslint-enable no-proto */\n }\n else {\n for (var i = 0, l = arrayKeys.length; i < l; i++) {\n var key = arrayKeys[i];\n def(value, key, arrayMethods[key]);\n }\n }\n }\n if (!shallow) {\n this.observeArray(value);\n }\n }\n else {\n /**\n * Walk through all properties and convert them into\n * getter/setters. This method should only be called when\n * value type is Object.\n */\n var keys = Object.keys(value);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n defineReactive(value, key, NO_INIITIAL_VALUE, undefined, shallow, mock);\n }\n }\n }\n /**\n * Observe a list of Array items.\n */\n Observer.prototype.observeArray = function (value) {\n for (var i = 0, l = value.length; i < l; i++) {\n observe(value[i], false, this.mock);\n }\n };\n return Observer;\n}());\n// helpers\n/**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n */\nfunction observe(value, shallow, ssrMockReactivity) {\n if (value && hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n return value.__ob__;\n }\n if (shouldObserve &&\n (ssrMockReactivity || !isServerRendering()) &&\n (isArray(value) || isPlainObject(value)) &&\n Object.isExtensible(value) &&\n !value.__v_skip /* ReactiveFlags.SKIP */ &&\n !isRef(value) &&\n !(value instanceof VNode)) {\n return new Observer(value, shallow, ssrMockReactivity);\n }\n}\n/**\n * Define a reactive property on an Object.\n */\nfunction defineReactive(obj, key, val, customSetter, shallow, mock) {\n var dep = new Dep();\n var property = Object.getOwnPropertyDescriptor(obj, key);\n if (property && property.configurable === false) {\n return;\n }\n // cater for pre-defined getter/setters\n var getter = property && property.get;\n var setter = property && property.set;\n if ((!getter || setter) &&\n (val === NO_INIITIAL_VALUE || arguments.length === 2)) {\n val = obj[key];\n }\n var childOb = !shallow && observe(val, false, mock);\n Object.defineProperty(obj, key, {\n enumerable: true,\n configurable: true,\n get: function reactiveGetter() {\n var value = getter ? getter.call(obj) : val;\n if (Dep.target) {\n if (process.env.NODE_ENV !== 'production') {\n dep.depend({\n target: obj,\n type: \"get\" /* TrackOpTypes.GET */,\n key: key\n });\n }\n else {\n dep.depend();\n }\n if (childOb) {\n childOb.dep.depend();\n if (isArray(value)) {\n dependArray(value);\n }\n }\n }\n return isRef(value) && !shallow ? value.value : value;\n },\n set: function reactiveSetter(newVal) {\n var value = getter ? getter.call(obj) : val;\n if (!hasChanged(value, newVal)) {\n return;\n }\n if (process.env.NODE_ENV !== 'production' && customSetter) {\n customSetter();\n }\n if (setter) {\n setter.call(obj, newVal);\n }\n else if (getter) {\n // #7981: for accessor properties without setter\n return;\n }\n else if (!shallow && isRef(value) && !isRef(newVal)) {\n value.value = newVal;\n return;\n }\n else {\n val = newVal;\n }\n childOb = !shallow && observe(newVal, false, mock);\n if (process.env.NODE_ENV !== 'production') {\n dep.notify({\n type: \"set\" /* TriggerOpTypes.SET */,\n target: obj,\n key: key,\n newValue: newVal,\n oldValue: value\n });\n }\n else {\n dep.notify();\n }\n }\n });\n return dep;\n}\nfunction set(target, key, val) {\n if (process.env.NODE_ENV !== 'production' && (isUndef(target) || isPrimitive(target))) {\n warn(\"Cannot set reactive property on undefined, null, or primitive value: \".concat(target));\n }\n if (isReadonly(target)) {\n process.env.NODE_ENV !== 'production' && warn(\"Set operation on key \\\"\".concat(key, \"\\\" failed: target is readonly.\"));\n return;\n }\n var ob = target.__ob__;\n if (isArray(target) && isValidArrayIndex(key)) {\n target.length = Math.max(target.length, key);\n target.splice(key, 1, val);\n // when mocking for SSR, array methods are not hijacked\n if (ob && !ob.shallow && ob.mock) {\n observe(val, false, true);\n }\n return val;\n }\n if (key in target && !(key in Object.prototype)) {\n target[key] = val;\n return val;\n }\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' &&\n warn('Avoid adding reactive properties to a Vue instance or its root $data ' +\n 'at runtime - declare it upfront in the data option.');\n return val;\n }\n if (!ob) {\n target[key] = val;\n return val;\n }\n defineReactive(ob.value, key, val, undefined, ob.shallow, ob.mock);\n if (process.env.NODE_ENV !== 'production') {\n ob.dep.notify({\n type: \"add\" /* TriggerOpTypes.ADD */,\n target: target,\n key: key,\n newValue: val,\n oldValue: undefined\n });\n }\n else {\n ob.dep.notify();\n }\n return val;\n}\nfunction del(target, key) {\n if (process.env.NODE_ENV !== 'production' && (isUndef(target) || isPrimitive(target))) {\n warn(\"Cannot delete reactive property on undefined, null, or primitive value: \".concat(target));\n }\n if (isArray(target) && isValidArrayIndex(key)) {\n target.splice(key, 1);\n return;\n }\n var ob = target.__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' &&\n warn('Avoid deleting properties on a Vue instance or its root $data ' +\n '- just set it to null.');\n return;\n }\n if (isReadonly(target)) {\n process.env.NODE_ENV !== 'production' &&\n warn(\"Delete operation on key \\\"\".concat(key, \"\\\" failed: target is readonly.\"));\n return;\n }\n if (!hasOwn(target, key)) {\n return;\n }\n delete target[key];\n if (!ob) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n ob.dep.notify({\n type: \"delete\" /* TriggerOpTypes.DELETE */,\n target: target,\n key: key\n });\n }\n else {\n ob.dep.notify();\n }\n}\n/**\n * Collect dependencies on array elements when the array is touched, since\n * we cannot intercept array element access like property getters.\n */\nfunction dependArray(value) {\n for (var e = void 0, i = 0, l = value.length; i < l; i++) {\n e = value[i];\n if (e && e.__ob__) {\n e.__ob__.dep.depend();\n }\n if (isArray(e)) {\n dependArray(e);\n }\n }\n}\n\nfunction reactive(target) {\n makeReactive(target, false);\n return target;\n}\n/**\n * Return a shallowly-reactive copy of the original object, where only the root\n * level properties are reactive. It also does not auto-unwrap refs (even at the\n * root level).\n */\nfunction shallowReactive(target) {\n makeReactive(target, true);\n def(target, \"__v_isShallow\" /* ReactiveFlags.IS_SHALLOW */, true);\n return target;\n}\nfunction makeReactive(target, shallow) {\n // if trying to observe a readonly proxy, return the readonly version.\n if (!isReadonly(target)) {\n if (process.env.NODE_ENV !== 'production') {\n if (isArray(target)) {\n warn(\"Avoid using Array as root value for \".concat(shallow ? \"shallowReactive()\" : \"reactive()\", \" as it cannot be tracked in watch() or watchEffect(). Use \").concat(shallow ? \"shallowRef()\" : \"ref()\", \" instead. This is a Vue-2-only limitation.\"));\n }\n var existingOb = target && target.__ob__;\n if (existingOb && existingOb.shallow !== shallow) {\n warn(\"Target is already a \".concat(existingOb.shallow ? \"\" : \"non-\", \"shallow reactive object, and cannot be converted to \").concat(shallow ? \"\" : \"non-\", \"shallow.\"));\n }\n }\n var ob = observe(target, shallow, isServerRendering() /* ssr mock reactivity */);\n if (process.env.NODE_ENV !== 'production' && !ob) {\n if (target == null || isPrimitive(target)) {\n warn(\"value cannot be made reactive: \".concat(String(target)));\n }\n if (isCollectionType(target)) {\n warn(\"Vue 2 does not support reactive collection types such as Map or Set.\");\n }\n }\n }\n}\nfunction isReactive(value) {\n if (isReadonly(value)) {\n return isReactive(value[\"__v_raw\" /* ReactiveFlags.RAW */]);\n }\n return !!(value && value.__ob__);\n}\nfunction isShallow(value) {\n return !!(value && value.__v_isShallow);\n}\nfunction isReadonly(value) {\n return !!(value && value.__v_isReadonly);\n}\nfunction isProxy(value) {\n return isReactive(value) || isReadonly(value);\n}\nfunction toRaw(observed) {\n var raw = observed && observed[\"__v_raw\" /* ReactiveFlags.RAW */];\n return raw ? toRaw(raw) : observed;\n}\nfunction markRaw(value) {\n // non-extensible objects won't be observed anyway\n if (Object.isExtensible(value)) {\n def(value, \"__v_skip\" /* ReactiveFlags.SKIP */, true);\n }\n return value;\n}\n/**\n * @internal\n */\nfunction isCollectionType(value) {\n var type = toRawType(value);\n return (type === 'Map' || type === 'WeakMap' || type === 'Set' || type === 'WeakSet');\n}\n\n/**\n * @internal\n */\nvar RefFlag = \"__v_isRef\";\nfunction isRef(r) {\n return !!(r && r.__v_isRef === true);\n}\nfunction ref$1(value) {\n return createRef(value, false);\n}\nfunction shallowRef(value) {\n return createRef(value, true);\n}\nfunction createRef(rawValue, shallow) {\n if (isRef(rawValue)) {\n return rawValue;\n }\n var ref = {};\n def(ref, RefFlag, true);\n def(ref, \"__v_isShallow\" /* ReactiveFlags.IS_SHALLOW */, shallow);\n def(ref, 'dep', defineReactive(ref, 'value', rawValue, null, shallow, isServerRendering()));\n return ref;\n}\nfunction triggerRef(ref) {\n if (process.env.NODE_ENV !== 'production' && !ref.dep) {\n warn(\"received object is not a triggerable ref.\");\n }\n if (process.env.NODE_ENV !== 'production') {\n ref.dep &&\n ref.dep.notify({\n type: \"set\" /* TriggerOpTypes.SET */,\n target: ref,\n key: 'value'\n });\n }\n else {\n ref.dep && ref.dep.notify();\n }\n}\nfunction unref(ref) {\n return isRef(ref) ? ref.value : ref;\n}\nfunction proxyRefs(objectWithRefs) {\n if (isReactive(objectWithRefs)) {\n return objectWithRefs;\n }\n var proxy = {};\n var keys = Object.keys(objectWithRefs);\n for (var i = 0; i < keys.length; i++) {\n proxyWithRefUnwrap(proxy, objectWithRefs, keys[i]);\n }\n return proxy;\n}\nfunction proxyWithRefUnwrap(target, source, key) {\n Object.defineProperty(target, key, {\n enumerable: true,\n configurable: true,\n get: function () {\n var val = source[key];\n if (isRef(val)) {\n return val.value;\n }\n else {\n var ob = val && val.__ob__;\n if (ob)\n ob.dep.depend();\n return val;\n }\n },\n set: function (value) {\n var oldValue = source[key];\n if (isRef(oldValue) && !isRef(value)) {\n oldValue.value = value;\n }\n else {\n source[key] = value;\n }\n }\n });\n}\nfunction customRef(factory) {\n var dep = new Dep();\n var _a = factory(function () {\n if (process.env.NODE_ENV !== 'production') {\n dep.depend({\n target: ref,\n type: \"get\" /* TrackOpTypes.GET */,\n key: 'value'\n });\n }\n else {\n dep.depend();\n }\n }, function () {\n if (process.env.NODE_ENV !== 'production') {\n dep.notify({\n target: ref,\n type: \"set\" /* TriggerOpTypes.SET */,\n key: 'value'\n });\n }\n else {\n dep.notify();\n }\n }), get = _a.get, set = _a.set;\n var ref = {\n get value() {\n return get();\n },\n set value(newVal) {\n set(newVal);\n }\n };\n def(ref, RefFlag, true);\n return ref;\n}\nfunction toRefs(object) {\n if (process.env.NODE_ENV !== 'production' && !isReactive(object)) {\n warn(\"toRefs() expects a reactive object but received a plain one.\");\n }\n var ret = isArray(object) ? new Array(object.length) : {};\n for (var key in object) {\n ret[key] = toRef(object, key);\n }\n return ret;\n}\nfunction toRef(object, key, defaultValue) {\n var val = object[key];\n if (isRef(val)) {\n return val;\n }\n var ref = {\n get value() {\n var val = object[key];\n return val === undefined ? defaultValue : val;\n },\n set value(newVal) {\n object[key] = newVal;\n }\n };\n def(ref, RefFlag, true);\n return ref;\n}\n\nvar rawToReadonlyFlag = \"__v_rawToReadonly\";\nvar rawToShallowReadonlyFlag = \"__v_rawToShallowReadonly\";\nfunction readonly(target) {\n return createReadonly(target, false);\n}\nfunction createReadonly(target, shallow) {\n if (!isPlainObject(target)) {\n if (process.env.NODE_ENV !== 'production') {\n if (isArray(target)) {\n warn(\"Vue 2 does not support readonly arrays.\");\n }\n else if (isCollectionType(target)) {\n warn(\"Vue 2 does not support readonly collection types such as Map or Set.\");\n }\n else {\n warn(\"value cannot be made readonly: \".concat(typeof target));\n }\n }\n return target;\n }\n if (process.env.NODE_ENV !== 'production' && !Object.isExtensible(target)) {\n warn(\"Vue 2 does not support creating readonly proxy for non-extensible object.\");\n }\n // already a readonly object\n if (isReadonly(target)) {\n return target;\n }\n // already has a readonly proxy\n var existingFlag = shallow ? rawToShallowReadonlyFlag : rawToReadonlyFlag;\n var existingProxy = target[existingFlag];\n if (existingProxy) {\n return existingProxy;\n }\n var proxy = Object.create(Object.getPrototypeOf(target));\n def(target, existingFlag, proxy);\n def(proxy, \"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */, true);\n def(proxy, \"__v_raw\" /* ReactiveFlags.RAW */, target);\n if (isRef(target)) {\n def(proxy, RefFlag, true);\n }\n if (shallow || isShallow(target)) {\n def(proxy, \"__v_isShallow\" /* ReactiveFlags.IS_SHALLOW */, true);\n }\n var keys = Object.keys(target);\n for (var i = 0; i < keys.length; i++) {\n defineReadonlyProperty(proxy, target, keys[i], shallow);\n }\n return proxy;\n}\nfunction defineReadonlyProperty(proxy, target, key, shallow) {\n Object.defineProperty(proxy, key, {\n enumerable: true,\n configurable: true,\n get: function () {\n var val = target[key];\n return shallow || !isPlainObject(val) ? val : readonly(val);\n },\n set: function () {\n process.env.NODE_ENV !== 'production' &&\n warn(\"Set operation on key \\\"\".concat(key, \"\\\" failed: target is readonly.\"));\n }\n });\n}\n/**\n * Returns a reactive-copy of the original object, where only the root level\n * properties are readonly, and does NOT unwrap refs nor recursively convert\n * returned properties.\n * This is used for creating the props proxy object for stateful components.\n */\nfunction shallowReadonly(target) {\n return createReadonly(target, true);\n}\n\nfunction computed(getterOrOptions, debugOptions) {\n var getter;\n var setter;\n var onlyGetter = isFunction(getterOrOptions);\n if (onlyGetter) {\n getter = getterOrOptions;\n setter = process.env.NODE_ENV !== 'production'\n ? function () {\n warn('Write operation failed: computed value is readonly');\n }\n : noop;\n }\n else {\n getter = getterOrOptions.get;\n setter = getterOrOptions.set;\n }\n var watcher = isServerRendering()\n ? null\n : new Watcher(currentInstance, getter, noop, { lazy: true });\n if (process.env.NODE_ENV !== 'production' && watcher && debugOptions) {\n watcher.onTrack = debugOptions.onTrack;\n watcher.onTrigger = debugOptions.onTrigger;\n }\n var ref = {\n // some libs rely on the presence effect for checking computed refs\n // from normal refs, but the implementation doesn't matter\n effect: watcher,\n get value() {\n if (watcher) {\n if (watcher.dirty) {\n watcher.evaluate();\n }\n if (Dep.target) {\n if (process.env.NODE_ENV !== 'production' && Dep.target.onTrack) {\n Dep.target.onTrack({\n effect: Dep.target,\n target: ref,\n type: \"get\" /* TrackOpTypes.GET */,\n key: 'value'\n });\n }\n watcher.depend();\n }\n return watcher.value;\n }\n else {\n return getter();\n }\n },\n set value(newVal) {\n setter(newVal);\n }\n };\n def(ref, RefFlag, true);\n def(ref, \"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */, onlyGetter);\n return ref;\n}\n\nvar WATCHER = \"watcher\";\nvar WATCHER_CB = \"\".concat(WATCHER, \" callback\");\nvar WATCHER_GETTER = \"\".concat(WATCHER, \" getter\");\nvar WATCHER_CLEANUP = \"\".concat(WATCHER, \" cleanup\");\n// Simple effect.\nfunction watchEffect(effect, options) {\n return doWatch(effect, null, options);\n}\nfunction watchPostEffect(effect, options) {\n return doWatch(effect, null, (process.env.NODE_ENV !== 'production'\n ? __assign(__assign({}, options), { flush: 'post' }) : { flush: 'post' }));\n}\nfunction watchSyncEffect(effect, options) {\n return doWatch(effect, null, (process.env.NODE_ENV !== 'production'\n ? __assign(__assign({}, options), { flush: 'sync' }) : { flush: 'sync' }));\n}\n// initial value for watchers to trigger on undefined initial values\nvar INITIAL_WATCHER_VALUE = {};\n// implementation\nfunction watch(source, cb, options) {\n if (process.env.NODE_ENV !== 'production' && typeof cb !== 'function') {\n warn(\"`watch(fn, options?)` signature has been moved to a separate API. \" +\n \"Use `watchEffect(fn, options?)` instead. `watch` now only \" +\n \"supports `watch(source, cb, options?) signature.\");\n }\n return doWatch(source, cb, options);\n}\nfunction doWatch(source, cb, _a) {\n var _b = _a === void 0 ? emptyObject : _a, immediate = _b.immediate, deep = _b.deep, _c = _b.flush, flush = _c === void 0 ? 'pre' : _c, onTrack = _b.onTrack, onTrigger = _b.onTrigger;\n if (process.env.NODE_ENV !== 'production' && !cb) {\n if (immediate !== undefined) {\n warn(\"watch() \\\"immediate\\\" option is only respected when using the \" +\n \"watch(source, callback, options?) signature.\");\n }\n if (deep !== undefined) {\n warn(\"watch() \\\"deep\\\" option is only respected when using the \" +\n \"watch(source, callback, options?) signature.\");\n }\n }\n var warnInvalidSource = function (s) {\n warn(\"Invalid watch source: \".concat(s, \". A watch source can only be a getter/effect \") +\n \"function, a ref, a reactive object, or an array of these types.\");\n };\n var instance = currentInstance;\n var call = function (fn, type, args) {\n if (args === void 0) { args = null; }\n return invokeWithErrorHandling(fn, null, args, instance, type);\n };\n var getter;\n var forceTrigger = false;\n var isMultiSource = false;\n if (isRef(source)) {\n getter = function () { return source.value; };\n forceTrigger = isShallow(source);\n }\n else if (isReactive(source)) {\n getter = function () {\n source.__ob__.dep.depend();\n return source;\n };\n deep = true;\n }\n else if (isArray(source)) {\n isMultiSource = true;\n forceTrigger = source.some(function (s) { return isReactive(s) || isShallow(s); });\n getter = function () {\n return source.map(function (s) {\n if (isRef(s)) {\n return s.value;\n }\n else if (isReactive(s)) {\n return traverse(s);\n }\n else if (isFunction(s)) {\n return call(s, WATCHER_GETTER);\n }\n else {\n process.env.NODE_ENV !== 'production' && warnInvalidSource(s);\n }\n });\n };\n }\n else if (isFunction(source)) {\n if (cb) {\n // getter with cb\n getter = function () { return call(source, WATCHER_GETTER); };\n }\n else {\n // no cb -> simple effect\n getter = function () {\n if (instance && instance._isDestroyed) {\n return;\n }\n if (cleanup) {\n cleanup();\n }\n return call(source, WATCHER, [onCleanup]);\n };\n }\n }\n else {\n getter = noop;\n process.env.NODE_ENV !== 'production' && warnInvalidSource(source);\n }\n if (cb && deep) {\n var baseGetter_1 = getter;\n getter = function () { return traverse(baseGetter_1()); };\n }\n var cleanup;\n var onCleanup = function (fn) {\n cleanup = watcher.onStop = function () {\n call(fn, WATCHER_CLEANUP);\n };\n };\n // in SSR there is no need to setup an actual effect, and it should be noop\n // unless it's eager\n if (isServerRendering()) {\n // we will also not call the invalidate callback (+ runner is not set up)\n onCleanup = noop;\n if (!cb) {\n getter();\n }\n else if (immediate) {\n call(cb, WATCHER_CB, [\n getter(),\n isMultiSource ? [] : undefined,\n onCleanup\n ]);\n }\n return noop;\n }\n var watcher = new Watcher(currentInstance, getter, noop, {\n lazy: true\n });\n watcher.noRecurse = !cb;\n var oldValue = isMultiSource ? [] : INITIAL_WATCHER_VALUE;\n // overwrite default run\n watcher.run = function () {\n if (!watcher.active) {\n return;\n }\n if (cb) {\n // watch(source, cb)\n var newValue = watcher.get();\n if (deep ||\n forceTrigger ||\n (isMultiSource\n ? newValue.some(function (v, i) {\n return hasChanged(v, oldValue[i]);\n })\n : hasChanged(newValue, oldValue))) {\n // cleanup before running cb again\n if (cleanup) {\n cleanup();\n }\n call(cb, WATCHER_CB, [\n newValue,\n // pass undefined as the old value when it's changed for the first time\n oldValue === INITIAL_WATCHER_VALUE ? undefined : oldValue,\n onCleanup\n ]);\n oldValue = newValue;\n }\n }\n else {\n // watchEffect\n watcher.get();\n }\n };\n if (flush === 'sync') {\n watcher.update = watcher.run;\n }\n else if (flush === 'post') {\n watcher.post = true;\n watcher.update = function () { return queueWatcher(watcher); };\n }\n else {\n // pre\n watcher.update = function () {\n if (instance && instance === currentInstance && !instance._isMounted) {\n // pre-watcher triggered before\n var buffer = instance._preWatchers || (instance._preWatchers = []);\n if (buffer.indexOf(watcher) < 0)\n buffer.push(watcher);\n }\n else {\n queueWatcher(watcher);\n }\n };\n }\n if (process.env.NODE_ENV !== 'production') {\n watcher.onTrack = onTrack;\n watcher.onTrigger = onTrigger;\n }\n // initial run\n if (cb) {\n if (immediate) {\n watcher.run();\n }\n else {\n oldValue = watcher.get();\n }\n }\n else if (flush === 'post' && instance) {\n instance.$once('hook:mounted', function () { return watcher.get(); });\n }\n else {\n watcher.get();\n }\n return function () {\n watcher.teardown();\n };\n}\n\nvar activeEffectScope;\nvar EffectScope = /** @class */ (function () {\n function EffectScope(detached) {\n if (detached === void 0) { detached = false; }\n this.detached = detached;\n /**\n * @internal\n */\n this.active = true;\n /**\n * @internal\n */\n this.effects = [];\n /**\n * @internal\n */\n this.cleanups = [];\n this.parent = activeEffectScope;\n if (!detached && activeEffectScope) {\n this.index =\n (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(this) - 1;\n }\n }\n EffectScope.prototype.run = function (fn) {\n if (this.active) {\n var currentEffectScope = activeEffectScope;\n try {\n activeEffectScope = this;\n return fn();\n }\n finally {\n activeEffectScope = currentEffectScope;\n }\n }\n else if (process.env.NODE_ENV !== 'production') {\n warn(\"cannot run an inactive effect scope.\");\n }\n };\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n EffectScope.prototype.on = function () {\n activeEffectScope = this;\n };\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n EffectScope.prototype.off = function () {\n activeEffectScope = this.parent;\n };\n EffectScope.prototype.stop = function (fromParent) {\n if (this.active) {\n var i = void 0, l = void 0;\n for (i = 0, l = this.effects.length; i < l; i++) {\n this.effects[i].teardown();\n }\n for (i = 0, l = this.cleanups.length; i < l; i++) {\n this.cleanups[i]();\n }\n if (this.scopes) {\n for (i = 0, l = this.scopes.length; i < l; i++) {\n this.scopes[i].stop(true);\n }\n }\n // nested scope, dereference from parent to avoid memory leaks\n if (!this.detached && this.parent && !fromParent) {\n // optimized O(1) removal\n var last = this.parent.scopes.pop();\n if (last && last !== this) {\n this.parent.scopes[this.index] = last;\n last.index = this.index;\n }\n }\n this.parent = undefined;\n this.active = false;\n }\n };\n return EffectScope;\n}());\nfunction effectScope(detached) {\n return new EffectScope(detached);\n}\n/**\n * @internal\n */\nfunction recordEffectScope(effect, scope) {\n if (scope === void 0) { scope = activeEffectScope; }\n if (scope && scope.active) {\n scope.effects.push(effect);\n }\n}\nfunction getCurrentScope() {\n return activeEffectScope;\n}\nfunction onScopeDispose(fn) {\n if (activeEffectScope) {\n activeEffectScope.cleanups.push(fn);\n }\n else if (process.env.NODE_ENV !== 'production') {\n warn(\"onScopeDispose() is called when there is no active effect scope\" +\n \" to be associated with.\");\n }\n}\n\nfunction provide(key, value) {\n if (!currentInstance) {\n if (process.env.NODE_ENV !== 'production') {\n warn(\"provide() can only be used inside setup().\");\n }\n }\n else {\n // TS doesn't allow symbol as index type\n resolveProvided(currentInstance)[key] = value;\n }\n}\nfunction resolveProvided(vm) {\n // by default an instance inherits its parent's provides object\n // but when it needs to provide values of its own, it creates its\n // own provides object using parent provides object as prototype.\n // this way in `inject` we can simply look up injections from direct\n // parent and let the prototype chain do the work.\n var existing = vm._provided;\n var parentProvides = vm.$parent && vm.$parent._provided;\n if (parentProvides === existing) {\n return (vm._provided = Object.create(parentProvides));\n }\n else {\n return existing;\n }\n}\nfunction inject(key, defaultValue, treatDefaultAsFactory) {\n if (treatDefaultAsFactory === void 0) { treatDefaultAsFactory = false; }\n // fallback to `currentRenderingInstance` so that this can be called in\n // a functional component\n var instance = currentInstance;\n if (instance) {\n // #2400\n // to support `app.use` plugins,\n // fallback to appContext's `provides` if the instance is at root\n var provides = instance.$parent && instance.$parent._provided;\n if (provides && key in provides) {\n // TS doesn't allow symbol as index type\n return provides[key];\n }\n else if (arguments.length > 1) {\n return treatDefaultAsFactory && isFunction(defaultValue)\n ? defaultValue.call(instance)\n : defaultValue;\n }\n else if (process.env.NODE_ENV !== 'production') {\n warn(\"injection \\\"\".concat(String(key), \"\\\" not found.\"));\n }\n }\n else if (process.env.NODE_ENV !== 'production') {\n warn(\"inject() can only be used inside setup() or functional components.\");\n }\n}\n\nvar normalizeEvent = cached(function (name) {\n var passive = name.charAt(0) === '&';\n name = passive ? name.slice(1) : name;\n var once = name.charAt(0) === '~'; // Prefixed last, checked first\n name = once ? name.slice(1) : name;\n var capture = name.charAt(0) === '!';\n name = capture ? name.slice(1) : name;\n return {\n name: name,\n once: once,\n capture: capture,\n passive: passive\n };\n});\nfunction createFnInvoker(fns, vm) {\n function invoker() {\n var fns = invoker.fns;\n if (isArray(fns)) {\n var cloned = fns.slice();\n for (var i = 0; i < cloned.length; i++) {\n invokeWithErrorHandling(cloned[i], null, arguments, vm, \"v-on handler\");\n }\n }\n else {\n // return handler return value for single handlers\n return invokeWithErrorHandling(fns, null, arguments, vm, \"v-on handler\");\n }\n }\n invoker.fns = fns;\n return invoker;\n}\nfunction updateListeners(on, oldOn, add, remove, createOnceHandler, vm) {\n var name, cur, old, event;\n for (name in on) {\n cur = on[name];\n old = oldOn[name];\n event = normalizeEvent(name);\n if (isUndef(cur)) {\n process.env.NODE_ENV !== 'production' &&\n warn(\"Invalid handler for event \\\"\".concat(event.name, \"\\\": got \") + String(cur), vm);\n }\n else if (isUndef(old)) {\n if (isUndef(cur.fns)) {\n cur = on[name] = createFnInvoker(cur, vm);\n }\n if (isTrue(event.once)) {\n cur = on[name] = createOnceHandler(event.name, cur, event.capture);\n }\n add(event.name, cur, event.capture, event.passive, event.params);\n }\n else if (cur !== old) {\n old.fns = cur;\n on[name] = old;\n }\n }\n for (name in oldOn) {\n if (isUndef(on[name])) {\n event = normalizeEvent(name);\n remove(event.name, oldOn[name], event.capture);\n }\n }\n}\n\nfunction mergeVNodeHook(def, hookKey, hook) {\n if (def instanceof VNode) {\n def = def.data.hook || (def.data.hook = {});\n }\n var invoker;\n var oldHook = def[hookKey];\n function wrappedHook() {\n hook.apply(this, arguments);\n // important: remove merged hook to ensure it's called only once\n // and prevent memory leak\n remove$2(invoker.fns, wrappedHook);\n }\n if (isUndef(oldHook)) {\n // no existing hook\n invoker = createFnInvoker([wrappedHook]);\n }\n else {\n /* istanbul ignore if */\n if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {\n // already a merged invoker\n invoker = oldHook;\n invoker.fns.push(wrappedHook);\n }\n else {\n // existing plain hook\n invoker = createFnInvoker([oldHook, wrappedHook]);\n }\n }\n invoker.merged = true;\n def[hookKey] = invoker;\n}\n\nfunction extractPropsFromVNodeData(data, Ctor, tag) {\n // we are only extracting raw values here.\n // validation and default values are handled in the child\n // component itself.\n var propOptions = Ctor.options.props;\n if (isUndef(propOptions)) {\n return;\n }\n var res = {};\n var attrs = data.attrs, props = data.props;\n if (isDef(attrs) || isDef(props)) {\n for (var key in propOptions) {\n var altKey = hyphenate(key);\n if (process.env.NODE_ENV !== 'production') {\n var keyInLowerCase = key.toLowerCase();\n if (key !== keyInLowerCase && attrs && hasOwn(attrs, keyInLowerCase)) {\n tip(\"Prop \\\"\".concat(keyInLowerCase, \"\\\" is passed to component \") +\n \"\".concat(formatComponentName(\n // @ts-expect-error tag is string\n tag || Ctor), \", but the declared prop name is\") +\n \" \\\"\".concat(key, \"\\\". \") +\n \"Note that HTML attributes are case-insensitive and camelCased \" +\n \"props need to use their kebab-case equivalents when using in-DOM \" +\n \"templates. You should probably use \\\"\".concat(altKey, \"\\\" instead of \\\"\").concat(key, \"\\\".\"));\n }\n }\n checkProp(res, props, key, altKey, true) ||\n checkProp(res, attrs, key, altKey, false);\n }\n }\n return res;\n}\nfunction checkProp(res, hash, key, altKey, preserve) {\n if (isDef(hash)) {\n if (hasOwn(hash, key)) {\n res[key] = hash[key];\n if (!preserve) {\n delete hash[key];\n }\n return true;\n }\n else if (hasOwn(hash, altKey)) {\n res[key] = hash[altKey];\n if (!preserve) {\n delete hash[altKey];\n }\n return true;\n }\n }\n return false;\n}\n\n// The template compiler attempts to minimize the need for normalization by\n// statically analyzing the template at compile time.\n//\n// For plain HTML markup, normalization can be completely skipped because the\n// generated render function is guaranteed to return Array. There are\n// two cases where extra normalization is needed:\n// 1. When the children contains components - because a functional component\n// may return an Array instead of a single root. In this case, just a simple\n// normalization is needed - if any child is an Array, we flatten the whole\n// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\n// because functional components already normalize their own children.\nfunction simpleNormalizeChildren(children) {\n for (var i = 0; i < children.length; i++) {\n if (isArray(children[i])) {\n return Array.prototype.concat.apply([], children);\n }\n }\n return children;\n}\n// 2. When the children contains constructs that always generated nested Arrays,\n// e.g.