{"version":3,"file":"index-tx3IGX5a.cjs","sources":["../node_modules/react/cjs/react-jsx-runtime.production.js","../node_modules/react/cjs/react-jsx-runtime.development.js","../node_modules/react/jsx-runtime.js","../node_modules/clsx/dist/clsx.mjs","../node_modules/react-toastify/dist/index.mjs","../node_modules/viem/_esm/utils/chain/defineChain.js","../node_modules/viem/_esm/errors/version.js","../node_modules/viem/_esm/errors/base.js","../node_modules/viem/_esm/errors/encoding.js","../node_modules/viem/_esm/utils/data/isHex.js","../node_modules/viem/_esm/utils/data/size.js","../node_modules/viem/_esm/utils/data/trim.js","../node_modules/viem/_esm/errors/data.js","../node_modules/viem/_esm/utils/data/pad.js","../node_modules/viem/_esm/utils/encoding/toHex.js","../node_modules/viem/_esm/utils/encoding/toBytes.js","../node_modules/viem/_esm/utils/encoding/fromHex.js","../node_modules/viem/_esm/utils/formatters/formatter.js","../node_modules/viem/_esm/utils/formatters/transaction.js","../node_modules/viem/_esm/utils/formatters/block.js","../node_modules/viem/_esm/utils/formatters/log.js","../node_modules/viem/_esm/utils/formatters/transactionReceipt.js","../node_modules/viem/_esm/utils/formatters/transactionRequest.js","../node_modules/viem/_esm/constants/number.js","../node_modules/viem/_esm/utils/data/concat.js","../node_modules/viem/_esm/errors/cursor.js","../node_modules/viem/_esm/utils/cursor.js","../node_modules/viem/_esm/utils/encoding/toRlp.js","../node_modules/viem/_esm/constants/unit.js","../node_modules/viem/_esm/utils/unit/formatUnits.js","../node_modules/viem/_esm/utils/unit/formatEther.js","../node_modules/viem/_esm/utils/unit/formatGwei.js","../node_modules/viem/_esm/errors/transaction.js","../node_modules/viem/_esm/utils/authorization/serializeAuthorizationList.js","../node_modules/viem/_esm/utils/blob/blobsToCommitments.js","../node_modules/viem/_esm/utils/blob/blobsToProofs.js","../node_modules/@noble/hashes/esm/crypto.js","../node_modules/@noble/hashes/esm/utils.js","../node_modules/@noble/hashes/esm/_md.js","../node_modules/@noble/hashes/esm/_u64.js","../node_modules/@noble/hashes/esm/sha2.js","../node_modules/@noble/hashes/esm/sha256.js","../node_modules/viem/_esm/utils/hash/sha256.js","../node_modules/viem/_esm/utils/blob/commitmentToVersionedHash.js","../node_modules/viem/_esm/utils/blob/commitmentsToVersionedHashes.js","../node_modules/viem/_esm/constants/blob.js","../node_modules/viem/_esm/constants/kzg.js","../node_modules/viem/_esm/errors/blob.js","../node_modules/viem/_esm/utils/blob/toBlobs.js","../node_modules/viem/_esm/utils/blob/toBlobSidecars.js","../node_modules/viem/_esm/errors/address.js","../node_modules/viem/_esm/errors/chain.js","../node_modules/viem/_esm/errors/node.js","../node_modules/viem/_esm/utils/lru.js","../node_modules/@noble/hashes/esm/sha3.js","../node_modules/viem/_esm/utils/hash/keccak256.js","../node_modules/viem/_esm/utils/address/getAddress.js","../node_modules/viem/_esm/utils/address/isAddress.js","../node_modules/viem/_esm/utils/data/slice.js","../node_modules/viem/_esm/utils/transaction/assertTransaction.js","../node_modules/viem/_esm/utils/transaction/getTransactionType.js","../node_modules/viem/_esm/utils/transaction/serializeAccessList.js","../node_modules/viem/_esm/utils/transaction/serializeTransaction.js","../node_modules/viem/_esm/op-stack/contracts.js","../node_modules/viem/_esm/op-stack/formatters.js","../node_modules/viem/_esm/op-stack/serializers.js","../node_modules/viem/_esm/op-stack/chainConfig.js","../node_modules/viem/_esm/chains/definitions/arbitrum.js","../node_modules/viem/_esm/chains/definitions/base.js","../node_modules/viem/_esm/chains/definitions/bsc.js","../node_modules/viem/_esm/utils/chain/assertCurrentChain.js","../node_modules/viem/_esm/utils/chain/getChainContractAddress.js","../node_modules/viem/_esm/accounts/utils/parseAccount.js","../node_modules/viem/_esm/errors/account.js","../node_modules/viem/_esm/constants/solidity.js","../node_modules/viem/_esm/utils/abi/formatAbiItem.js","../node_modules/viem/_esm/errors/abi.js","../node_modules/viem/_esm/utils/hash/hashSignature.js","../node_modules/abitype/dist/esm/version.js","../node_modules/abitype/dist/esm/errors.js","../node_modules/abitype/dist/esm/regex.js","../node_modules/abitype/dist/esm/human-readable/formatAbiParameter.js","../node_modules/abitype/dist/esm/human-readable/formatAbiParameters.js","../node_modules/abitype/dist/esm/human-readable/formatAbiItem.js","../node_modules/abitype/dist/esm/human-readable/runtime/signatures.js","../node_modules/abitype/dist/esm/human-readable/errors/abiItem.js","../node_modules/abitype/dist/esm/human-readable/errors/abiParameter.js","../node_modules/abitype/dist/esm/human-readable/errors/signature.js","../node_modules/abitype/dist/esm/human-readable/errors/struct.js","../node_modules/abitype/dist/esm/human-readable/errors/splitParameters.js","../node_modules/abitype/dist/esm/human-readable/runtime/cache.js","../node_modules/abitype/dist/esm/human-readable/runtime/utils.js","../node_modules/abitype/dist/esm/human-readable/runtime/structs.js","../node_modules/abitype/dist/esm/human-readable/parseAbi.js","../node_modules/viem/_esm/utils/hash/normalizeSignature.js","../node_modules/viem/_esm/utils/hash/toSignature.js","../node_modules/viem/_esm/utils/hash/toSignatureHash.js","../node_modules/viem/_esm/utils/hash/toFunctionSelector.js","../node_modules/viem/_esm/utils/encoding/fromBytes.js","../node_modules/viem/_esm/utils/regex.js","../node_modules/viem/_esm/utils/abi/encodeAbiParameters.js","../node_modules/viem/_esm/utils/abi/decodeAbiParameters.js","../node_modules/viem/_esm/utils/abi/decodeErrorResult.js","../node_modules/viem/_esm/utils/stringify.js","../node_modules/viem/_esm/utils/abi/formatAbiItemWithArgs.js","../node_modules/viem/_esm/utils/hash/toEventSelector.js","../node_modules/viem/_esm/utils/abi/getAbiItem.js","../node_modules/viem/_esm/errors/stateOverride.js","../node_modules/viem/_esm/errors/utils.js","../node_modules/viem/_esm/errors/contract.js","../node_modules/viem/_esm/errors/request.js","../node_modules/viem/_esm/errors/rpc.js","../node_modules/viem/_esm/utils/errors/getNodeError.js","../node_modules/viem/_esm/utils/errors/getCallError.js","../node_modules/viem/_esm/utils/formatters/extract.js","../node_modules/viem/_esm/utils/transaction/assertRequest.js","../node_modules/viem/_esm/linea/actions/estimateGas.js","../node_modules/viem/_esm/linea/chainConfig.js","../node_modules/viem/_esm/chains/definitions/linea.js","../node_modules/viem/_esm/chains/definitions/mainnet.js","../node_modules/viem/_esm/chains/definitions/optimism.js","../node_modules/viem/_esm/chains/definitions/polygon.js","../src/wagmi.ts","../node_modules/date-fns/constants.js","../node_modules/date-fns/constructFrom.js","../node_modules/date-fns/toDate.js","../node_modules/date-fns/addDays.js","../node_modules/date-fns/addMonths.js","../node_modules/date-fns/addMilliseconds.js","../node_modules/date-fns/addHours.js","../node_modules/date-fns/_lib/defaultOptions.js","../node_modules/date-fns/startOfWeek.js","../node_modules/date-fns/startOfISOWeek.js","../node_modules/date-fns/getISOWeekYear.js","../node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js","../node_modules/date-fns/_lib/normalizeDates.js","../node_modules/date-fns/startOfDay.js","../node_modules/date-fns/differenceInCalendarDays.js","../node_modules/date-fns/startOfISOWeekYear.js","../node_modules/date-fns/addMinutes.js","../node_modules/date-fns/addQuarters.js","../node_modules/date-fns/addSeconds.js","../node_modules/date-fns/addWeeks.js","../node_modules/date-fns/addYears.js","../node_modules/date-fns/max.js","../node_modules/date-fns/min.js","../node_modules/date-fns/isSameDay.js","../node_modules/date-fns/isDate.js","../node_modules/date-fns/isValid.js","../node_modules/date-fns/differenceInCalendarMonths.js","../node_modules/date-fns/getQuarter.js","../node_modules/date-fns/differenceInCalendarQuarters.js","../node_modules/date-fns/differenceInCalendarYears.js","../node_modules/date-fns/differenceInDays.js","../node_modules/date-fns/endOfDay.js","../node_modules/date-fns/endOfMonth.js","../node_modules/date-fns/startOfQuarter.js","../node_modules/date-fns/startOfMonth.js","../node_modules/date-fns/endOfYear.js","../node_modules/date-fns/startOfYear.js","../node_modules/date-fns/endOfWeek.js","../node_modules/date-fns/locale/en-US/_lib/formatDistance.js","../node_modules/date-fns/locale/_lib/buildFormatLongFn.js","../node_modules/date-fns/locale/en-US/_lib/formatLong.js","../node_modules/date-fns/locale/en-US/_lib/formatRelative.js","../node_modules/date-fns/locale/_lib/buildLocalizeFn.js","../node_modules/date-fns/locale/en-US/_lib/localize.js","../node_modules/date-fns/locale/_lib/buildMatchFn.js","../node_modules/date-fns/locale/_lib/buildMatchPatternFn.js","../node_modules/date-fns/locale/en-US/_lib/match.js","../node_modules/date-fns/locale/en-US.js","../node_modules/date-fns/getDayOfYear.js","../node_modules/date-fns/getISOWeek.js","../node_modules/date-fns/getWeekYear.js","../node_modules/date-fns/startOfWeekYear.js","../node_modules/date-fns/getWeek.js","../node_modules/date-fns/_lib/addLeadingZeros.js","../node_modules/date-fns/_lib/format/lightFormatters.js","../node_modules/date-fns/_lib/format/formatters.js","../node_modules/date-fns/_lib/format/longFormatters.js","../node_modules/date-fns/_lib/protectedTokens.js","../node_modules/date-fns/format.js","../node_modules/date-fns/getDate.js","../node_modules/date-fns/getDay.js","../node_modules/date-fns/getDaysInMonth.js","../node_modules/date-fns/getDefaultOptions.js","../node_modules/date-fns/getHours.js","../node_modules/date-fns/getISODay.js","../node_modules/date-fns/getMinutes.js","../node_modules/date-fns/getMonth.js","../node_modules/date-fns/getSeconds.js","../node_modules/date-fns/getTime.js","../node_modules/date-fns/getYear.js","../node_modules/date-fns/isAfter.js","../node_modules/date-fns/isBefore.js","../node_modules/date-fns/isEqual.js","../node_modules/date-fns/transpose.js","../node_modules/date-fns/parse/_lib/Setter.js","../node_modules/date-fns/parse/_lib/Parser.js","../node_modules/date-fns/parse/_lib/parsers/EraParser.js","../node_modules/date-fns/parse/_lib/constants.js","../node_modules/date-fns/parse/_lib/utils.js","../node_modules/date-fns/parse/_lib/parsers/YearParser.js","../node_modules/date-fns/parse/_lib/parsers/LocalWeekYearParser.js","../node_modules/date-fns/parse/_lib/parsers/ISOWeekYearParser.js","../node_modules/date-fns/parse/_lib/parsers/ExtendedYearParser.js","../node_modules/date-fns/parse/_lib/parsers/QuarterParser.js","../node_modules/date-fns/parse/_lib/parsers/StandAloneQuarterParser.js","../node_modules/date-fns/parse/_lib/parsers/MonthParser.js","../node_modules/date-fns/parse/_lib/parsers/StandAloneMonthParser.js","../node_modules/date-fns/setWeek.js","../node_modules/date-fns/parse/_lib/parsers/LocalWeekParser.js","../node_modules/date-fns/setISOWeek.js","../node_modules/date-fns/parse/_lib/parsers/ISOWeekParser.js","../node_modules/date-fns/parse/_lib/parsers/DateParser.js","../node_modules/date-fns/parse/_lib/parsers/DayOfYearParser.js","../node_modules/date-fns/setDay.js","../node_modules/date-fns/parse/_lib/parsers/DayParser.js","../node_modules/date-fns/parse/_lib/parsers/LocalDayParser.js","../node_modules/date-fns/parse/_lib/parsers/StandAloneLocalDayParser.js","../node_modules/date-fns/setISODay.js","../node_modules/date-fns/parse/_lib/parsers/ISODayParser.js","../node_modules/date-fns/parse/_lib/parsers/AMPMParser.js","../node_modules/date-fns/parse/_lib/parsers/AMPMMidnightParser.js","../node_modules/date-fns/parse/_lib/parsers/DayPeriodParser.js","../node_modules/date-fns/parse/_lib/parsers/Hour1to12Parser.js","../node_modules/date-fns/parse/_lib/parsers/Hour0to23Parser.js","../node_modules/date-fns/parse/_lib/parsers/Hour0To11Parser.js","../node_modules/date-fns/parse/_lib/parsers/Hour1To24Parser.js","../node_modules/date-fns/parse/_lib/parsers/MinuteParser.js","../node_modules/date-fns/parse/_lib/parsers/SecondParser.js","../node_modules/date-fns/parse/_lib/parsers/FractionOfSecondParser.js","../node_modules/date-fns/parse/_lib/parsers/ISOTimezoneWithZParser.js","../node_modules/date-fns/parse/_lib/parsers/ISOTimezoneParser.js","../node_modules/date-fns/parse/_lib/parsers/TimestampSecondsParser.js","../node_modules/date-fns/parse/_lib/parsers/TimestampMillisecondsParser.js","../node_modules/date-fns/parse/_lib/parsers.js","../node_modules/date-fns/parse.js","../node_modules/date-fns/isSameMonth.js","../node_modules/date-fns/isSameQuarter.js","../node_modules/date-fns/isSameYear.js","../node_modules/date-fns/isWithinInterval.js","../node_modules/date-fns/subDays.js","../node_modules/date-fns/parseISO.js","../node_modules/date-fns/setMonth.js","../node_modules/date-fns/setHours.js","../node_modules/date-fns/setMinutes.js","../node_modules/date-fns/setQuarter.js","../node_modules/date-fns/setSeconds.js","../node_modules/date-fns/setYear.js","../node_modules/date-fns/subMonths.js","../node_modules/date-fns/subQuarters.js","../node_modules/date-fns/subWeeks.js","../node_modules/date-fns/subYears.js","../node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../node_modules/@floating-ui/react/dist/floating-ui.react.utils.mjs","../node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","../node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs","../node_modules/@floating-ui/react/dist/floating-ui.react.mjs","../node_modules/react-datepicker/dist/index.es.js","../src/common/DatePicker.tsx","../node_modules/react-spinners/esm/helpers/unitConverter.js","../node_modules/react-spinners/esm/helpers/animation.js","../node_modules/react-spinners/esm/ClipLoader.js","../node_modules/viem/node_modules/@noble/curves/esm/utils.js","../node_modules/viem/node_modules/ox/_esm/core/version.js","../node_modules/viem/node_modules/ox/_esm/core/internal/errors.js","../node_modules/viem/node_modules/ox/_esm/core/Errors.js","../node_modules/viem/node_modules/ox/_esm/core/internal/hex.js","../node_modules/viem/node_modules/ox/_esm/core/Hex.js","../node_modules/viem/node_modules/@noble/curves/esm/abstract/modular.js","../node_modules/@noble/hashes/esm/hmac.js","../node_modules/viem/node_modules/@noble/curves/esm/abstract/curve.js","../node_modules/viem/node_modules/@noble/curves/esm/abstract/weierstrass.js","../node_modules/viem/node_modules/@noble/curves/esm/_shortw_utils.js","../node_modules/viem/node_modules/@noble/curves/esm/secp256k1.js","../node_modules/viem/_esm/utils/abi/decodeFunctionResult.js","../node_modules/viem/_esm/utils/abi/prepareEncodeFunctionData.js","../node_modules/viem/_esm/utils/abi/encodeFunctionData.js","../node_modules/viem/_esm/utils/errors/getContractError.js","../node_modules/viem/_esm/utils/getAction.js","../node_modules/viem/node_modules/ox/_esm/core/Withdrawal.js","../node_modules/viem/node_modules/ox/_esm/core/BlockOverrides.js","../node_modules/viem/_esm/constants/abis.js","../node_modules/viem/_esm/constants/contract.js","../node_modules/viem/_esm/constants/contracts.js","../node_modules/viem/_esm/utils/abi/encodeDeployData.js","../node_modules/viem/_esm/utils/promise/withResolvers.js","../node_modules/viem/_esm/utils/promise/createBatchScheduler.js","../node_modules/viem/_esm/utils/stateOverride.js","../node_modules/viem/_esm/actions/public/call.js","../node_modules/viem/_esm/actions/public/readContract.js","../node_modules/viem/_esm/constants/strings.js","../node_modules/viem/_esm/utils/signature/toPrefixedMessage.js","../node_modules/viem/_esm/utils/signature/hashMessage.js","../node_modules/viem/_esm/errors/typedData.js","../node_modules/viem/_esm/utils/typedData.js","../node_modules/viem/_esm/utils/signature/hashTypedData.js","../node_modules/viem/_esm/account-abstraction/constants/abis.js","../node_modules/viem/_esm/account-abstraction/utils/userOperation/getInitCode.js","../node_modules/viem/_esm/utils/wait.js","../node_modules/viem/_esm/utils/address/isAddressEqual.js","../node_modules/viem/_esm/utils/authorization/hashAuthorization.js","../node_modules/viem/_esm/accounts/utils/publicKeyToAddress.js","../node_modules/viem/_esm/utils/signature/recoverPublicKey.js","../node_modules/viem/_esm/utils/signature/recoverAddress.js","../node_modules/viem/_esm/utils/authorization/recoverAuthorizationAddress.js","../node_modules/viem/_esm/errors/estimateGas.js","../node_modules/viem/_esm/utils/errors/getEstimateGasError.js","../node_modules/viem/_esm/utils/errors/getTransactionError.js","../node_modules/viem/_esm/constants/bytes.js","../node_modules/viem/_esm/utils/signature/serializeErc6492Signature.js","../node_modules/viem/_esm/actions/public/getTransactionCount.js","../node_modules/viem/_esm/utils/nonceManager.js","../node_modules/viem/_esm/account-abstraction/utils/userOperation/toPackedUserOperation.js","../node_modules/viem/_esm/account-abstraction/utils/userOperation/getUserOperationTypedData.js","../node_modules/viem/_esm/account-abstraction/utils/userOperation/getUserOperationHash.js","../node_modules/viem/_esm/actions/public/getCode.js","../node_modules/viem/_esm/account-abstraction/accounts/toSmartAccount.js","../node_modules/viem/_esm/actions/wallet/signMessage.js","../node_modules/viem/_esm/actions/wallet/signTypedData.js","../node_modules/viem/_esm/accounts/toAccount.js","../node_modules/viem/_esm/utils/signature/serializeSignature.js","../node_modules/viem/_esm/accounts/utils/sign.js","../node_modules/viem/_esm/accounts/utils/signAuthorization.js","../node_modules/viem/_esm/accounts/utils/signMessage.js","../node_modules/viem/_esm/accounts/utils/signTransaction.js","../node_modules/viem/_esm/accounts/utils/signTypedData.js","../node_modules/viem/_esm/accounts/privateKeyToAccount.js","../node_modules/viem/_esm/account-abstraction/errors/bundler.js","../node_modules/viem/_esm/account-abstraction/errors/userOperation.js","../node_modules/viem/_esm/account-abstraction/utils/errors/getBundlerError.js","../node_modules/viem/_esm/account-abstraction/utils/errors/getUserOperationError.js","../node_modules/viem/_esm/account-abstraction/utils/formatters/userOperationGas.js","../node_modules/viem/_esm/account-abstraction/utils/formatters/userOperationRequest.js","../node_modules/viem/_esm/actions/public/getChainId.js","../node_modules/viem/_esm/errors/fee.js","../node_modules/viem/_esm/errors/block.js","../node_modules/viem/_esm/actions/public/getBlock.js","../node_modules/viem/_esm/actions/public/getGasPrice.js","../node_modules/viem/_esm/actions/public/estimateMaxPriorityFeePerGas.js","../node_modules/viem/_esm/actions/public/estimateFeesPerGas.js","../node_modules/viem/_esm/actions/public/getBalance.js","../node_modules/viem/_esm/actions/public/estimateGas.js","../node_modules/viem/_esm/actions/wallet/prepareTransactionRequest.js","../node_modules/viem/_esm/actions/wallet/sendRawTransaction.js","../node_modules/viem/_esm/actions/wallet/sendTransaction.js","../node_modules/viem/_esm/utils/observe.js","../node_modules/viem/_esm/utils/poll.js","../node_modules/viem/_esm/actions/wallet/prepareAuthorization.js","../node_modules/viem/_esm/actions/wallet/signAuthorization.js","../node_modules/viem/_esm/actions/public/simulateContract.js","../node_modules/viem/_esm/account-abstraction/actions/paymaster/getPaymasterData.js","../node_modules/viem/_esm/account-abstraction/actions/paymaster/getPaymasterStubData.js","../node_modules/viem/_esm/account-abstraction/actions/bundler/prepareUserOperation.js","../node_modules/viem/_esm/account-abstraction/actions/bundler/estimateUserOperationGas.js","../node_modules/viem/_esm/account-abstraction/actions/bundler/getSupportedEntryPoints.js","../node_modules/viem/_esm/account-abstraction/utils/formatters/userOperation.js","../node_modules/viem/_esm/account-abstraction/actions/bundler/getUserOperation.js","../node_modules/viem/_esm/account-abstraction/utils/formatters/userOperationReceipt.js","../node_modules/viem/_esm/account-abstraction/actions/bundler/getUserOperationReceipt.js","../node_modules/viem/_esm/account-abstraction/actions/bundler/sendUserOperation.js","../node_modules/viem/_esm/account-abstraction/actions/bundler/waitForUserOperationReceipt.js","../node_modules/viem/_esm/account-abstraction/clients/decorators/bundler.js","../node_modules/viem/_esm/account-abstraction/clients/decorators/paymaster.js","../node_modules/viem/_esm/utils/uid.js","../node_modules/viem/_esm/clients/createClient.js","../node_modules/viem/_esm/account-abstraction/clients/createPaymasterClient.js","../node_modules/viem/_esm/account-abstraction/constants/address.js","../node_modules/@zerodev/sdk/_esm/actions/public/getAccountNonce.js","../node_modules/@zerodev/sdk/_esm/actions/public/getSenderAddress.js","../node_modules/@zerodev/sdk/_esm/constants.js","../node_modules/@zerodev/sdk/_esm/accounts/kernel/abi/kernel_v_3_0_0/KernelModuleAbi.js","../node_modules/@zerodev/sdk/_esm/actions/public/isPluginInstalled.js","../node_modules/semver/internal/constants.js","../node_modules/semver/internal/debug.js","../node_modules/semver/internal/re.js","../node_modules/semver/internal/parse-options.js","../node_modules/semver/internal/identifiers.js","../node_modules/semver/classes/semver.js","../node_modules/semver/functions/parse.js","../node_modules/semver/functions/valid.js","../node_modules/semver/functions/clean.js","../node_modules/semver/functions/inc.js","../node_modules/semver/functions/diff.js","../node_modules/semver/functions/major.js","../node_modules/semver/functions/minor.js","../node_modules/semver/functions/patch.js","../node_modules/semver/functions/prerelease.js","../node_modules/semver/functions/compare.js","../node_modules/semver/functions/rcompare.js","../node_modules/semver/functions/compare-loose.js","../node_modules/semver/functions/compare-build.js","../node_modules/semver/functions/sort.js","../node_modules/semver/functions/rsort.js","../node_modules/semver/functions/gt.js","../node_modules/semver/functions/lt.js","../node_modules/semver/functions/eq.js","../node_modules/semver/functions/neq.js","../node_modules/semver/functions/gte.js","../node_modules/semver/functions/lte.js","../node_modules/semver/functions/cmp.js","../node_modules/semver/functions/coerce.js","../node_modules/semver/internal/lrucache.js","../node_modules/semver/classes/range.js","../node_modules/semver/classes/comparator.js","../node_modules/semver/functions/satisfies.js","../node_modules/semver/ranges/to-comparators.js","../node_modules/semver/ranges/max-satisfying.js","../node_modules/semver/ranges/min-satisfying.js","../node_modules/semver/ranges/min-version.js","../node_modules/semver/ranges/valid.js","../node_modules/semver/ranges/outside.js","../node_modules/semver/ranges/gtr.js","../node_modules/semver/ranges/ltr.js","../node_modules/semver/ranges/intersects.js","../node_modules/semver/ranges/simplify.js","../node_modules/semver/ranges/subset.js","../node_modules/semver/index.js","../node_modules/@zerodev/sdk/_esm/utils.js","../node_modules/@zerodev/sdk/_esm/utils/toSigner.js","../node_modules/@zerodev/sdk/_esm/accounts/kernel/abi/KernelAccountAbi.js","../node_modules/@zerodev/sdk/_esm/accounts/kernel/utils/ep0_6/encodeExecuteBatchCall.js","../node_modules/@zerodev/sdk/_esm/accounts/kernel/utils/ep0_6/encodeExecuteDelegateCall.js","../node_modules/@zerodev/sdk/_esm/accounts/kernel/utils/ep0_6/encodeExecuteSingleCall.js","../node_modules/@zerodev/sdk/_esm/accounts/kernel/utils/account/ep0_6/encodeCallData.js","../node_modules/@zerodev/sdk/_esm/accounts/kernel/utils/account/ep0_6/encodeModuleInstallCallData.js","../node_modules/@zerodev/sdk/_esm/types/kernel.js","../node_modules/@zerodev/sdk/_esm/accounts/kernel/abi/kernel_v_3_0_0/KernelAccountAbi.js","../node_modules/@zerodev/sdk/_esm/accounts/kernel/utils/account/ep0_7/getKernelV3Nonce.js","../node_modules/@zerodev/sdk/_esm/accounts/kernel/abi/EIP1271Abi.js","../node_modules/@zerodev/sdk/_esm/accounts/kernel/utils/common/accountMetadata.js","../node_modules/@zerodev/sdk/_esm/accounts/kernel/utils/common/getActionSelector.js","../node_modules/@zerodev/sdk/_esm/accounts/kernel/utils/plugins/ep0_6/getEncodedPluginsData.js","../node_modules/@zerodev/sdk/_esm/accounts/kernel/utils/plugins/ep0_6/getPluginsEnableTypedData.js","../node_modules/@zerodev/sdk/_esm/accounts/kernel/utils/plugins/ep0_7/getEncodedPluginsData.js","../node_modules/@zerodev/sdk/_esm/accounts/kernel/utils/plugins/ep0_7/getPluginsEnableTypedData.js","../node_modules/@zerodev/sdk/_esm/accounts/kernel/utils/plugins/ep0_7/isPluginInitialized.js","../node_modules/@zerodev/sdk/_esm/accounts/utils/toKernelPluginManager.js","../node_modules/@zerodev/sdk/_esm/accounts/kernel/abi/kernel_v_3_0_0/KernelFactoryAbi.js","../node_modules/@zerodev/sdk/_esm/accounts/kernel/abi/kernel_v_3_0_0/KernelFactoryStakerAbi.js","../node_modules/@zerodev/sdk/_esm/accounts/kernel/abi/kernel_v_3_1/KernelAccountAbi.js","../node_modules/@zerodev/sdk/_esm/accounts/kernel/abi/SafeCreateCallAbi.js","../node_modules/@zerodev/sdk/_esm/accounts/kernel/utils/common/encodeSafeCreateCall.js","../node_modules/@zerodev/sdk/_esm/accounts/kernel/utils/account/ep0_6/encodeDeployCallData.js","../node_modules/@zerodev/sdk/_esm/accounts/kernel/utils/ep0_7/encodeExecuteCall.js","../node_modules/@zerodev/sdk/_esm/accounts/kernel/utils/ep0_7/encodeExecuteBatchCall.js","../node_modules/@zerodev/sdk/_esm/accounts/kernel/utils/ep0_7/encodeExecuteDelegateCall.js","../node_modules/@zerodev/sdk/_esm/accounts/kernel/utils/ep0_7/encodeExecuteSingleCall.js","../node_modules/@zerodev/sdk/_esm/accounts/kernel/utils/account/ep0_7/encodeCallData.js","../node_modules/@zerodev/sdk/_esm/accounts/kernel/utils/account/ep0_7/encodeDeployCallData.js","../node_modules/@zerodev/sdk/_esm/accounts/kernel/utils/ep0_7/hashKernelSignatureWrapper.js","../node_modules/@zerodev/sdk/_esm/accounts/kernel/utils/common/eip712WrapHash.js","../node_modules/@zerodev/sdk/_esm/accounts/kernel/utils/plugins/ep0_7/getPluginInstallCallData.js","../node_modules/@zerodev/sdk/_esm/accounts/kernel/createKernelAccount.js","../node_modules/@zerodev/sdk/_esm/accounts/addressToEmptyAccount.js","../node_modules/@zerodev/ecdsa-validator/_esm/constants.js","../node_modules/@zerodev/ecdsa-validator/_esm/toECDSAValidatorPlugin.js","../node_modules/@actalink/commonlib/node_modules/permissionless/_esm/utils/deepHexlify.js","../node_modules/@actalink/commonlib/node_modules/permissionless/_esm/utils/getRequiredPrefund.js","../node_modules/@actalink/commonlib/node_modules/permissionless/_esm/errors/index.js","../node_modules/@actalink/commonlib/node_modules/permissionless/_esm/actions/smartAccount/sendTransaction.js","../node_modules/@actalink/commonlib/node_modules/permissionless/_esm/actions/smartAccount/signMessage.js","../node_modules/@actalink/commonlib/node_modules/permissionless/_esm/actions/smartAccount/signTypedData.js","../node_modules/@actalink/commonlib/node_modules/permissionless/_esm/actions/smartAccount/writeContract.js","../node_modules/@actalink/commonlib/node_modules/permissionless/_esm/clients/decorators/smartAccount.js","../node_modules/@actalink/commonlib/node_modules/permissionless/_esm/clients/createSmartAccountClient.js","../node_modules/@actalink/commonlib/node_modules/permissionless/_esm/actions/pimlico/getTokenQuotes.js","../node_modules/@actalink/commonlib/node_modules/permissionless/_esm/actions/pimlico/getUserOperationGasPrice.js","../node_modules/@actalink/commonlib/node_modules/permissionless/_esm/actions/pimlico/getUserOperationStatus.js","../node_modules/@actalink/commonlib/node_modules/permissionless/_esm/actions/pimlico/sendCompressedUserOperation.js","../node_modules/@actalink/commonlib/node_modules/permissionless/_esm/actions/pimlico/sponsorUserOperation.js","../node_modules/@actalink/commonlib/node_modules/permissionless/_esm/actions/pimlico/validateSponsorshipPolicies.js","../node_modules/@actalink/commonlib/node_modules/permissionless/_esm/actions/pimlico/estimateErc20PaymasterCost.js","../node_modules/@actalink/commonlib/node_modules/permissionless/_esm/clients/decorators/pimlico.js","../node_modules/@actalink/commonlib/node_modules/permissionless/_esm/clients/pimlico.js","../node_modules/@zerodev/permissions/_esm/constants.js","../node_modules/@zerodev/permissions/_esm/policies/types.js","../node_modules/@zerodev/permissions/_esm/policies/callPolicyUtils.js","../node_modules/@zerodev/permissions/_esm/policies/toCallPolicy.js","../node_modules/@actalink/commonlib/dist/index.js","../node_modules/@tanstack/query-core/build/modern/subscribable.js","../node_modules/@tanstack/query-core/build/modern/utils.js","../node_modules/@tanstack/query-core/build/modern/focusManager.js","../node_modules/@tanstack/query-core/build/modern/onlineManager.js","../node_modules/@tanstack/query-core/build/modern/thenable.js","../node_modules/@tanstack/query-core/build/modern/retryer.js","../node_modules/@tanstack/query-core/build/modern/notifyManager.js","../node_modules/@tanstack/query-core/build/modern/removable.js","../node_modules/@tanstack/query-core/build/modern/query.js","../node_modules/@tanstack/query-core/build/modern/queryCache.js","../node_modules/@tanstack/query-core/build/modern/mutation.js","../node_modules/@tanstack/query-core/build/modern/mutationCache.js","../node_modules/@tanstack/query-core/build/modern/infiniteQueryBehavior.js","../node_modules/@tanstack/query-core/build/modern/queryClient.js","../node_modules/@tanstack/react-query/build/modern/QueryClientProvider.js","../src/Widget.tsx"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n  REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n  var key = null;\n  void 0 !== maybeKey && (key = \"\" + maybeKey);\n  void 0 !== config.key && (key = \"\" + config.key);\n  if (\"key\" in config) {\n    maybeKey = {};\n    for (var propName in config)\n      \"key\" !== propName && (maybeKey[propName] = config[propName]);\n  } else maybeKey = config;\n  config = maybeKey.ref;\n  return {\n    $$typeof: REACT_ELEMENT_TYPE,\n    type: type,\n    key: key,\n    ref: void 0 !== config ? config : null,\n    props: maybeKey\n  };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n","/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n  (function () {\n    function getComponentNameFromType(type) {\n      if (null == type) return null;\n      if (\"function\" === typeof type)\n        return type.$$typeof === REACT_CLIENT_REFERENCE\n          ? null\n          : type.displayName || type.name || null;\n      if (\"string\" === typeof type) return type;\n      switch (type) {\n        case REACT_FRAGMENT_TYPE:\n          return \"Fragment\";\n        case REACT_PROFILER_TYPE:\n          return \"Profiler\";\n        case REACT_STRICT_MODE_TYPE:\n          return \"StrictMode\";\n        case REACT_SUSPENSE_TYPE:\n          return \"Suspense\";\n        case REACT_SUSPENSE_LIST_TYPE:\n          return \"SuspenseList\";\n        case REACT_ACTIVITY_TYPE:\n          return \"Activity\";\n      }\n      if (\"object\" === typeof type)\n        switch (\n          (\"number\" === typeof type.tag &&\n            console.error(\n              \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n            ),\n          type.$$typeof)\n        ) {\n          case REACT_PORTAL_TYPE:\n            return \"Portal\";\n          case REACT_CONTEXT_TYPE:\n            return (type.displayName || \"Context\") + \".Provider\";\n          case REACT_CONSUMER_TYPE:\n            return (type._context.displayName || \"Context\") + \".Consumer\";\n          case REACT_FORWARD_REF_TYPE:\n            var innerType = type.render;\n            type = type.displayName;\n            type ||\n              ((type = innerType.displayName || innerType.name || \"\"),\n              (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n            return type;\n          case REACT_MEMO_TYPE:\n            return (\n              (innerType = type.displayName || null),\n              null !== innerType\n                ? innerType\n                : getComponentNameFromType(type.type) || \"Memo\"\n            );\n          case REACT_LAZY_TYPE:\n            innerType = type._payload;\n            type = type._init;\n            try {\n              return getComponentNameFromType(type(innerType));\n            } catch (x) {}\n        }\n      return null;\n    }\n    function testStringCoercion(value) {\n      return \"\" + value;\n    }\n    function checkKeyStringCoercion(value) {\n      try {\n        testStringCoercion(value);\n        var JSCompiler_inline_result = !1;\n      } catch (e) {\n        JSCompiler_inline_result = !0;\n      }\n      if (JSCompiler_inline_result) {\n        JSCompiler_inline_result = console;\n        var JSCompiler_temp_const = JSCompiler_inline_result.error;\n        var JSCompiler_inline_result$jscomp$0 =\n          (\"function\" === typeof Symbol &&\n            Symbol.toStringTag &&\n            value[Symbol.toStringTag]) ||\n          value.constructor.name ||\n          \"Object\";\n        JSCompiler_temp_const.call(\n          JSCompiler_inline_result,\n          \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n          JSCompiler_inline_result$jscomp$0\n        );\n        return testStringCoercion(value);\n      }\n    }\n    function getTaskName(type) {\n      if (type === REACT_FRAGMENT_TYPE) return \"<>\";\n      if (\n        \"object\" === typeof type &&\n        null !== type &&\n        type.$$typeof === REACT_LAZY_TYPE\n      )\n        return \"<...>\";\n      try {\n        var name = getComponentNameFromType(type);\n        return name ? \"<\" + name + \">\" : \"<...>\";\n      } catch (x) {\n        return \"<...>\";\n      }\n    }\n    function getOwner() {\n      var dispatcher = ReactSharedInternals.A;\n      return null === dispatcher ? null : dispatcher.getOwner();\n    }\n    function UnknownOwner() {\n      return Error(\"react-stack-top-frame\");\n    }\n    function hasValidKey(config) {\n      if (hasOwnProperty.call(config, \"key\")) {\n        var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n        if (getter && getter.isReactWarning) return !1;\n      }\n      return void 0 !== config.key;\n    }\n    function defineKeyPropWarningGetter(props, displayName) {\n      function warnAboutAccessingKey() {\n        specialPropKeyWarningShown ||\n          ((specialPropKeyWarningShown = !0),\n          console.error(\n            \"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\",\n            displayName\n          ));\n      }\n      warnAboutAccessingKey.isReactWarning = !0;\n      Object.defineProperty(props, \"key\", {\n        get: warnAboutAccessingKey,\n        configurable: !0\n      });\n    }\n    function elementRefGetterWithDeprecationWarning() {\n      var componentName = getComponentNameFromType(this.type);\n      didWarnAboutElementRef[componentName] ||\n        ((didWarnAboutElementRef[componentName] = !0),\n        console.error(\n          \"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.\"\n        ));\n      componentName = this.props.ref;\n      return void 0 !== componentName ? componentName : null;\n    }\n    function ReactElement(\n      type,\n      key,\n      self,\n      source,\n      owner,\n      props,\n      debugStack,\n      debugTask\n    ) {\n      self = props.ref;\n      type = {\n        $$typeof: REACT_ELEMENT_TYPE,\n        type: type,\n        key: key,\n        props: props,\n        _owner: owner\n      };\n      null !== (void 0 !== self ? self : null)\n        ? Object.defineProperty(type, \"ref\", {\n            enumerable: !1,\n            get: elementRefGetterWithDeprecationWarning\n          })\n        : Object.defineProperty(type, \"ref\", { enumerable: !1, value: null });\n      type._store = {};\n      Object.defineProperty(type._store, \"validated\", {\n        configurable: !1,\n        enumerable: !1,\n        writable: !0,\n        value: 0\n      });\n      Object.defineProperty(type, \"_debugInfo\", {\n        configurable: !1,\n        enumerable: !1,\n        writable: !0,\n        value: null\n      });\n      Object.defineProperty(type, \"_debugStack\", {\n        configurable: !1,\n        enumerable: !1,\n        writable: !0,\n        value: debugStack\n      });\n      Object.defineProperty(type, \"_debugTask\", {\n        configurable: !1,\n        enumerable: !1,\n        writable: !0,\n        value: debugTask\n      });\n      Object.freeze && (Object.freeze(type.props), Object.freeze(type));\n      return type;\n    }\n    function jsxDEVImpl(\n      type,\n      config,\n      maybeKey,\n      isStaticChildren,\n      source,\n      self,\n      debugStack,\n      debugTask\n    ) {\n      var children = config.children;\n      if (void 0 !== children)\n        if (isStaticChildren)\n          if (isArrayImpl(children)) {\n            for (\n              isStaticChildren = 0;\n              isStaticChildren < children.length;\n              isStaticChildren++\n            )\n              validateChildKeys(children[isStaticChildren]);\n            Object.freeze && Object.freeze(children);\n          } else\n            console.error(\n              \"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.\"\n            );\n        else validateChildKeys(children);\n      if (hasOwnProperty.call(config, \"key\")) {\n        children = getComponentNameFromType(type);\n        var keys = Object.keys(config).filter(function (k) {\n          return \"key\" !== k;\n        });\n        isStaticChildren =\n          0 < keys.length\n            ? \"{key: someKey, \" + keys.join(\": ..., \") + \": ...}\"\n            : \"{key: someKey}\";\n        didWarnAboutKeySpread[children + isStaticChildren] ||\n          ((keys =\n            0 < keys.length ? \"{\" + keys.join(\": ..., \") + \": ...}\" : \"{}\"),\n          console.error(\n            'A props object containing a \"key\" prop is being spread into JSX:\\n  let props = %s;\\n  <%s {...props} />\\nReact keys must be passed directly to JSX without using spread:\\n  let props = %s;\\n  <%s key={someKey} {...props} />',\n            isStaticChildren,\n            children,\n            keys,\n            children\n          ),\n          (didWarnAboutKeySpread[children + isStaticChildren] = !0));\n      }\n      children = null;\n      void 0 !== maybeKey &&\n        (checkKeyStringCoercion(maybeKey), (children = \"\" + maybeKey));\n      hasValidKey(config) &&\n        (checkKeyStringCoercion(config.key), (children = \"\" + config.key));\n      if (\"key\" in config) {\n        maybeKey = {};\n        for (var propName in config)\n          \"key\" !== propName && (maybeKey[propName] = config[propName]);\n      } else maybeKey = config;\n      children &&\n        defineKeyPropWarningGetter(\n          maybeKey,\n          \"function\" === typeof type\n            ? type.displayName || type.name || \"Unknown\"\n            : type\n        );\n      return ReactElement(\n        type,\n        children,\n        self,\n        source,\n        getOwner(),\n        maybeKey,\n        debugStack,\n        debugTask\n      );\n    }\n    function validateChildKeys(node) {\n      \"object\" === typeof node &&\n        null !== node &&\n        node.$$typeof === REACT_ELEMENT_TYPE &&\n        node._store &&\n        (node._store.validated = 1);\n    }\n    var React = require(\"react\"),\n      REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n      REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n      REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n      REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n      REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\");\n    Symbol.for(\"react.provider\");\n    var REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n      REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n      REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n      REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n      REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n      REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n      REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n      REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n      REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n      ReactSharedInternals =\n        React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n      hasOwnProperty = Object.prototype.hasOwnProperty,\n      isArrayImpl = Array.isArray,\n      createTask = console.createTask\n        ? console.createTask\n        : function () {\n            return null;\n          };\n    React = {\n      \"react-stack-bottom-frame\": function (callStackForError) {\n        return callStackForError();\n      }\n    };\n    var specialPropKeyWarningShown;\n    var didWarnAboutElementRef = {};\n    var unknownOwnerDebugStack = React[\"react-stack-bottom-frame\"].bind(\n      React,\n      UnknownOwner\n    )();\n    var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));\n    var didWarnAboutKeySpread = {};\n    exports.Fragment = REACT_FRAGMENT_TYPE;\n    exports.jsx = function (type, config, maybeKey, source, self) {\n      var trackActualOwner =\n        1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n      return jsxDEVImpl(\n        type,\n        config,\n        maybeKey,\n        !1,\n        source,\n        self,\n        trackActualOwner\n          ? Error(\"react-stack-top-frame\")\n          : unknownOwnerDebugStack,\n        trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n      );\n    };\n    exports.jsxs = function (type, config, maybeKey, source, self) {\n      var trackActualOwner =\n        1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n      return jsxDEVImpl(\n        type,\n        config,\n        maybeKey,\n        !0,\n        source,\n        self,\n        trackActualOwner\n          ? Error(\"react-stack-top-frame\")\n          : unknownOwnerDebugStack,\n        trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n      );\n    };\n  })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n  module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","\"use client\";\nfunction Mt(t){if(!t||typeof document==\"undefined\")return;let o=document.head||document.getElementsByTagName(\"head\")[0],e=document.createElement(\"style\");e.type=\"text/css\",o.firstChild?o.insertBefore(e,o.firstChild):o.appendChild(e),e.styleSheet?e.styleSheet.cssText=t:e.appendChild(document.createTextNode(t))}Mt(`:root{--toastify-color-light: #fff;--toastify-color-dark: #121212;--toastify-color-info: #3498db;--toastify-color-success: #07bc0c;--toastify-color-warning: #f1c40f;--toastify-color-error: hsl(6, 78%, 57%);--toastify-color-transparent: rgba(255, 255, 255, .7);--toastify-icon-color-info: var(--toastify-color-info);--toastify-icon-color-success: var(--toastify-color-success);--toastify-icon-color-warning: var(--toastify-color-warning);--toastify-icon-color-error: var(--toastify-color-error);--toastify-container-width: fit-content;--toastify-toast-width: 320px;--toastify-toast-offset: 16px;--toastify-toast-top: max(var(--toastify-toast-offset), env(safe-area-inset-top));--toastify-toast-right: max(var(--toastify-toast-offset), env(safe-area-inset-right));--toastify-toast-left: max(var(--toastify-toast-offset), env(safe-area-inset-left));--toastify-toast-bottom: max(var(--toastify-toast-offset), env(safe-area-inset-bottom));--toastify-toast-background: #fff;--toastify-toast-padding: 14px;--toastify-toast-min-height: 64px;--toastify-toast-max-height: 800px;--toastify-toast-bd-radius: 6px;--toastify-toast-shadow: 0px 4px 12px rgba(0, 0, 0, .1);--toastify-font-family: sans-serif;--toastify-z-index: 9999;--toastify-text-color-light: #757575;--toastify-text-color-dark: #fff;--toastify-text-color-info: #fff;--toastify-text-color-success: #fff;--toastify-text-color-warning: #fff;--toastify-text-color-error: #fff;--toastify-spinner-color: #616161;--toastify-spinner-color-empty-area: #e0e0e0;--toastify-color-progress-light: linear-gradient(to right, #4cd964, #5ac8fa, #007aff, #34aadc, #5856d6, #ff2d55);--toastify-color-progress-dark: #bb86fc;--toastify-color-progress-info: var(--toastify-color-info);--toastify-color-progress-success: var(--toastify-color-success);--toastify-color-progress-warning: var(--toastify-color-warning);--toastify-color-progress-error: var(--toastify-color-error);--toastify-color-progress-bgo: .2}.Toastify__toast-container{z-index:var(--toastify-z-index);-webkit-transform:translate3d(0,0,var(--toastify-z-index));position:fixed;width:var(--toastify-container-width);box-sizing:border-box;color:#fff;display:flex;flex-direction:column}.Toastify__toast-container--top-left{top:var(--toastify-toast-top);left:var(--toastify-toast-left)}.Toastify__toast-container--top-center{top:var(--toastify-toast-top);left:50%;transform:translate(-50%);align-items:center}.Toastify__toast-container--top-right{top:var(--toastify-toast-top);right:var(--toastify-toast-right);align-items:end}.Toastify__toast-container--bottom-left{bottom:var(--toastify-toast-bottom);left:var(--toastify-toast-left)}.Toastify__toast-container--bottom-center{bottom:var(--toastify-toast-bottom);left:50%;transform:translate(-50%);align-items:center}.Toastify__toast-container--bottom-right{bottom:var(--toastify-toast-bottom);right:var(--toastify-toast-right);align-items:end}.Toastify__toast{--y: 0;position:relative;touch-action:none;width:var(--toastify-toast-width);min-height:var(--toastify-toast-min-height);box-sizing:border-box;margin-bottom:1rem;padding:var(--toastify-toast-padding);border-radius:var(--toastify-toast-bd-radius);box-shadow:var(--toastify-toast-shadow);max-height:var(--toastify-toast-max-height);font-family:var(--toastify-font-family);z-index:0;display:flex;flex:1 auto;align-items:center;word-break:break-word}@media only screen and (max-width: 480px){.Toastify__toast-container{width:100vw;left:env(safe-area-inset-left);margin:0}.Toastify__toast-container--top-left,.Toastify__toast-container--top-center,.Toastify__toast-container--top-right{top:env(safe-area-inset-top);transform:translate(0)}.Toastify__toast-container--bottom-left,.Toastify__toast-container--bottom-center,.Toastify__toast-container--bottom-right{bottom:env(safe-area-inset-bottom);transform:translate(0)}.Toastify__toast-container--rtl{right:env(safe-area-inset-right);left:initial}.Toastify__toast{--toastify-toast-width: 100%;margin-bottom:0;border-radius:0}}.Toastify__toast-container[data-stacked=true]{width:var(--toastify-toast-width)}.Toastify__toast--stacked{position:absolute;width:100%;transform:translate3d(0,var(--y),0) scale(var(--s));transition:transform .3s}.Toastify__toast--stacked[data-collapsed] .Toastify__toast-body,.Toastify__toast--stacked[data-collapsed] .Toastify__close-button{transition:opacity .1s}.Toastify__toast--stacked[data-collapsed=false]{overflow:visible}.Toastify__toast--stacked[data-collapsed=true]:not(:last-child)>*{opacity:0}.Toastify__toast--stacked:after{content:\"\";position:absolute;left:0;right:0;height:calc(var(--g) * 1px);bottom:100%}.Toastify__toast--stacked[data-pos=top]{top:0}.Toastify__toast--stacked[data-pos=bot]{bottom:0}.Toastify__toast--stacked[data-pos=bot].Toastify__toast--stacked:before{transform-origin:top}.Toastify__toast--stacked[data-pos=top].Toastify__toast--stacked:before{transform-origin:bottom}.Toastify__toast--stacked:before{content:\"\";position:absolute;left:0;right:0;bottom:0;height:100%;transform:scaleY(3);z-index:-1}.Toastify__toast--rtl{direction:rtl}.Toastify__toast--close-on-click{cursor:pointer}.Toastify__toast-icon{margin-inline-end:10px;width:22px;flex-shrink:0;display:flex}.Toastify--animate{animation-fill-mode:both;animation-duration:.5s}.Toastify--animate-icon{animation-fill-mode:both;animation-duration:.3s}.Toastify__toast-theme--dark{background:var(--toastify-color-dark);color:var(--toastify-text-color-dark)}.Toastify__toast-theme--light,.Toastify__toast-theme--colored.Toastify__toast--default{background:var(--toastify-color-light);color:var(--toastify-text-color-light)}.Toastify__toast-theme--colored.Toastify__toast--info{color:var(--toastify-text-color-info);background:var(--toastify-color-info)}.Toastify__toast-theme--colored.Toastify__toast--success{color:var(--toastify-text-color-success);background:var(--toastify-color-success)}.Toastify__toast-theme--colored.Toastify__toast--warning{color:var(--toastify-text-color-warning);background:var(--toastify-color-warning)}.Toastify__toast-theme--colored.Toastify__toast--error{color:var(--toastify-text-color-error);background:var(--toastify-color-error)}.Toastify__progress-bar-theme--light{background:var(--toastify-color-progress-light)}.Toastify__progress-bar-theme--dark{background:var(--toastify-color-progress-dark)}.Toastify__progress-bar--info{background:var(--toastify-color-progress-info)}.Toastify__progress-bar--success{background:var(--toastify-color-progress-success)}.Toastify__progress-bar--warning{background:var(--toastify-color-progress-warning)}.Toastify__progress-bar--error{background:var(--toastify-color-progress-error)}.Toastify__progress-bar-theme--colored.Toastify__progress-bar--info,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--success,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--warning,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--error{background:var(--toastify-color-transparent)}.Toastify__close-button{color:#fff;position:absolute;top:6px;right:6px;background:transparent;outline:none;border:none;padding:0;cursor:pointer;opacity:.7;transition:.3s ease;z-index:1}.Toastify__toast--rtl .Toastify__close-button{left:6px;right:unset}.Toastify__close-button--light{color:#000;opacity:.3}.Toastify__close-button>svg{fill:currentColor;height:16px;width:14px}.Toastify__close-button:hover,.Toastify__close-button:focus{opacity:1}@keyframes Toastify__trackProgress{0%{transform:scaleX(1)}to{transform:scaleX(0)}}.Toastify__progress-bar{position:absolute;bottom:0;left:0;width:100%;height:100%;z-index:1;opacity:.7;transform-origin:left}.Toastify__progress-bar--animated{animation:Toastify__trackProgress linear 1 forwards}.Toastify__progress-bar--controlled{transition:transform .2s}.Toastify__progress-bar--rtl{right:0;left:initial;transform-origin:right;border-bottom-left-radius:initial}.Toastify__progress-bar--wrp{position:absolute;overflow:hidden;bottom:0;left:0;width:100%;height:5px;border-bottom-left-radius:var(--toastify-toast-bd-radius);border-bottom-right-radius:var(--toastify-toast-bd-radius)}.Toastify__progress-bar--wrp[data-hidden=true]{opacity:0}.Toastify__progress-bar--bg{opacity:var(--toastify-color-progress-bgo);width:100%;height:100%}.Toastify__spinner{width:20px;height:20px;box-sizing:border-box;border:2px solid;border-radius:100%;border-color:var(--toastify-spinner-color-empty-area);border-right-color:var(--toastify-spinner-color);animation:Toastify__spin .65s linear infinite}@keyframes Toastify__bounceInRight{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(3000px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes Toastify__bounceOutRight{20%{opacity:1;transform:translate3d(-20px,var(--y),0)}to{opacity:0;transform:translate3d(2000px,var(--y),0)}}@keyframes Toastify__bounceInLeft{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(-3000px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes Toastify__bounceOutLeft{20%{opacity:1;transform:translate3d(20px,var(--y),0)}to{opacity:0;transform:translate3d(-2000px,var(--y),0)}}@keyframes Toastify__bounceInUp{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(0,3000px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes Toastify__bounceOutUp{20%{transform:translate3d(0,calc(var(--y) - 10px),0)}40%,45%{opacity:1;transform:translate3d(0,calc(var(--y) + 20px),0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes Toastify__bounceInDown{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(0,-3000px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes Toastify__bounceOutDown{20%{transform:translate3d(0,calc(var(--y) - 10px),0)}40%,45%{opacity:1;transform:translate3d(0,calc(var(--y) + 20px),0)}to{opacity:0;transform:translate3d(0,2000px,0)}}.Toastify__bounce-enter--top-left,.Toastify__bounce-enter--bottom-left{animation-name:Toastify__bounceInLeft}.Toastify__bounce-enter--top-right,.Toastify__bounce-enter--bottom-right{animation-name:Toastify__bounceInRight}.Toastify__bounce-enter--top-center{animation-name:Toastify__bounceInDown}.Toastify__bounce-enter--bottom-center{animation-name:Toastify__bounceInUp}.Toastify__bounce-exit--top-left,.Toastify__bounce-exit--bottom-left{animation-name:Toastify__bounceOutLeft}.Toastify__bounce-exit--top-right,.Toastify__bounce-exit--bottom-right{animation-name:Toastify__bounceOutRight}.Toastify__bounce-exit--top-center{animation-name:Toastify__bounceOutUp}.Toastify__bounce-exit--bottom-center{animation-name:Toastify__bounceOutDown}@keyframes Toastify__zoomIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes Toastify__zoomOut{0%{opacity:1}50%{opacity:0;transform:translate3d(0,var(--y),0) scale3d(.3,.3,.3)}to{opacity:0}}.Toastify__zoom-enter{animation-name:Toastify__zoomIn}.Toastify__zoom-exit{animation-name:Toastify__zoomOut}@keyframes Toastify__flipIn{0%{transform:perspective(400px) rotateX(90deg);animation-timing-function:ease-in;opacity:0}40%{transform:perspective(400px) rotateX(-20deg);animation-timing-function:ease-in}60%{transform:perspective(400px) rotateX(10deg);opacity:1}80%{transform:perspective(400px) rotateX(-5deg)}to{transform:perspective(400px)}}@keyframes Toastify__flipOut{0%{transform:translate3d(0,var(--y),0) perspective(400px)}30%{transform:translate3d(0,var(--y),0) perspective(400px) rotateX(-20deg);opacity:1}to{transform:translate3d(0,var(--y),0) perspective(400px) rotateX(90deg);opacity:0}}.Toastify__flip-enter{animation-name:Toastify__flipIn}.Toastify__flip-exit{animation-name:Toastify__flipOut}@keyframes Toastify__slideInRight{0%{transform:translate3d(110%,0,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideInLeft{0%{transform:translate3d(-110%,0,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideInUp{0%{transform:translate3d(0,110%,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideInDown{0%{transform:translate3d(0,-110%,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideOutRight{0%{transform:translate3d(0,var(--y),0)}to{visibility:hidden;transform:translate3d(110%,var(--y),0)}}@keyframes Toastify__slideOutLeft{0%{transform:translate3d(0,var(--y),0)}to{visibility:hidden;transform:translate3d(-110%,var(--y),0)}}@keyframes Toastify__slideOutDown{0%{transform:translate3d(0,var(--y),0)}to{visibility:hidden;transform:translate3d(0,500px,0)}}@keyframes Toastify__slideOutUp{0%{transform:translate3d(0,var(--y),0)}to{visibility:hidden;transform:translate3d(0,-500px,0)}}.Toastify__slide-enter--top-left,.Toastify__slide-enter--bottom-left{animation-name:Toastify__slideInLeft}.Toastify__slide-enter--top-right,.Toastify__slide-enter--bottom-right{animation-name:Toastify__slideInRight}.Toastify__slide-enter--top-center{animation-name:Toastify__slideInDown}.Toastify__slide-enter--bottom-center{animation-name:Toastify__slideInUp}.Toastify__slide-exit--top-left,.Toastify__slide-exit--bottom-left{animation-name:Toastify__slideOutLeft;animation-timing-function:ease-in;animation-duration:.3s}.Toastify__slide-exit--top-right,.Toastify__slide-exit--bottom-right{animation-name:Toastify__slideOutRight;animation-timing-function:ease-in;animation-duration:.3s}.Toastify__slide-exit--top-center{animation-name:Toastify__slideOutUp;animation-timing-function:ease-in;animation-duration:.3s}.Toastify__slide-exit--bottom-center{animation-name:Toastify__slideOutDown;animation-timing-function:ease-in;animation-duration:.3s}@keyframes Toastify__spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}\n`);import{isValidElement as $t}from\"react\";var L=t=>typeof t==\"number\"&&!isNaN(t),N=t=>typeof t==\"string\",P=t=>typeof t==\"function\",mt=t=>N(t)||L(t),B=t=>N(t)||P(t)?t:null,pt=(t,o)=>t===!1||L(t)&&t>0?t:o,z=t=>$t(t)||N(t)||P(t)||L(t);import ut,{useEffect as Rt,useLayoutEffect as Bt,useRef as zt}from\"react\";function Z(t,o,e=300){let{scrollHeight:r,style:s}=t;requestAnimationFrame(()=>{s.minHeight=\"initial\",s.height=r+\"px\",s.transition=`all ${e}ms`,requestAnimationFrame(()=>{s.height=\"0\",s.padding=\"0\",s.margin=\"0\",setTimeout(o,e)})})}function $({enter:t,exit:o,appendPosition:e=!1,collapse:r=!0,collapseDuration:s=300}){return function({children:a,position:d,preventExitTransition:c,done:T,nodeRef:g,isIn:v,playToast:x}){let C=e?`${t}--${d}`:t,S=e?`${o}--${d}`:o,E=zt(0);return Bt(()=>{let f=g.current,p=C.split(\" \"),b=n=>{n.target===g.current&&(x(),f.removeEventListener(\"animationend\",b),f.removeEventListener(\"animationcancel\",b),E.current===0&&n.type!==\"animationcancel\"&&f.classList.remove(...p))};(()=>{f.classList.add(...p),f.addEventListener(\"animationend\",b),f.addEventListener(\"animationcancel\",b)})()},[]),Rt(()=>{let f=g.current,p=()=>{f.removeEventListener(\"animationend\",p),r?Z(f,T,s):T()};v||(c?p():(()=>{E.current=1,f.className+=` ${S}`,f.addEventListener(\"animationend\",p)})())},[v]),ut.createElement(ut.Fragment,null,a)}}import{cloneElement as Ft,isValidElement as Ut}from\"react\";function J(t,o){return{content:tt(t.content,t.props),containerId:t.props.containerId,id:t.props.toastId,theme:t.props.theme,type:t.props.type,data:t.props.data||{},isLoading:t.props.isLoading,icon:t.props.icon,reason:t.removalReason,status:o}}function tt(t,o,e=!1){return Ut(t)&&!N(t.type)?Ft(t,{closeToast:o.closeToast,toastProps:o,data:o.data,isPaused:e}):P(t)?t({closeToast:o.closeToast,toastProps:o,data:o.data,isPaused:e}):t}import ot from\"react\";function yt({closeToast:t,theme:o,ariaLabel:e=\"close\"}){return ot.createElement(\"button\",{className:`Toastify__close-button Toastify__close-button--${o}`,type:\"button\",onClick:r=>{r.stopPropagation(),t(!0)},\"aria-label\":e},ot.createElement(\"svg\",{\"aria-hidden\":\"true\",viewBox:\"0 0 14 16\"},ot.createElement(\"path\",{fillRule:\"evenodd\",d:\"M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z\"})))}import et from\"react\";import Tt from\"clsx\";function gt({delay:t,isRunning:o,closeToast:e,type:r=\"default\",hide:s,className:l,controlledProgress:a,progress:d,rtl:c,isIn:T,theme:g}){let v=s||a&&d===0,x={animationDuration:`${t}ms`,animationPlayState:o?\"running\":\"paused\"};a&&(x.transform=`scaleX(${d})`);let C=Tt(\"Toastify__progress-bar\",a?\"Toastify__progress-bar--controlled\":\"Toastify__progress-bar--animated\",`Toastify__progress-bar-theme--${g}`,`Toastify__progress-bar--${r}`,{[\"Toastify__progress-bar--rtl\"]:c}),S=P(l)?l({rtl:c,type:r,defaultClassName:C}):Tt(C,l),E={[a&&d>=1?\"onTransitionEnd\":\"onAnimationEnd\"]:a&&d<1?null:()=>{T&&e()}};return et.createElement(\"div\",{className:\"Toastify__progress-bar--wrp\",\"data-hidden\":v},et.createElement(\"div\",{className:`Toastify__progress-bar--bg Toastify__progress-bar-theme--${g} Toastify__progress-bar--${r}`}),et.createElement(\"div\",{role:\"progressbar\",\"aria-hidden\":v?\"true\":\"false\",\"aria-label\":\"notification timer\",className:S,style:x,...E}))}import Dt from\"clsx\";import ct,{useEffect as yo,useRef as To,useState as go}from\"react\";var Xt=1,at=()=>`${Xt++}`;function _t(t,o,e){let r=1,s=0,l=[],a=[],d=o,c=new Map,T=new Set,g=i=>(T.add(i),()=>T.delete(i)),v=()=>{a=Array.from(c.values()),T.forEach(i=>i())},x=({containerId:i,toastId:n,updateId:u})=>{let h=i?i!==t:t!==1,m=c.has(n)&&u==null;return h||m},C=(i,n)=>{c.forEach(u=>{var h;(n==null||n===u.props.toastId)&&((h=u.toggle)==null||h.call(u,i))})},S=i=>{var n,u;(u=(n=i.props)==null?void 0:n.onClose)==null||u.call(n,i.removalReason),i.isActive=!1},E=i=>{if(i==null)c.forEach(S);else{let n=c.get(i);n&&S(n)}v()},f=()=>{s-=l.length,l=[]},p=i=>{var m,_;let{toastId:n,updateId:u}=i.props,h=u==null;i.staleId&&c.delete(i.staleId),i.isActive=!0,c.set(n,i),v(),e(J(i,h?\"added\":\"updated\")),h&&((_=(m=i.props).onOpen)==null||_.call(m))};return{id:t,props:d,observe:g,toggle:C,removeToast:E,toasts:c,clearQueue:f,buildToast:(i,n)=>{if(x(n))return;let{toastId:u,updateId:h,data:m,staleId:_,delay:k}=n,M=h==null;M&&s++;let A={...d,style:d.toastStyle,key:r++,...Object.fromEntries(Object.entries(n).filter(([D,Y])=>Y!=null)),toastId:u,updateId:h,data:m,isIn:!1,className:B(n.className||d.toastClassName),progressClassName:B(n.progressClassName||d.progressClassName),autoClose:n.isLoading?!1:pt(n.autoClose,d.autoClose),closeToast(D){c.get(u).removalReason=D,E(u)},deleteToast(){let D=c.get(u);if(D!=null){if(e(J(D,\"removed\")),c.delete(u),s--,s<0&&(s=0),l.length>0){p(l.shift());return}v()}}};A.closeButton=d.closeButton,n.closeButton===!1||z(n.closeButton)?A.closeButton=n.closeButton:n.closeButton===!0&&(A.closeButton=z(d.closeButton)?d.closeButton:!0);let R={content:i,props:A,staleId:_};d.limit&&d.limit>0&&s>d.limit&&M?l.push(R):L(k)?setTimeout(()=>{p(R)},k):p(R)},setProps(i){d=i},setToggle:(i,n)=>{let u=c.get(i);u&&(u.toggle=n)},isToastActive:i=>{var n;return(n=c.get(i))==null?void 0:n.isActive},getSnapshot:()=>a}}var I=new Map,F=[],st=new Set,Vt=t=>st.forEach(o=>o(t)),bt=()=>I.size>0;function Qt(){F.forEach(t=>nt(t.content,t.options)),F=[]}var vt=(t,{containerId:o})=>{var e;return(e=I.get(o||1))==null?void 0:e.toasts.get(t)};function X(t,o){var r;if(o)return!!((r=I.get(o))!=null&&r.isToastActive(t));let e=!1;return I.forEach(s=>{s.isToastActive(t)&&(e=!0)}),e}function ht(t){if(!bt()){F=F.filter(o=>t!=null&&o.options.toastId!==t);return}if(t==null||mt(t))I.forEach(o=>{o.removeToast(t)});else if(t&&(\"containerId\"in t||\"id\"in t)){let o=I.get(t.containerId);o?o.removeToast(t.id):I.forEach(e=>{e.removeToast(t.id)})}}var Ct=(t={})=>{I.forEach(o=>{o.props.limit&&(!t.containerId||o.id===t.containerId)&&o.clearQueue()})};function nt(t,o){z(t)&&(bt()||F.push({content:t,options:o}),I.forEach(e=>{e.buildToast(t,o)}))}function xt(t){var o;(o=I.get(t.containerId||1))==null||o.setToggle(t.id,t.fn)}function rt(t,o){I.forEach(e=>{(o==null||!(o!=null&&o.containerId)||(o==null?void 0:o.containerId)===e.id)&&e.toggle(t,o==null?void 0:o.id)})}function Et(t){let o=t.containerId||1;return{subscribe(e){let r=_t(o,t,Vt);I.set(o,r);let s=r.observe(e);return Qt(),()=>{s(),I.delete(o)}},setProps(e){var r;(r=I.get(o))==null||r.setProps(e)},getSnapshot(){var e;return(e=I.get(o))==null?void 0:e.getSnapshot()}}}function Pt(t){return st.add(t),()=>{st.delete(t)}}function Wt(t){return t&&(N(t.toastId)||L(t.toastId))?t.toastId:at()}function U(t,o){return nt(t,o),o.toastId}function V(t,o){return{...o,type:o&&o.type||t,toastId:Wt(o)}}function Q(t){return(o,e)=>U(o,V(t,e))}function y(t,o){return U(t,V(\"default\",o))}y.loading=(t,o)=>U(t,V(\"default\",{isLoading:!0,autoClose:!1,closeOnClick:!1,closeButton:!1,draggable:!1,...o}));function Gt(t,{pending:o,error:e,success:r},s){let l;o&&(l=N(o)?y.loading(o,s):y.loading(o.render,{...s,...o}));let a={isLoading:null,autoClose:null,closeOnClick:null,closeButton:null,draggable:null},d=(T,g,v)=>{if(g==null){y.dismiss(l);return}let x={type:T,...a,...s,data:v},C=N(g)?{render:g}:g;return l?y.update(l,{...x,...C}):y(C.render,{...x,...C}),v},c=P(t)?t():t;return c.then(T=>d(\"success\",r,T)).catch(T=>d(\"error\",e,T)),c}y.promise=Gt;y.success=Q(\"success\");y.info=Q(\"info\");y.error=Q(\"error\");y.warning=Q(\"warning\");y.warn=y.warning;y.dark=(t,o)=>U(t,V(\"default\",{theme:\"dark\",...o}));function qt(t){ht(t)}y.dismiss=qt;y.clearWaitingQueue=Ct;y.isActive=X;y.update=(t,o={})=>{let e=vt(t,o);if(e){let{props:r,content:s}=e,l={delay:100,...r,...o,toastId:o.toastId||t,updateId:at()};l.toastId!==t&&(l.staleId=t);let a=l.render||s;delete l.render,U(a,l)}};y.done=t=>{y.update(t,{progress:1})};y.onChange=Pt;y.play=t=>rt(!0,t);y.pause=t=>rt(!1,t);import{useRef as Kt,useSyncExternalStore as Yt}from\"react\";function It(t){var a;let{subscribe:o,getSnapshot:e,setProps:r}=Kt(Et(t)).current;r(t);let s=(a=Yt(o,e,e))==null?void 0:a.slice();function l(d){if(!s)return[];let c=new Map;return t.newestOnTop&&s.reverse(),s.forEach(T=>{let{position:g}=T.props;c.has(g)||c.set(g,[]),c.get(g).push(T)}),Array.from(c,T=>d(T[0],T[1]))}return{getToastToRender:l,isToastActive:X,count:s==null?void 0:s.length}}import{useEffect as Zt,useRef as St,useState as kt}from\"react\";function At(t){let[o,e]=kt(!1),[r,s]=kt(!1),l=St(null),a=St({start:0,delta:0,removalDistance:0,canCloseOnClick:!0,canDrag:!1,didMove:!1}).current,{autoClose:d,pauseOnHover:c,closeToast:T,onClick:g,closeOnClick:v}=t;xt({id:t.toastId,containerId:t.containerId,fn:e}),Zt(()=>{if(t.pauseOnFocusLoss)return x(),()=>{C()}},[t.pauseOnFocusLoss]);function x(){document.hasFocus()||p(),window.addEventListener(\"focus\",f),window.addEventListener(\"blur\",p)}function C(){window.removeEventListener(\"focus\",f),window.removeEventListener(\"blur\",p)}function S(m){if(t.draggable===!0||t.draggable===m.pointerType){b();let _=l.current;a.canCloseOnClick=!0,a.canDrag=!0,_.style.transition=\"none\",t.draggableDirection===\"x\"?(a.start=m.clientX,a.removalDistance=_.offsetWidth*(t.draggablePercent/100)):(a.start=m.clientY,a.removalDistance=_.offsetHeight*(t.draggablePercent===80?t.draggablePercent*1.5:t.draggablePercent)/100)}}function E(m){let{top:_,bottom:k,left:M,right:A}=l.current.getBoundingClientRect();m.nativeEvent.type!==\"touchend\"&&t.pauseOnHover&&m.clientX>=M&&m.clientX<=A&&m.clientY>=_&&m.clientY<=k?p():f()}function f(){e(!0)}function p(){e(!1)}function b(){a.didMove=!1,document.addEventListener(\"pointermove\",n),document.addEventListener(\"pointerup\",u)}function i(){document.removeEventListener(\"pointermove\",n),document.removeEventListener(\"pointerup\",u)}function n(m){let _=l.current;if(a.canDrag&&_){a.didMove=!0,o&&p(),t.draggableDirection===\"x\"?a.delta=m.clientX-a.start:a.delta=m.clientY-a.start,a.start!==m.clientX&&(a.canCloseOnClick=!1);let k=t.draggableDirection===\"x\"?`${a.delta}px, var(--y)`:`0, calc(${a.delta}px + var(--y))`;_.style.transform=`translate3d(${k},0)`,_.style.opacity=`${1-Math.abs(a.delta/a.removalDistance)}`}}function u(){i();let m=l.current;if(a.canDrag&&a.didMove&&m){if(a.canDrag=!1,Math.abs(a.delta)>a.removalDistance){s(!0),t.closeToast(!0),t.collapseAll();return}m.style.transition=\"transform 0.2s, opacity 0.2s\",m.style.removeProperty(\"transform\"),m.style.removeProperty(\"opacity\")}}let h={onPointerDown:S,onPointerUp:E};return d&&c&&(h.onMouseEnter=p,t.stacked||(h.onMouseLeave=f)),v&&(h.onClick=m=>{g&&g(m),a.canCloseOnClick&&T(!0)}),{playToast:f,pauseToast:p,isRunning:o,preventExitTransition:r,toastRef:l,eventHandlers:h}}import{useEffect as Jt,useLayoutEffect as to}from\"react\";var Ot=typeof window!=\"undefined\"?to:Jt;import it from\"clsx\";import q,{cloneElement as co,isValidElement as fo}from\"react\";import O,{cloneElement as oo,isValidElement as eo}from\"react\";var G=({theme:t,type:o,isLoading:e,...r})=>O.createElement(\"svg\",{viewBox:\"0 0 24 24\",width:\"100%\",height:\"100%\",fill:t===\"colored\"?\"currentColor\":`var(--toastify-icon-color-${o})`,...r});function ao(t){return O.createElement(G,{...t},O.createElement(\"path\",{d:\"M23.32 17.191L15.438 2.184C14.728.833 13.416 0 11.996 0c-1.42 0-2.733.833-3.443 2.184L.533 17.448a4.744 4.744 0 000 4.368C1.243 23.167 2.555 24 3.975 24h16.05C22.22 24 24 22.044 24 19.632c0-.904-.251-1.746-.68-2.44zm-9.622 1.46c0 1.033-.724 1.823-1.698 1.823s-1.698-.79-1.698-1.822v-.043c0-1.028.724-1.822 1.698-1.822s1.698.79 1.698 1.822v.043zm.039-12.285l-.84 8.06c-.057.581-.408.943-.897.943-.49 0-.84-.367-.896-.942l-.84-8.065c-.057-.624.25-1.095.779-1.095h1.91c.528.005.84.476.784 1.1z\"}))}function so(t){return O.createElement(G,{...t},O.createElement(\"path\",{d:\"M12 0a12 12 0 1012 12A12.013 12.013 0 0012 0zm.25 5a1.5 1.5 0 11-1.5 1.5 1.5 1.5 0 011.5-1.5zm2.25 13.5h-4a1 1 0 010-2h.75a.25.25 0 00.25-.25v-4.5a.25.25 0 00-.25-.25h-.75a1 1 0 010-2h1a2 2 0 012 2v4.75a.25.25 0 00.25.25h.75a1 1 0 110 2z\"}))}function no(t){return O.createElement(G,{...t},O.createElement(\"path\",{d:\"M12 0a12 12 0 1012 12A12.014 12.014 0 0012 0zm6.927 8.2l-6.845 9.289a1.011 1.011 0 01-1.43.188l-4.888-3.908a1 1 0 111.25-1.562l4.076 3.261 6.227-8.451a1 1 0 111.61 1.183z\"}))}function ro(t){return O.createElement(G,{...t},O.createElement(\"path\",{d:\"M11.983 0a12.206 12.206 0 00-8.51 3.653A11.8 11.8 0 000 12.207 11.779 11.779 0 0011.8 24h.214A12.111 12.111 0 0024 11.791 11.766 11.766 0 0011.983 0zM10.5 16.542a1.476 1.476 0 011.449-1.53h.027a1.527 1.527 0 011.523 1.47 1.475 1.475 0 01-1.449 1.53h-.027a1.529 1.529 0 01-1.523-1.47zM11 12.5v-6a1 1 0 012 0v6a1 1 0 11-2 0z\"}))}function io(){return O.createElement(\"div\",{className:\"Toastify__spinner\"})}var W={info:so,warning:ao,success:no,error:ro,spinner:io},lo=t=>t in W;function Nt({theme:t,type:o,isLoading:e,icon:r}){let s=null,l={theme:t,type:o};return r===!1||(P(r)?s=r({...l,isLoading:e}):eo(r)?s=oo(r,l):e?s=W.spinner():lo(o)&&(s=W[o](l))),s}var wt=t=>{let{isRunning:o,preventExitTransition:e,toastRef:r,eventHandlers:s,playToast:l}=At(t),{closeButton:a,children:d,autoClose:c,onClick:T,type:g,hideProgressBar:v,closeToast:x,transition:C,position:S,className:E,style:f,progressClassName:p,updateId:b,role:i,progress:n,rtl:u,toastId:h,deleteToast:m,isIn:_,isLoading:k,closeOnClick:M,theme:A,ariaLabel:R}=t,D=it(\"Toastify__toast\",`Toastify__toast-theme--${A}`,`Toastify__toast--${g}`,{[\"Toastify__toast--rtl\"]:u},{[\"Toastify__toast--close-on-click\"]:M}),Y=P(E)?E({rtl:u,position:S,type:g,defaultClassName:D}):it(D,E),ft=Nt(t),dt=!!n||!c,j={closeToast:x,type:g,theme:A},H=null;return a===!1||(P(a)?H=a(j):fo(a)?H=co(a,j):H=yt(j)),q.createElement(C,{isIn:_,done:m,position:S,preventExitTransition:e,nodeRef:r,playToast:l},q.createElement(\"div\",{id:h,tabIndex:0,onClick:T,\"data-in\":_,className:Y,...s,style:f,ref:r,..._&&{role:i,\"aria-label\":R}},ft!=null&&q.createElement(\"div\",{className:it(\"Toastify__toast-icon\",{[\"Toastify--animate-icon Toastify__zoom-enter\"]:!k})},ft),tt(d,t,!o),H,!t.customProgressBar&&q.createElement(gt,{...b&&!dt?{key:`p-${b}`}:{},rtl:u,theme:A,delay:c,isRunning:o,isIn:_,closeToast:x,hide:v,type:g,className:p,controlledProgress:dt,progress:n||0})))};var K=(t,o=!1)=>({enter:`Toastify--animate Toastify__${t}-enter`,exit:`Toastify--animate Toastify__${t}-exit`,appendPosition:o}),lt=$(K(\"bounce\",!0)),mo=$(K(\"slide\",!0)),po=$(K(\"zoom\")),uo=$(K(\"flip\"));var _o={position:\"top-right\",transition:lt,autoClose:5e3,closeButton:!0,pauseOnHover:!0,pauseOnFocusLoss:!0,draggable:\"touch\",draggablePercent:80,draggableDirection:\"x\",role:\"alert\",theme:\"light\",\"aria-label\":\"Notifications Alt+T\",hotKeys:t=>t.altKey&&t.code===\"KeyT\"};function Lt(t){let o={..._o,...t},e=t.stacked,[r,s]=go(!0),l=To(null),{getToastToRender:a,isToastActive:d,count:c}=It(o),{className:T,style:g,rtl:v,containerId:x,hotKeys:C}=o;function S(f){let p=Dt(\"Toastify__toast-container\",`Toastify__toast-container--${f}`,{[\"Toastify__toast-container--rtl\"]:v});return P(T)?T({position:f,rtl:v,defaultClassName:p}):Dt(p,B(T))}function E(){e&&(s(!0),y.play())}return Ot(()=>{var f;if(e){let p=l.current.querySelectorAll('[data-in=\"true\"]'),b=12,i=(f=o.position)==null?void 0:f.includes(\"top\"),n=0,u=0;Array.from(p).reverse().forEach((h,m)=>{let _=h;_.classList.add(\"Toastify__toast--stacked\"),m>0&&(_.dataset.collapsed=`${r}`),_.dataset.pos||(_.dataset.pos=i?\"top\":\"bot\");let k=n*(r?.2:1)+(r?0:b*m);_.style.setProperty(\"--y\",`${i?k:k*-1}px`),_.style.setProperty(\"--g\",`${b}`),_.style.setProperty(\"--s\",`${1-(r?u:0)}`),n+=_.offsetHeight,u+=.025})}},[r,c,e]),yo(()=>{function f(p){var i;let b=l.current;C(p)&&((i=b.querySelector('[tabIndex=\"0\"]'))==null||i.focus(),s(!1),y.pause()),p.key===\"Escape\"&&(document.activeElement===b||b!=null&&b.contains(document.activeElement))&&(s(!0),y.play())}return document.addEventListener(\"keydown\",f),()=>{document.removeEventListener(\"keydown\",f)}},[C]),ct.createElement(\"section\",{ref:l,className:\"Toastify\",id:x,onMouseEnter:()=>{e&&(s(!1),y.pause())},onMouseLeave:E,\"aria-live\":\"polite\",\"aria-atomic\":\"false\",\"aria-relevant\":\"additions text\",\"aria-label\":o[\"aria-label\"]},a((f,p)=>{let b=p.length?{...g}:{...g,pointerEvents:\"none\"};return ct.createElement(\"div\",{tabIndex:-1,className:S(f),\"data-stacked\":e,style:b,key:`c-${f}`},p.map(({content:i,props:n})=>ct.createElement(wt,{...n,stacked:e,collapseAll:E,isIn:d(n.toastId,n.containerId),key:`t-${n.key}`},i)))}))}export{lt as Bounce,uo as Flip,W as Icons,mo as Slide,Lt as ToastContainer,po as Zoom,Z as collapseToast,$ as cssTransition,y as toast};\n//# sourceMappingURL=index.mjs.map","export function defineChain(chain) {\n    return {\n        formatters: undefined,\n        fees: undefined,\n        serializers: undefined,\n        ...chain,\n    };\n}\n//# sourceMappingURL=defineChain.js.map","export const version = '2.32.0';\n//# sourceMappingURL=version.js.map","import { version } from './version.js';\nlet errorConfig = {\n    getDocsUrl: ({ docsBaseUrl, docsPath = '', docsSlug, }) => docsPath\n        ? `${docsBaseUrl ?? 'https://viem.sh'}${docsPath}${docsSlug ? `#${docsSlug}` : ''}`\n        : undefined,\n    version: `viem@${version}`,\n};\nexport function setErrorConfig(config) {\n    errorConfig = config;\n}\nexport class BaseError extends Error {\n    constructor(shortMessage, args = {}) {\n        const details = (() => {\n            if (args.cause instanceof BaseError)\n                return args.cause.details;\n            if (args.cause?.message)\n                return args.cause.message;\n            return args.details;\n        })();\n        const docsPath = (() => {\n            if (args.cause instanceof BaseError)\n                return args.cause.docsPath || args.docsPath;\n            return args.docsPath;\n        })();\n        const docsUrl = errorConfig.getDocsUrl?.({ ...args, docsPath });\n        const message = [\n            shortMessage || 'An error occurred.',\n            '',\n            ...(args.metaMessages ? [...args.metaMessages, ''] : []),\n            ...(docsUrl ? [`Docs: ${docsUrl}`] : []),\n            ...(details ? [`Details: ${details}`] : []),\n            ...(errorConfig.version ? [`Version: ${errorConfig.version}`] : []),\n        ].join('\\n');\n        super(message, args.cause ? { cause: args.cause } : undefined);\n        Object.defineProperty(this, \"details\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"docsPath\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"metaMessages\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"shortMessage\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"version\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"name\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 'BaseError'\n        });\n        this.details = details;\n        this.docsPath = docsPath;\n        this.metaMessages = args.metaMessages;\n        this.name = args.name ?? this.name;\n        this.shortMessage = shortMessage;\n        this.version = version;\n    }\n    walk(fn) {\n        return walk(this, fn);\n    }\n}\nfunction walk(err, fn) {\n    if (fn?.(err))\n        return err;\n    if (err &&\n        typeof err === 'object' &&\n        'cause' in err &&\n        err.cause !== undefined)\n        return walk(err.cause, fn);\n    return fn ? null : err;\n}\n//# sourceMappingURL=base.js.map","import { BaseError } from './base.js';\nexport class IntegerOutOfRangeError extends BaseError {\n    constructor({ max, min, signed, size, value, }) {\n        super(`Number \"${value}\" is not in safe ${size ? `${size * 8}-bit ${signed ? 'signed' : 'unsigned'} ` : ''}integer range ${max ? `(${min} to ${max})` : `(above ${min})`}`, { name: 'IntegerOutOfRangeError' });\n    }\n}\nexport class InvalidBytesBooleanError extends BaseError {\n    constructor(bytes) {\n        super(`Bytes value \"${bytes}\" is not a valid boolean. The bytes array must contain a single byte of either a 0 or 1 value.`, {\n            name: 'InvalidBytesBooleanError',\n        });\n    }\n}\nexport class InvalidHexBooleanError extends BaseError {\n    constructor(hex) {\n        super(`Hex value \"${hex}\" is not a valid boolean. The hex value must be \"0x0\" (false) or \"0x1\" (true).`, { name: 'InvalidHexBooleanError' });\n    }\n}\nexport class InvalidHexValueError extends BaseError {\n    constructor(value) {\n        super(`Hex value \"${value}\" is an odd length (${value.length}). It must be an even length.`, { name: 'InvalidHexValueError' });\n    }\n}\nexport class SizeOverflowError extends BaseError {\n    constructor({ givenSize, maxSize }) {\n        super(`Size cannot exceed ${maxSize} bytes. Given size: ${givenSize} bytes.`, { name: 'SizeOverflowError' });\n    }\n}\n//# sourceMappingURL=encoding.js.map","export function isHex(value, { strict = true } = {}) {\n    if (!value)\n        return false;\n    if (typeof value !== 'string')\n        return false;\n    return strict ? /^0x[0-9a-fA-F]*$/.test(value) : value.startsWith('0x');\n}\n//# sourceMappingURL=isHex.js.map","import { isHex } from './isHex.js';\n/**\n * @description Retrieves the size of the value (in bytes).\n *\n * @param value The value (hex or byte array) to retrieve the size of.\n * @returns The size of the value (in bytes).\n */\nexport function size(value) {\n    if (isHex(value, { strict: false }))\n        return Math.ceil((value.length - 2) / 2);\n    return value.length;\n}\n//# sourceMappingURL=size.js.map","export function trim(hexOrBytes, { dir = 'left' } = {}) {\n    let data = typeof hexOrBytes === 'string' ? hexOrBytes.replace('0x', '') : hexOrBytes;\n    let sliceLength = 0;\n    for (let i = 0; i < data.length - 1; i++) {\n        if (data[dir === 'left' ? i : data.length - i - 1].toString() === '0')\n            sliceLength++;\n        else\n            break;\n    }\n    data =\n        dir === 'left'\n            ? data.slice(sliceLength)\n            : data.slice(0, data.length - sliceLength);\n    if (typeof hexOrBytes === 'string') {\n        if (data.length === 1 && dir === 'right')\n            data = `${data}0`;\n        return `0x${data.length % 2 === 1 ? `0${data}` : data}`;\n    }\n    return data;\n}\n//# sourceMappingURL=trim.js.map","import { BaseError } from './base.js';\nexport class SliceOffsetOutOfBoundsError extends BaseError {\n    constructor({ offset, position, size, }) {\n        super(`Slice ${position === 'start' ? 'starting' : 'ending'} at offset \"${offset}\" is out-of-bounds (size: ${size}).`, { name: 'SliceOffsetOutOfBoundsError' });\n    }\n}\nexport class SizeExceedsPaddingSizeError extends BaseError {\n    constructor({ size, targetSize, type, }) {\n        super(`${type.charAt(0).toUpperCase()}${type\n            .slice(1)\n            .toLowerCase()} size (${size}) exceeds padding size (${targetSize}).`, { name: 'SizeExceedsPaddingSizeError' });\n    }\n}\nexport class InvalidBytesLengthError extends BaseError {\n    constructor({ size, targetSize, type, }) {\n        super(`${type.charAt(0).toUpperCase()}${type\n            .slice(1)\n            .toLowerCase()} is expected to be ${targetSize} ${type} long, but is ${size} ${type} long.`, { name: 'InvalidBytesLengthError' });\n    }\n}\n//# sourceMappingURL=data.js.map","import { SizeExceedsPaddingSizeError, } from '../../errors/data.js';\nexport function pad(hexOrBytes, { dir, size = 32 } = {}) {\n    if (typeof hexOrBytes === 'string')\n        return padHex(hexOrBytes, { dir, size });\n    return padBytes(hexOrBytes, { dir, size });\n}\nexport function padHex(hex_, { dir, size = 32 } = {}) {\n    if (size === null)\n        return hex_;\n    const hex = hex_.replace('0x', '');\n    if (hex.length > size * 2)\n        throw new SizeExceedsPaddingSizeError({\n            size: Math.ceil(hex.length / 2),\n            targetSize: size,\n            type: 'hex',\n        });\n    return `0x${hex[dir === 'right' ? 'padEnd' : 'padStart'](size * 2, '0')}`;\n}\nexport function padBytes(bytes, { dir, size = 32 } = {}) {\n    if (size === null)\n        return bytes;\n    if (bytes.length > size)\n        throw new SizeExceedsPaddingSizeError({\n            size: bytes.length,\n            targetSize: size,\n            type: 'bytes',\n        });\n    const paddedBytes = new Uint8Array(size);\n    for (let i = 0; i < size; i++) {\n        const padEnd = dir === 'right';\n        paddedBytes[padEnd ? i : size - i - 1] =\n            bytes[padEnd ? i : bytes.length - i - 1];\n    }\n    return paddedBytes;\n}\n//# sourceMappingURL=pad.js.map","import { IntegerOutOfRangeError, } from '../../errors/encoding.js';\nimport { pad } from '../data/pad.js';\nimport { assertSize } from './fromHex.js';\nconst hexes = /*#__PURE__*/ Array.from({ length: 256 }, (_v, i) => i.toString(16).padStart(2, '0'));\n/**\n * Encodes a string, number, bigint, or ByteArray into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex\n * - Example: https://viem.sh/docs/utilities/toHex#usage\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { toHex } from 'viem'\n * const data = toHex('Hello world')\n * // '0x48656c6c6f20776f726c6421'\n *\n * @example\n * import { toHex } from 'viem'\n * const data = toHex(420)\n * // '0x1a4'\n *\n * @example\n * import { toHex } from 'viem'\n * const data = toHex('Hello world', { size: 32 })\n * // '0x48656c6c6f20776f726c64210000000000000000000000000000000000000000'\n */\nexport function toHex(value, opts = {}) {\n    if (typeof value === 'number' || typeof value === 'bigint')\n        return numberToHex(value, opts);\n    if (typeof value === 'string') {\n        return stringToHex(value, opts);\n    }\n    if (typeof value === 'boolean')\n        return boolToHex(value, opts);\n    return bytesToHex(value, opts);\n}\n/**\n * Encodes a boolean into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex#booltohex\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { boolToHex } from 'viem'\n * const data = boolToHex(true)\n * // '0x1'\n *\n * @example\n * import { boolToHex } from 'viem'\n * const data = boolToHex(false)\n * // '0x0'\n *\n * @example\n * import { boolToHex } from 'viem'\n * const data = boolToHex(true, { size: 32 })\n * // '0x0000000000000000000000000000000000000000000000000000000000000001'\n */\nexport function boolToHex(value, opts = {}) {\n    const hex = `0x${Number(value)}`;\n    if (typeof opts.size === 'number') {\n        assertSize(hex, { size: opts.size });\n        return pad(hex, { size: opts.size });\n    }\n    return hex;\n}\n/**\n * Encodes a bytes array into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex#bytestohex\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { bytesToHex } from 'viem'\n * const data = bytesToHex(Uint8Array.from([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33])\n * // '0x48656c6c6f20576f726c6421'\n *\n * @example\n * import { bytesToHex } from 'viem'\n * const data = bytesToHex(Uint8Array.from([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33]), { size: 32 })\n * // '0x48656c6c6f20576f726c64210000000000000000000000000000000000000000'\n */\nexport function bytesToHex(value, opts = {}) {\n    let string = '';\n    for (let i = 0; i < value.length; i++) {\n        string += hexes[value[i]];\n    }\n    const hex = `0x${string}`;\n    if (typeof opts.size === 'number') {\n        assertSize(hex, { size: opts.size });\n        return pad(hex, { dir: 'right', size: opts.size });\n    }\n    return hex;\n}\n/**\n * Encodes a number or bigint into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex#numbertohex\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { numberToHex } from 'viem'\n * const data = numberToHex(420)\n * // '0x1a4'\n *\n * @example\n * import { numberToHex } from 'viem'\n * const data = numberToHex(420, { size: 32 })\n * // '0x00000000000000000000000000000000000000000000000000000000000001a4'\n */\nexport function numberToHex(value_, opts = {}) {\n    const { signed, size } = opts;\n    const value = BigInt(value_);\n    let maxValue;\n    if (size) {\n        if (signed)\n            maxValue = (1n << (BigInt(size) * 8n - 1n)) - 1n;\n        else\n            maxValue = 2n ** (BigInt(size) * 8n) - 1n;\n    }\n    else if (typeof value_ === 'number') {\n        maxValue = BigInt(Number.MAX_SAFE_INTEGER);\n    }\n    const minValue = typeof maxValue === 'bigint' && signed ? -maxValue - 1n : 0;\n    if ((maxValue && value > maxValue) || value < minValue) {\n        const suffix = typeof value_ === 'bigint' ? 'n' : '';\n        throw new IntegerOutOfRangeError({\n            max: maxValue ? `${maxValue}${suffix}` : undefined,\n            min: `${minValue}${suffix}`,\n            signed,\n            size,\n            value: `${value_}${suffix}`,\n        });\n    }\n    const hex = `0x${(signed && value < 0 ? (1n << BigInt(size * 8)) + BigInt(value) : value).toString(16)}`;\n    if (size)\n        return pad(hex, { size });\n    return hex;\n}\nconst encoder = /*#__PURE__*/ new TextEncoder();\n/**\n * Encodes a UTF-8 string into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex#stringtohex\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { stringToHex } from 'viem'\n * const data = stringToHex('Hello World!')\n * // '0x48656c6c6f20576f726c6421'\n *\n * @example\n * import { stringToHex } from 'viem'\n * const data = stringToHex('Hello World!', { size: 32 })\n * // '0x48656c6c6f20576f726c64210000000000000000000000000000000000000000'\n */\nexport function stringToHex(value_, opts = {}) {\n    const value = encoder.encode(value_);\n    return bytesToHex(value, opts);\n}\n//# sourceMappingURL=toHex.js.map","import { BaseError } from '../../errors/base.js';\nimport { isHex } from '../data/isHex.js';\nimport { pad } from '../data/pad.js';\nimport { assertSize } from './fromHex.js';\nimport { numberToHex, } from './toHex.js';\nconst encoder = /*#__PURE__*/ new TextEncoder();\n/**\n * Encodes a UTF-8 string, hex value, bigint, number or boolean to a byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/toBytes\n * - Example: https://viem.sh/docs/utilities/toBytes#usage\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Byte array value.\n *\n * @example\n * import { toBytes } from 'viem'\n * const data = toBytes('Hello world')\n * // Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33])\n *\n * @example\n * import { toBytes } from 'viem'\n * const data = toBytes(420)\n * // Uint8Array([1, 164])\n *\n * @example\n * import { toBytes } from 'viem'\n * const data = toBytes(420, { size: 4 })\n * // Uint8Array([0, 0, 1, 164])\n */\nexport function toBytes(value, opts = {}) {\n    if (typeof value === 'number' || typeof value === 'bigint')\n        return numberToBytes(value, opts);\n    if (typeof value === 'boolean')\n        return boolToBytes(value, opts);\n    if (isHex(value))\n        return hexToBytes(value, opts);\n    return stringToBytes(value, opts);\n}\n/**\n * Encodes a boolean into a byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/toBytes#booltobytes\n *\n * @param value Boolean value to encode.\n * @param opts Options.\n * @returns Byte array value.\n *\n * @example\n * import { boolToBytes } from 'viem'\n * const data = boolToBytes(true)\n * // Uint8Array([1])\n *\n * @example\n * import { boolToBytes } from 'viem'\n * const data = boolToBytes(true, { size: 32 })\n * // Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1])\n */\nexport function boolToBytes(value, opts = {}) {\n    const bytes = new Uint8Array(1);\n    bytes[0] = Number(value);\n    if (typeof opts.size === 'number') {\n        assertSize(bytes, { size: opts.size });\n        return pad(bytes, { size: opts.size });\n    }\n    return bytes;\n}\n// We use very optimized technique to convert hex string to byte array\nconst charCodeMap = {\n    zero: 48,\n    nine: 57,\n    A: 65,\n    F: 70,\n    a: 97,\n    f: 102,\n};\nfunction charCodeToBase16(char) {\n    if (char >= charCodeMap.zero && char <= charCodeMap.nine)\n        return char - charCodeMap.zero;\n    if (char >= charCodeMap.A && char <= charCodeMap.F)\n        return char - (charCodeMap.A - 10);\n    if (char >= charCodeMap.a && char <= charCodeMap.f)\n        return char - (charCodeMap.a - 10);\n    return undefined;\n}\n/**\n * Encodes a hex string into a byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/toBytes#hextobytes\n *\n * @param hex Hex string to encode.\n * @param opts Options.\n * @returns Byte array value.\n *\n * @example\n * import { hexToBytes } from 'viem'\n * const data = hexToBytes('0x48656c6c6f20776f726c6421')\n * // Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33])\n *\n * @example\n * import { hexToBytes } from 'viem'\n * const data = hexToBytes('0x48656c6c6f20776f726c6421', { size: 32 })\n * // Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])\n */\nexport function hexToBytes(hex_, opts = {}) {\n    let hex = hex_;\n    if (opts.size) {\n        assertSize(hex, { size: opts.size });\n        hex = pad(hex, { dir: 'right', size: opts.size });\n    }\n    let hexString = hex.slice(2);\n    if (hexString.length % 2)\n        hexString = `0${hexString}`;\n    const length = hexString.length / 2;\n    const bytes = new Uint8Array(length);\n    for (let index = 0, j = 0; index < length; index++) {\n        const nibbleLeft = charCodeToBase16(hexString.charCodeAt(j++));\n        const nibbleRight = charCodeToBase16(hexString.charCodeAt(j++));\n        if (nibbleLeft === undefined || nibbleRight === undefined) {\n            throw new BaseError(`Invalid byte sequence (\"${hexString[j - 2]}${hexString[j - 1]}\" in \"${hexString}\").`);\n        }\n        bytes[index] = nibbleLeft * 16 + nibbleRight;\n    }\n    return bytes;\n}\n/**\n * Encodes a number into a byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/toBytes#numbertobytes\n *\n * @param value Number to encode.\n * @param opts Options.\n * @returns Byte array value.\n *\n * @example\n * import { numberToBytes } from 'viem'\n * const data = numberToBytes(420)\n * // Uint8Array([1, 164])\n *\n * @example\n * import { numberToBytes } from 'viem'\n * const data = numberToBytes(420, { size: 4 })\n * // Uint8Array([0, 0, 1, 164])\n */\nexport function numberToBytes(value, opts) {\n    const hex = numberToHex(value, opts);\n    return hexToBytes(hex);\n}\n/**\n * Encodes a UTF-8 string into a byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/toBytes#stringtobytes\n *\n * @param value String to encode.\n * @param opts Options.\n * @returns Byte array value.\n *\n * @example\n * import { stringToBytes } from 'viem'\n * const data = stringToBytes('Hello world!')\n * // Uint8Array([72, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100, 33])\n *\n * @example\n * import { stringToBytes } from 'viem'\n * const data = stringToBytes('Hello world!', { size: 32 })\n * // Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])\n */\nexport function stringToBytes(value, opts = {}) {\n    const bytes = encoder.encode(value);\n    if (typeof opts.size === 'number') {\n        assertSize(bytes, { size: opts.size });\n        return pad(bytes, { dir: 'right', size: opts.size });\n    }\n    return bytes;\n}\n//# sourceMappingURL=toBytes.js.map","import { InvalidHexBooleanError, SizeOverflowError, } from '../../errors/encoding.js';\nimport { size as size_ } from '../data/size.js';\nimport { trim } from '../data/trim.js';\nimport { hexToBytes } from './toBytes.js';\nexport function assertSize(hexOrBytes, { size }) {\n    if (size_(hexOrBytes) > size)\n        throw new SizeOverflowError({\n            givenSize: size_(hexOrBytes),\n            maxSize: size,\n        });\n}\n/**\n * Decodes a hex string into a string, number, bigint, boolean, or byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex\n * - Example: https://viem.sh/docs/utilities/fromHex#usage\n *\n * @param hex Hex string to decode.\n * @param toOrOpts Type to convert to or options.\n * @returns Decoded value.\n *\n * @example\n * import { fromHex } from 'viem'\n * const data = fromHex('0x1a4', 'number')\n * // 420\n *\n * @example\n * import { fromHex } from 'viem'\n * const data = fromHex('0x48656c6c6f20576f726c6421', 'string')\n * // 'Hello world'\n *\n * @example\n * import { fromHex } from 'viem'\n * const data = fromHex('0x48656c6c6f20576f726c64210000000000000000000000000000000000000000', {\n *   size: 32,\n *   to: 'string'\n * })\n * // 'Hello world'\n */\nexport function fromHex(hex, toOrOpts) {\n    const opts = typeof toOrOpts === 'string' ? { to: toOrOpts } : toOrOpts;\n    const to = opts.to;\n    if (to === 'number')\n        return hexToNumber(hex, opts);\n    if (to === 'bigint')\n        return hexToBigInt(hex, opts);\n    if (to === 'string')\n        return hexToString(hex, opts);\n    if (to === 'boolean')\n        return hexToBool(hex, opts);\n    return hexToBytes(hex, opts);\n}\n/**\n * Decodes a hex value into a bigint.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex#hextobigint\n *\n * @param hex Hex value to decode.\n * @param opts Options.\n * @returns BigInt value.\n *\n * @example\n * import { hexToBigInt } from 'viem'\n * const data = hexToBigInt('0x1a4', { signed: true })\n * // 420n\n *\n * @example\n * import { hexToBigInt } from 'viem'\n * const data = hexToBigInt('0x00000000000000000000000000000000000000000000000000000000000001a4', { size: 32 })\n * // 420n\n */\nexport function hexToBigInt(hex, opts = {}) {\n    const { signed } = opts;\n    if (opts.size)\n        assertSize(hex, { size: opts.size });\n    const value = BigInt(hex);\n    if (!signed)\n        return value;\n    const size = (hex.length - 2) / 2;\n    const max = (1n << (BigInt(size) * 8n - 1n)) - 1n;\n    if (value <= max)\n        return value;\n    return value - BigInt(`0x${'f'.padStart(size * 2, 'f')}`) - 1n;\n}\n/**\n * Decodes a hex value into a boolean.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex#hextobool\n *\n * @param hex Hex value to decode.\n * @param opts Options.\n * @returns Boolean value.\n *\n * @example\n * import { hexToBool } from 'viem'\n * const data = hexToBool('0x01')\n * // true\n *\n * @example\n * import { hexToBool } from 'viem'\n * const data = hexToBool('0x0000000000000000000000000000000000000000000000000000000000000001', { size: 32 })\n * // true\n */\nexport function hexToBool(hex_, opts = {}) {\n    let hex = hex_;\n    if (opts.size) {\n        assertSize(hex, { size: opts.size });\n        hex = trim(hex);\n    }\n    if (trim(hex) === '0x00')\n        return false;\n    if (trim(hex) === '0x01')\n        return true;\n    throw new InvalidHexBooleanError(hex);\n}\n/**\n * Decodes a hex string into a number.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex#hextonumber\n *\n * @param hex Hex value to decode.\n * @param opts Options.\n * @returns Number value.\n *\n * @example\n * import { hexToNumber } from 'viem'\n * const data = hexToNumber('0x1a4')\n * // 420\n *\n * @example\n * import { hexToNumber } from 'viem'\n * const data = hexToBigInt('0x00000000000000000000000000000000000000000000000000000000000001a4', { size: 32 })\n * // 420\n */\nexport function hexToNumber(hex, opts = {}) {\n    return Number(hexToBigInt(hex, opts));\n}\n/**\n * Decodes a hex value into a UTF-8 string.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex#hextostring\n *\n * @param hex Hex value to decode.\n * @param opts Options.\n * @returns String value.\n *\n * @example\n * import { hexToString } from 'viem'\n * const data = hexToString('0x48656c6c6f20576f726c6421')\n * // 'Hello world!'\n *\n * @example\n * import { hexToString } from 'viem'\n * const data = hexToString('0x48656c6c6f20576f726c64210000000000000000000000000000000000000000', {\n *  size: 32,\n * })\n * // 'Hello world'\n */\nexport function hexToString(hex, opts = {}) {\n    let bytes = hexToBytes(hex);\n    if (opts.size) {\n        assertSize(bytes, { size: opts.size });\n        bytes = trim(bytes, { dir: 'right' });\n    }\n    return new TextDecoder().decode(bytes);\n}\n//# sourceMappingURL=fromHex.js.map","export function defineFormatter(type, format) {\n    return ({ exclude, format: overrides, }) => {\n        return {\n            exclude,\n            format: (args) => {\n                const formatted = format(args);\n                if (exclude) {\n                    for (const key of exclude) {\n                        delete formatted[key];\n                    }\n                }\n                return {\n                    ...formatted,\n                    ...overrides(args),\n                };\n            },\n            type,\n        };\n    };\n}\n//# sourceMappingURL=formatter.js.map","import { hexToNumber } from '../encoding/fromHex.js';\nimport { defineFormatter } from './formatter.js';\nexport const transactionType = {\n    '0x0': 'legacy',\n    '0x1': 'eip2930',\n    '0x2': 'eip1559',\n    '0x3': 'eip4844',\n    '0x4': 'eip7702',\n};\nexport function formatTransaction(transaction) {\n    const transaction_ = {\n        ...transaction,\n        blockHash: transaction.blockHash ? transaction.blockHash : null,\n        blockNumber: transaction.blockNumber\n            ? BigInt(transaction.blockNumber)\n            : null,\n        chainId: transaction.chainId ? hexToNumber(transaction.chainId) : undefined,\n        gas: transaction.gas ? BigInt(transaction.gas) : undefined,\n        gasPrice: transaction.gasPrice ? BigInt(transaction.gasPrice) : undefined,\n        maxFeePerBlobGas: transaction.maxFeePerBlobGas\n            ? BigInt(transaction.maxFeePerBlobGas)\n            : undefined,\n        maxFeePerGas: transaction.maxFeePerGas\n            ? BigInt(transaction.maxFeePerGas)\n            : undefined,\n        maxPriorityFeePerGas: transaction.maxPriorityFeePerGas\n            ? BigInt(transaction.maxPriorityFeePerGas)\n            : undefined,\n        nonce: transaction.nonce ? hexToNumber(transaction.nonce) : undefined,\n        to: transaction.to ? transaction.to : null,\n        transactionIndex: transaction.transactionIndex\n            ? Number(transaction.transactionIndex)\n            : null,\n        type: transaction.type\n            ? transactionType[transaction.type]\n            : undefined,\n        typeHex: transaction.type ? transaction.type : undefined,\n        value: transaction.value ? BigInt(transaction.value) : undefined,\n        v: transaction.v ? BigInt(transaction.v) : undefined,\n    };\n    if (transaction.authorizationList)\n        transaction_.authorizationList = formatAuthorizationList(transaction.authorizationList);\n    transaction_.yParity = (() => {\n        // If `yParity` is provided, we will use it.\n        if (transaction.yParity)\n            return Number(transaction.yParity);\n        // If no `yParity` provided, try derive from `v`.\n        if (typeof transaction_.v === 'bigint') {\n            if (transaction_.v === 0n || transaction_.v === 27n)\n                return 0;\n            if (transaction_.v === 1n || transaction_.v === 28n)\n                return 1;\n            if (transaction_.v >= 35n)\n                return transaction_.v % 2n === 0n ? 1 : 0;\n        }\n        return undefined;\n    })();\n    if (transaction_.type === 'legacy') {\n        delete transaction_.accessList;\n        delete transaction_.maxFeePerBlobGas;\n        delete transaction_.maxFeePerGas;\n        delete transaction_.maxPriorityFeePerGas;\n        delete transaction_.yParity;\n    }\n    if (transaction_.type === 'eip2930') {\n        delete transaction_.maxFeePerBlobGas;\n        delete transaction_.maxFeePerGas;\n        delete transaction_.maxPriorityFeePerGas;\n    }\n    if (transaction_.type === 'eip1559') {\n        delete transaction_.maxFeePerBlobGas;\n    }\n    return transaction_;\n}\nexport const defineTransaction = /*#__PURE__*/ defineFormatter('transaction', formatTransaction);\n//////////////////////////////////////////////////////////////////////////////\nfunction formatAuthorizationList(authorizationList) {\n    return authorizationList.map((authorization) => ({\n        address: authorization.address,\n        chainId: Number(authorization.chainId),\n        nonce: Number(authorization.nonce),\n        r: authorization.r,\n        s: authorization.s,\n        yParity: Number(authorization.yParity),\n    }));\n}\n//# sourceMappingURL=transaction.js.map","import { defineFormatter } from './formatter.js';\nimport { formatTransaction } from './transaction.js';\nexport function formatBlock(block) {\n    const transactions = (block.transactions ?? []).map((transaction) => {\n        if (typeof transaction === 'string')\n            return transaction;\n        return formatTransaction(transaction);\n    });\n    return {\n        ...block,\n        baseFeePerGas: block.baseFeePerGas ? BigInt(block.baseFeePerGas) : null,\n        blobGasUsed: block.blobGasUsed ? BigInt(block.blobGasUsed) : undefined,\n        difficulty: block.difficulty ? BigInt(block.difficulty) : undefined,\n        excessBlobGas: block.excessBlobGas\n            ? BigInt(block.excessBlobGas)\n            : undefined,\n        gasLimit: block.gasLimit ? BigInt(block.gasLimit) : undefined,\n        gasUsed: block.gasUsed ? BigInt(block.gasUsed) : undefined,\n        hash: block.hash ? block.hash : null,\n        logsBloom: block.logsBloom ? block.logsBloom : null,\n        nonce: block.nonce ? block.nonce : null,\n        number: block.number ? BigInt(block.number) : null,\n        size: block.size ? BigInt(block.size) : undefined,\n        timestamp: block.timestamp ? BigInt(block.timestamp) : undefined,\n        transactions,\n        totalDifficulty: block.totalDifficulty\n            ? BigInt(block.totalDifficulty)\n            : null,\n    };\n}\nexport const defineBlock = /*#__PURE__*/ defineFormatter('block', formatBlock);\n//# sourceMappingURL=block.js.map","export function formatLog(log, { args, eventName, } = {}) {\n    return {\n        ...log,\n        blockHash: log.blockHash ? log.blockHash : null,\n        blockNumber: log.blockNumber ? BigInt(log.blockNumber) : null,\n        logIndex: log.logIndex ? Number(log.logIndex) : null,\n        transactionHash: log.transactionHash ? log.transactionHash : null,\n        transactionIndex: log.transactionIndex\n            ? Number(log.transactionIndex)\n            : null,\n        ...(eventName ? { args, eventName } : {}),\n    };\n}\n//# sourceMappingURL=log.js.map","import { hexToNumber } from '../encoding/fromHex.js';\nimport { defineFormatter } from './formatter.js';\nimport { formatLog } from './log.js';\nimport { transactionType } from './transaction.js';\nexport const receiptStatuses = {\n    '0x0': 'reverted',\n    '0x1': 'success',\n};\nexport function formatTransactionReceipt(transactionReceipt) {\n    const receipt = {\n        ...transactionReceipt,\n        blockNumber: transactionReceipt.blockNumber\n            ? BigInt(transactionReceipt.blockNumber)\n            : null,\n        contractAddress: transactionReceipt.contractAddress\n            ? transactionReceipt.contractAddress\n            : null,\n        cumulativeGasUsed: transactionReceipt.cumulativeGasUsed\n            ? BigInt(transactionReceipt.cumulativeGasUsed)\n            : null,\n        effectiveGasPrice: transactionReceipt.effectiveGasPrice\n            ? BigInt(transactionReceipt.effectiveGasPrice)\n            : null,\n        gasUsed: transactionReceipt.gasUsed\n            ? BigInt(transactionReceipt.gasUsed)\n            : null,\n        logs: transactionReceipt.logs\n            ? transactionReceipt.logs.map((log) => formatLog(log))\n            : null,\n        to: transactionReceipt.to ? transactionReceipt.to : null,\n        transactionIndex: transactionReceipt.transactionIndex\n            ? hexToNumber(transactionReceipt.transactionIndex)\n            : null,\n        status: transactionReceipt.status\n            ? receiptStatuses[transactionReceipt.status]\n            : null,\n        type: transactionReceipt.type\n            ? transactionType[transactionReceipt.type] || transactionReceipt.type\n            : null,\n    };\n    if (transactionReceipt.blobGasPrice)\n        receipt.blobGasPrice = BigInt(transactionReceipt.blobGasPrice);\n    if (transactionReceipt.blobGasUsed)\n        receipt.blobGasUsed = BigInt(transactionReceipt.blobGasUsed);\n    return receipt;\n}\nexport const defineTransactionReceipt = /*#__PURE__*/ defineFormatter('transactionReceipt', formatTransactionReceipt);\n//# sourceMappingURL=transactionReceipt.js.map","import { bytesToHex, numberToHex } from '../encoding/toHex.js';\nimport { defineFormatter } from './formatter.js';\nexport const rpcTransactionType = {\n    legacy: '0x0',\n    eip2930: '0x1',\n    eip1559: '0x2',\n    eip4844: '0x3',\n    eip7702: '0x4',\n};\nexport function formatTransactionRequest(request) {\n    const rpcRequest = {};\n    if (typeof request.authorizationList !== 'undefined')\n        rpcRequest.authorizationList = formatAuthorizationList(request.authorizationList);\n    if (typeof request.accessList !== 'undefined')\n        rpcRequest.accessList = request.accessList;\n    if (typeof request.blobVersionedHashes !== 'undefined')\n        rpcRequest.blobVersionedHashes = request.blobVersionedHashes;\n    if (typeof request.blobs !== 'undefined') {\n        if (typeof request.blobs[0] !== 'string')\n            rpcRequest.blobs = request.blobs.map((x) => bytesToHex(x));\n        else\n            rpcRequest.blobs = request.blobs;\n    }\n    if (typeof request.data !== 'undefined')\n        rpcRequest.data = request.data;\n    if (typeof request.from !== 'undefined')\n        rpcRequest.from = request.from;\n    if (typeof request.gas !== 'undefined')\n        rpcRequest.gas = numberToHex(request.gas);\n    if (typeof request.gasPrice !== 'undefined')\n        rpcRequest.gasPrice = numberToHex(request.gasPrice);\n    if (typeof request.maxFeePerBlobGas !== 'undefined')\n        rpcRequest.maxFeePerBlobGas = numberToHex(request.maxFeePerBlobGas);\n    if (typeof request.maxFeePerGas !== 'undefined')\n        rpcRequest.maxFeePerGas = numberToHex(request.maxFeePerGas);\n    if (typeof request.maxPriorityFeePerGas !== 'undefined')\n        rpcRequest.maxPriorityFeePerGas = numberToHex(request.maxPriorityFeePerGas);\n    if (typeof request.nonce !== 'undefined')\n        rpcRequest.nonce = numberToHex(request.nonce);\n    if (typeof request.to !== 'undefined')\n        rpcRequest.to = request.to;\n    if (typeof request.type !== 'undefined')\n        rpcRequest.type = rpcTransactionType[request.type];\n    if (typeof request.value !== 'undefined')\n        rpcRequest.value = numberToHex(request.value);\n    return rpcRequest;\n}\nexport const defineTransactionRequest = /*#__PURE__*/ defineFormatter('transactionRequest', formatTransactionRequest);\n//////////////////////////////////////////////////////////////////////////////\nfunction formatAuthorizationList(authorizationList) {\n    return authorizationList.map((authorization) => ({\n        address: authorization.address,\n        r: authorization.r\n            ? numberToHex(BigInt(authorization.r))\n            : authorization.r,\n        s: authorization.s\n            ? numberToHex(BigInt(authorization.s))\n            : authorization.s,\n        chainId: numberToHex(authorization.chainId),\n        nonce: numberToHex(authorization.nonce),\n        ...(typeof authorization.yParity !== 'undefined'\n            ? { yParity: numberToHex(authorization.yParity) }\n            : {}),\n        ...(typeof authorization.v !== 'undefined' &&\n            typeof authorization.yParity === 'undefined'\n            ? { v: numberToHex(authorization.v) }\n            : {}),\n    }));\n}\n//# sourceMappingURL=transactionRequest.js.map","export const maxInt8 = 2n ** (8n - 1n) - 1n;\nexport const maxInt16 = 2n ** (16n - 1n) - 1n;\nexport const maxInt24 = 2n ** (24n - 1n) - 1n;\nexport const maxInt32 = 2n ** (32n - 1n) - 1n;\nexport const maxInt40 = 2n ** (40n - 1n) - 1n;\nexport const maxInt48 = 2n ** (48n - 1n) - 1n;\nexport const maxInt56 = 2n ** (56n - 1n) - 1n;\nexport const maxInt64 = 2n ** (64n - 1n) - 1n;\nexport const maxInt72 = 2n ** (72n - 1n) - 1n;\nexport const maxInt80 = 2n ** (80n - 1n) - 1n;\nexport const maxInt88 = 2n ** (88n - 1n) - 1n;\nexport const maxInt96 = 2n ** (96n - 1n) - 1n;\nexport const maxInt104 = 2n ** (104n - 1n) - 1n;\nexport const maxInt112 = 2n ** (112n - 1n) - 1n;\nexport const maxInt120 = 2n ** (120n - 1n) - 1n;\nexport const maxInt128 = 2n ** (128n - 1n) - 1n;\nexport const maxInt136 = 2n ** (136n - 1n) - 1n;\nexport const maxInt144 = 2n ** (144n - 1n) - 1n;\nexport const maxInt152 = 2n ** (152n - 1n) - 1n;\nexport const maxInt160 = 2n ** (160n - 1n) - 1n;\nexport const maxInt168 = 2n ** (168n - 1n) - 1n;\nexport const maxInt176 = 2n ** (176n - 1n) - 1n;\nexport const maxInt184 = 2n ** (184n - 1n) - 1n;\nexport const maxInt192 = 2n ** (192n - 1n) - 1n;\nexport const maxInt200 = 2n ** (200n - 1n) - 1n;\nexport const maxInt208 = 2n ** (208n - 1n) - 1n;\nexport const maxInt216 = 2n ** (216n - 1n) - 1n;\nexport const maxInt224 = 2n ** (224n - 1n) - 1n;\nexport const maxInt232 = 2n ** (232n - 1n) - 1n;\nexport const maxInt240 = 2n ** (240n - 1n) - 1n;\nexport const maxInt248 = 2n ** (248n - 1n) - 1n;\nexport const maxInt256 = 2n ** (256n - 1n) - 1n;\nexport const minInt8 = -(2n ** (8n - 1n));\nexport const minInt16 = -(2n ** (16n - 1n));\nexport const minInt24 = -(2n ** (24n - 1n));\nexport const minInt32 = -(2n ** (32n - 1n));\nexport const minInt40 = -(2n ** (40n - 1n));\nexport const minInt48 = -(2n ** (48n - 1n));\nexport const minInt56 = -(2n ** (56n - 1n));\nexport const minInt64 = -(2n ** (64n - 1n));\nexport const minInt72 = -(2n ** (72n - 1n));\nexport const minInt80 = -(2n ** (80n - 1n));\nexport const minInt88 = -(2n ** (88n - 1n));\nexport const minInt96 = -(2n ** (96n - 1n));\nexport const minInt104 = -(2n ** (104n - 1n));\nexport const minInt112 = -(2n ** (112n - 1n));\nexport const minInt120 = -(2n ** (120n - 1n));\nexport const minInt128 = -(2n ** (128n - 1n));\nexport const minInt136 = -(2n ** (136n - 1n));\nexport const minInt144 = -(2n ** (144n - 1n));\nexport const minInt152 = -(2n ** (152n - 1n));\nexport const minInt160 = -(2n ** (160n - 1n));\nexport const minInt168 = -(2n ** (168n - 1n));\nexport const minInt176 = -(2n ** (176n - 1n));\nexport const minInt184 = -(2n ** (184n - 1n));\nexport const minInt192 = -(2n ** (192n - 1n));\nexport const minInt200 = -(2n ** (200n - 1n));\nexport const minInt208 = -(2n ** (208n - 1n));\nexport const minInt216 = -(2n ** (216n - 1n));\nexport const minInt224 = -(2n ** (224n - 1n));\nexport const minInt232 = -(2n ** (232n - 1n));\nexport const minInt240 = -(2n ** (240n - 1n));\nexport const minInt248 = -(2n ** (248n - 1n));\nexport const minInt256 = -(2n ** (256n - 1n));\nexport const maxUint8 = 2n ** 8n - 1n;\nexport const maxUint16 = 2n ** 16n - 1n;\nexport const maxUint24 = 2n ** 24n - 1n;\nexport const maxUint32 = 2n ** 32n - 1n;\nexport const maxUint40 = 2n ** 40n - 1n;\nexport const maxUint48 = 2n ** 48n - 1n;\nexport const maxUint56 = 2n ** 56n - 1n;\nexport const maxUint64 = 2n ** 64n - 1n;\nexport const maxUint72 = 2n ** 72n - 1n;\nexport const maxUint80 = 2n ** 80n - 1n;\nexport const maxUint88 = 2n ** 88n - 1n;\nexport const maxUint96 = 2n ** 96n - 1n;\nexport const maxUint104 = 2n ** 104n - 1n;\nexport const maxUint112 = 2n ** 112n - 1n;\nexport const maxUint120 = 2n ** 120n - 1n;\nexport const maxUint128 = 2n ** 128n - 1n;\nexport const maxUint136 = 2n ** 136n - 1n;\nexport const maxUint144 = 2n ** 144n - 1n;\nexport const maxUint152 = 2n ** 152n - 1n;\nexport const maxUint160 = 2n ** 160n - 1n;\nexport const maxUint168 = 2n ** 168n - 1n;\nexport const maxUint176 = 2n ** 176n - 1n;\nexport const maxUint184 = 2n ** 184n - 1n;\nexport const maxUint192 = 2n ** 192n - 1n;\nexport const maxUint200 = 2n ** 200n - 1n;\nexport const maxUint208 = 2n ** 208n - 1n;\nexport const maxUint216 = 2n ** 216n - 1n;\nexport const maxUint224 = 2n ** 224n - 1n;\nexport const maxUint232 = 2n ** 232n - 1n;\nexport const maxUint240 = 2n ** 240n - 1n;\nexport const maxUint248 = 2n ** 248n - 1n;\nexport const maxUint256 = 2n ** 256n - 1n;\n//# sourceMappingURL=number.js.map","export function concat(values) {\n    if (typeof values[0] === 'string')\n        return concatHex(values);\n    return concatBytes(values);\n}\nexport function concatBytes(values) {\n    let length = 0;\n    for (const arr of values) {\n        length += arr.length;\n    }\n    const result = new Uint8Array(length);\n    let offset = 0;\n    for (const arr of values) {\n        result.set(arr, offset);\n        offset += arr.length;\n    }\n    return result;\n}\nexport function concatHex(values) {\n    return `0x${values.reduce((acc, x) => acc + x.replace('0x', ''), '')}`;\n}\n//# sourceMappingURL=concat.js.map","import { BaseError } from './base.js';\nexport class NegativeOffsetError extends BaseError {\n    constructor({ offset }) {\n        super(`Offset \\`${offset}\\` cannot be negative.`, {\n            name: 'NegativeOffsetError',\n        });\n    }\n}\nexport class PositionOutOfBoundsError extends BaseError {\n    constructor({ length, position }) {\n        super(`Position \\`${position}\\` is out of bounds (\\`0 < position < ${length}\\`).`, { name: 'PositionOutOfBoundsError' });\n    }\n}\nexport class RecursiveReadLimitExceededError extends BaseError {\n    constructor({ count, limit }) {\n        super(`Recursive read limit of \\`${limit}\\` exceeded (recursive read count: \\`${count}\\`).`, { name: 'RecursiveReadLimitExceededError' });\n    }\n}\n//# sourceMappingURL=cursor.js.map","import { NegativeOffsetError, PositionOutOfBoundsError, RecursiveReadLimitExceededError, } from '../errors/cursor.js';\nconst staticCursor = {\n    bytes: new Uint8Array(),\n    dataView: new DataView(new ArrayBuffer(0)),\n    position: 0,\n    positionReadCount: new Map(),\n    recursiveReadCount: 0,\n    recursiveReadLimit: Number.POSITIVE_INFINITY,\n    assertReadLimit() {\n        if (this.recursiveReadCount >= this.recursiveReadLimit)\n            throw new RecursiveReadLimitExceededError({\n                count: this.recursiveReadCount + 1,\n                limit: this.recursiveReadLimit,\n            });\n    },\n    assertPosition(position) {\n        if (position < 0 || position > this.bytes.length - 1)\n            throw new PositionOutOfBoundsError({\n                length: this.bytes.length,\n                position,\n            });\n    },\n    decrementPosition(offset) {\n        if (offset < 0)\n            throw new NegativeOffsetError({ offset });\n        const position = this.position - offset;\n        this.assertPosition(position);\n        this.position = position;\n    },\n    getReadCount(position) {\n        return this.positionReadCount.get(position || this.position) || 0;\n    },\n    incrementPosition(offset) {\n        if (offset < 0)\n            throw new NegativeOffsetError({ offset });\n        const position = this.position + offset;\n        this.assertPosition(position);\n        this.position = position;\n    },\n    inspectByte(position_) {\n        const position = position_ ?? this.position;\n        this.assertPosition(position);\n        return this.bytes[position];\n    },\n    inspectBytes(length, position_) {\n        const position = position_ ?? this.position;\n        this.assertPosition(position + length - 1);\n        return this.bytes.subarray(position, position + length);\n    },\n    inspectUint8(position_) {\n        const position = position_ ?? this.position;\n        this.assertPosition(position);\n        return this.bytes[position];\n    },\n    inspectUint16(position_) {\n        const position = position_ ?? this.position;\n        this.assertPosition(position + 1);\n        return this.dataView.getUint16(position);\n    },\n    inspectUint24(position_) {\n        const position = position_ ?? this.position;\n        this.assertPosition(position + 2);\n        return ((this.dataView.getUint16(position) << 8) +\n            this.dataView.getUint8(position + 2));\n    },\n    inspectUint32(position_) {\n        const position = position_ ?? this.position;\n        this.assertPosition(position + 3);\n        return this.dataView.getUint32(position);\n    },\n    pushByte(byte) {\n        this.assertPosition(this.position);\n        this.bytes[this.position] = byte;\n        this.position++;\n    },\n    pushBytes(bytes) {\n        this.assertPosition(this.position + bytes.length - 1);\n        this.bytes.set(bytes, this.position);\n        this.position += bytes.length;\n    },\n    pushUint8(value) {\n        this.assertPosition(this.position);\n        this.bytes[this.position] = value;\n        this.position++;\n    },\n    pushUint16(value) {\n        this.assertPosition(this.position + 1);\n        this.dataView.setUint16(this.position, value);\n        this.position += 2;\n    },\n    pushUint24(value) {\n        this.assertPosition(this.position + 2);\n        this.dataView.setUint16(this.position, value >> 8);\n        this.dataView.setUint8(this.position + 2, value & ~4294967040);\n        this.position += 3;\n    },\n    pushUint32(value) {\n        this.assertPosition(this.position + 3);\n        this.dataView.setUint32(this.position, value);\n        this.position += 4;\n    },\n    readByte() {\n        this.assertReadLimit();\n        this._touch();\n        const value = this.inspectByte();\n        this.position++;\n        return value;\n    },\n    readBytes(length, size) {\n        this.assertReadLimit();\n        this._touch();\n        const value = this.inspectBytes(length);\n        this.position += size ?? length;\n        return value;\n    },\n    readUint8() {\n        this.assertReadLimit();\n        this._touch();\n        const value = this.inspectUint8();\n        this.position += 1;\n        return value;\n    },\n    readUint16() {\n        this.assertReadLimit();\n        this._touch();\n        const value = this.inspectUint16();\n        this.position += 2;\n        return value;\n    },\n    readUint24() {\n        this.assertReadLimit();\n        this._touch();\n        const value = this.inspectUint24();\n        this.position += 3;\n        return value;\n    },\n    readUint32() {\n        this.assertReadLimit();\n        this._touch();\n        const value = this.inspectUint32();\n        this.position += 4;\n        return value;\n    },\n    get remaining() {\n        return this.bytes.length - this.position;\n    },\n    setPosition(position) {\n        const oldPosition = this.position;\n        this.assertPosition(position);\n        this.position = position;\n        return () => (this.position = oldPosition);\n    },\n    _touch() {\n        if (this.recursiveReadLimit === Number.POSITIVE_INFINITY)\n            return;\n        const count = this.getReadCount();\n        this.positionReadCount.set(this.position, count + 1);\n        if (count > 0)\n            this.recursiveReadCount++;\n    },\n};\nexport function createCursor(bytes, { recursiveReadLimit = 8_192 } = {}) {\n    const cursor = Object.create(staticCursor);\n    cursor.bytes = bytes;\n    cursor.dataView = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n    cursor.positionReadCount = new Map();\n    cursor.recursiveReadLimit = recursiveReadLimit;\n    return cursor;\n}\n//# sourceMappingURL=cursor.js.map","import { BaseError } from '../../errors/base.js';\nimport { createCursor, } from '../cursor.js';\nimport { hexToBytes } from './toBytes.js';\nimport { bytesToHex } from './toHex.js';\nexport function toRlp(bytes, to = 'hex') {\n    const encodable = getEncodable(bytes);\n    const cursor = createCursor(new Uint8Array(encodable.length));\n    encodable.encode(cursor);\n    if (to === 'hex')\n        return bytesToHex(cursor.bytes);\n    return cursor.bytes;\n}\nexport function bytesToRlp(bytes, to = 'bytes') {\n    return toRlp(bytes, to);\n}\nexport function hexToRlp(hex, to = 'hex') {\n    return toRlp(hex, to);\n}\nfunction getEncodable(bytes) {\n    if (Array.isArray(bytes))\n        return getEncodableList(bytes.map((x) => getEncodable(x)));\n    return getEncodableBytes(bytes);\n}\nfunction getEncodableList(list) {\n    const bodyLength = list.reduce((acc, x) => acc + x.length, 0);\n    const sizeOfBodyLength = getSizeOfLength(bodyLength);\n    const length = (() => {\n        if (bodyLength <= 55)\n            return 1 + bodyLength;\n        return 1 + sizeOfBodyLength + bodyLength;\n    })();\n    return {\n        length,\n        encode(cursor) {\n            if (bodyLength <= 55) {\n                cursor.pushByte(0xc0 + bodyLength);\n            }\n            else {\n                cursor.pushByte(0xc0 + 55 + sizeOfBodyLength);\n                if (sizeOfBodyLength === 1)\n                    cursor.pushUint8(bodyLength);\n                else if (sizeOfBodyLength === 2)\n                    cursor.pushUint16(bodyLength);\n                else if (sizeOfBodyLength === 3)\n                    cursor.pushUint24(bodyLength);\n                else\n                    cursor.pushUint32(bodyLength);\n            }\n            for (const { encode } of list) {\n                encode(cursor);\n            }\n        },\n    };\n}\nfunction getEncodableBytes(bytesOrHex) {\n    const bytes = typeof bytesOrHex === 'string' ? hexToBytes(bytesOrHex) : bytesOrHex;\n    const sizeOfBytesLength = getSizeOfLength(bytes.length);\n    const length = (() => {\n        if (bytes.length === 1 && bytes[0] < 0x80)\n            return 1;\n        if (bytes.length <= 55)\n            return 1 + bytes.length;\n        return 1 + sizeOfBytesLength + bytes.length;\n    })();\n    return {\n        length,\n        encode(cursor) {\n            if (bytes.length === 1 && bytes[0] < 0x80) {\n                cursor.pushBytes(bytes);\n            }\n            else if (bytes.length <= 55) {\n                cursor.pushByte(0x80 + bytes.length);\n                cursor.pushBytes(bytes);\n            }\n            else {\n                cursor.pushByte(0x80 + 55 + sizeOfBytesLength);\n                if (sizeOfBytesLength === 1)\n                    cursor.pushUint8(bytes.length);\n                else if (sizeOfBytesLength === 2)\n                    cursor.pushUint16(bytes.length);\n                else if (sizeOfBytesLength === 3)\n                    cursor.pushUint24(bytes.length);\n                else\n                    cursor.pushUint32(bytes.length);\n                cursor.pushBytes(bytes);\n            }\n        },\n    };\n}\nfunction getSizeOfLength(length) {\n    if (length < 2 ** 8)\n        return 1;\n    if (length < 2 ** 16)\n        return 2;\n    if (length < 2 ** 24)\n        return 3;\n    if (length < 2 ** 32)\n        return 4;\n    throw new BaseError('Length is too large.');\n}\n//# sourceMappingURL=toRlp.js.map","export const etherUnits = {\n    gwei: 9,\n    wei: 18,\n};\nexport const gweiUnits = {\n    ether: -9,\n    wei: 9,\n};\nexport const weiUnits = {\n    ether: -18,\n    gwei: -9,\n};\n//# sourceMappingURL=unit.js.map","/**\n *  Divides a number by a given exponent of base 10 (10exponent), and formats it into a string representation of the number..\n *\n * - Docs: https://viem.sh/docs/utilities/formatUnits\n *\n * @example\n * import { formatUnits } from 'viem'\n *\n * formatUnits(420000000000n, 9)\n * // '420'\n */\nexport function formatUnits(value, decimals) {\n    let display = value.toString();\n    const negative = display.startsWith('-');\n    if (negative)\n        display = display.slice(1);\n    display = display.padStart(decimals, '0');\n    let [integer, fraction] = [\n        display.slice(0, display.length - decimals),\n        display.slice(display.length - decimals),\n    ];\n    fraction = fraction.replace(/(0+)$/, '');\n    return `${negative ? '-' : ''}${integer || '0'}${fraction ? `.${fraction}` : ''}`;\n}\n//# sourceMappingURL=formatUnits.js.map","import { etherUnits } from '../../constants/unit.js';\nimport { formatUnits } from './formatUnits.js';\n/**\n * Converts numerical wei to a string representation of ether.\n *\n * - Docs: https://viem.sh/docs/utilities/formatEther\n *\n * @example\n * import { formatEther } from 'viem'\n *\n * formatEther(1000000000000000000n)\n * // '1'\n */\nexport function formatEther(wei, unit = 'wei') {\n    return formatUnits(wei, etherUnits[unit]);\n}\n//# sourceMappingURL=formatEther.js.map","import { gweiUnits } from '../../constants/unit.js';\nimport { formatUnits } from './formatUnits.js';\n/**\n * Converts numerical wei to a string representation of gwei.\n *\n * - Docs: https://viem.sh/docs/utilities/formatGwei\n *\n * @example\n * import { formatGwei } from 'viem'\n *\n * formatGwei(1000000000n)\n * // '1'\n */\nexport function formatGwei(wei, unit = 'wei') {\n    return formatUnits(wei, gweiUnits[unit]);\n}\n//# sourceMappingURL=formatGwei.js.map","import { formatEther } from '../utils/unit/formatEther.js';\nimport { formatGwei } from '../utils/unit/formatGwei.js';\nimport { BaseError } from './base.js';\nexport function prettyPrint(args) {\n    const entries = Object.entries(args)\n        .map(([key, value]) => {\n        if (value === undefined || value === false)\n            return null;\n        return [key, value];\n    })\n        .filter(Boolean);\n    const maxLength = entries.reduce((acc, [key]) => Math.max(acc, key.length), 0);\n    return entries\n        .map(([key, value]) => `  ${`${key}:`.padEnd(maxLength + 1)}  ${value}`)\n        .join('\\n');\n}\nexport class FeeConflictError extends BaseError {\n    constructor() {\n        super([\n            'Cannot specify both a `gasPrice` and a `maxFeePerGas`/`maxPriorityFeePerGas`.',\n            'Use `maxFeePerGas`/`maxPriorityFeePerGas` for EIP-1559 compatible networks, and `gasPrice` for others.',\n        ].join('\\n'), { name: 'FeeConflictError' });\n    }\n}\nexport class InvalidLegacyVError extends BaseError {\n    constructor({ v }) {\n        super(`Invalid \\`v\\` value \"${v}\". Expected 27 or 28.`, {\n            name: 'InvalidLegacyVError',\n        });\n    }\n}\nexport class InvalidSerializableTransactionError extends BaseError {\n    constructor({ transaction }) {\n        super('Cannot infer a transaction type from provided transaction.', {\n            metaMessages: [\n                'Provided Transaction:',\n                '{',\n                prettyPrint(transaction),\n                '}',\n                '',\n                'To infer the type, either provide:',\n                '- a `type` to the Transaction, or',\n                '- an EIP-1559 Transaction with `maxFeePerGas`, or',\n                '- an EIP-2930 Transaction with `gasPrice` & `accessList`, or',\n                '- an EIP-4844 Transaction with `blobs`, `blobVersionedHashes`, `sidecars`, or',\n                '- an EIP-7702 Transaction with `authorizationList`, or',\n                '- a Legacy Transaction with `gasPrice`',\n            ],\n            name: 'InvalidSerializableTransactionError',\n        });\n    }\n}\nexport class InvalidSerializedTransactionTypeError extends BaseError {\n    constructor({ serializedType }) {\n        super(`Serialized transaction type \"${serializedType}\" is invalid.`, {\n            name: 'InvalidSerializedTransactionType',\n        });\n        Object.defineProperty(this, \"serializedType\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        this.serializedType = serializedType;\n    }\n}\nexport class InvalidSerializedTransactionError extends BaseError {\n    constructor({ attributes, serializedTransaction, type, }) {\n        const missing = Object.entries(attributes)\n            .map(([key, value]) => (typeof value === 'undefined' ? key : undefined))\n            .filter(Boolean);\n        super(`Invalid serialized transaction of type \"${type}\" was provided.`, {\n            metaMessages: [\n                `Serialized Transaction: \"${serializedTransaction}\"`,\n                missing.length > 0 ? `Missing Attributes: ${missing.join(', ')}` : '',\n            ].filter(Boolean),\n            name: 'InvalidSerializedTransactionError',\n        });\n        Object.defineProperty(this, \"serializedTransaction\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"type\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        this.serializedTransaction = serializedTransaction;\n        this.type = type;\n    }\n}\nexport class InvalidStorageKeySizeError extends BaseError {\n    constructor({ storageKey }) {\n        super(`Size for storage key \"${storageKey}\" is invalid. Expected 32 bytes. Got ${Math.floor((storageKey.length - 2) / 2)} bytes.`, { name: 'InvalidStorageKeySizeError' });\n    }\n}\nexport class TransactionExecutionError extends BaseError {\n    constructor(cause, { account, docsPath, chain, data, gas, gasPrice, maxFeePerGas, maxPriorityFeePerGas, nonce, to, value, }) {\n        const prettyArgs = prettyPrint({\n            chain: chain && `${chain?.name} (id: ${chain?.id})`,\n            from: account?.address,\n            to,\n            value: typeof value !== 'undefined' &&\n                `${formatEther(value)} ${chain?.nativeCurrency?.symbol || 'ETH'}`,\n            data,\n            gas,\n            gasPrice: typeof gasPrice !== 'undefined' && `${formatGwei(gasPrice)} gwei`,\n            maxFeePerGas: typeof maxFeePerGas !== 'undefined' &&\n                `${formatGwei(maxFeePerGas)} gwei`,\n            maxPriorityFeePerGas: typeof maxPriorityFeePerGas !== 'undefined' &&\n                `${formatGwei(maxPriorityFeePerGas)} gwei`,\n            nonce,\n        });\n        super(cause.shortMessage, {\n            cause,\n            docsPath,\n            metaMessages: [\n                ...(cause.metaMessages ? [...cause.metaMessages, ' '] : []),\n                'Request Arguments:',\n                prettyArgs,\n            ].filter(Boolean),\n            name: 'TransactionExecutionError',\n        });\n        Object.defineProperty(this, \"cause\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        this.cause = cause;\n    }\n}\nexport class TransactionNotFoundError extends BaseError {\n    constructor({ blockHash, blockNumber, blockTag, hash, index, }) {\n        let identifier = 'Transaction';\n        if (blockTag && index !== undefined)\n            identifier = `Transaction at block time \"${blockTag}\" at index \"${index}\"`;\n        if (blockHash && index !== undefined)\n            identifier = `Transaction at block hash \"${blockHash}\" at index \"${index}\"`;\n        if (blockNumber && index !== undefined)\n            identifier = `Transaction at block number \"${blockNumber}\" at index \"${index}\"`;\n        if (hash)\n            identifier = `Transaction with hash \"${hash}\"`;\n        super(`${identifier} could not be found.`, {\n            name: 'TransactionNotFoundError',\n        });\n    }\n}\nexport class TransactionReceiptNotFoundError extends BaseError {\n    constructor({ hash }) {\n        super(`Transaction receipt with hash \"${hash}\" could not be found. The Transaction may not be processed on a block yet.`, {\n            name: 'TransactionReceiptNotFoundError',\n        });\n    }\n}\nexport class WaitForTransactionReceiptTimeoutError extends BaseError {\n    constructor({ hash }) {\n        super(`Timed out while waiting for transaction with hash \"${hash}\" to be confirmed.`, { name: 'WaitForTransactionReceiptTimeoutError' });\n    }\n}\n//# sourceMappingURL=transaction.js.map","import { toHex } from '../encoding/toHex.js';\nimport { toYParitySignatureArray } from '../transaction/serializeTransaction.js';\n/*\n * Serializes an EIP-7702 authorization list.\n */\nexport function serializeAuthorizationList(authorizationList) {\n    if (!authorizationList || authorizationList.length === 0)\n        return [];\n    const serializedAuthorizationList = [];\n    for (const authorization of authorizationList) {\n        const { chainId, nonce, ...signature } = authorization;\n        const contractAddress = authorization.address;\n        serializedAuthorizationList.push([\n            chainId ? toHex(chainId) : '0x',\n            contractAddress,\n            nonce ? toHex(nonce) : '0x',\n            ...toYParitySignatureArray({}, signature),\n        ]);\n    }\n    return serializedAuthorizationList;\n}\n//# sourceMappingURL=serializeAuthorizationList.js.map","import { hexToBytes } from '../encoding/toBytes.js';\nimport { bytesToHex } from '../encoding/toHex.js';\n/**\n * Compute commitments from a list of blobs.\n *\n * @example\n * ```ts\n * import { blobsToCommitments, toBlobs } from 'viem'\n * import { kzg } from './kzg'\n *\n * const blobs = toBlobs({ data: '0x1234' })\n * const commitments = blobsToCommitments({ blobs, kzg })\n * ```\n */\nexport function blobsToCommitments(parameters) {\n    const { kzg } = parameters;\n    const to = parameters.to ?? (typeof parameters.blobs[0] === 'string' ? 'hex' : 'bytes');\n    const blobs = (typeof parameters.blobs[0] === 'string'\n        ? parameters.blobs.map((x) => hexToBytes(x))\n        : parameters.blobs);\n    const commitments = [];\n    for (const blob of blobs)\n        commitments.push(Uint8Array.from(kzg.blobToKzgCommitment(blob)));\n    return (to === 'bytes'\n        ? commitments\n        : commitments.map((x) => bytesToHex(x)));\n}\n//# sourceMappingURL=blobsToCommitments.js.map","import { hexToBytes } from '../encoding/toBytes.js';\nimport { bytesToHex } from '../encoding/toHex.js';\n/**\n * Compute the proofs for a list of blobs and their commitments.\n *\n * @example\n * ```ts\n * import {\n *   blobsToCommitments,\n *   toBlobs\n * } from 'viem'\n * import { kzg } from './kzg'\n *\n * const blobs = toBlobs({ data: '0x1234' })\n * const commitments = blobsToCommitments({ blobs, kzg })\n * const proofs = blobsToProofs({ blobs, commitments, kzg })\n * ```\n */\nexport function blobsToProofs(parameters) {\n    const { kzg } = parameters;\n    const to = parameters.to ?? (typeof parameters.blobs[0] === 'string' ? 'hex' : 'bytes');\n    const blobs = (typeof parameters.blobs[0] === 'string'\n        ? parameters.blobs.map((x) => hexToBytes(x))\n        : parameters.blobs);\n    const commitments = (typeof parameters.commitments[0] === 'string'\n        ? parameters.commitments.map((x) => hexToBytes(x))\n        : parameters.commitments);\n    const proofs = [];\n    for (let i = 0; i < blobs.length; i++) {\n        const blob = blobs[i];\n        const commitment = commitments[i];\n        proofs.push(Uint8Array.from(kzg.computeBlobKzgProof(blob, commitment)));\n    }\n    return (to === 'bytes'\n        ? proofs\n        : proofs.map((x) => bytesToHex(x)));\n}\n//# sourceMappingURL=blobsToProofs.js.map","export const crypto = typeof globalThis === 'object' && 'crypto' in globalThis ? globalThis.crypto : undefined;\n//# sourceMappingURL=crypto.js.map","/**\n * Utilities for hex, bytes, CSPRNG.\n * @module\n */\n/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated (2025-04-30), we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\n/** Checks if something is Uint8Array. Be careful: nodejs Buffer will return true. */\nexport function isBytes(a) {\n    return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n/** Asserts something is positive integer. */\nexport function anumber(n) {\n    if (!Number.isSafeInteger(n) || n < 0)\n        throw new Error('positive integer expected, got ' + n);\n}\n/** Asserts something is Uint8Array. */\nexport function abytes(b, ...lengths) {\n    if (!isBytes(b))\n        throw new Error('Uint8Array expected');\n    if (lengths.length > 0 && !lengths.includes(b.length))\n        throw new Error('Uint8Array expected of length ' + lengths + ', got length=' + b.length);\n}\n/** Asserts something is hash */\nexport function ahash(h) {\n    if (typeof h !== 'function' || typeof h.create !== 'function')\n        throw new Error('Hash should be wrapped by utils.createHasher');\n    anumber(h.outputLen);\n    anumber(h.blockLen);\n}\n/** Asserts a hash instance has not been destroyed / finished */\nexport function aexists(instance, checkFinished = true) {\n    if (instance.destroyed)\n        throw new Error('Hash instance has been destroyed');\n    if (checkFinished && instance.finished)\n        throw new Error('Hash#digest() has already been called');\n}\n/** Asserts output is properly-sized byte array */\nexport function aoutput(out, instance) {\n    abytes(out);\n    const min = instance.outputLen;\n    if (out.length < min) {\n        throw new Error('digestInto() expects output buffer of length at least ' + min);\n    }\n}\n/** Cast u8 / u16 / u32 to u8. */\nexport function u8(arr) {\n    return new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n/** Cast u8 / u16 / u32 to u32. */\nexport function u32(arr) {\n    return new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n}\n/** Zeroize a byte array. Warning: JS provides no guarantees. */\nexport function clean(...arrays) {\n    for (let i = 0; i < arrays.length; i++) {\n        arrays[i].fill(0);\n    }\n}\n/** Create DataView of an array for easy byte-level manipulation. */\nexport function createView(arr) {\n    return new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n/** The rotate right (circular right shift) operation for uint32 */\nexport function rotr(word, shift) {\n    return (word << (32 - shift)) | (word >>> shift);\n}\n/** The rotate left (circular left shift) operation for uint32 */\nexport function rotl(word, shift) {\n    return (word << shift) | ((word >>> (32 - shift)) >>> 0);\n}\n/** Is current platform little-endian? Most are. Big-Endian platform: IBM */\nexport const isLE = /* @__PURE__ */ (() => new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44)();\n/** The byte swap operation for uint32 */\nexport function byteSwap(word) {\n    return (((word << 24) & 0xff000000) |\n        ((word << 8) & 0xff0000) |\n        ((word >>> 8) & 0xff00) |\n        ((word >>> 24) & 0xff));\n}\n/** Conditionally byte swap if on a big-endian platform */\nexport const swap8IfBE = isLE\n    ? (n) => n\n    : (n) => byteSwap(n);\n/** @deprecated */\nexport const byteSwapIfBE = swap8IfBE;\n/** In place byte swap for Uint32Array */\nexport function byteSwap32(arr) {\n    for (let i = 0; i < arr.length; i++) {\n        arr[i] = byteSwap(arr[i]);\n    }\n    return arr;\n}\nexport const swap32IfBE = isLE\n    ? (u) => u\n    : byteSwap32;\n// Built-in hex conversion https://caniuse.com/mdn-javascript_builtins_uint8array_fromhex\nconst hasHexBuiltin = /* @__PURE__ */ (() => \n// @ts-ignore\ntypeof Uint8Array.from([]).toHex === 'function' && typeof Uint8Array.fromHex === 'function')();\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * Convert byte array to hex string. Uses built-in function, when available.\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes) {\n    abytes(bytes);\n    // @ts-ignore\n    if (hasHexBuiltin)\n        return bytes.toHex();\n    // pre-caching improves the speed 6x\n    let hex = '';\n    for (let i = 0; i < bytes.length; i++) {\n        hex += hexes[bytes[i]];\n    }\n    return hex;\n}\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 };\nfunction asciiToBase16(ch) {\n    if (ch >= asciis._0 && ch <= asciis._9)\n        return ch - asciis._0; // '2' => 50-48\n    if (ch >= asciis.A && ch <= asciis.F)\n        return ch - (asciis.A - 10); // 'B' => 66-(65-10)\n    if (ch >= asciis.a && ch <= asciis.f)\n        return ch - (asciis.a - 10); // 'b' => 98-(97-10)\n    return;\n}\n/**\n * Convert hex string to byte array. Uses built-in function, when available.\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex) {\n    if (typeof hex !== 'string')\n        throw new Error('hex string expected, got ' + typeof hex);\n    // @ts-ignore\n    if (hasHexBuiltin)\n        return Uint8Array.fromHex(hex);\n    const hl = hex.length;\n    const al = hl / 2;\n    if (hl % 2)\n        throw new Error('hex string expected, got unpadded hex of length ' + hl);\n    const array = new Uint8Array(al);\n    for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n        const n1 = asciiToBase16(hex.charCodeAt(hi));\n        const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n        if (n1 === undefined || n2 === undefined) {\n            const char = hex[hi] + hex[hi + 1];\n            throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n        }\n        array[ai] = n1 * 16 + n2; // multiply first octet, e.g. 'a3' => 10*16+3 => 160 + 3 => 163\n    }\n    return array;\n}\n/**\n * There is no setImmediate in browser and setTimeout is slow.\n * Call of async fn will return Promise, which will be fullfiled only on\n * next scheduler queue processing step and this is exactly what we need.\n */\nexport const nextTick = async () => { };\n/** Returns control to thread each 'tick' ms to avoid blocking. */\nexport async function asyncLoop(iters, tick, cb) {\n    let ts = Date.now();\n    for (let i = 0; i < iters; i++) {\n        cb(i);\n        // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n        const diff = Date.now() - ts;\n        if (diff >= 0 && diff < tick)\n            continue;\n        await nextTick();\n        ts += diff;\n    }\n}\n/**\n * Converts string to bytes using UTF8 encoding.\n * @example utf8ToBytes('abc') // Uint8Array.from([97, 98, 99])\n */\nexport function utf8ToBytes(str) {\n    if (typeof str !== 'string')\n        throw new Error('string expected');\n    return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n/**\n * Converts bytes to string using UTF8 encoding.\n * @example bytesToUtf8(Uint8Array.from([97, 98, 99])) // 'abc'\n */\nexport function bytesToUtf8(bytes) {\n    return new TextDecoder().decode(bytes);\n}\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data) {\n    if (typeof data === 'string')\n        data = utf8ToBytes(data);\n    abytes(data);\n    return data;\n}\n/**\n * Helper for KDFs: consumes uint8array or string.\n * When string is passed, does utf8 decoding, using TextDecoder.\n */\nexport function kdfInputToBytes(data) {\n    if (typeof data === 'string')\n        data = utf8ToBytes(data);\n    abytes(data);\n    return data;\n}\n/** Copies several Uint8Arrays into one. */\nexport function concatBytes(...arrays) {\n    let sum = 0;\n    for (let i = 0; i < arrays.length; i++) {\n        const a = arrays[i];\n        abytes(a);\n        sum += a.length;\n    }\n    const res = new Uint8Array(sum);\n    for (let i = 0, pad = 0; i < arrays.length; i++) {\n        const a = arrays[i];\n        res.set(a, pad);\n        pad += a.length;\n    }\n    return res;\n}\nexport function checkOpts(defaults, opts) {\n    if (opts !== undefined && {}.toString.call(opts) !== '[object Object]')\n        throw new Error('options should be object or undefined');\n    const merged = Object.assign(defaults, opts);\n    return merged;\n}\n/** For runtime check if class implements interface */\nexport class Hash {\n}\n/** Wraps hash function, creating an interface on top of it */\nexport function createHasher(hashCons) {\n    const hashC = (msg) => hashCons().update(toBytes(msg)).digest();\n    const tmp = hashCons();\n    hashC.outputLen = tmp.outputLen;\n    hashC.blockLen = tmp.blockLen;\n    hashC.create = () => hashCons();\n    return hashC;\n}\nexport function createOptHasher(hashCons) {\n    const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n    const tmp = hashCons({});\n    hashC.outputLen = tmp.outputLen;\n    hashC.blockLen = tmp.blockLen;\n    hashC.create = (opts) => hashCons(opts);\n    return hashC;\n}\nexport function createXOFer(hashCons) {\n    const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n    const tmp = hashCons({});\n    hashC.outputLen = tmp.outputLen;\n    hashC.blockLen = tmp.blockLen;\n    hashC.create = (opts) => hashCons(opts);\n    return hashC;\n}\nexport const wrapConstructor = createHasher;\nexport const wrapConstructorWithOpts = createOptHasher;\nexport const wrapXOFConstructorWithOpts = createXOFer;\n/** Cryptographically secure PRNG. Uses internal OS-level `crypto.getRandomValues`. */\nexport function randomBytes(bytesLength = 32) {\n    if (crypto && typeof crypto.getRandomValues === 'function') {\n        return crypto.getRandomValues(new Uint8Array(bytesLength));\n    }\n    // Legacy Node.js compatibility\n    if (crypto && typeof crypto.randomBytes === 'function') {\n        return Uint8Array.from(crypto.randomBytes(bytesLength));\n    }\n    throw new Error('crypto.getRandomValues must be defined');\n}\n//# sourceMappingURL=utils.js.map","/**\n * Internal Merkle-Damgard hash utils.\n * @module\n */\nimport { Hash, abytes, aexists, aoutput, clean, createView, toBytes } from \"./utils.js\";\n/** Polyfill for Safari 14. https://caniuse.com/mdn-javascript_builtins_dataview_setbiguint64 */\nexport function setBigUint64(view, byteOffset, value, isLE) {\n    if (typeof view.setBigUint64 === 'function')\n        return view.setBigUint64(byteOffset, value, isLE);\n    const _32n = BigInt(32);\n    const _u32_max = BigInt(0xffffffff);\n    const wh = Number((value >> _32n) & _u32_max);\n    const wl = Number(value & _u32_max);\n    const h = isLE ? 4 : 0;\n    const l = isLE ? 0 : 4;\n    view.setUint32(byteOffset + h, wh, isLE);\n    view.setUint32(byteOffset + l, wl, isLE);\n}\n/** Choice: a ? b : c */\nexport function Chi(a, b, c) {\n    return (a & b) ^ (~a & c);\n}\n/** Majority function, true if any two inputs is true. */\nexport function Maj(a, b, c) {\n    return (a & b) ^ (a & c) ^ (b & c);\n}\n/**\n * Merkle-Damgard hash construction base class.\n * Could be used to create MD5, RIPEMD, SHA1, SHA2.\n */\nexport class HashMD extends Hash {\n    constructor(blockLen, outputLen, padOffset, isLE) {\n        super();\n        this.finished = false;\n        this.length = 0;\n        this.pos = 0;\n        this.destroyed = false;\n        this.blockLen = blockLen;\n        this.outputLen = outputLen;\n        this.padOffset = padOffset;\n        this.isLE = isLE;\n        this.buffer = new Uint8Array(blockLen);\n        this.view = createView(this.buffer);\n    }\n    update(data) {\n        aexists(this);\n        data = toBytes(data);\n        abytes(data);\n        const { view, buffer, blockLen } = this;\n        const len = data.length;\n        for (let pos = 0; pos < len;) {\n            const take = Math.min(blockLen - this.pos, len - pos);\n            // Fast path: we have at least one block in input, cast it to view and process\n            if (take === blockLen) {\n                const dataView = createView(data);\n                for (; blockLen <= len - pos; pos += blockLen)\n                    this.process(dataView, pos);\n                continue;\n            }\n            buffer.set(data.subarray(pos, pos + take), this.pos);\n            this.pos += take;\n            pos += take;\n            if (this.pos === blockLen) {\n                this.process(view, 0);\n                this.pos = 0;\n            }\n        }\n        this.length += data.length;\n        this.roundClean();\n        return this;\n    }\n    digestInto(out) {\n        aexists(this);\n        aoutput(out, this);\n        this.finished = true;\n        // Padding\n        // We can avoid allocation of buffer for padding completely if it\n        // was previously not allocated here. But it won't change performance.\n        const { buffer, view, blockLen, isLE } = this;\n        let { pos } = this;\n        // append the bit '1' to the message\n        buffer[pos++] = 0b10000000;\n        clean(this.buffer.subarray(pos));\n        // we have less than padOffset left in buffer, so we cannot put length in\n        // current block, need process it and pad again\n        if (this.padOffset > blockLen - pos) {\n            this.process(view, 0);\n            pos = 0;\n        }\n        // Pad until full block byte with zeros\n        for (let i = pos; i < blockLen; i++)\n            buffer[i] = 0;\n        // Note: sha512 requires length to be 128bit integer, but length in JS will overflow before that\n        // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.\n        // So we just write lowest 64 bits of that value.\n        setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE);\n        this.process(view, 0);\n        const oview = createView(out);\n        const len = this.outputLen;\n        // NOTE: we do division by 4 later, which should be fused in single op with modulo by JIT\n        if (len % 4)\n            throw new Error('_sha2: outputLen should be aligned to 32bit');\n        const outLen = len / 4;\n        const state = this.get();\n        if (outLen > state.length)\n            throw new Error('_sha2: outputLen bigger than state');\n        for (let i = 0; i < outLen; i++)\n            oview.setUint32(4 * i, state[i], isLE);\n    }\n    digest() {\n        const { buffer, outputLen } = this;\n        this.digestInto(buffer);\n        const res = buffer.slice(0, outputLen);\n        this.destroy();\n        return res;\n    }\n    _cloneInto(to) {\n        to || (to = new this.constructor());\n        to.set(...this.get());\n        const { blockLen, buffer, length, finished, destroyed, pos } = this;\n        to.destroyed = destroyed;\n        to.finished = finished;\n        to.length = length;\n        to.pos = pos;\n        if (length % blockLen)\n            to.buffer.set(buffer);\n        return to;\n    }\n    clone() {\n        return this._cloneInto();\n    }\n}\n/**\n * Initial SHA-2 state: fractional parts of square roots of first 16 primes 2..53.\n * Check out `test/misc/sha2-gen-iv.js` for recomputation guide.\n */\n/** Initial SHA256 state. Bits 0..32 of frac part of sqrt of primes 2..19 */\nexport const SHA256_IV = /* @__PURE__ */ Uint32Array.from([\n    0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19,\n]);\n/** Initial SHA224 state. Bits 32..64 of frac part of sqrt of primes 23..53 */\nexport const SHA224_IV = /* @__PURE__ */ Uint32Array.from([\n    0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4,\n]);\n/** Initial SHA384 state. Bits 0..64 of frac part of sqrt of primes 23..53 */\nexport const SHA384_IV = /* @__PURE__ */ Uint32Array.from([\n    0xcbbb9d5d, 0xc1059ed8, 0x629a292a, 0x367cd507, 0x9159015a, 0x3070dd17, 0x152fecd8, 0xf70e5939,\n    0x67332667, 0xffc00b31, 0x8eb44a87, 0x68581511, 0xdb0c2e0d, 0x64f98fa7, 0x47b5481d, 0xbefa4fa4,\n]);\n/** Initial SHA512 state. Bits 0..64 of frac part of sqrt of primes 2..19 */\nexport const SHA512_IV = /* @__PURE__ */ Uint32Array.from([\n    0x6a09e667, 0xf3bcc908, 0xbb67ae85, 0x84caa73b, 0x3c6ef372, 0xfe94f82b, 0xa54ff53a, 0x5f1d36f1,\n    0x510e527f, 0xade682d1, 0x9b05688c, 0x2b3e6c1f, 0x1f83d9ab, 0xfb41bd6b, 0x5be0cd19, 0x137e2179,\n]);\n//# sourceMappingURL=_md.js.map","/**\n * Internal helpers for u64. BigUint64Array is too slow as per 2025, so we implement it using Uint32Array.\n * @todo re-check https://issues.chromium.org/issues/42212588\n * @module\n */\nconst U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\nfunction fromBig(n, le = false) {\n    if (le)\n        return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n    return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\nfunction split(lst, le = false) {\n    const len = lst.length;\n    let Ah = new Uint32Array(len);\n    let Al = new Uint32Array(len);\n    for (let i = 0; i < len; i++) {\n        const { h, l } = fromBig(lst[i], le);\n        [Ah[i], Al[i]] = [h, l];\n    }\n    return [Ah, Al];\n}\nconst toBig = (h, l) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h, _l, s) => h >>> s;\nconst shrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h, l, s) => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h, l, s) => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h, l, s) => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h, l) => l;\nconst rotr32L = (h, _l) => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s));\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(Ah, Al, Bh, Bl) {\n    const l = (Al >>> 0) + (Bl >>> 0);\n    return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low, Ah, Bh, Ch) => (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low, Ah, Bh, Ch, Dh) => (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low, Ah, Bh, Ch, Dh, Eh) => (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n// prettier-ignore\nexport { add, add3H, add3L, add4H, add4L, add5H, add5L, fromBig, rotlBH, rotlBL, rotlSH, rotlSL, rotr32H, rotr32L, rotrBH, rotrBL, rotrSH, rotrSL, shrSH, shrSL, split, toBig };\n// prettier-ignore\nconst u64 = {\n    fromBig, split, toBig,\n    shrSH, shrSL,\n    rotrSH, rotrSL, rotrBH, rotrBL,\n    rotr32H, rotr32L,\n    rotlSH, rotlSL, rotlBH, rotlBL,\n    add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexport default u64;\n//# sourceMappingURL=_u64.js.map","/**\n * SHA2 hash function. A.k.a. sha256, sha384, sha512, sha512_224, sha512_256.\n * SHA256 is the fastest hash implementable in JS, even faster than Blake3.\n * Check out [RFC 4634](https://datatracker.ietf.org/doc/html/rfc4634) and\n * [FIPS 180-4](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf).\n * @module\n */\nimport { Chi, HashMD, Maj, SHA224_IV, SHA256_IV, SHA384_IV, SHA512_IV } from \"./_md.js\";\nimport * as u64 from \"./_u64.js\";\nimport { clean, createHasher, rotr } from \"./utils.js\";\n/**\n * Round constants:\n * First 32 bits of fractional parts of the cube roots of the first 64 primes 2..311)\n */\n// prettier-ignore\nconst SHA256_K = /* @__PURE__ */ Uint32Array.from([\n    0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n    0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n    0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n    0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n    0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n    0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n    0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n    0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n/** Reusable temporary buffer. \"W\" comes straight from spec. */\nconst SHA256_W = /* @__PURE__ */ new Uint32Array(64);\nexport class SHA256 extends HashMD {\n    constructor(outputLen = 32) {\n        super(64, outputLen, 8, false);\n        // We cannot use array here since array allows indexing by variable\n        // which means optimizer/compiler cannot use registers.\n        this.A = SHA256_IV[0] | 0;\n        this.B = SHA256_IV[1] | 0;\n        this.C = SHA256_IV[2] | 0;\n        this.D = SHA256_IV[3] | 0;\n        this.E = SHA256_IV[4] | 0;\n        this.F = SHA256_IV[5] | 0;\n        this.G = SHA256_IV[6] | 0;\n        this.H = SHA256_IV[7] | 0;\n    }\n    get() {\n        const { A, B, C, D, E, F, G, H } = this;\n        return [A, B, C, D, E, F, G, H];\n    }\n    // prettier-ignore\n    set(A, B, C, D, E, F, G, H) {\n        this.A = A | 0;\n        this.B = B | 0;\n        this.C = C | 0;\n        this.D = D | 0;\n        this.E = E | 0;\n        this.F = F | 0;\n        this.G = G | 0;\n        this.H = H | 0;\n    }\n    process(view, offset) {\n        // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array\n        for (let i = 0; i < 16; i++, offset += 4)\n            SHA256_W[i] = view.getUint32(offset, false);\n        for (let i = 16; i < 64; i++) {\n            const W15 = SHA256_W[i - 15];\n            const W2 = SHA256_W[i - 2];\n            const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ (W15 >>> 3);\n            const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ (W2 >>> 10);\n            SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;\n        }\n        // Compression function main loop, 64 rounds\n        let { A, B, C, D, E, F, G, H } = this;\n        for (let i = 0; i < 64; i++) {\n            const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25);\n            const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n            const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22);\n            const T2 = (sigma0 + Maj(A, B, C)) | 0;\n            H = G;\n            G = F;\n            F = E;\n            E = (D + T1) | 0;\n            D = C;\n            C = B;\n            B = A;\n            A = (T1 + T2) | 0;\n        }\n        // Add the compressed chunk to the current hash value\n        A = (A + this.A) | 0;\n        B = (B + this.B) | 0;\n        C = (C + this.C) | 0;\n        D = (D + this.D) | 0;\n        E = (E + this.E) | 0;\n        F = (F + this.F) | 0;\n        G = (G + this.G) | 0;\n        H = (H + this.H) | 0;\n        this.set(A, B, C, D, E, F, G, H);\n    }\n    roundClean() {\n        clean(SHA256_W);\n    }\n    destroy() {\n        this.set(0, 0, 0, 0, 0, 0, 0, 0);\n        clean(this.buffer);\n    }\n}\nexport class SHA224 extends SHA256 {\n    constructor() {\n        super(28);\n        this.A = SHA224_IV[0] | 0;\n        this.B = SHA224_IV[1] | 0;\n        this.C = SHA224_IV[2] | 0;\n        this.D = SHA224_IV[3] | 0;\n        this.E = SHA224_IV[4] | 0;\n        this.F = SHA224_IV[5] | 0;\n        this.G = SHA224_IV[6] | 0;\n        this.H = SHA224_IV[7] | 0;\n    }\n}\n// SHA2-512 is slower than sha256 in js because u64 operations are slow.\n// Round contants\n// First 32 bits of the fractional parts of the cube roots of the first 80 primes 2..409\n// prettier-ignore\nconst K512 = /* @__PURE__ */ (() => u64.split([\n    '0x428a2f98d728ae22', '0x7137449123ef65cd', '0xb5c0fbcfec4d3b2f', '0xe9b5dba58189dbbc',\n    '0x3956c25bf348b538', '0x59f111f1b605d019', '0x923f82a4af194f9b', '0xab1c5ed5da6d8118',\n    '0xd807aa98a3030242', '0x12835b0145706fbe', '0x243185be4ee4b28c', '0x550c7dc3d5ffb4e2',\n    '0x72be5d74f27b896f', '0x80deb1fe3b1696b1', '0x9bdc06a725c71235', '0xc19bf174cf692694',\n    '0xe49b69c19ef14ad2', '0xefbe4786384f25e3', '0x0fc19dc68b8cd5b5', '0x240ca1cc77ac9c65',\n    '0x2de92c6f592b0275', '0x4a7484aa6ea6e483', '0x5cb0a9dcbd41fbd4', '0x76f988da831153b5',\n    '0x983e5152ee66dfab', '0xa831c66d2db43210', '0xb00327c898fb213f', '0xbf597fc7beef0ee4',\n    '0xc6e00bf33da88fc2', '0xd5a79147930aa725', '0x06ca6351e003826f', '0x142929670a0e6e70',\n    '0x27b70a8546d22ffc', '0x2e1b21385c26c926', '0x4d2c6dfc5ac42aed', '0x53380d139d95b3df',\n    '0x650a73548baf63de', '0x766a0abb3c77b2a8', '0x81c2c92e47edaee6', '0x92722c851482353b',\n    '0xa2bfe8a14cf10364', '0xa81a664bbc423001', '0xc24b8b70d0f89791', '0xc76c51a30654be30',\n    '0xd192e819d6ef5218', '0xd69906245565a910', '0xf40e35855771202a', '0x106aa07032bbd1b8',\n    '0x19a4c116b8d2d0c8', '0x1e376c085141ab53', '0x2748774cdf8eeb99', '0x34b0bcb5e19b48a8',\n    '0x391c0cb3c5c95a63', '0x4ed8aa4ae3418acb', '0x5b9cca4f7763e373', '0x682e6ff3d6b2b8a3',\n    '0x748f82ee5defb2fc', '0x78a5636f43172f60', '0x84c87814a1f0ab72', '0x8cc702081a6439ec',\n    '0x90befffa23631e28', '0xa4506cebde82bde9', '0xbef9a3f7b2c67915', '0xc67178f2e372532b',\n    '0xca273eceea26619c', '0xd186b8c721c0c207', '0xeada7dd6cde0eb1e', '0xf57d4f7fee6ed178',\n    '0x06f067aa72176fba', '0x0a637dc5a2c898a6', '0x113f9804bef90dae', '0x1b710b35131c471b',\n    '0x28db77f523047d84', '0x32caab7b40c72493', '0x3c9ebe0a15c9bebc', '0x431d67c49c100d4c',\n    '0x4cc5d4becb3e42b6', '0x597f299cfc657e2a', '0x5fcb6fab3ad6faec', '0x6c44198c4a475817'\n].map(n => BigInt(n))))();\nconst SHA512_Kh = /* @__PURE__ */ (() => K512[0])();\nconst SHA512_Kl = /* @__PURE__ */ (() => K512[1])();\n// Reusable temporary buffers\nconst SHA512_W_H = /* @__PURE__ */ new Uint32Array(80);\nconst SHA512_W_L = /* @__PURE__ */ new Uint32Array(80);\nexport class SHA512 extends HashMD {\n    constructor(outputLen = 64) {\n        super(128, outputLen, 16, false);\n        // We cannot use array here since array allows indexing by variable\n        // which means optimizer/compiler cannot use registers.\n        // h -- high 32 bits, l -- low 32 bits\n        this.Ah = SHA512_IV[0] | 0;\n        this.Al = SHA512_IV[1] | 0;\n        this.Bh = SHA512_IV[2] | 0;\n        this.Bl = SHA512_IV[3] | 0;\n        this.Ch = SHA512_IV[4] | 0;\n        this.Cl = SHA512_IV[5] | 0;\n        this.Dh = SHA512_IV[6] | 0;\n        this.Dl = SHA512_IV[7] | 0;\n        this.Eh = SHA512_IV[8] | 0;\n        this.El = SHA512_IV[9] | 0;\n        this.Fh = SHA512_IV[10] | 0;\n        this.Fl = SHA512_IV[11] | 0;\n        this.Gh = SHA512_IV[12] | 0;\n        this.Gl = SHA512_IV[13] | 0;\n        this.Hh = SHA512_IV[14] | 0;\n        this.Hl = SHA512_IV[15] | 0;\n    }\n    // prettier-ignore\n    get() {\n        const { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n        return [Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl];\n    }\n    // prettier-ignore\n    set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl) {\n        this.Ah = Ah | 0;\n        this.Al = Al | 0;\n        this.Bh = Bh | 0;\n        this.Bl = Bl | 0;\n        this.Ch = Ch | 0;\n        this.Cl = Cl | 0;\n        this.Dh = Dh | 0;\n        this.Dl = Dl | 0;\n        this.Eh = Eh | 0;\n        this.El = El | 0;\n        this.Fh = Fh | 0;\n        this.Fl = Fl | 0;\n        this.Gh = Gh | 0;\n        this.Gl = Gl | 0;\n        this.Hh = Hh | 0;\n        this.Hl = Hl | 0;\n    }\n    process(view, offset) {\n        // Extend the first 16 words into the remaining 64 words w[16..79] of the message schedule array\n        for (let i = 0; i < 16; i++, offset += 4) {\n            SHA512_W_H[i] = view.getUint32(offset);\n            SHA512_W_L[i] = view.getUint32((offset += 4));\n        }\n        for (let i = 16; i < 80; i++) {\n            // s0 := (w[i-15] rightrotate 1) xor (w[i-15] rightrotate 8) xor (w[i-15] rightshift 7)\n            const W15h = SHA512_W_H[i - 15] | 0;\n            const W15l = SHA512_W_L[i - 15] | 0;\n            const s0h = u64.rotrSH(W15h, W15l, 1) ^ u64.rotrSH(W15h, W15l, 8) ^ u64.shrSH(W15h, W15l, 7);\n            const s0l = u64.rotrSL(W15h, W15l, 1) ^ u64.rotrSL(W15h, W15l, 8) ^ u64.shrSL(W15h, W15l, 7);\n            // s1 := (w[i-2] rightrotate 19) xor (w[i-2] rightrotate 61) xor (w[i-2] rightshift 6)\n            const W2h = SHA512_W_H[i - 2] | 0;\n            const W2l = SHA512_W_L[i - 2] | 0;\n            const s1h = u64.rotrSH(W2h, W2l, 19) ^ u64.rotrBH(W2h, W2l, 61) ^ u64.shrSH(W2h, W2l, 6);\n            const s1l = u64.rotrSL(W2h, W2l, 19) ^ u64.rotrBL(W2h, W2l, 61) ^ u64.shrSL(W2h, W2l, 6);\n            // SHA256_W[i] = s0 + s1 + SHA256_W[i - 7] + SHA256_W[i - 16];\n            const SUMl = u64.add4L(s0l, s1l, SHA512_W_L[i - 7], SHA512_W_L[i - 16]);\n            const SUMh = u64.add4H(SUMl, s0h, s1h, SHA512_W_H[i - 7], SHA512_W_H[i - 16]);\n            SHA512_W_H[i] = SUMh | 0;\n            SHA512_W_L[i] = SUMl | 0;\n        }\n        let { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n        // Compression function main loop, 80 rounds\n        for (let i = 0; i < 80; i++) {\n            // S1 := (e rightrotate 14) xor (e rightrotate 18) xor (e rightrotate 41)\n            const sigma1h = u64.rotrSH(Eh, El, 14) ^ u64.rotrSH(Eh, El, 18) ^ u64.rotrBH(Eh, El, 41);\n            const sigma1l = u64.rotrSL(Eh, El, 14) ^ u64.rotrSL(Eh, El, 18) ^ u64.rotrBL(Eh, El, 41);\n            //const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n            const CHIh = (Eh & Fh) ^ (~Eh & Gh);\n            const CHIl = (El & Fl) ^ (~El & Gl);\n            // T1 = H + sigma1 + Chi(E, F, G) + SHA512_K[i] + SHA512_W[i]\n            // prettier-ignore\n            const T1ll = u64.add5L(Hl, sigma1l, CHIl, SHA512_Kl[i], SHA512_W_L[i]);\n            const T1h = u64.add5H(T1ll, Hh, sigma1h, CHIh, SHA512_Kh[i], SHA512_W_H[i]);\n            const T1l = T1ll | 0;\n            // S0 := (a rightrotate 28) xor (a rightrotate 34) xor (a rightrotate 39)\n            const sigma0h = u64.rotrSH(Ah, Al, 28) ^ u64.rotrBH(Ah, Al, 34) ^ u64.rotrBH(Ah, Al, 39);\n            const sigma0l = u64.rotrSL(Ah, Al, 28) ^ u64.rotrBL(Ah, Al, 34) ^ u64.rotrBL(Ah, Al, 39);\n            const MAJh = (Ah & Bh) ^ (Ah & Ch) ^ (Bh & Ch);\n            const MAJl = (Al & Bl) ^ (Al & Cl) ^ (Bl & Cl);\n            Hh = Gh | 0;\n            Hl = Gl | 0;\n            Gh = Fh | 0;\n            Gl = Fl | 0;\n            Fh = Eh | 0;\n            Fl = El | 0;\n            ({ h: Eh, l: El } = u64.add(Dh | 0, Dl | 0, T1h | 0, T1l | 0));\n            Dh = Ch | 0;\n            Dl = Cl | 0;\n            Ch = Bh | 0;\n            Cl = Bl | 0;\n            Bh = Ah | 0;\n            Bl = Al | 0;\n            const All = u64.add3L(T1l, sigma0l, MAJl);\n            Ah = u64.add3H(All, T1h, sigma0h, MAJh);\n            Al = All | 0;\n        }\n        // Add the compressed chunk to the current hash value\n        ({ h: Ah, l: Al } = u64.add(this.Ah | 0, this.Al | 0, Ah | 0, Al | 0));\n        ({ h: Bh, l: Bl } = u64.add(this.Bh | 0, this.Bl | 0, Bh | 0, Bl | 0));\n        ({ h: Ch, l: Cl } = u64.add(this.Ch | 0, this.Cl | 0, Ch | 0, Cl | 0));\n        ({ h: Dh, l: Dl } = u64.add(this.Dh | 0, this.Dl | 0, Dh | 0, Dl | 0));\n        ({ h: Eh, l: El } = u64.add(this.Eh | 0, this.El | 0, Eh | 0, El | 0));\n        ({ h: Fh, l: Fl } = u64.add(this.Fh | 0, this.Fl | 0, Fh | 0, Fl | 0));\n        ({ h: Gh, l: Gl } = u64.add(this.Gh | 0, this.Gl | 0, Gh | 0, Gl | 0));\n        ({ h: Hh, l: Hl } = u64.add(this.Hh | 0, this.Hl | 0, Hh | 0, Hl | 0));\n        this.set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl);\n    }\n    roundClean() {\n        clean(SHA512_W_H, SHA512_W_L);\n    }\n    destroy() {\n        clean(this.buffer);\n        this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n    }\n}\nexport class SHA384 extends SHA512 {\n    constructor() {\n        super(48);\n        this.Ah = SHA384_IV[0] | 0;\n        this.Al = SHA384_IV[1] | 0;\n        this.Bh = SHA384_IV[2] | 0;\n        this.Bl = SHA384_IV[3] | 0;\n        this.Ch = SHA384_IV[4] | 0;\n        this.Cl = SHA384_IV[5] | 0;\n        this.Dh = SHA384_IV[6] | 0;\n        this.Dl = SHA384_IV[7] | 0;\n        this.Eh = SHA384_IV[8] | 0;\n        this.El = SHA384_IV[9] | 0;\n        this.Fh = SHA384_IV[10] | 0;\n        this.Fl = SHA384_IV[11] | 0;\n        this.Gh = SHA384_IV[12] | 0;\n        this.Gl = SHA384_IV[13] | 0;\n        this.Hh = SHA384_IV[14] | 0;\n        this.Hl = SHA384_IV[15] | 0;\n    }\n}\n/**\n * Truncated SHA512/256 and SHA512/224.\n * SHA512_IV is XORed with 0xa5a5a5a5a5a5a5a5, then used as \"intermediary\" IV of SHA512/t.\n * Then t hashes string to produce result IV.\n * See `test/misc/sha2-gen-iv.js`.\n */\n/** SHA512/224 IV */\nconst T224_IV = /* @__PURE__ */ Uint32Array.from([\n    0x8c3d37c8, 0x19544da2, 0x73e19966, 0x89dcd4d6, 0x1dfab7ae, 0x32ff9c82, 0x679dd514, 0x582f9fcf,\n    0x0f6d2b69, 0x7bd44da8, 0x77e36f73, 0x04c48942, 0x3f9d85a8, 0x6a1d36c8, 0x1112e6ad, 0x91d692a1,\n]);\n/** SHA512/256 IV */\nconst T256_IV = /* @__PURE__ */ Uint32Array.from([\n    0x22312194, 0xfc2bf72c, 0x9f555fa3, 0xc84c64c2, 0x2393b86b, 0x6f53b151, 0x96387719, 0x5940eabd,\n    0x96283ee2, 0xa88effe3, 0xbe5e1e25, 0x53863992, 0x2b0199fc, 0x2c85b8aa, 0x0eb72ddc, 0x81c52ca2,\n]);\nexport class SHA512_224 extends SHA512 {\n    constructor() {\n        super(28);\n        this.Ah = T224_IV[0] | 0;\n        this.Al = T224_IV[1] | 0;\n        this.Bh = T224_IV[2] | 0;\n        this.Bl = T224_IV[3] | 0;\n        this.Ch = T224_IV[4] | 0;\n        this.Cl = T224_IV[5] | 0;\n        this.Dh = T224_IV[6] | 0;\n        this.Dl = T224_IV[7] | 0;\n        this.Eh = T224_IV[8] | 0;\n        this.El = T224_IV[9] | 0;\n        this.Fh = T224_IV[10] | 0;\n        this.Fl = T224_IV[11] | 0;\n        this.Gh = T224_IV[12] | 0;\n        this.Gl = T224_IV[13] | 0;\n        this.Hh = T224_IV[14] | 0;\n        this.Hl = T224_IV[15] | 0;\n    }\n}\nexport class SHA512_256 extends SHA512 {\n    constructor() {\n        super(32);\n        this.Ah = T256_IV[0] | 0;\n        this.Al = T256_IV[1] | 0;\n        this.Bh = T256_IV[2] | 0;\n        this.Bl = T256_IV[3] | 0;\n        this.Ch = T256_IV[4] | 0;\n        this.Cl = T256_IV[5] | 0;\n        this.Dh = T256_IV[6] | 0;\n        this.Dl = T256_IV[7] | 0;\n        this.Eh = T256_IV[8] | 0;\n        this.El = T256_IV[9] | 0;\n        this.Fh = T256_IV[10] | 0;\n        this.Fl = T256_IV[11] | 0;\n        this.Gh = T256_IV[12] | 0;\n        this.Gl = T256_IV[13] | 0;\n        this.Hh = T256_IV[14] | 0;\n        this.Hl = T256_IV[15] | 0;\n    }\n}\n/**\n * SHA2-256 hash function from RFC 4634.\n *\n * It is the fastest JS hash, even faster than Blake3.\n * To break sha256 using birthday attack, attackers need to try 2^128 hashes.\n * BTC network is doing 2^70 hashes/sec (2^95 hashes/year) as per 2025.\n */\nexport const sha256 = /* @__PURE__ */ createHasher(() => new SHA256());\n/** SHA2-224 hash function from RFC 4634 */\nexport const sha224 = /* @__PURE__ */ createHasher(() => new SHA224());\n/** SHA2-512 hash function from RFC 4634. */\nexport const sha512 = /* @__PURE__ */ createHasher(() => new SHA512());\n/** SHA2-384 hash function from RFC 4634. */\nexport const sha384 = /* @__PURE__ */ createHasher(() => new SHA384());\n/**\n * SHA2-512/256 \"truncated\" hash function, with improved resistance to length extension attacks.\n * See the paper on [truncated SHA512](https://eprint.iacr.org/2010/548.pdf).\n */\nexport const sha512_256 = /* @__PURE__ */ createHasher(() => new SHA512_256());\n/**\n * SHA2-512/224 \"truncated\" hash function, with improved resistance to length extension attacks.\n * See the paper on [truncated SHA512](https://eprint.iacr.org/2010/548.pdf).\n */\nexport const sha512_224 = /* @__PURE__ */ createHasher(() => new SHA512_224());\n//# sourceMappingURL=sha2.js.map","/**\n * SHA2-256 a.k.a. sha256. In JS, it is the fastest hash, even faster than Blake3.\n *\n * To break sha256 using birthday attack, attackers need to try 2^128 hashes.\n * BTC network is doing 2^70 hashes/sec (2^95 hashes/year) as per 2025.\n *\n * Check out [FIPS 180-4](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf).\n * @module\n * @deprecated\n */\nimport { SHA224 as SHA224n, sha224 as sha224n, SHA256 as SHA256n, sha256 as sha256n, } from \"./sha2.js\";\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexport const SHA256 = SHA256n;\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexport const sha256 = sha256n;\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexport const SHA224 = SHA224n;\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexport const sha224 = sha224n;\n//# sourceMappingURL=sha256.js.map","import { sha256 as noble_sha256 } from '@noble/hashes/sha256';\nimport { isHex } from '../data/isHex.js';\nimport { toBytes } from '../encoding/toBytes.js';\nimport { toHex } from '../encoding/toHex.js';\nexport function sha256(value, to_) {\n    const to = to_ || 'hex';\n    const bytes = noble_sha256(isHex(value, { strict: false }) ? toBytes(value) : value);\n    if (to === 'bytes')\n        return bytes;\n    return toHex(bytes);\n}\n//# sourceMappingURL=sha256.js.map","import { bytesToHex } from '../encoding/toHex.js';\nimport { sha256 } from '../hash/sha256.js';\n/**\n * Transform a commitment to it's versioned hash.\n *\n * @example\n * ```ts\n * import {\n *   blobsToCommitments,\n *   commitmentToVersionedHash,\n *   toBlobs\n * } from 'viem'\n * import { kzg } from './kzg'\n *\n * const blobs = toBlobs({ data: '0x1234' })\n * const [commitment] = blobsToCommitments({ blobs, kzg })\n * const versionedHash = commitmentToVersionedHash({ commitment })\n * ```\n */\nexport function commitmentToVersionedHash(parameters) {\n    const { commitment, version = 1 } = parameters;\n    const to = parameters.to ?? (typeof commitment === 'string' ? 'hex' : 'bytes');\n    const versionedHash = sha256(commitment, 'bytes');\n    versionedHash.set([version], 0);\n    return (to === 'bytes' ? versionedHash : bytesToHex(versionedHash));\n}\n//# sourceMappingURL=commitmentToVersionedHash.js.map","import { commitmentToVersionedHash, } from './commitmentToVersionedHash.js';\n/**\n * Transform a list of commitments to their versioned hashes.\n *\n * @example\n * ```ts\n * import {\n *   blobsToCommitments,\n *   commitmentsToVersionedHashes,\n *   toBlobs\n * } from 'viem'\n * import { kzg } from './kzg'\n *\n * const blobs = toBlobs({ data: '0x1234' })\n * const commitments = blobsToCommitments({ blobs, kzg })\n * const versionedHashes = commitmentsToVersionedHashes({ commitments })\n * ```\n */\nexport function commitmentsToVersionedHashes(parameters) {\n    const { commitments, version } = parameters;\n    const to = parameters.to ?? (typeof commitments[0] === 'string' ? 'hex' : 'bytes');\n    const hashes = [];\n    for (const commitment of commitments) {\n        hashes.push(commitmentToVersionedHash({\n            commitment,\n            to,\n            version,\n        }));\n    }\n    return hashes;\n}\n//# sourceMappingURL=commitmentsToVersionedHashes.js.map","// https://github.com/ethereum/EIPs/blob/master/EIPS/eip-4844.md#parameters\n/** Blob limit per transaction. */\nconst blobsPerTransaction = 6;\n/** The number of bytes in a BLS scalar field element. */\nexport const bytesPerFieldElement = 32;\n/** The number of field elements in a blob. */\nexport const fieldElementsPerBlob = 4096;\n/** The number of bytes in a blob. */\nexport const bytesPerBlob = bytesPerFieldElement * fieldElementsPerBlob;\n/** Blob bytes limit per transaction. */\nexport const maxBytesPerTransaction = bytesPerBlob * blobsPerTransaction -\n    // terminator byte (0x80).\n    1 -\n    // zero byte (0x00) appended to each field element.\n    1 * fieldElementsPerBlob * blobsPerTransaction;\n//# sourceMappingURL=blob.js.map","// https://github.com/ethereum/EIPs/blob/master/EIPS/eip-4844.md#parameters\nexport const versionedHashVersionKzg = 1;\n//# sourceMappingURL=kzg.js.map","import { versionedHashVersionKzg } from '../constants/kzg.js';\nimport { BaseError } from './base.js';\nexport class BlobSizeTooLargeError extends BaseError {\n    constructor({ maxSize, size }) {\n        super('Blob size is too large.', {\n            metaMessages: [`Max: ${maxSize} bytes`, `Given: ${size} bytes`],\n            name: 'BlobSizeTooLargeError',\n        });\n    }\n}\nexport class EmptyBlobError extends BaseError {\n    constructor() {\n        super('Blob data must not be empty.', { name: 'EmptyBlobError' });\n    }\n}\nexport class InvalidVersionedHashSizeError extends BaseError {\n    constructor({ hash, size, }) {\n        super(`Versioned hash \"${hash}\" size is invalid.`, {\n            metaMessages: ['Expected: 32', `Received: ${size}`],\n            name: 'InvalidVersionedHashSizeError',\n        });\n    }\n}\nexport class InvalidVersionedHashVersionError extends BaseError {\n    constructor({ hash, version, }) {\n        super(`Versioned hash \"${hash}\" version is invalid.`, {\n            metaMessages: [\n                `Expected: ${versionedHashVersionKzg}`,\n                `Received: ${version}`,\n            ],\n            name: 'InvalidVersionedHashVersionError',\n        });\n    }\n}\n//# sourceMappingURL=blob.js.map","import { bytesPerBlob, bytesPerFieldElement, fieldElementsPerBlob, maxBytesPerTransaction, } from '../../constants/blob.js';\nimport { BlobSizeTooLargeError, EmptyBlobError, } from '../../errors/blob.js';\nimport { createCursor } from '../cursor.js';\nimport { size } from '../data/size.js';\nimport { hexToBytes } from '../encoding/toBytes.js';\nimport { bytesToHex } from '../encoding/toHex.js';\n/**\n * Transforms arbitrary data to blobs.\n *\n * @example\n * ```ts\n * import { toBlobs, stringToHex } from 'viem'\n *\n * const blobs = toBlobs({ data: stringToHex('hello world') })\n * ```\n */\nexport function toBlobs(parameters) {\n    const to = parameters.to ?? (typeof parameters.data === 'string' ? 'hex' : 'bytes');\n    const data = (typeof parameters.data === 'string'\n        ? hexToBytes(parameters.data)\n        : parameters.data);\n    const size_ = size(data);\n    if (!size_)\n        throw new EmptyBlobError();\n    if (size_ > maxBytesPerTransaction)\n        throw new BlobSizeTooLargeError({\n            maxSize: maxBytesPerTransaction,\n            size: size_,\n        });\n    const blobs = [];\n    let active = true;\n    let position = 0;\n    while (active) {\n        const blob = createCursor(new Uint8Array(bytesPerBlob));\n        let size = 0;\n        while (size < fieldElementsPerBlob) {\n            const bytes = data.slice(position, position + (bytesPerFieldElement - 1));\n            // Push a zero byte so the field element doesn't overflow the BLS modulus.\n            blob.pushByte(0x00);\n            // Push the current segment of data bytes.\n            blob.pushBytes(bytes);\n            // If we detect that the current segment of data bytes is less than 31 bytes,\n            // we can stop processing and push a terminator byte to indicate the end of the blob.\n            if (bytes.length < 31) {\n                blob.pushByte(0x80);\n                active = false;\n                break;\n            }\n            size++;\n            position += 31;\n        }\n        blobs.push(blob);\n    }\n    return (to === 'bytes'\n        ? blobs.map((x) => x.bytes)\n        : blobs.map((x) => bytesToHex(x.bytes)));\n}\n//# sourceMappingURL=toBlobs.js.map","import { blobsToCommitments, } from './blobsToCommitments.js';\nimport { blobsToProofs } from './blobsToProofs.js';\nimport { toBlobs } from './toBlobs.js';\n/**\n * Transforms arbitrary data (or blobs, commitments, & proofs) into a sidecar array.\n *\n * @example\n * ```ts\n * import { toBlobSidecars, stringToHex } from 'viem'\n *\n * const sidecars = toBlobSidecars({ data: stringToHex('hello world') })\n * ```\n *\n * @example\n * ```ts\n * import {\n *   blobsToCommitments,\n *   toBlobs,\n *   blobsToProofs,\n *   toBlobSidecars,\n *   stringToHex\n * } from 'viem'\n *\n * const blobs = toBlobs({ data: stringToHex('hello world') })\n * const commitments = blobsToCommitments({ blobs, kzg })\n * const proofs = blobsToProofs({ blobs, commitments, kzg })\n *\n * const sidecars = toBlobSidecars({ blobs, commitments, proofs })\n * ```\n */\nexport function toBlobSidecars(parameters) {\n    const { data, kzg, to } = parameters;\n    const blobs = parameters.blobs ?? toBlobs({ data: data, to });\n    const commitments = parameters.commitments ?? blobsToCommitments({ blobs, kzg: kzg, to });\n    const proofs = parameters.proofs ?? blobsToProofs({ blobs, commitments, kzg: kzg, to });\n    const sidecars = [];\n    for (let i = 0; i < blobs.length; i++)\n        sidecars.push({\n            blob: blobs[i],\n            commitment: commitments[i],\n            proof: proofs[i],\n        });\n    return sidecars;\n}\n//# sourceMappingURL=toBlobSidecars.js.map","import { BaseError } from './base.js';\nexport class InvalidAddressError extends BaseError {\n    constructor({ address }) {\n        super(`Address \"${address}\" is invalid.`, {\n            metaMessages: [\n                '- Address must be a hex value of 20 bytes (40 hex characters).',\n                '- Address must match its checksum counterpart.',\n            ],\n            name: 'InvalidAddressError',\n        });\n    }\n}\n//# sourceMappingURL=address.js.map","import { BaseError } from './base.js';\nexport class ChainDoesNotSupportContract extends BaseError {\n    constructor({ blockNumber, chain, contract, }) {\n        super(`Chain \"${chain.name}\" does not support contract \"${contract.name}\".`, {\n            metaMessages: [\n                'This could be due to any of the following:',\n                ...(blockNumber &&\n                    contract.blockCreated &&\n                    contract.blockCreated > blockNumber\n                    ? [\n                        `- The contract \"${contract.name}\" was not deployed until block ${contract.blockCreated} (current block ${blockNumber}).`,\n                    ]\n                    : [\n                        `- The chain does not have the contract \"${contract.name}\" configured.`,\n                    ]),\n            ],\n            name: 'ChainDoesNotSupportContract',\n        });\n    }\n}\nexport class ChainMismatchError extends BaseError {\n    constructor({ chain, currentChainId, }) {\n        super(`The current chain of the wallet (id: ${currentChainId}) does not match the target chain for the transaction (id: ${chain.id} – ${chain.name}).`, {\n            metaMessages: [\n                `Current Chain ID:  ${currentChainId}`,\n                `Expected Chain ID: ${chain.id} – ${chain.name}`,\n            ],\n            name: 'ChainMismatchError',\n        });\n    }\n}\nexport class ChainNotFoundError extends BaseError {\n    constructor() {\n        super([\n            'No chain was provided to the request.',\n            'Please provide a chain with the `chain` argument on the Action, or by supplying a `chain` to WalletClient.',\n        ].join('\\n'), {\n            name: 'ChainNotFoundError',\n        });\n    }\n}\nexport class ClientChainNotConfiguredError extends BaseError {\n    constructor() {\n        super('No chain was provided to the Client.', {\n            name: 'ClientChainNotConfiguredError',\n        });\n    }\n}\nexport class InvalidChainIdError extends BaseError {\n    constructor({ chainId }) {\n        super(typeof chainId === 'number'\n            ? `Chain ID \"${chainId}\" is invalid.`\n            : 'Chain ID is invalid.', { name: 'InvalidChainIdError' });\n    }\n}\n//# sourceMappingURL=chain.js.map","import { formatGwei } from '../utils/unit/formatGwei.js';\nimport { BaseError } from './base.js';\nexport class ExecutionRevertedError extends BaseError {\n    constructor({ cause, message, } = {}) {\n        const reason = message\n            ?.replace('execution reverted: ', '')\n            ?.replace('execution reverted', '');\n        super(`Execution reverted ${reason ? `with reason: ${reason}` : 'for an unknown reason'}.`, {\n            cause,\n            name: 'ExecutionRevertedError',\n        });\n    }\n}\nObject.defineProperty(ExecutionRevertedError, \"code\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: 3\n});\nObject.defineProperty(ExecutionRevertedError, \"nodeMessage\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: /execution reverted/\n});\nexport class FeeCapTooHighError extends BaseError {\n    constructor({ cause, maxFeePerGas, } = {}) {\n        super(`The fee cap (\\`maxFeePerGas\\`${maxFeePerGas ? ` = ${formatGwei(maxFeePerGas)} gwei` : ''}) cannot be higher than the maximum allowed value (2^256-1).`, {\n            cause,\n            name: 'FeeCapTooHighError',\n        });\n    }\n}\nObject.defineProperty(FeeCapTooHighError, \"nodeMessage\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: /max fee per gas higher than 2\\^256-1|fee cap higher than 2\\^256-1/\n});\nexport class FeeCapTooLowError extends BaseError {\n    constructor({ cause, maxFeePerGas, } = {}) {\n        super(`The fee cap (\\`maxFeePerGas\\`${maxFeePerGas ? ` = ${formatGwei(maxFeePerGas)}` : ''} gwei) cannot be lower than the block base fee.`, {\n            cause,\n            name: 'FeeCapTooLowError',\n        });\n    }\n}\nObject.defineProperty(FeeCapTooLowError, \"nodeMessage\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: /max fee per gas less than block base fee|fee cap less than block base fee|transaction is outdated/\n});\nexport class NonceTooHighError extends BaseError {\n    constructor({ cause, nonce, } = {}) {\n        super(`Nonce provided for the transaction ${nonce ? `(${nonce}) ` : ''}is higher than the next one expected.`, { cause, name: 'NonceTooHighError' });\n    }\n}\nObject.defineProperty(NonceTooHighError, \"nodeMessage\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: /nonce too high/\n});\nexport class NonceTooLowError extends BaseError {\n    constructor({ cause, nonce, } = {}) {\n        super([\n            `Nonce provided for the transaction ${nonce ? `(${nonce}) ` : ''}is lower than the current nonce of the account.`,\n            'Try increasing the nonce or find the latest nonce with `getTransactionCount`.',\n        ].join('\\n'), { cause, name: 'NonceTooLowError' });\n    }\n}\nObject.defineProperty(NonceTooLowError, \"nodeMessage\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: /nonce too low|transaction already imported|already known/\n});\nexport class NonceMaxValueError extends BaseError {\n    constructor({ cause, nonce, } = {}) {\n        super(`Nonce provided for the transaction ${nonce ? `(${nonce}) ` : ''}exceeds the maximum allowed nonce.`, { cause, name: 'NonceMaxValueError' });\n    }\n}\nObject.defineProperty(NonceMaxValueError, \"nodeMessage\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: /nonce has max value/\n});\nexport class InsufficientFundsError extends BaseError {\n    constructor({ cause } = {}) {\n        super([\n            'The total cost (gas * gas fee + value) of executing this transaction exceeds the balance of the account.',\n        ].join('\\n'), {\n            cause,\n            metaMessages: [\n                'This error could arise when the account does not have enough funds to:',\n                ' - pay for the total gas fee,',\n                ' - pay for the value to send.',\n                ' ',\n                'The cost of the transaction is calculated as `gas * gas fee + value`, where:',\n                ' - `gas` is the amount of gas needed for transaction to execute,',\n                ' - `gas fee` is the gas fee,',\n                ' - `value` is the amount of ether to send to the recipient.',\n            ],\n            name: 'InsufficientFundsError',\n        });\n    }\n}\nObject.defineProperty(InsufficientFundsError, \"nodeMessage\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: /insufficient funds|exceeds transaction sender account balance/\n});\nexport class IntrinsicGasTooHighError extends BaseError {\n    constructor({ cause, gas, } = {}) {\n        super(`The amount of gas ${gas ? `(${gas}) ` : ''}provided for the transaction exceeds the limit allowed for the block.`, {\n            cause,\n            name: 'IntrinsicGasTooHighError',\n        });\n    }\n}\nObject.defineProperty(IntrinsicGasTooHighError, \"nodeMessage\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: /intrinsic gas too high|gas limit reached/\n});\nexport class IntrinsicGasTooLowError extends BaseError {\n    constructor({ cause, gas, } = {}) {\n        super(`The amount of gas ${gas ? `(${gas}) ` : ''}provided for the transaction is too low.`, {\n            cause,\n            name: 'IntrinsicGasTooLowError',\n        });\n    }\n}\nObject.defineProperty(IntrinsicGasTooLowError, \"nodeMessage\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: /intrinsic gas too low/\n});\nexport class TransactionTypeNotSupportedError extends BaseError {\n    constructor({ cause }) {\n        super('The transaction type is not supported for this chain.', {\n            cause,\n            name: 'TransactionTypeNotSupportedError',\n        });\n    }\n}\nObject.defineProperty(TransactionTypeNotSupportedError, \"nodeMessage\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: /transaction type not valid/\n});\nexport class TipAboveFeeCapError extends BaseError {\n    constructor({ cause, maxPriorityFeePerGas, maxFeePerGas, } = {}) {\n        super([\n            `The provided tip (\\`maxPriorityFeePerGas\\`${maxPriorityFeePerGas\n                ? ` = ${formatGwei(maxPriorityFeePerGas)} gwei`\n                : ''}) cannot be higher than the fee cap (\\`maxFeePerGas\\`${maxFeePerGas ? ` = ${formatGwei(maxFeePerGas)} gwei` : ''}).`,\n        ].join('\\n'), {\n            cause,\n            name: 'TipAboveFeeCapError',\n        });\n    }\n}\nObject.defineProperty(TipAboveFeeCapError, \"nodeMessage\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: /max priority fee per gas higher than max fee per gas|tip higher than fee cap/\n});\nexport class UnknownNodeError extends BaseError {\n    constructor({ cause }) {\n        super(`An error occurred while executing: ${cause?.shortMessage}`, {\n            cause,\n            name: 'UnknownNodeError',\n        });\n    }\n}\n//# sourceMappingURL=node.js.map","/**\n * Map with a LRU (Least recently used) policy.\n *\n * @link https://en.wikipedia.org/wiki/Cache_replacement_policies#LRU\n */\nexport class LruMap extends Map {\n    constructor(size) {\n        super();\n        Object.defineProperty(this, \"maxSize\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        this.maxSize = size;\n    }\n    get(key) {\n        const value = super.get(key);\n        if (super.has(key) && value !== undefined) {\n            this.delete(key);\n            super.set(key, value);\n        }\n        return value;\n    }\n    set(key, value) {\n        super.set(key, value);\n        if (this.maxSize && this.size > this.maxSize) {\n            const firstKey = this.keys().next().value;\n            if (firstKey)\n                this.delete(firstKey);\n        }\n        return this;\n    }\n}\n//# sourceMappingURL=lru.js.map","/**\n * SHA3 (keccak) hash function, based on a new \"Sponge function\" design.\n * Different from older hashes, the internal state is bigger than output size.\n *\n * Check out [FIPS-202](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf),\n * [Website](https://keccak.team/keccak.html),\n * [the differences between SHA-3 and Keccak](https://crypto.stackexchange.com/questions/15727/what-are-the-key-differences-between-the-draft-sha-3-standard-and-the-keccak-sub).\n *\n * Check out `sha3-addons` module for cSHAKE, k12, and others.\n * @module\n */\nimport { rotlBH, rotlBL, rotlSH, rotlSL, split } from \"./_u64.js\";\n// prettier-ignore\nimport { abytes, aexists, anumber, aoutput, clean, createHasher, createXOFer, Hash, swap32IfBE, toBytes, u32 } from \"./utils.js\";\n// No __PURE__ annotations in sha3 header:\n// EVERYTHING is in fact used on every export.\n// Various per round constants calculations\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst _7n = BigInt(7);\nconst _256n = BigInt(256);\nconst _0x71n = BigInt(0x71);\nconst SHA3_PI = [];\nconst SHA3_ROTL = [];\nconst _SHA3_IOTA = [];\nfor (let round = 0, R = _1n, x = 1, y = 0; round < 24; round++) {\n    // Pi\n    [x, y] = [y, (2 * x + 3 * y) % 5];\n    SHA3_PI.push(2 * (5 * y + x));\n    // Rotational\n    SHA3_ROTL.push((((round + 1) * (round + 2)) / 2) % 64);\n    // Iota\n    let t = _0n;\n    for (let j = 0; j < 7; j++) {\n        R = ((R << _1n) ^ ((R >> _7n) * _0x71n)) % _256n;\n        if (R & _2n)\n            t ^= _1n << ((_1n << /* @__PURE__ */ BigInt(j)) - _1n);\n    }\n    _SHA3_IOTA.push(t);\n}\nconst IOTAS = split(_SHA3_IOTA, true);\nconst SHA3_IOTA_H = IOTAS[0];\nconst SHA3_IOTA_L = IOTAS[1];\n// Left rotation (without 0, 32, 64)\nconst rotlH = (h, l, s) => (s > 32 ? rotlBH(h, l, s) : rotlSH(h, l, s));\nconst rotlL = (h, l, s) => (s > 32 ? rotlBL(h, l, s) : rotlSL(h, l, s));\n/** `keccakf1600` internal function, additionally allows to adjust round count. */\nexport function keccakP(s, rounds = 24) {\n    const B = new Uint32Array(5 * 2);\n    // NOTE: all indices are x2 since we store state as u32 instead of u64 (bigints to slow in js)\n    for (let round = 24 - rounds; round < 24; round++) {\n        // Theta θ\n        for (let x = 0; x < 10; x++)\n            B[x] = s[x] ^ s[x + 10] ^ s[x + 20] ^ s[x + 30] ^ s[x + 40];\n        for (let x = 0; x < 10; x += 2) {\n            const idx1 = (x + 8) % 10;\n            const idx0 = (x + 2) % 10;\n            const B0 = B[idx0];\n            const B1 = B[idx0 + 1];\n            const Th = rotlH(B0, B1, 1) ^ B[idx1];\n            const Tl = rotlL(B0, B1, 1) ^ B[idx1 + 1];\n            for (let y = 0; y < 50; y += 10) {\n                s[x + y] ^= Th;\n                s[x + y + 1] ^= Tl;\n            }\n        }\n        // Rho (ρ) and Pi (π)\n        let curH = s[2];\n        let curL = s[3];\n        for (let t = 0; t < 24; t++) {\n            const shift = SHA3_ROTL[t];\n            const Th = rotlH(curH, curL, shift);\n            const Tl = rotlL(curH, curL, shift);\n            const PI = SHA3_PI[t];\n            curH = s[PI];\n            curL = s[PI + 1];\n            s[PI] = Th;\n            s[PI + 1] = Tl;\n        }\n        // Chi (χ)\n        for (let y = 0; y < 50; y += 10) {\n            for (let x = 0; x < 10; x++)\n                B[x] = s[y + x];\n            for (let x = 0; x < 10; x++)\n                s[y + x] ^= ~B[(x + 2) % 10] & B[(x + 4) % 10];\n        }\n        // Iota (ι)\n        s[0] ^= SHA3_IOTA_H[round];\n        s[1] ^= SHA3_IOTA_L[round];\n    }\n    clean(B);\n}\n/** Keccak sponge function. */\nexport class Keccak extends Hash {\n    // NOTE: we accept arguments in bytes instead of bits here.\n    constructor(blockLen, suffix, outputLen, enableXOF = false, rounds = 24) {\n        super();\n        this.pos = 0;\n        this.posOut = 0;\n        this.finished = false;\n        this.destroyed = false;\n        this.enableXOF = false;\n        this.blockLen = blockLen;\n        this.suffix = suffix;\n        this.outputLen = outputLen;\n        this.enableXOF = enableXOF;\n        this.rounds = rounds;\n        // Can be passed from user as dkLen\n        anumber(outputLen);\n        // 1600 = 5x5 matrix of 64bit.  1600 bits === 200 bytes\n        // 0 < blockLen < 200\n        if (!(0 < blockLen && blockLen < 200))\n            throw new Error('only keccak-f1600 function is supported');\n        this.state = new Uint8Array(200);\n        this.state32 = u32(this.state);\n    }\n    clone() {\n        return this._cloneInto();\n    }\n    keccak() {\n        swap32IfBE(this.state32);\n        keccakP(this.state32, this.rounds);\n        swap32IfBE(this.state32);\n        this.posOut = 0;\n        this.pos = 0;\n    }\n    update(data) {\n        aexists(this);\n        data = toBytes(data);\n        abytes(data);\n        const { blockLen, state } = this;\n        const len = data.length;\n        for (let pos = 0; pos < len;) {\n            const take = Math.min(blockLen - this.pos, len - pos);\n            for (let i = 0; i < take; i++)\n                state[this.pos++] ^= data[pos++];\n            if (this.pos === blockLen)\n                this.keccak();\n        }\n        return this;\n    }\n    finish() {\n        if (this.finished)\n            return;\n        this.finished = true;\n        const { state, suffix, pos, blockLen } = this;\n        // Do the padding\n        state[pos] ^= suffix;\n        if ((suffix & 0x80) !== 0 && pos === blockLen - 1)\n            this.keccak();\n        state[blockLen - 1] ^= 0x80;\n        this.keccak();\n    }\n    writeInto(out) {\n        aexists(this, false);\n        abytes(out);\n        this.finish();\n        const bufferOut = this.state;\n        const { blockLen } = this;\n        for (let pos = 0, len = out.length; pos < len;) {\n            if (this.posOut >= blockLen)\n                this.keccak();\n            const take = Math.min(blockLen - this.posOut, len - pos);\n            out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos);\n            this.posOut += take;\n            pos += take;\n        }\n        return out;\n    }\n    xofInto(out) {\n        // Sha3/Keccak usage with XOF is probably mistake, only SHAKE instances can do XOF\n        if (!this.enableXOF)\n            throw new Error('XOF is not possible for this instance');\n        return this.writeInto(out);\n    }\n    xof(bytes) {\n        anumber(bytes);\n        return this.xofInto(new Uint8Array(bytes));\n    }\n    digestInto(out) {\n        aoutput(out, this);\n        if (this.finished)\n            throw new Error('digest() was already called');\n        this.writeInto(out);\n        this.destroy();\n        return out;\n    }\n    digest() {\n        return this.digestInto(new Uint8Array(this.outputLen));\n    }\n    destroy() {\n        this.destroyed = true;\n        clean(this.state);\n    }\n    _cloneInto(to) {\n        const { blockLen, suffix, outputLen, rounds, enableXOF } = this;\n        to || (to = new Keccak(blockLen, suffix, outputLen, enableXOF, rounds));\n        to.state32.set(this.state32);\n        to.pos = this.pos;\n        to.posOut = this.posOut;\n        to.finished = this.finished;\n        to.rounds = rounds;\n        // Suffix can change in cSHAKE\n        to.suffix = suffix;\n        to.outputLen = outputLen;\n        to.enableXOF = enableXOF;\n        to.destroyed = this.destroyed;\n        return to;\n    }\n}\nconst gen = (suffix, blockLen, outputLen) => createHasher(() => new Keccak(blockLen, suffix, outputLen));\n/** SHA3-224 hash function. */\nexport const sha3_224 = /* @__PURE__ */ (() => gen(0x06, 144, 224 / 8))();\n/** SHA3-256 hash function. Different from keccak-256. */\nexport const sha3_256 = /* @__PURE__ */ (() => gen(0x06, 136, 256 / 8))();\n/** SHA3-384 hash function. */\nexport const sha3_384 = /* @__PURE__ */ (() => gen(0x06, 104, 384 / 8))();\n/** SHA3-512 hash function. */\nexport const sha3_512 = /* @__PURE__ */ (() => gen(0x06, 72, 512 / 8))();\n/** keccak-224 hash function. */\nexport const keccak_224 = /* @__PURE__ */ (() => gen(0x01, 144, 224 / 8))();\n/** keccak-256 hash function. Different from SHA3-256. */\nexport const keccak_256 = /* @__PURE__ */ (() => gen(0x01, 136, 256 / 8))();\n/** keccak-384 hash function. */\nexport const keccak_384 = /* @__PURE__ */ (() => gen(0x01, 104, 384 / 8))();\n/** keccak-512 hash function. */\nexport const keccak_512 = /* @__PURE__ */ (() => gen(0x01, 72, 512 / 8))();\nconst genShake = (suffix, blockLen, outputLen) => createXOFer((opts = {}) => new Keccak(blockLen, suffix, opts.dkLen === undefined ? outputLen : opts.dkLen, true));\n/** SHAKE128 XOF with 128-bit security. */\nexport const shake128 = /* @__PURE__ */ (() => genShake(0x1f, 168, 128 / 8))();\n/** SHAKE256 XOF with 256-bit security. */\nexport const shake256 = /* @__PURE__ */ (() => genShake(0x1f, 136, 256 / 8))();\n//# sourceMappingURL=sha3.js.map","import { keccak_256 } from '@noble/hashes/sha3';\nimport { isHex } from '../data/isHex.js';\nimport { toBytes } from '../encoding/toBytes.js';\nimport { toHex } from '../encoding/toHex.js';\nexport function keccak256(value, to_) {\n    const to = to_ || 'hex';\n    const bytes = keccak_256(isHex(value, { strict: false }) ? toBytes(value) : value);\n    if (to === 'bytes')\n        return bytes;\n    return toHex(bytes);\n}\n//# sourceMappingURL=keccak256.js.map","import { InvalidAddressError } from '../../errors/address.js';\nimport { stringToBytes, } from '../encoding/toBytes.js';\nimport { keccak256 } from '../hash/keccak256.js';\nimport { LruMap } from '../lru.js';\nimport { isAddress } from './isAddress.js';\nconst checksumAddressCache = /*#__PURE__*/ new LruMap(8192);\nexport function checksumAddress(address_, \n/**\n * Warning: EIP-1191 checksum addresses are generally not backwards compatible with the\n * wider Ethereum ecosystem, meaning it will break when validated against an application/tool\n * that relies on EIP-55 checksum encoding (checksum without chainId).\n *\n * It is highly recommended to not use this feature unless you\n * know what you are doing.\n *\n * See more: https://github.com/ethereum/EIPs/issues/1121\n */\nchainId) {\n    if (checksumAddressCache.has(`${address_}.${chainId}`))\n        return checksumAddressCache.get(`${address_}.${chainId}`);\n    const hexAddress = chainId\n        ? `${chainId}${address_.toLowerCase()}`\n        : address_.substring(2).toLowerCase();\n    const hash = keccak256(stringToBytes(hexAddress), 'bytes');\n    const address = (chainId ? hexAddress.substring(`${chainId}0x`.length) : hexAddress).split('');\n    for (let i = 0; i < 40; i += 2) {\n        if (hash[i >> 1] >> 4 >= 8 && address[i]) {\n            address[i] = address[i].toUpperCase();\n        }\n        if ((hash[i >> 1] & 0x0f) >= 8 && address[i + 1]) {\n            address[i + 1] = address[i + 1].toUpperCase();\n        }\n    }\n    const result = `0x${address.join('')}`;\n    checksumAddressCache.set(`${address_}.${chainId}`, result);\n    return result;\n}\nexport function getAddress(address, \n/**\n * Warning: EIP-1191 checksum addresses are generally not backwards compatible with the\n * wider Ethereum ecosystem, meaning it will break when validated against an application/tool\n * that relies on EIP-55 checksum encoding (checksum without chainId).\n *\n * It is highly recommended to not use this feature unless you\n * know what you are doing.\n *\n * See more: https://github.com/ethereum/EIPs/issues/1121\n */\nchainId) {\n    if (!isAddress(address, { strict: false }))\n        throw new InvalidAddressError({ address });\n    return checksumAddress(address, chainId);\n}\n//# sourceMappingURL=getAddress.js.map","import { LruMap } from '../lru.js';\nimport { checksumAddress } from './getAddress.js';\nconst addressRegex = /^0x[a-fA-F0-9]{40}$/;\n/** @internal */\nexport const isAddressCache = /*#__PURE__*/ new LruMap(8192);\nexport function isAddress(address, options) {\n    const { strict = true } = options ?? {};\n    const cacheKey = `${address}.${strict}`;\n    if (isAddressCache.has(cacheKey))\n        return isAddressCache.get(cacheKey);\n    const result = (() => {\n        if (!addressRegex.test(address))\n            return false;\n        if (address.toLowerCase() === address)\n            return true;\n        if (strict)\n            return checksumAddress(address) === address;\n        return true;\n    })();\n    isAddressCache.set(cacheKey, result);\n    return result;\n}\n//# sourceMappingURL=isAddress.js.map","import { SliceOffsetOutOfBoundsError, } from '../../errors/data.js';\nimport { isHex } from './isHex.js';\nimport { size } from './size.js';\n/**\n * @description Returns a section of the hex or byte array given a start/end bytes offset.\n *\n * @param value The hex or byte array to slice.\n * @param start The start offset (in bytes).\n * @param end The end offset (in bytes).\n */\nexport function slice(value, start, end, { strict } = {}) {\n    if (isHex(value, { strict: false }))\n        return sliceHex(value, start, end, {\n            strict,\n        });\n    return sliceBytes(value, start, end, {\n        strict,\n    });\n}\nfunction assertStartOffset(value, start) {\n    if (typeof start === 'number' && start > 0 && start > size(value) - 1)\n        throw new SliceOffsetOutOfBoundsError({\n            offset: start,\n            position: 'start',\n            size: size(value),\n        });\n}\nfunction assertEndOffset(value, start, end) {\n    if (typeof start === 'number' &&\n        typeof end === 'number' &&\n        size(value) !== end - start) {\n        throw new SliceOffsetOutOfBoundsError({\n            offset: end,\n            position: 'end',\n            size: size(value),\n        });\n    }\n}\n/**\n * @description Returns a section of the byte array given a start/end bytes offset.\n *\n * @param value The byte array to slice.\n * @param start The start offset (in bytes).\n * @param end The end offset (in bytes).\n */\nexport function sliceBytes(value_, start, end, { strict } = {}) {\n    assertStartOffset(value_, start);\n    const value = value_.slice(start, end);\n    if (strict)\n        assertEndOffset(value, start, end);\n    return value;\n}\n/**\n * @description Returns a section of the hex value given a start/end bytes offset.\n *\n * @param value The hex value to slice.\n * @param start The start offset (in bytes).\n * @param end The end offset (in bytes).\n */\nexport function sliceHex(value_, start, end, { strict } = {}) {\n    assertStartOffset(value_, start);\n    const value = `0x${value_\n        .replace('0x', '')\n        .slice((start ?? 0) * 2, (end ?? value_.length) * 2)}`;\n    if (strict)\n        assertEndOffset(value, start, end);\n    return value;\n}\n//# sourceMappingURL=slice.js.map","import { versionedHashVersionKzg } from '../../constants/kzg.js';\nimport { maxUint256 } from '../../constants/number.js';\nimport { InvalidAddressError, } from '../../errors/address.js';\nimport { BaseError } from '../../errors/base.js';\nimport { EmptyBlobError, InvalidVersionedHashSizeError, InvalidVersionedHashVersionError, } from '../../errors/blob.js';\nimport { InvalidChainIdError, } from '../../errors/chain.js';\nimport { FeeCapTooHighError, TipAboveFeeCapError, } from '../../errors/node.js';\nimport { isAddress } from '../address/isAddress.js';\nimport { size } from '../data/size.js';\nimport { slice } from '../data/slice.js';\nimport { hexToNumber } from '../encoding/fromHex.js';\nexport function assertTransactionEIP7702(transaction) {\n    const { authorizationList } = transaction;\n    if (authorizationList) {\n        for (const authorization of authorizationList) {\n            const { chainId } = authorization;\n            const address = authorization.address;\n            if (!isAddress(address))\n                throw new InvalidAddressError({ address });\n            if (chainId < 0)\n                throw new InvalidChainIdError({ chainId });\n        }\n    }\n    assertTransactionEIP1559(transaction);\n}\nexport function assertTransactionEIP4844(transaction) {\n    const { blobVersionedHashes } = transaction;\n    if (blobVersionedHashes) {\n        if (blobVersionedHashes.length === 0)\n            throw new EmptyBlobError();\n        for (const hash of blobVersionedHashes) {\n            const size_ = size(hash);\n            const version = hexToNumber(slice(hash, 0, 1));\n            if (size_ !== 32)\n                throw new InvalidVersionedHashSizeError({ hash, size: size_ });\n            if (version !== versionedHashVersionKzg)\n                throw new InvalidVersionedHashVersionError({\n                    hash,\n                    version,\n                });\n        }\n    }\n    assertTransactionEIP1559(transaction);\n}\nexport function assertTransactionEIP1559(transaction) {\n    const { chainId, maxPriorityFeePerGas, maxFeePerGas, to } = transaction;\n    if (chainId <= 0)\n        throw new InvalidChainIdError({ chainId });\n    if (to && !isAddress(to))\n        throw new InvalidAddressError({ address: to });\n    if (maxFeePerGas && maxFeePerGas > maxUint256)\n        throw new FeeCapTooHighError({ maxFeePerGas });\n    if (maxPriorityFeePerGas &&\n        maxFeePerGas &&\n        maxPriorityFeePerGas > maxFeePerGas)\n        throw new TipAboveFeeCapError({ maxFeePerGas, maxPriorityFeePerGas });\n}\nexport function assertTransactionEIP2930(transaction) {\n    const { chainId, maxPriorityFeePerGas, gasPrice, maxFeePerGas, to } = transaction;\n    if (chainId <= 0)\n        throw new InvalidChainIdError({ chainId });\n    if (to && !isAddress(to))\n        throw new InvalidAddressError({ address: to });\n    if (maxPriorityFeePerGas || maxFeePerGas)\n        throw new BaseError('`maxFeePerGas`/`maxPriorityFeePerGas` is not a valid EIP-2930 Transaction attribute.');\n    if (gasPrice && gasPrice > maxUint256)\n        throw new FeeCapTooHighError({ maxFeePerGas: gasPrice });\n}\nexport function assertTransactionLegacy(transaction) {\n    const { chainId, maxPriorityFeePerGas, gasPrice, maxFeePerGas, to } = transaction;\n    if (to && !isAddress(to))\n        throw new InvalidAddressError({ address: to });\n    if (typeof chainId !== 'undefined' && chainId <= 0)\n        throw new InvalidChainIdError({ chainId });\n    if (maxPriorityFeePerGas || maxFeePerGas)\n        throw new BaseError('`maxFeePerGas`/`maxPriorityFeePerGas` is not a valid Legacy Transaction attribute.');\n    if (gasPrice && gasPrice > maxUint256)\n        throw new FeeCapTooHighError({ maxFeePerGas: gasPrice });\n}\n//# sourceMappingURL=assertTransaction.js.map","import { InvalidSerializableTransactionError, } from '../../errors/transaction.js';\nexport function getTransactionType(transaction) {\n    if (transaction.type)\n        return transaction.type;\n    if (typeof transaction.authorizationList !== 'undefined')\n        return 'eip7702';\n    if (typeof transaction.blobs !== 'undefined' ||\n        typeof transaction.blobVersionedHashes !== 'undefined' ||\n        typeof transaction.maxFeePerBlobGas !== 'undefined' ||\n        typeof transaction.sidecars !== 'undefined')\n        return 'eip4844';\n    if (typeof transaction.maxFeePerGas !== 'undefined' ||\n        typeof transaction.maxPriorityFeePerGas !== 'undefined') {\n        return 'eip1559';\n    }\n    if (typeof transaction.gasPrice !== 'undefined') {\n        if (typeof transaction.accessList !== 'undefined')\n            return 'eip2930';\n        return 'legacy';\n    }\n    throw new InvalidSerializableTransactionError({ transaction });\n}\n//# sourceMappingURL=getTransactionType.js.map","import { InvalidAddressError, } from '../../errors/address.js';\nimport { InvalidStorageKeySizeError, } from '../../errors/transaction.js';\nimport { isAddress } from '../address/isAddress.js';\n/*\n * Serialize an  EIP-2930 access list\n * @remarks\n * Use to create a transaction serializer with support for EIP-2930 access lists\n *\n * @param accessList - Array of objects of address and arrays of Storage Keys\n * @throws InvalidAddressError, InvalidStorageKeySizeError\n * @returns Array of hex strings\n */\nexport function serializeAccessList(accessList) {\n    if (!accessList || accessList.length === 0)\n        return [];\n    const serializedAccessList = [];\n    for (let i = 0; i < accessList.length; i++) {\n        const { address, storageKeys } = accessList[i];\n        for (let j = 0; j < storageKeys.length; j++) {\n            if (storageKeys[j].length - 2 !== 64) {\n                throw new InvalidStorageKeySizeError({ storageKey: storageKeys[j] });\n            }\n        }\n        if (!isAddress(address, { strict: false })) {\n            throw new InvalidAddressError({ address });\n        }\n        serializedAccessList.push([address, storageKeys]);\n    }\n    return serializedAccessList;\n}\n//# sourceMappingURL=serializeAccessList.js.map","import { InvalidLegacyVError, } from '../../errors/transaction.js';\nimport { serializeAuthorizationList, } from '../authorization/serializeAuthorizationList.js';\nimport { blobsToCommitments, } from '../blob/blobsToCommitments.js';\nimport { blobsToProofs, } from '../blob/blobsToProofs.js';\nimport { commitmentsToVersionedHashes, } from '../blob/commitmentsToVersionedHashes.js';\nimport { toBlobSidecars, } from '../blob/toBlobSidecars.js';\nimport { concatHex } from '../data/concat.js';\nimport { trim } from '../data/trim.js';\nimport { bytesToHex, numberToHex, } from '../encoding/toHex.js';\nimport { toRlp } from '../encoding/toRlp.js';\nimport { assertTransactionEIP1559, assertTransactionEIP2930, assertTransactionEIP4844, assertTransactionEIP7702, assertTransactionLegacy, } from './assertTransaction.js';\nimport { getTransactionType, } from './getTransactionType.js';\nimport { serializeAccessList, } from './serializeAccessList.js';\nexport function serializeTransaction(transaction, signature) {\n    const type = getTransactionType(transaction);\n    if (type === 'eip1559')\n        return serializeTransactionEIP1559(transaction, signature);\n    if (type === 'eip2930')\n        return serializeTransactionEIP2930(transaction, signature);\n    if (type === 'eip4844')\n        return serializeTransactionEIP4844(transaction, signature);\n    if (type === 'eip7702')\n        return serializeTransactionEIP7702(transaction, signature);\n    return serializeTransactionLegacy(transaction, signature);\n}\nfunction serializeTransactionEIP7702(transaction, signature) {\n    const { authorizationList, chainId, gas, nonce, to, value, maxFeePerGas, maxPriorityFeePerGas, accessList, data, } = transaction;\n    assertTransactionEIP7702(transaction);\n    const serializedAccessList = serializeAccessList(accessList);\n    const serializedAuthorizationList = serializeAuthorizationList(authorizationList);\n    return concatHex([\n        '0x04',\n        toRlp([\n            numberToHex(chainId),\n            nonce ? numberToHex(nonce) : '0x',\n            maxPriorityFeePerGas ? numberToHex(maxPriorityFeePerGas) : '0x',\n            maxFeePerGas ? numberToHex(maxFeePerGas) : '0x',\n            gas ? numberToHex(gas) : '0x',\n            to ?? '0x',\n            value ? numberToHex(value) : '0x',\n            data ?? '0x',\n            serializedAccessList,\n            serializedAuthorizationList,\n            ...toYParitySignatureArray(transaction, signature),\n        ]),\n    ]);\n}\nfunction serializeTransactionEIP4844(transaction, signature) {\n    const { chainId, gas, nonce, to, value, maxFeePerBlobGas, maxFeePerGas, maxPriorityFeePerGas, accessList, data, } = transaction;\n    assertTransactionEIP4844(transaction);\n    let blobVersionedHashes = transaction.blobVersionedHashes;\n    let sidecars = transaction.sidecars;\n    // If `blobs` are passed, we will need to compute the KZG commitments & proofs.\n    if (transaction.blobs &&\n        (typeof blobVersionedHashes === 'undefined' ||\n            typeof sidecars === 'undefined')) {\n        const blobs = (typeof transaction.blobs[0] === 'string'\n            ? transaction.blobs\n            : transaction.blobs.map((x) => bytesToHex(x)));\n        const kzg = transaction.kzg;\n        const commitments = blobsToCommitments({\n            blobs,\n            kzg,\n        });\n        if (typeof blobVersionedHashes === 'undefined')\n            blobVersionedHashes = commitmentsToVersionedHashes({\n                commitments,\n            });\n        if (typeof sidecars === 'undefined') {\n            const proofs = blobsToProofs({ blobs, commitments, kzg });\n            sidecars = toBlobSidecars({ blobs, commitments, proofs });\n        }\n    }\n    const serializedAccessList = serializeAccessList(accessList);\n    const serializedTransaction = [\n        numberToHex(chainId),\n        nonce ? numberToHex(nonce) : '0x',\n        maxPriorityFeePerGas ? numberToHex(maxPriorityFeePerGas) : '0x',\n        maxFeePerGas ? numberToHex(maxFeePerGas) : '0x',\n        gas ? numberToHex(gas) : '0x',\n        to ?? '0x',\n        value ? numberToHex(value) : '0x',\n        data ?? '0x',\n        serializedAccessList,\n        maxFeePerBlobGas ? numberToHex(maxFeePerBlobGas) : '0x',\n        blobVersionedHashes ?? [],\n        ...toYParitySignatureArray(transaction, signature),\n    ];\n    const blobs = [];\n    const commitments = [];\n    const proofs = [];\n    if (sidecars)\n        for (let i = 0; i < sidecars.length; i++) {\n            const { blob, commitment, proof } = sidecars[i];\n            blobs.push(blob);\n            commitments.push(commitment);\n            proofs.push(proof);\n        }\n    return concatHex([\n        '0x03',\n        sidecars\n            ? // If sidecars are enabled, envelope turns into a \"wrapper\":\n                toRlp([serializedTransaction, blobs, commitments, proofs])\n            : // If sidecars are disabled, standard envelope is used:\n                toRlp(serializedTransaction),\n    ]);\n}\nfunction serializeTransactionEIP1559(transaction, signature) {\n    const { chainId, gas, nonce, to, value, maxFeePerGas, maxPriorityFeePerGas, accessList, data, } = transaction;\n    assertTransactionEIP1559(transaction);\n    const serializedAccessList = serializeAccessList(accessList);\n    const serializedTransaction = [\n        numberToHex(chainId),\n        nonce ? numberToHex(nonce) : '0x',\n        maxPriorityFeePerGas ? numberToHex(maxPriorityFeePerGas) : '0x',\n        maxFeePerGas ? numberToHex(maxFeePerGas) : '0x',\n        gas ? numberToHex(gas) : '0x',\n        to ?? '0x',\n        value ? numberToHex(value) : '0x',\n        data ?? '0x',\n        serializedAccessList,\n        ...toYParitySignatureArray(transaction, signature),\n    ];\n    return concatHex([\n        '0x02',\n        toRlp(serializedTransaction),\n    ]);\n}\nfunction serializeTransactionEIP2930(transaction, signature) {\n    const { chainId, gas, data, nonce, to, value, accessList, gasPrice } = transaction;\n    assertTransactionEIP2930(transaction);\n    const serializedAccessList = serializeAccessList(accessList);\n    const serializedTransaction = [\n        numberToHex(chainId),\n        nonce ? numberToHex(nonce) : '0x',\n        gasPrice ? numberToHex(gasPrice) : '0x',\n        gas ? numberToHex(gas) : '0x',\n        to ?? '0x',\n        value ? numberToHex(value) : '0x',\n        data ?? '0x',\n        serializedAccessList,\n        ...toYParitySignatureArray(transaction, signature),\n    ];\n    return concatHex([\n        '0x01',\n        toRlp(serializedTransaction),\n    ]);\n}\nfunction serializeTransactionLegacy(transaction, signature) {\n    const { chainId = 0, gas, data, nonce, to, value, gasPrice } = transaction;\n    assertTransactionLegacy(transaction);\n    let serializedTransaction = [\n        nonce ? numberToHex(nonce) : '0x',\n        gasPrice ? numberToHex(gasPrice) : '0x',\n        gas ? numberToHex(gas) : '0x',\n        to ?? '0x',\n        value ? numberToHex(value) : '0x',\n        data ?? '0x',\n    ];\n    if (signature) {\n        const v = (() => {\n            // EIP-155 (inferred chainId)\n            if (signature.v >= 35n) {\n                const inferredChainId = (signature.v - 35n) / 2n;\n                if (inferredChainId > 0)\n                    return signature.v;\n                return 27n + (signature.v === 35n ? 0n : 1n);\n            }\n            // EIP-155 (explicit chainId)\n            if (chainId > 0)\n                return BigInt(chainId * 2) + BigInt(35n + signature.v - 27n);\n            // Pre-EIP-155 (no chainId)\n            const v = 27n + (signature.v === 27n ? 0n : 1n);\n            if (signature.v !== v)\n                throw new InvalidLegacyVError({ v: signature.v });\n            return v;\n        })();\n        const r = trim(signature.r);\n        const s = trim(signature.s);\n        serializedTransaction = [\n            ...serializedTransaction,\n            numberToHex(v),\n            r === '0x00' ? '0x' : r,\n            s === '0x00' ? '0x' : s,\n        ];\n    }\n    else if (chainId > 0) {\n        serializedTransaction = [\n            ...serializedTransaction,\n            numberToHex(chainId),\n            '0x',\n            '0x',\n        ];\n    }\n    return toRlp(serializedTransaction);\n}\nexport function toYParitySignatureArray(transaction, signature_) {\n    const signature = signature_ ?? transaction;\n    const { v, yParity } = signature;\n    if (typeof signature.r === 'undefined')\n        return [];\n    if (typeof signature.s === 'undefined')\n        return [];\n    if (typeof v === 'undefined' && typeof yParity === 'undefined')\n        return [];\n    const r = trim(signature.r);\n    const s = trim(signature.s);\n    const yParity_ = (() => {\n        if (typeof yParity === 'number')\n            return yParity ? numberToHex(1) : '0x';\n        if (v === 0n)\n            return '0x';\n        if (v === 1n)\n            return numberToHex(1);\n        return v === 27n ? '0x' : numberToHex(1);\n    })();\n    return [yParity_, r === '0x00' ? '0x' : r, s === '0x00' ? '0x' : s];\n}\n//# sourceMappingURL=serializeTransaction.js.map","/**\n * Predeploy contracts for OP Stack.\n * @see https://github.com/ethereum-optimism/optimism/blob/develop/specs/predeploys.md\n */\nexport const contracts = {\n    gasPriceOracle: { address: '0x420000000000000000000000000000000000000F' },\n    l1Block: { address: '0x4200000000000000000000000000000000000015' },\n    l2CrossDomainMessenger: {\n        address: '0x4200000000000000000000000000000000000007',\n    },\n    l2Erc721Bridge: { address: '0x4200000000000000000000000000000000000014' },\n    l2StandardBridge: { address: '0x4200000000000000000000000000000000000010' },\n    l2ToL1MessagePasser: {\n        address: '0x4200000000000000000000000000000000000016',\n    },\n};\n//# sourceMappingURL=contracts.js.map","import { hexToBigInt } from '../utils/encoding/fromHex.js';\nimport { defineBlock } from '../utils/formatters/block.js';\nimport { defineTransaction, formatTransaction, } from '../utils/formatters/transaction.js';\nimport { defineTransactionReceipt } from '../utils/formatters/transactionReceipt.js';\nexport const formatters = {\n    block: /*#__PURE__*/ defineBlock({\n        format(args) {\n            const transactions = args.transactions?.map((transaction) => {\n                if (typeof transaction === 'string')\n                    return transaction;\n                const formatted = formatTransaction(transaction);\n                if (formatted.typeHex === '0x7e') {\n                    formatted.isSystemTx = transaction.isSystemTx;\n                    formatted.mint = transaction.mint\n                        ? hexToBigInt(transaction.mint)\n                        : undefined;\n                    formatted.sourceHash = transaction.sourceHash;\n                    formatted.type = 'deposit';\n                }\n                return formatted;\n            });\n            return {\n                transactions,\n                stateRoot: args.stateRoot,\n            };\n        },\n    }),\n    transaction: /*#__PURE__*/ defineTransaction({\n        format(args) {\n            const transaction = {};\n            if (args.type === '0x7e') {\n                transaction.isSystemTx = args.isSystemTx;\n                transaction.mint = args.mint ? hexToBigInt(args.mint) : undefined;\n                transaction.sourceHash = args.sourceHash;\n                transaction.type = 'deposit';\n            }\n            return transaction;\n        },\n    }),\n    transactionReceipt: /*#__PURE__*/ defineTransactionReceipt({\n        format(args) {\n            return {\n                l1GasPrice: args.l1GasPrice ? hexToBigInt(args.l1GasPrice) : null,\n                l1GasUsed: args.l1GasUsed ? hexToBigInt(args.l1GasUsed) : null,\n                l1Fee: args.l1Fee ? hexToBigInt(args.l1Fee) : null,\n                l1FeeScalar: args.l1FeeScalar ? Number(args.l1FeeScalar) : null,\n            };\n        },\n    }),\n};\n//# sourceMappingURL=formatters.js.map","import { InvalidAddressError } from '../errors/address.js';\nimport { isAddress } from '../utils/address/isAddress.js';\nimport { concatHex } from '../utils/data/concat.js';\nimport { toHex } from '../utils/encoding/toHex.js';\nimport { toRlp } from '../utils/encoding/toRlp.js';\nimport { serializeTransaction as serializeTransaction_, } from '../utils/transaction/serializeTransaction.js';\nexport function serializeTransaction(transaction, signature) {\n    if (isDeposit(transaction))\n        return serializeTransactionDeposit(transaction);\n    return serializeTransaction_(transaction, signature);\n}\nexport const serializers = {\n    transaction: serializeTransaction,\n};\nfunction serializeTransactionDeposit(transaction) {\n    assertTransactionDeposit(transaction);\n    const { sourceHash, data, from, gas, isSystemTx, mint, to, value } = transaction;\n    const serializedTransaction = [\n        sourceHash,\n        from,\n        to ?? '0x',\n        mint ? toHex(mint) : '0x',\n        value ? toHex(value) : '0x',\n        gas ? toHex(gas) : '0x',\n        isSystemTx ? '0x1' : '0x',\n        data ?? '0x',\n    ];\n    return concatHex([\n        '0x7e',\n        toRlp(serializedTransaction),\n    ]);\n}\nfunction isDeposit(transaction) {\n    if (transaction.type === 'deposit')\n        return true;\n    if (typeof transaction.sourceHash !== 'undefined')\n        return true;\n    return false;\n}\nexport function assertTransactionDeposit(transaction) {\n    const { from, to } = transaction;\n    if (from && !isAddress(from))\n        throw new InvalidAddressError({ address: from });\n    if (to && !isAddress(to))\n        throw new InvalidAddressError({ address: to });\n}\n//# sourceMappingURL=serializers.js.map","import { contracts } from './contracts.js';\nimport { formatters } from './formatters.js';\nimport { serializers } from './serializers.js';\nexport const chainConfig = {\n    blockTime: 2_000,\n    contracts,\n    formatters,\n    serializers,\n};\n//# sourceMappingURL=chainConfig.js.map","import { defineChain } from '../../utils/chain/defineChain.js';\nexport const arbitrum = /*#__PURE__*/ defineChain({\n    id: 42_161,\n    name: 'Arbitrum One',\n    nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },\n    rpcUrls: {\n        default: {\n            http: ['https://arb1.arbitrum.io/rpc'],\n        },\n    },\n    blockExplorers: {\n        default: {\n            name: 'Arbiscan',\n            url: 'https://arbiscan.io',\n            apiUrl: 'https://api.arbiscan.io/api',\n        },\n    },\n    contracts: {\n        multicall3: {\n            address: '0xca11bde05977b3631167028862be2a173976ca11',\n            blockCreated: 7654707,\n        },\n    },\n});\n//# sourceMappingURL=arbitrum.js.map","import { chainConfig } from '../../op-stack/chainConfig.js';\nimport { defineChain } from '../../utils/chain/defineChain.js';\nconst sourceId = 1; // mainnet\nexport const base = /*#__PURE__*/ defineChain({\n    ...chainConfig,\n    id: 8453,\n    name: 'Base',\n    nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },\n    rpcUrls: {\n        default: {\n            http: ['https://mainnet.base.org'],\n        },\n    },\n    blockExplorers: {\n        default: {\n            name: 'Basescan',\n            url: 'https://basescan.org',\n            apiUrl: 'https://api.basescan.org/api',\n        },\n    },\n    contracts: {\n        ...chainConfig.contracts,\n        disputeGameFactory: {\n            [sourceId]: {\n                address: '0x43edB88C4B80fDD2AdFF2412A7BebF9dF42cB40e',\n            },\n        },\n        l2OutputOracle: {\n            [sourceId]: {\n                address: '0x56315b90c40730925ec5485cf004d835058518A0',\n            },\n        },\n        multicall3: {\n            address: '0xca11bde05977b3631167028862be2a173976ca11',\n            blockCreated: 5022,\n        },\n        portal: {\n            [sourceId]: {\n                address: '0x49048044D57e1C92A77f79988d21Fa8fAF74E97e',\n                blockCreated: 17482143,\n            },\n        },\n        l1StandardBridge: {\n            [sourceId]: {\n                address: '0x3154Cf16ccdb4C6d922629664174b904d80F2C35',\n                blockCreated: 17482143,\n            },\n        },\n    },\n    sourceId,\n});\n//# sourceMappingURL=base.js.map","import { defineChain } from '../../utils/chain/defineChain.js';\nexport const bsc = /*#__PURE__*/ defineChain({\n    id: 56,\n    name: 'BNB Smart Chain',\n    nativeCurrency: {\n        decimals: 18,\n        name: 'BNB',\n        symbol: 'BNB',\n    },\n    rpcUrls: {\n        default: { http: ['https://56.rpc.thirdweb.com'] },\n    },\n    blockExplorers: {\n        default: {\n            name: 'BscScan',\n            url: 'https://bscscan.com',\n            apiUrl: 'https://api.bscscan.com/api',\n        },\n    },\n    contracts: {\n        multicall3: {\n            address: '0xca11bde05977b3631167028862be2a173976ca11',\n            blockCreated: 15921452,\n        },\n    },\n});\n//# sourceMappingURL=bsc.js.map","import { ChainMismatchError, ChainNotFoundError, } from '../../errors/chain.js';\nexport function assertCurrentChain({ chain, currentChainId, }) {\n    if (!chain)\n        throw new ChainNotFoundError();\n    if (currentChainId !== chain.id)\n        throw new ChainMismatchError({ chain, currentChainId });\n}\n//# sourceMappingURL=assertCurrentChain.js.map","import { ChainDoesNotSupportContract, } from '../../errors/chain.js';\nexport function getChainContractAddress({ blockNumber, chain, contract: name, }) {\n    const contract = chain?.contracts?.[name];\n    if (!contract)\n        throw new ChainDoesNotSupportContract({\n            chain,\n            contract: { name },\n        });\n    if (blockNumber &&\n        contract.blockCreated &&\n        contract.blockCreated > blockNumber)\n        throw new ChainDoesNotSupportContract({\n            blockNumber,\n            chain,\n            contract: {\n                name,\n                blockCreated: contract.blockCreated,\n            },\n        });\n    return contract.address;\n}\n//# sourceMappingURL=getChainContractAddress.js.map","export function parseAccount(account) {\n    if (typeof account === 'string')\n        return { address: account, type: 'json-rpc' };\n    return account;\n}\n//# sourceMappingURL=parseAccount.js.map","import { BaseError } from './base.js';\nexport class AccountNotFoundError extends BaseError {\n    constructor({ docsPath } = {}) {\n        super([\n            'Could not find an Account to execute with this Action.',\n            'Please provide an Account with the `account` argument on the Action, or by supplying an `account` to the Client.',\n        ].join('\\n'), {\n            docsPath,\n            docsSlug: 'account',\n            name: 'AccountNotFoundError',\n        });\n    }\n}\nexport class AccountTypeNotSupportedError extends BaseError {\n    constructor({ docsPath, metaMessages, type, }) {\n        super(`Account type \"${type}\" is not supported.`, {\n            docsPath,\n            metaMessages,\n            name: 'AccountTypeNotSupportedError',\n        });\n    }\n}\n//# sourceMappingURL=account.js.map","// https://docs.soliditylang.org/en/v0.8.16/control-structures.html#panic-via-assert-and-error-via-require\nexport const panicReasons = {\n    1: 'An `assert` condition failed.',\n    17: 'Arithmetic operation resulted in underflow or overflow.',\n    18: 'Division or modulo by zero (e.g. `5 / 0` or `23 % 0`).',\n    33: 'Attempted to convert to an invalid type.',\n    34: 'Attempted to access a storage byte array that is incorrectly encoded.',\n    49: 'Performed `.pop()` on an empty array',\n    50: 'Array index is out of bounds.',\n    65: 'Allocated too much memory or created an array which is too large.',\n    81: 'Attempted to call a zero-initialized variable of internal function type.',\n};\nexport const solidityError = {\n    inputs: [\n        {\n            name: 'message',\n            type: 'string',\n        },\n    ],\n    name: 'Error',\n    type: 'error',\n};\nexport const solidityPanic = {\n    inputs: [\n        {\n            name: 'reason',\n            type: 'uint256',\n        },\n    ],\n    name: 'Panic',\n    type: 'error',\n};\n//# sourceMappingURL=solidity.js.map","import { InvalidDefinitionTypeError, } from '../../errors/abi.js';\nexport function formatAbiItem(abiItem, { includeName = false } = {}) {\n    if (abiItem.type !== 'function' &&\n        abiItem.type !== 'event' &&\n        abiItem.type !== 'error')\n        throw new InvalidDefinitionTypeError(abiItem.type);\n    return `${abiItem.name}(${formatAbiParams(abiItem.inputs, { includeName })})`;\n}\nexport function formatAbiParams(params, { includeName = false } = {}) {\n    if (!params)\n        return '';\n    return params\n        .map((param) => formatAbiParam(param, { includeName }))\n        .join(includeName ? ', ' : ',');\n}\nfunction formatAbiParam(param, { includeName }) {\n    if (param.type.startsWith('tuple')) {\n        return `(${formatAbiParams(param.components, { includeName })})${param.type.slice('tuple'.length)}`;\n    }\n    return param.type + (includeName && param.name ? ` ${param.name}` : '');\n}\n//# sourceMappingURL=formatAbiItem.js.map","import { formatAbiItem, formatAbiParams } from '../utils/abi/formatAbiItem.js';\nimport { size } from '../utils/data/size.js';\nimport { BaseError } from './base.js';\nexport class AbiConstructorNotFoundError extends BaseError {\n    constructor({ docsPath }) {\n        super([\n            'A constructor was not found on the ABI.',\n            'Make sure you are using the correct ABI and that the constructor exists on it.',\n        ].join('\\n'), {\n            docsPath,\n            name: 'AbiConstructorNotFoundError',\n        });\n    }\n}\nexport class AbiConstructorParamsNotFoundError extends BaseError {\n    constructor({ docsPath }) {\n        super([\n            'Constructor arguments were provided (`args`), but a constructor parameters (`inputs`) were not found on the ABI.',\n            'Make sure you are using the correct ABI, and that the `inputs` attribute on the constructor exists.',\n        ].join('\\n'), {\n            docsPath,\n            name: 'AbiConstructorParamsNotFoundError',\n        });\n    }\n}\nexport class AbiDecodingDataSizeInvalidError extends BaseError {\n    constructor({ data, size }) {\n        super([\n            `Data size of ${size} bytes is invalid.`,\n            'Size must be in increments of 32 bytes (size % 32 === 0).',\n        ].join('\\n'), {\n            metaMessages: [`Data: ${data} (${size} bytes)`],\n            name: 'AbiDecodingDataSizeInvalidError',\n        });\n    }\n}\nexport class AbiDecodingDataSizeTooSmallError extends BaseError {\n    constructor({ data, params, size, }) {\n        super([`Data size of ${size} bytes is too small for given parameters.`].join('\\n'), {\n            metaMessages: [\n                `Params: (${formatAbiParams(params, { includeName: true })})`,\n                `Data:   ${data} (${size} bytes)`,\n            ],\n            name: 'AbiDecodingDataSizeTooSmallError',\n        });\n        Object.defineProperty(this, \"data\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"params\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"size\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        this.data = data;\n        this.params = params;\n        this.size = size;\n    }\n}\nexport class AbiDecodingZeroDataError extends BaseError {\n    constructor() {\n        super('Cannot decode zero data (\"0x\") with ABI parameters.', {\n            name: 'AbiDecodingZeroDataError',\n        });\n    }\n}\nexport class AbiEncodingArrayLengthMismatchError extends BaseError {\n    constructor({ expectedLength, givenLength, type, }) {\n        super([\n            `ABI encoding array length mismatch for type ${type}.`,\n            `Expected length: ${expectedLength}`,\n            `Given length: ${givenLength}`,\n        ].join('\\n'), { name: 'AbiEncodingArrayLengthMismatchError' });\n    }\n}\nexport class AbiEncodingBytesSizeMismatchError extends BaseError {\n    constructor({ expectedSize, value }) {\n        super(`Size of bytes \"${value}\" (bytes${size(value)}) does not match expected size (bytes${expectedSize}).`, { name: 'AbiEncodingBytesSizeMismatchError' });\n    }\n}\nexport class AbiEncodingLengthMismatchError extends BaseError {\n    constructor({ expectedLength, givenLength, }) {\n        super([\n            'ABI encoding params/values length mismatch.',\n            `Expected length (params): ${expectedLength}`,\n            `Given length (values): ${givenLength}`,\n        ].join('\\n'), { name: 'AbiEncodingLengthMismatchError' });\n    }\n}\nexport class AbiErrorInputsNotFoundError extends BaseError {\n    constructor(errorName, { docsPath }) {\n        super([\n            `Arguments (\\`args\\`) were provided to \"${errorName}\", but \"${errorName}\" on the ABI does not contain any parameters (\\`inputs\\`).`,\n            'Cannot encode error result without knowing what the parameter types are.',\n            'Make sure you are using the correct ABI and that the inputs exist on it.',\n        ].join('\\n'), {\n            docsPath,\n            name: 'AbiErrorInputsNotFoundError',\n        });\n    }\n}\nexport class AbiErrorNotFoundError extends BaseError {\n    constructor(errorName, { docsPath } = {}) {\n        super([\n            `Error ${errorName ? `\"${errorName}\" ` : ''}not found on ABI.`,\n            'Make sure you are using the correct ABI and that the error exists on it.',\n        ].join('\\n'), {\n            docsPath,\n            name: 'AbiErrorNotFoundError',\n        });\n    }\n}\nexport class AbiErrorSignatureNotFoundError extends BaseError {\n    constructor(signature, { docsPath }) {\n        super([\n            `Encoded error signature \"${signature}\" not found on ABI.`,\n            'Make sure you are using the correct ABI and that the error exists on it.',\n            `You can look up the decoded signature here: https://openchain.xyz/signatures?query=${signature}.`,\n        ].join('\\n'), {\n            docsPath,\n            name: 'AbiErrorSignatureNotFoundError',\n        });\n        Object.defineProperty(this, \"signature\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        this.signature = signature;\n    }\n}\nexport class AbiEventSignatureEmptyTopicsError extends BaseError {\n    constructor({ docsPath }) {\n        super('Cannot extract event signature from empty topics.', {\n            docsPath,\n            name: 'AbiEventSignatureEmptyTopicsError',\n        });\n    }\n}\nexport class AbiEventSignatureNotFoundError extends BaseError {\n    constructor(signature, { docsPath }) {\n        super([\n            `Encoded event signature \"${signature}\" not found on ABI.`,\n            'Make sure you are using the correct ABI and that the event exists on it.',\n            `You can look up the signature here: https://openchain.xyz/signatures?query=${signature}.`,\n        ].join('\\n'), {\n            docsPath,\n            name: 'AbiEventSignatureNotFoundError',\n        });\n    }\n}\nexport class AbiEventNotFoundError extends BaseError {\n    constructor(eventName, { docsPath } = {}) {\n        super([\n            `Event ${eventName ? `\"${eventName}\" ` : ''}not found on ABI.`,\n            'Make sure you are using the correct ABI and that the event exists on it.',\n        ].join('\\n'), {\n            docsPath,\n            name: 'AbiEventNotFoundError',\n        });\n    }\n}\nexport class AbiFunctionNotFoundError extends BaseError {\n    constructor(functionName, { docsPath } = {}) {\n        super([\n            `Function ${functionName ? `\"${functionName}\" ` : ''}not found on ABI.`,\n            'Make sure you are using the correct ABI and that the function exists on it.',\n        ].join('\\n'), {\n            docsPath,\n            name: 'AbiFunctionNotFoundError',\n        });\n    }\n}\nexport class AbiFunctionOutputsNotFoundError extends BaseError {\n    constructor(functionName, { docsPath }) {\n        super([\n            `Function \"${functionName}\" does not contain any \\`outputs\\` on ABI.`,\n            'Cannot decode function result without knowing what the parameter types are.',\n            'Make sure you are using the correct ABI and that the function exists on it.',\n        ].join('\\n'), {\n            docsPath,\n            name: 'AbiFunctionOutputsNotFoundError',\n        });\n    }\n}\nexport class AbiFunctionSignatureNotFoundError extends BaseError {\n    constructor(signature, { docsPath }) {\n        super([\n            `Encoded function signature \"${signature}\" not found on ABI.`,\n            'Make sure you are using the correct ABI and that the function exists on it.',\n            `You can look up the signature here: https://openchain.xyz/signatures?query=${signature}.`,\n        ].join('\\n'), {\n            docsPath,\n            name: 'AbiFunctionSignatureNotFoundError',\n        });\n    }\n}\nexport class AbiItemAmbiguityError extends BaseError {\n    constructor(x, y) {\n        super('Found ambiguous types in overloaded ABI items.', {\n            metaMessages: [\n                `\\`${x.type}\\` in \\`${formatAbiItem(x.abiItem)}\\`, and`,\n                `\\`${y.type}\\` in \\`${formatAbiItem(y.abiItem)}\\``,\n                '',\n                'These types encode differently and cannot be distinguished at runtime.',\n                'Remove one of the ambiguous items in the ABI.',\n            ],\n            name: 'AbiItemAmbiguityError',\n        });\n    }\n}\nexport class BytesSizeMismatchError extends BaseError {\n    constructor({ expectedSize, givenSize, }) {\n        super(`Expected bytes${expectedSize}, got bytes${givenSize}.`, {\n            name: 'BytesSizeMismatchError',\n        });\n    }\n}\nexport class DecodeLogDataMismatch extends BaseError {\n    constructor({ abiItem, data, params, size, }) {\n        super([\n            `Data size of ${size} bytes is too small for non-indexed event parameters.`,\n        ].join('\\n'), {\n            metaMessages: [\n                `Params: (${formatAbiParams(params, { includeName: true })})`,\n                `Data:   ${data} (${size} bytes)`,\n            ],\n            name: 'DecodeLogDataMismatch',\n        });\n        Object.defineProperty(this, \"abiItem\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"data\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"params\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"size\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        this.abiItem = abiItem;\n        this.data = data;\n        this.params = params;\n        this.size = size;\n    }\n}\nexport class DecodeLogTopicsMismatch extends BaseError {\n    constructor({ abiItem, param, }) {\n        super([\n            `Expected a topic for indexed event parameter${param.name ? ` \"${param.name}\"` : ''} on event \"${formatAbiItem(abiItem, { includeName: true })}\".`,\n        ].join('\\n'), { name: 'DecodeLogTopicsMismatch' });\n        Object.defineProperty(this, \"abiItem\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        this.abiItem = abiItem;\n    }\n}\nexport class InvalidAbiEncodingTypeError extends BaseError {\n    constructor(type, { docsPath }) {\n        super([\n            `Type \"${type}\" is not a valid encoding type.`,\n            'Please provide a valid ABI type.',\n        ].join('\\n'), { docsPath, name: 'InvalidAbiEncodingType' });\n    }\n}\nexport class InvalidAbiDecodingTypeError extends BaseError {\n    constructor(type, { docsPath }) {\n        super([\n            `Type \"${type}\" is not a valid decoding type.`,\n            'Please provide a valid ABI type.',\n        ].join('\\n'), { docsPath, name: 'InvalidAbiDecodingType' });\n    }\n}\nexport class InvalidArrayError extends BaseError {\n    constructor(value) {\n        super([`Value \"${value}\" is not a valid array.`].join('\\n'), {\n            name: 'InvalidArrayError',\n        });\n    }\n}\nexport class InvalidDefinitionTypeError extends BaseError {\n    constructor(type) {\n        super([\n            `\"${type}\" is not a valid definition type.`,\n            'Valid types: \"function\", \"event\", \"error\"',\n        ].join('\\n'), { name: 'InvalidDefinitionTypeError' });\n    }\n}\nexport class UnsupportedPackedAbiType extends BaseError {\n    constructor(type) {\n        super(`Type \"${type}\" is not supported for packed encoding.`, {\n            name: 'UnsupportedPackedAbiType',\n        });\n    }\n}\n//# sourceMappingURL=abi.js.map","import { toBytes } from '../encoding/toBytes.js';\nimport { keccak256 } from './keccak256.js';\nconst hash = (value) => keccak256(toBytes(value));\nexport function hashSignature(sig) {\n    return hash(sig);\n}\n//# sourceMappingURL=hashSignature.js.map","export const version = '1.0.8';\n//# sourceMappingURL=version.js.map","import { version } from './version.js';\nexport class BaseError extends Error {\n    constructor(shortMessage, args = {}) {\n        const details = args.cause instanceof BaseError\n            ? args.cause.details\n            : args.cause?.message\n                ? args.cause.message\n                : args.details;\n        const docsPath = args.cause instanceof BaseError\n            ? args.cause.docsPath || args.docsPath\n            : args.docsPath;\n        const message = [\n            shortMessage || 'An error occurred.',\n            '',\n            ...(args.metaMessages ? [...args.metaMessages, ''] : []),\n            ...(docsPath ? [`Docs: https://abitype.dev${docsPath}`] : []),\n            ...(details ? [`Details: ${details}`] : []),\n            `Version: abitype@${version}`,\n        ].join('\\n');\n        super(message);\n        Object.defineProperty(this, \"details\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"docsPath\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"metaMessages\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"shortMessage\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"name\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 'AbiTypeError'\n        });\n        if (args.cause)\n            this.cause = args.cause;\n        this.details = details;\n        this.docsPath = docsPath;\n        this.metaMessages = args.metaMessages;\n        this.shortMessage = shortMessage;\n    }\n}\n//# sourceMappingURL=errors.js.map","// TODO: This looks cool. Need to check the performance of `new RegExp` versus defined inline though.\n// https://twitter.com/GabrielVergnaud/status/1622906834343366657\nexport function execTyped(regex, string) {\n    const match = regex.exec(string);\n    return match?.groups;\n}\n// `bytes<M>`: binary type of `M` bytes, `0 < M <= 32`\n// https://regexr.com/6va55\nexport const bytesRegex = /^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/;\n// `(u)int<M>`: (un)signed integer type of `M` bits, `0 < M <= 256`, `M % 8 == 0`\n// https://regexr.com/6v8hp\nexport const integerRegex = /^u?int(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/;\nexport const isTupleRegex = /^\\(.+?\\).*?$/;\n//# sourceMappingURL=regex.js.map","import { execTyped } from '../regex.js';\n// https://regexr.com/7f7rv\nconst tupleRegex = /^tuple(?<array>(\\[(\\d*)\\])*)$/;\n/**\n * Formats {@link AbiParameter} to human-readable ABI parameter.\n *\n * @param abiParameter - ABI parameter\n * @returns Human-readable ABI parameter\n *\n * @example\n * const result = formatAbiParameter({ type: 'address', name: 'from' })\n * //    ^? const result: 'address from'\n */\nexport function formatAbiParameter(abiParameter) {\n    let type = abiParameter.type;\n    if (tupleRegex.test(abiParameter.type) && 'components' in abiParameter) {\n        type = '(';\n        const length = abiParameter.components.length;\n        for (let i = 0; i < length; i++) {\n            const component = abiParameter.components[i];\n            type += formatAbiParameter(component);\n            if (i < length - 1)\n                type += ', ';\n        }\n        const result = execTyped(tupleRegex, abiParameter.type);\n        type += `)${result?.array ?? ''}`;\n        return formatAbiParameter({\n            ...abiParameter,\n            type,\n        });\n    }\n    // Add `indexed` to type if in `abiParameter`\n    if ('indexed' in abiParameter && abiParameter.indexed)\n        type = `${type} indexed`;\n    // Return human-readable ABI parameter\n    if (abiParameter.name)\n        return `${type} ${abiParameter.name}`;\n    return type;\n}\n//# sourceMappingURL=formatAbiParameter.js.map","import { formatAbiParameter, } from './formatAbiParameter.js';\n/**\n * Formats {@link AbiParameter}s to human-readable ABI parameters.\n *\n * @param abiParameters - ABI parameters\n * @returns Human-readable ABI parameters\n *\n * @example\n * const result = formatAbiParameters([\n *   //  ^? const result: 'address from, uint256 tokenId'\n *   { type: 'address', name: 'from' },\n *   { type: 'uint256', name: 'tokenId' },\n * ])\n */\nexport function formatAbiParameters(abiParameters) {\n    let params = '';\n    const length = abiParameters.length;\n    for (let i = 0; i < length; i++) {\n        const abiParameter = abiParameters[i];\n        params += formatAbiParameter(abiParameter);\n        if (i !== length - 1)\n            params += ', ';\n    }\n    return params;\n}\n//# sourceMappingURL=formatAbiParameters.js.map","import { formatAbiParameters, } from './formatAbiParameters.js';\n/**\n * Formats ABI item (e.g. error, event, function) into human-readable ABI item\n *\n * @param abiItem - ABI item\n * @returns Human-readable ABI item\n */\nexport function formatAbiItem(abiItem) {\n    if (abiItem.type === 'function')\n        return `function ${abiItem.name}(${formatAbiParameters(abiItem.inputs)})${abiItem.stateMutability && abiItem.stateMutability !== 'nonpayable'\n            ? ` ${abiItem.stateMutability}`\n            : ''}${abiItem.outputs?.length\n            ? ` returns (${formatAbiParameters(abiItem.outputs)})`\n            : ''}`;\n    if (abiItem.type === 'event')\n        return `event ${abiItem.name}(${formatAbiParameters(abiItem.inputs)})`;\n    if (abiItem.type === 'error')\n        return `error ${abiItem.name}(${formatAbiParameters(abiItem.inputs)})`;\n    if (abiItem.type === 'constructor')\n        return `constructor(${formatAbiParameters(abiItem.inputs)})${abiItem.stateMutability === 'payable' ? ' payable' : ''}`;\n    if (abiItem.type === 'fallback')\n        return `fallback() external${abiItem.stateMutability === 'payable' ? ' payable' : ''}`;\n    return 'receive() external payable';\n}\n//# sourceMappingURL=formatAbiItem.js.map","import { execTyped } from '../../regex.js';\n// https://regexr.com/7gmok\nconst errorSignatureRegex = /^error (?<name>[a-zA-Z$_][a-zA-Z0-9$_]*)\\((?<parameters>.*?)\\)$/;\nexport function isErrorSignature(signature) {\n    return errorSignatureRegex.test(signature);\n}\nexport function execErrorSignature(signature) {\n    return execTyped(errorSignatureRegex, signature);\n}\n// https://regexr.com/7gmoq\nconst eventSignatureRegex = /^event (?<name>[a-zA-Z$_][a-zA-Z0-9$_]*)\\((?<parameters>.*?)\\)$/;\nexport function isEventSignature(signature) {\n    return eventSignatureRegex.test(signature);\n}\nexport function execEventSignature(signature) {\n    return execTyped(eventSignatureRegex, signature);\n}\n// https://regexr.com/7gmot\nconst functionSignatureRegex = /^function (?<name>[a-zA-Z$_][a-zA-Z0-9$_]*)\\((?<parameters>.*?)\\)(?: (?<scope>external|public{1}))?(?: (?<stateMutability>pure|view|nonpayable|payable{1}))?(?: returns\\s?\\((?<returns>.*?)\\))?$/;\nexport function isFunctionSignature(signature) {\n    return functionSignatureRegex.test(signature);\n}\nexport function execFunctionSignature(signature) {\n    return execTyped(functionSignatureRegex, signature);\n}\n// https://regexr.com/7gmp3\nconst structSignatureRegex = /^struct (?<name>[a-zA-Z$_][a-zA-Z0-9$_]*) \\{(?<properties>.*?)\\}$/;\nexport function isStructSignature(signature) {\n    return structSignatureRegex.test(signature);\n}\nexport function execStructSignature(signature) {\n    return execTyped(structSignatureRegex, signature);\n}\n// https://regexr.com/78u01\nconst constructorSignatureRegex = /^constructor\\((?<parameters>.*?)\\)(?:\\s(?<stateMutability>payable{1}))?$/;\nexport function isConstructorSignature(signature) {\n    return constructorSignatureRegex.test(signature);\n}\nexport function execConstructorSignature(signature) {\n    return execTyped(constructorSignatureRegex, signature);\n}\n// https://regexr.com/7srtn\nconst fallbackSignatureRegex = /^fallback\\(\\) external(?:\\s(?<stateMutability>payable{1}))?$/;\nexport function isFallbackSignature(signature) {\n    return fallbackSignatureRegex.test(signature);\n}\nexport function execFallbackSignature(signature) {\n    return execTyped(fallbackSignatureRegex, signature);\n}\n// https://regexr.com/78u1k\nconst receiveSignatureRegex = /^receive\\(\\) external payable$/;\nexport function isReceiveSignature(signature) {\n    return receiveSignatureRegex.test(signature);\n}\nexport const modifiers = new Set([\n    'memory',\n    'indexed',\n    'storage',\n    'calldata',\n]);\nexport const eventModifiers = new Set(['indexed']);\nexport const functionModifiers = new Set([\n    'calldata',\n    'memory',\n    'storage',\n]);\n//# sourceMappingURL=signatures.js.map","import { BaseError } from '../../errors.js';\nexport class InvalidAbiItemError extends BaseError {\n    constructor({ signature }) {\n        super('Failed to parse ABI item.', {\n            details: `parseAbiItem(${JSON.stringify(signature, null, 2)})`,\n            docsPath: '/api/human#parseabiitem-1',\n        });\n        Object.defineProperty(this, \"name\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 'InvalidAbiItemError'\n        });\n    }\n}\nexport class UnknownTypeError extends BaseError {\n    constructor({ type }) {\n        super('Unknown type.', {\n            metaMessages: [\n                `Type \"${type}\" is not a valid ABI type. Perhaps you forgot to include a struct signature?`,\n            ],\n        });\n        Object.defineProperty(this, \"name\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 'UnknownTypeError'\n        });\n    }\n}\nexport class UnknownSolidityTypeError extends BaseError {\n    constructor({ type }) {\n        super('Unknown type.', {\n            metaMessages: [`Type \"${type}\" is not a valid ABI type.`],\n        });\n        Object.defineProperty(this, \"name\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 'UnknownSolidityTypeError'\n        });\n    }\n}\n//# sourceMappingURL=abiItem.js.map","import { BaseError } from '../../errors.js';\nexport class InvalidAbiParameterError extends BaseError {\n    constructor({ param }) {\n        super('Failed to parse ABI parameter.', {\n            details: `parseAbiParameter(${JSON.stringify(param, null, 2)})`,\n            docsPath: '/api/human#parseabiparameter-1',\n        });\n        Object.defineProperty(this, \"name\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 'InvalidAbiParameterError'\n        });\n    }\n}\nexport class InvalidAbiParametersError extends BaseError {\n    constructor({ params }) {\n        super('Failed to parse ABI parameters.', {\n            details: `parseAbiParameters(${JSON.stringify(params, null, 2)})`,\n            docsPath: '/api/human#parseabiparameters-1',\n        });\n        Object.defineProperty(this, \"name\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 'InvalidAbiParametersError'\n        });\n    }\n}\nexport class InvalidParameterError extends BaseError {\n    constructor({ param }) {\n        super('Invalid ABI parameter.', {\n            details: param,\n        });\n        Object.defineProperty(this, \"name\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 'InvalidParameterError'\n        });\n    }\n}\nexport class SolidityProtectedKeywordError extends BaseError {\n    constructor({ param, name }) {\n        super('Invalid ABI parameter.', {\n            details: param,\n            metaMessages: [\n                `\"${name}\" is a protected Solidity keyword. More info: https://docs.soliditylang.org/en/latest/cheatsheet.html`,\n            ],\n        });\n        Object.defineProperty(this, \"name\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 'SolidityProtectedKeywordError'\n        });\n    }\n}\nexport class InvalidModifierError extends BaseError {\n    constructor({ param, type, modifier, }) {\n        super('Invalid ABI parameter.', {\n            details: param,\n            metaMessages: [\n                `Modifier \"${modifier}\" not allowed${type ? ` in \"${type}\" type` : ''}.`,\n            ],\n        });\n        Object.defineProperty(this, \"name\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 'InvalidModifierError'\n        });\n    }\n}\nexport class InvalidFunctionModifierError extends BaseError {\n    constructor({ param, type, modifier, }) {\n        super('Invalid ABI parameter.', {\n            details: param,\n            metaMessages: [\n                `Modifier \"${modifier}\" not allowed${type ? ` in \"${type}\" type` : ''}.`,\n                `Data location can only be specified for array, struct, or mapping types, but \"${modifier}\" was given.`,\n            ],\n        });\n        Object.defineProperty(this, \"name\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 'InvalidFunctionModifierError'\n        });\n    }\n}\nexport class InvalidAbiTypeParameterError extends BaseError {\n    constructor({ abiParameter, }) {\n        super('Invalid ABI parameter.', {\n            details: JSON.stringify(abiParameter, null, 2),\n            metaMessages: ['ABI parameter type is invalid.'],\n        });\n        Object.defineProperty(this, \"name\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 'InvalidAbiTypeParameterError'\n        });\n    }\n}\n//# sourceMappingURL=abiParameter.js.map","import { BaseError } from '../../errors.js';\nexport class InvalidSignatureError extends BaseError {\n    constructor({ signature, type, }) {\n        super(`Invalid ${type} signature.`, {\n            details: signature,\n        });\n        Object.defineProperty(this, \"name\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 'InvalidSignatureError'\n        });\n    }\n}\nexport class UnknownSignatureError extends BaseError {\n    constructor({ signature }) {\n        super('Unknown signature.', {\n            details: signature,\n        });\n        Object.defineProperty(this, \"name\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 'UnknownSignatureError'\n        });\n    }\n}\nexport class InvalidStructSignatureError extends BaseError {\n    constructor({ signature }) {\n        super('Invalid struct signature.', {\n            details: signature,\n            metaMessages: ['No properties exist.'],\n        });\n        Object.defineProperty(this, \"name\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 'InvalidStructSignatureError'\n        });\n    }\n}\n//# sourceMappingURL=signature.js.map","import { BaseError } from '../../errors.js';\nexport class CircularReferenceError extends BaseError {\n    constructor({ type }) {\n        super('Circular reference detected.', {\n            metaMessages: [`Struct \"${type}\" is a circular reference.`],\n        });\n        Object.defineProperty(this, \"name\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 'CircularReferenceError'\n        });\n    }\n}\n//# sourceMappingURL=struct.js.map","import { BaseError } from '../../errors.js';\nexport class InvalidParenthesisError extends BaseError {\n    constructor({ current, depth }) {\n        super('Unbalanced parentheses.', {\n            metaMessages: [\n                `\"${current.trim()}\" has too many ${depth > 0 ? 'opening' : 'closing'} parentheses.`,\n            ],\n            details: `Depth \"${depth}\"`,\n        });\n        Object.defineProperty(this, \"name\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 'InvalidParenthesisError'\n        });\n    }\n}\n//# sourceMappingURL=splitParameters.js.map","/**\n * Gets {@link parameterCache} cache key namespaced by {@link type}. This prevents parameters from being accessible to types that don't allow them (e.g. `string indexed foo` not allowed outside of `type: 'event'`).\n * @param param ABI parameter string\n * @param type ABI parameter type\n * @returns Cache key for {@link parameterCache}\n */\nexport function getParameterCacheKey(param, type, structs) {\n    let structKey = '';\n    if (structs)\n        for (const struct of Object.entries(structs)) {\n            if (!struct)\n                continue;\n            let propertyKey = '';\n            for (const property of struct[1]) {\n                propertyKey += `[${property.type}${property.name ? `:${property.name}` : ''}]`;\n            }\n            structKey += `(${struct[0]}{${propertyKey}})`;\n        }\n    if (type)\n        return `${type}:${param}${structKey}`;\n    return param;\n}\n/**\n * Basic cache seeded with common ABI parameter strings.\n *\n * **Note: When seeding more parameters, make sure you benchmark performance. The current number is the ideal balance between performance and having an already existing cache.**\n */\nexport const parameterCache = new Map([\n    // Unnamed\n    ['address', { type: 'address' }],\n    ['bool', { type: 'bool' }],\n    ['bytes', { type: 'bytes' }],\n    ['bytes32', { type: 'bytes32' }],\n    ['int', { type: 'int256' }],\n    ['int256', { type: 'int256' }],\n    ['string', { type: 'string' }],\n    ['uint', { type: 'uint256' }],\n    ['uint8', { type: 'uint8' }],\n    ['uint16', { type: 'uint16' }],\n    ['uint24', { type: 'uint24' }],\n    ['uint32', { type: 'uint32' }],\n    ['uint64', { type: 'uint64' }],\n    ['uint96', { type: 'uint96' }],\n    ['uint112', { type: 'uint112' }],\n    ['uint160', { type: 'uint160' }],\n    ['uint192', { type: 'uint192' }],\n    ['uint256', { type: 'uint256' }],\n    // Named\n    ['address owner', { type: 'address', name: 'owner' }],\n    ['address to', { type: 'address', name: 'to' }],\n    ['bool approved', { type: 'bool', name: 'approved' }],\n    ['bytes _data', { type: 'bytes', name: '_data' }],\n    ['bytes data', { type: 'bytes', name: 'data' }],\n    ['bytes signature', { type: 'bytes', name: 'signature' }],\n    ['bytes32 hash', { type: 'bytes32', name: 'hash' }],\n    ['bytes32 r', { type: 'bytes32', name: 'r' }],\n    ['bytes32 root', { type: 'bytes32', name: 'root' }],\n    ['bytes32 s', { type: 'bytes32', name: 's' }],\n    ['string name', { type: 'string', name: 'name' }],\n    ['string symbol', { type: 'string', name: 'symbol' }],\n    ['string tokenURI', { type: 'string', name: 'tokenURI' }],\n    ['uint tokenId', { type: 'uint256', name: 'tokenId' }],\n    ['uint8 v', { type: 'uint8', name: 'v' }],\n    ['uint256 balance', { type: 'uint256', name: 'balance' }],\n    ['uint256 tokenId', { type: 'uint256', name: 'tokenId' }],\n    ['uint256 value', { type: 'uint256', name: 'value' }],\n    // Indexed\n    [\n        'event:address indexed from',\n        { type: 'address', name: 'from', indexed: true },\n    ],\n    ['event:address indexed to', { type: 'address', name: 'to', indexed: true }],\n    [\n        'event:uint indexed tokenId',\n        { type: 'uint256', name: 'tokenId', indexed: true },\n    ],\n    [\n        'event:uint256 indexed tokenId',\n        { type: 'uint256', name: 'tokenId', indexed: true },\n    ],\n]);\n//# sourceMappingURL=cache.js.map","import { bytesRegex, execTyped, integerRegex, isTupleRegex, } from '../../regex.js';\nimport { UnknownSolidityTypeError } from '../errors/abiItem.js';\nimport { InvalidFunctionModifierError, InvalidModifierError, InvalidParameterError, SolidityProtectedKeywordError, } from '../errors/abiParameter.js';\nimport { InvalidSignatureError, UnknownSignatureError, } from '../errors/signature.js';\nimport { InvalidParenthesisError } from '../errors/splitParameters.js';\nimport { getParameterCacheKey, parameterCache } from './cache.js';\nimport { eventModifiers, execConstructorSignature, execErrorSignature, execEventSignature, execFallbackSignature, execFunctionSignature, functionModifiers, isConstructorSignature, isErrorSignature, isEventSignature, isFallbackSignature, isFunctionSignature, isReceiveSignature, } from './signatures.js';\nexport function parseSignature(signature, structs = {}) {\n    if (isFunctionSignature(signature))\n        return parseFunctionSignature(signature, structs);\n    if (isEventSignature(signature))\n        return parseEventSignature(signature, structs);\n    if (isErrorSignature(signature))\n        return parseErrorSignature(signature, structs);\n    if (isConstructorSignature(signature))\n        return parseConstructorSignature(signature, structs);\n    if (isFallbackSignature(signature))\n        return parseFallbackSignature(signature);\n    if (isReceiveSignature(signature))\n        return {\n            type: 'receive',\n            stateMutability: 'payable',\n        };\n    throw new UnknownSignatureError({ signature });\n}\nexport function parseFunctionSignature(signature, structs = {}) {\n    const match = execFunctionSignature(signature);\n    if (!match)\n        throw new InvalidSignatureError({ signature, type: 'function' });\n    const inputParams = splitParameters(match.parameters);\n    const inputs = [];\n    const inputLength = inputParams.length;\n    for (let i = 0; i < inputLength; i++) {\n        inputs.push(parseAbiParameter(inputParams[i], {\n            modifiers: functionModifiers,\n            structs,\n            type: 'function',\n        }));\n    }\n    const outputs = [];\n    if (match.returns) {\n        const outputParams = splitParameters(match.returns);\n        const outputLength = outputParams.length;\n        for (let i = 0; i < outputLength; i++) {\n            outputs.push(parseAbiParameter(outputParams[i], {\n                modifiers: functionModifiers,\n                structs,\n                type: 'function',\n            }));\n        }\n    }\n    return {\n        name: match.name,\n        type: 'function',\n        stateMutability: match.stateMutability ?? 'nonpayable',\n        inputs,\n        outputs,\n    };\n}\nexport function parseEventSignature(signature, structs = {}) {\n    const match = execEventSignature(signature);\n    if (!match)\n        throw new InvalidSignatureError({ signature, type: 'event' });\n    const params = splitParameters(match.parameters);\n    const abiParameters = [];\n    const length = params.length;\n    for (let i = 0; i < length; i++)\n        abiParameters.push(parseAbiParameter(params[i], {\n            modifiers: eventModifiers,\n            structs,\n            type: 'event',\n        }));\n    return { name: match.name, type: 'event', inputs: abiParameters };\n}\nexport function parseErrorSignature(signature, structs = {}) {\n    const match = execErrorSignature(signature);\n    if (!match)\n        throw new InvalidSignatureError({ signature, type: 'error' });\n    const params = splitParameters(match.parameters);\n    const abiParameters = [];\n    const length = params.length;\n    for (let i = 0; i < length; i++)\n        abiParameters.push(parseAbiParameter(params[i], { structs, type: 'error' }));\n    return { name: match.name, type: 'error', inputs: abiParameters };\n}\nexport function parseConstructorSignature(signature, structs = {}) {\n    const match = execConstructorSignature(signature);\n    if (!match)\n        throw new InvalidSignatureError({ signature, type: 'constructor' });\n    const params = splitParameters(match.parameters);\n    const abiParameters = [];\n    const length = params.length;\n    for (let i = 0; i < length; i++)\n        abiParameters.push(parseAbiParameter(params[i], { structs, type: 'constructor' }));\n    return {\n        type: 'constructor',\n        stateMutability: match.stateMutability ?? 'nonpayable',\n        inputs: abiParameters,\n    };\n}\nexport function parseFallbackSignature(signature) {\n    const match = execFallbackSignature(signature);\n    if (!match)\n        throw new InvalidSignatureError({ signature, type: 'fallback' });\n    return {\n        type: 'fallback',\n        stateMutability: match.stateMutability ?? 'nonpayable',\n    };\n}\nconst abiParameterWithoutTupleRegex = /^(?<type>[a-zA-Z$_][a-zA-Z0-9$_]*)(?<array>(?:\\[\\d*?\\])+?)?(?:\\s(?<modifier>calldata|indexed|memory|storage{1}))?(?:\\s(?<name>[a-zA-Z$_][a-zA-Z0-9$_]*))?$/;\nconst abiParameterWithTupleRegex = /^\\((?<type>.+?)\\)(?<array>(?:\\[\\d*?\\])+?)?(?:\\s(?<modifier>calldata|indexed|memory|storage{1}))?(?:\\s(?<name>[a-zA-Z$_][a-zA-Z0-9$_]*))?$/;\nconst dynamicIntegerRegex = /^u?int$/;\nexport function parseAbiParameter(param, options) {\n    // optional namespace cache by `type`\n    const parameterCacheKey = getParameterCacheKey(param, options?.type, options?.structs);\n    if (parameterCache.has(parameterCacheKey))\n        return parameterCache.get(parameterCacheKey);\n    const isTuple = isTupleRegex.test(param);\n    const match = execTyped(isTuple ? abiParameterWithTupleRegex : abiParameterWithoutTupleRegex, param);\n    if (!match)\n        throw new InvalidParameterError({ param });\n    if (match.name && isSolidityKeyword(match.name))\n        throw new SolidityProtectedKeywordError({ param, name: match.name });\n    const name = match.name ? { name: match.name } : {};\n    const indexed = match.modifier === 'indexed' ? { indexed: true } : {};\n    const structs = options?.structs ?? {};\n    let type;\n    let components = {};\n    if (isTuple) {\n        type = 'tuple';\n        const params = splitParameters(match.type);\n        const components_ = [];\n        const length = params.length;\n        for (let i = 0; i < length; i++) {\n            // remove `modifiers` from `options` to prevent from being added to tuple components\n            components_.push(parseAbiParameter(params[i], { structs }));\n        }\n        components = { components: components_ };\n    }\n    else if (match.type in structs) {\n        type = 'tuple';\n        components = { components: structs[match.type] };\n    }\n    else if (dynamicIntegerRegex.test(match.type)) {\n        type = `${match.type}256`;\n    }\n    else {\n        type = match.type;\n        if (!(options?.type === 'struct') && !isSolidityType(type))\n            throw new UnknownSolidityTypeError({ type });\n    }\n    if (match.modifier) {\n        // Check if modifier exists, but is not allowed (e.g. `indexed` in `functionModifiers`)\n        if (!options?.modifiers?.has?.(match.modifier))\n            throw new InvalidModifierError({\n                param,\n                type: options?.type,\n                modifier: match.modifier,\n            });\n        // Check if resolved `type` is valid if there is a function modifier\n        if (functionModifiers.has(match.modifier) &&\n            !isValidDataLocation(type, !!match.array))\n            throw new InvalidFunctionModifierError({\n                param,\n                type: options?.type,\n                modifier: match.modifier,\n            });\n    }\n    const abiParameter = {\n        type: `${type}${match.array ?? ''}`,\n        ...name,\n        ...indexed,\n        ...components,\n    };\n    parameterCache.set(parameterCacheKey, abiParameter);\n    return abiParameter;\n}\n// s/o latika for this\nexport function splitParameters(params, result = [], current = '', depth = 0) {\n    const length = params.trim().length;\n    // biome-ignore lint/correctness/noUnreachable: recursive\n    for (let i = 0; i < length; i++) {\n        const char = params[i];\n        const tail = params.slice(i + 1);\n        switch (char) {\n            case ',':\n                return depth === 0\n                    ? splitParameters(tail, [...result, current.trim()])\n                    : splitParameters(tail, result, `${current}${char}`, depth);\n            case '(':\n                return splitParameters(tail, result, `${current}${char}`, depth + 1);\n            case ')':\n                return splitParameters(tail, result, `${current}${char}`, depth - 1);\n            default:\n                return splitParameters(tail, result, `${current}${char}`, depth);\n        }\n    }\n    if (current === '')\n        return result;\n    if (depth !== 0)\n        throw new InvalidParenthesisError({ current, depth });\n    result.push(current.trim());\n    return result;\n}\nexport function isSolidityType(type) {\n    return (type === 'address' ||\n        type === 'bool' ||\n        type === 'function' ||\n        type === 'string' ||\n        bytesRegex.test(type) ||\n        integerRegex.test(type));\n}\nconst protectedKeywordsRegex = /^(?:after|alias|anonymous|apply|auto|byte|calldata|case|catch|constant|copyof|default|defined|error|event|external|false|final|function|immutable|implements|in|indexed|inline|internal|let|mapping|match|memory|mutable|null|of|override|partial|private|promise|public|pure|reference|relocatable|return|returns|sizeof|static|storage|struct|super|supports|switch|this|true|try|typedef|typeof|var|view|virtual)$/;\n/** @internal */\nexport function isSolidityKeyword(name) {\n    return (name === 'address' ||\n        name === 'bool' ||\n        name === 'function' ||\n        name === 'string' ||\n        name === 'tuple' ||\n        bytesRegex.test(name) ||\n        integerRegex.test(name) ||\n        protectedKeywordsRegex.test(name));\n}\n/** @internal */\nexport function isValidDataLocation(type, isArray) {\n    return isArray || type === 'bytes' || type === 'string' || type === 'tuple';\n}\n//# sourceMappingURL=utils.js.map","import { execTyped, isTupleRegex } from '../../regex.js';\nimport { UnknownTypeError } from '../errors/abiItem.js';\nimport { InvalidAbiTypeParameterError } from '../errors/abiParameter.js';\nimport { InvalidSignatureError, InvalidStructSignatureError, } from '../errors/signature.js';\nimport { CircularReferenceError } from '../errors/struct.js';\nimport { execStructSignature, isStructSignature } from './signatures.js';\nimport { isSolidityType, parseAbiParameter } from './utils.js';\nexport function parseStructs(signatures) {\n    // Create \"shallow\" version of each struct (and filter out non-structs or invalid structs)\n    const shallowStructs = {};\n    const signaturesLength = signatures.length;\n    for (let i = 0; i < signaturesLength; i++) {\n        const signature = signatures[i];\n        if (!isStructSignature(signature))\n            continue;\n        const match = execStructSignature(signature);\n        if (!match)\n            throw new InvalidSignatureError({ signature, type: 'struct' });\n        const properties = match.properties.split(';');\n        const components = [];\n        const propertiesLength = properties.length;\n        for (let k = 0; k < propertiesLength; k++) {\n            const property = properties[k];\n            const trimmed = property.trim();\n            if (!trimmed)\n                continue;\n            const abiParameter = parseAbiParameter(trimmed, {\n                type: 'struct',\n            });\n            components.push(abiParameter);\n        }\n        if (!components.length)\n            throw new InvalidStructSignatureError({ signature });\n        shallowStructs[match.name] = components;\n    }\n    // Resolve nested structs inside each parameter\n    const resolvedStructs = {};\n    const entries = Object.entries(shallowStructs);\n    const entriesLength = entries.length;\n    for (let i = 0; i < entriesLength; i++) {\n        const [name, parameters] = entries[i];\n        resolvedStructs[name] = resolveStructs(parameters, shallowStructs);\n    }\n    return resolvedStructs;\n}\nconst typeWithoutTupleRegex = /^(?<type>[a-zA-Z$_][a-zA-Z0-9$_]*)(?<array>(?:\\[\\d*?\\])+?)?$/;\nfunction resolveStructs(abiParameters, structs, ancestors = new Set()) {\n    const components = [];\n    const length = abiParameters.length;\n    for (let i = 0; i < length; i++) {\n        const abiParameter = abiParameters[i];\n        const isTuple = isTupleRegex.test(abiParameter.type);\n        if (isTuple)\n            components.push(abiParameter);\n        else {\n            const match = execTyped(typeWithoutTupleRegex, abiParameter.type);\n            if (!match?.type)\n                throw new InvalidAbiTypeParameterError({ abiParameter });\n            const { array, type } = match;\n            if (type in structs) {\n                if (ancestors.has(type))\n                    throw new CircularReferenceError({ type });\n                components.push({\n                    ...abiParameter,\n                    type: `tuple${array ?? ''}`,\n                    components: resolveStructs(structs[type] ?? [], structs, new Set([...ancestors, type])),\n                });\n            }\n            else {\n                if (isSolidityType(type))\n                    components.push(abiParameter);\n                else\n                    throw new UnknownTypeError({ type });\n            }\n        }\n    }\n    return components;\n}\n//# sourceMappingURL=structs.js.map","import { isStructSignature } from './runtime/signatures.js';\nimport { parseStructs } from './runtime/structs.js';\nimport { parseSignature } from './runtime/utils.js';\n/**\n * Parses human-readable ABI into JSON {@link Abi}\n *\n * @param signatures - Human-Readable ABI\n * @returns Parsed {@link Abi}\n *\n * @example\n * const abi = parseAbi([\n *   //  ^? const abi: readonly [{ name: \"balanceOf\"; type: \"function\"; stateMutability:...\n *   'function balanceOf(address owner) view returns (uint256)',\n *   'event Transfer(address indexed from, address indexed to, uint256 amount)',\n * ])\n */\nexport function parseAbi(signatures) {\n    const structs = parseStructs(signatures);\n    const abi = [];\n    const length = signatures.length;\n    for (let i = 0; i < length; i++) {\n        const signature = signatures[i];\n        if (isStructSignature(signature))\n            continue;\n        abi.push(parseSignature(signature, structs));\n    }\n    return abi;\n}\n//# sourceMappingURL=parseAbi.js.map","import { BaseError } from '../../errors/base.js';\nexport function normalizeSignature(signature) {\n    let active = true;\n    let current = '';\n    let level = 0;\n    let result = '';\n    let valid = false;\n    for (let i = 0; i < signature.length; i++) {\n        const char = signature[i];\n        // If the character is a separator, we want to reactivate.\n        if (['(', ')', ','].includes(char))\n            active = true;\n        // If the character is a \"level\" token, we want to increment/decrement.\n        if (char === '(')\n            level++;\n        if (char === ')')\n            level--;\n        // If we aren't active, we don't want to mutate the result.\n        if (!active)\n            continue;\n        // If level === 0, we are at the definition level.\n        if (level === 0) {\n            if (char === ' ' && ['event', 'function', ''].includes(result))\n                result = '';\n            else {\n                result += char;\n                // If we are at the end of the definition, we must be finished.\n                if (char === ')') {\n                    valid = true;\n                    break;\n                }\n            }\n            continue;\n        }\n        // Ignore spaces\n        if (char === ' ') {\n            // If the previous character is a separator, and the current section isn't empty, we want to deactivate.\n            if (signature[i - 1] !== ',' && current !== ',' && current !== ',(') {\n                current = '';\n                active = false;\n            }\n            continue;\n        }\n        result += char;\n        current += char;\n    }\n    if (!valid)\n        throw new BaseError('Unable to normalize signature.');\n    return result;\n}\n//# sourceMappingURL=normalizeSignature.js.map","import { formatAbiItem } from 'abitype';\nimport { normalizeSignature, } from './normalizeSignature.js';\n/**\n * Returns the signature for a given function or event definition.\n *\n * @example\n * const signature = toSignature('function ownerOf(uint256 tokenId)')\n * // 'ownerOf(uint256)'\n *\n * @example\n * const signature_3 = toSignature({\n *   name: 'ownerOf',\n *   type: 'function',\n *   inputs: [{ name: 'tokenId', type: 'uint256' }],\n *   outputs: [],\n *   stateMutability: 'view',\n * })\n * // 'ownerOf(uint256)'\n */\nexport const toSignature = (def) => {\n    const def_ = (() => {\n        if (typeof def === 'string')\n            return def;\n        return formatAbiItem(def);\n    })();\n    return normalizeSignature(def_);\n};\n//# sourceMappingURL=toSignature.js.map","import { hashSignature } from './hashSignature.js';\nimport { toSignature } from './toSignature.js';\n/**\n * Returns the hash (of the function/event signature) for a given event or function definition.\n */\nexport function toSignatureHash(fn) {\n    return hashSignature(toSignature(fn));\n}\n//# sourceMappingURL=toSignatureHash.js.map","import { slice } from '../data/slice.js';\nimport { toSignatureHash, } from './toSignatureHash.js';\n/**\n * Returns the function selector for a given function definition.\n *\n * @example\n * const selector = toFunctionSelector('function ownerOf(uint256 tokenId)')\n * // 0x6352211e\n */\nexport const toFunctionSelector = (fn) => slice(toSignatureHash(fn), 0, 4);\n//# sourceMappingURL=toFunctionSelector.js.map","import { InvalidBytesBooleanError } from '../../errors/encoding.js';\nimport { trim } from '../data/trim.js';\nimport { assertSize, hexToBigInt, hexToNumber, } from './fromHex.js';\nimport { bytesToHex } from './toHex.js';\n/**\n * Decodes a byte array into a UTF-8 string, hex value, number, bigint or boolean.\n *\n * - Docs: https://viem.sh/docs/utilities/fromBytes\n * - Example: https://viem.sh/docs/utilities/fromBytes#usage\n *\n * @param bytes Byte array to decode.\n * @param toOrOpts Type to convert to or options.\n * @returns Decoded value.\n *\n * @example\n * import { fromBytes } from 'viem'\n * const data = fromBytes(new Uint8Array([1, 164]), 'number')\n * // 420\n *\n * @example\n * import { fromBytes } from 'viem'\n * const data = fromBytes(\n *   new Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33]),\n *   'string'\n * )\n * // 'Hello world'\n */\nexport function fromBytes(bytes, toOrOpts) {\n    const opts = typeof toOrOpts === 'string' ? { to: toOrOpts } : toOrOpts;\n    const to = opts.to;\n    if (to === 'number')\n        return bytesToNumber(bytes, opts);\n    if (to === 'bigint')\n        return bytesToBigInt(bytes, opts);\n    if (to === 'boolean')\n        return bytesToBool(bytes, opts);\n    if (to === 'string')\n        return bytesToString(bytes, opts);\n    return bytesToHex(bytes, opts);\n}\n/**\n * Decodes a byte array into a bigint.\n *\n * - Docs: https://viem.sh/docs/utilities/fromBytes#bytestobigint\n *\n * @param bytes Byte array to decode.\n * @param opts Options.\n * @returns BigInt value.\n *\n * @example\n * import { bytesToBigInt } from 'viem'\n * const data = bytesToBigInt(new Uint8Array([1, 164]))\n * // 420n\n */\nexport function bytesToBigInt(bytes, opts = {}) {\n    if (typeof opts.size !== 'undefined')\n        assertSize(bytes, { size: opts.size });\n    const hex = bytesToHex(bytes, opts);\n    return hexToBigInt(hex, opts);\n}\n/**\n * Decodes a byte array into a boolean.\n *\n * - Docs: https://viem.sh/docs/utilities/fromBytes#bytestobool\n *\n * @param bytes Byte array to decode.\n * @param opts Options.\n * @returns Boolean value.\n *\n * @example\n * import { bytesToBool } from 'viem'\n * const data = bytesToBool(new Uint8Array([1]))\n * // true\n */\nexport function bytesToBool(bytes_, opts = {}) {\n    let bytes = bytes_;\n    if (typeof opts.size !== 'undefined') {\n        assertSize(bytes, { size: opts.size });\n        bytes = trim(bytes);\n    }\n    if (bytes.length > 1 || bytes[0] > 1)\n        throw new InvalidBytesBooleanError(bytes);\n    return Boolean(bytes[0]);\n}\n/**\n * Decodes a byte array into a number.\n *\n * - Docs: https://viem.sh/docs/utilities/fromBytes#bytestonumber\n *\n * @param bytes Byte array to decode.\n * @param opts Options.\n * @returns Number value.\n *\n * @example\n * import { bytesToNumber } from 'viem'\n * const data = bytesToNumber(new Uint8Array([1, 164]))\n * // 420\n */\nexport function bytesToNumber(bytes, opts = {}) {\n    if (typeof opts.size !== 'undefined')\n        assertSize(bytes, { size: opts.size });\n    const hex = bytesToHex(bytes, opts);\n    return hexToNumber(hex, opts);\n}\n/**\n * Decodes a byte array into a UTF-8 string.\n *\n * - Docs: https://viem.sh/docs/utilities/fromBytes#bytestostring\n *\n * @param bytes Byte array to decode.\n * @param opts Options.\n * @returns String value.\n *\n * @example\n * import { bytesToString } from 'viem'\n * const data = bytesToString(new Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33]))\n * // 'Hello world'\n */\nexport function bytesToString(bytes_, opts = {}) {\n    let bytes = bytes_;\n    if (typeof opts.size !== 'undefined') {\n        assertSize(bytes, { size: opts.size });\n        bytes = trim(bytes, { dir: 'right' });\n    }\n    return new TextDecoder().decode(bytes);\n}\n//# sourceMappingURL=fromBytes.js.map","export const arrayRegex = /^(.*)\\[([0-9]*)\\]$/;\n// `bytes<M>`: binary type of `M` bytes, `0 < M <= 32`\n// https://regexr.com/6va55\nexport const bytesRegex = /^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/;\n// `(u)int<M>`: (un)signed integer type of `M` bits, `0 < M <= 256`, `M % 8 == 0`\n// https://regexr.com/6v8hp\nexport const integerRegex = /^(u?int)(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/;\n//# sourceMappingURL=regex.js.map","import { AbiEncodingArrayLengthMismatchError, AbiEncodingBytesSizeMismatchError, AbiEncodingLengthMismatchError, InvalidAbiEncodingTypeError, InvalidArrayError, } from '../../errors/abi.js';\nimport { InvalidAddressError, } from '../../errors/address.js';\nimport { BaseError } from '../../errors/base.js';\nimport { IntegerOutOfRangeError } from '../../errors/encoding.js';\nimport { isAddress } from '../address/isAddress.js';\nimport { concat } from '../data/concat.js';\nimport { padHex } from '../data/pad.js';\nimport { size } from '../data/size.js';\nimport { slice } from '../data/slice.js';\nimport { boolToHex, numberToHex, stringToHex, } from '../encoding/toHex.js';\nimport { integerRegex } from '../regex.js';\n/**\n * @description Encodes a list of primitive values into an ABI-encoded hex value.\n *\n * - Docs: https://viem.sh/docs/abi/encodeAbiParameters#encodeabiparameters\n *\n *   Generates ABI encoded data using the [ABI specification](https://docs.soliditylang.org/en/latest/abi-spec), given a set of ABI parameters (inputs/outputs) and their corresponding values.\n *\n * @param params - a set of ABI Parameters (params), that can be in the shape of the inputs or outputs attribute of an ABI Item.\n * @param values - a set of values (values) that correspond to the given params.\n * @example\n * ```typescript\n * import { encodeAbiParameters } from 'viem'\n *\n * const encodedData = encodeAbiParameters(\n *   [\n *     { name: 'x', type: 'string' },\n *     { name: 'y', type: 'uint' },\n *     { name: 'z', type: 'bool' }\n *   ],\n *   ['wagmi', 420n, true]\n * )\n * ```\n *\n * You can also pass in Human Readable parameters with the parseAbiParameters utility.\n *\n * @example\n * ```typescript\n * import { encodeAbiParameters, parseAbiParameters } from 'viem'\n *\n * const encodedData = encodeAbiParameters(\n *   parseAbiParameters('string x, uint y, bool z'),\n *   ['wagmi', 420n, true]\n * )\n * ```\n */\nexport function encodeAbiParameters(params, values) {\n    if (params.length !== values.length)\n        throw new AbiEncodingLengthMismatchError({\n            expectedLength: params.length,\n            givenLength: values.length,\n        });\n    // Prepare the parameters to determine dynamic types to encode.\n    const preparedParams = prepareParams({\n        params: params,\n        values: values,\n    });\n    const data = encodeParams(preparedParams);\n    if (data.length === 0)\n        return '0x';\n    return data;\n}\nfunction prepareParams({ params, values, }) {\n    const preparedParams = [];\n    for (let i = 0; i < params.length; i++) {\n        preparedParams.push(prepareParam({ param: params[i], value: values[i] }));\n    }\n    return preparedParams;\n}\nfunction prepareParam({ param, value, }) {\n    const arrayComponents = getArrayComponents(param.type);\n    if (arrayComponents) {\n        const [length, type] = arrayComponents;\n        return encodeArray(value, { length, param: { ...param, type } });\n    }\n    if (param.type === 'tuple') {\n        return encodeTuple(value, {\n            param: param,\n        });\n    }\n    if (param.type === 'address') {\n        return encodeAddress(value);\n    }\n    if (param.type === 'bool') {\n        return encodeBool(value);\n    }\n    if (param.type.startsWith('uint') || param.type.startsWith('int')) {\n        const signed = param.type.startsWith('int');\n        const [, , size = '256'] = integerRegex.exec(param.type) ?? [];\n        return encodeNumber(value, {\n            signed,\n            size: Number(size),\n        });\n    }\n    if (param.type.startsWith('bytes')) {\n        return encodeBytes(value, { param });\n    }\n    if (param.type === 'string') {\n        return encodeString(value);\n    }\n    throw new InvalidAbiEncodingTypeError(param.type, {\n        docsPath: '/docs/contract/encodeAbiParameters',\n    });\n}\nfunction encodeParams(preparedParams) {\n    // 1. Compute the size of the static part of the parameters.\n    let staticSize = 0;\n    for (let i = 0; i < preparedParams.length; i++) {\n        const { dynamic, encoded } = preparedParams[i];\n        if (dynamic)\n            staticSize += 32;\n        else\n            staticSize += size(encoded);\n    }\n    // 2. Split the parameters into static and dynamic parts.\n    const staticParams = [];\n    const dynamicParams = [];\n    let dynamicSize = 0;\n    for (let i = 0; i < preparedParams.length; i++) {\n        const { dynamic, encoded } = preparedParams[i];\n        if (dynamic) {\n            staticParams.push(numberToHex(staticSize + dynamicSize, { size: 32 }));\n            dynamicParams.push(encoded);\n            dynamicSize += size(encoded);\n        }\n        else {\n            staticParams.push(encoded);\n        }\n    }\n    // 3. Concatenate static and dynamic parts.\n    return concat([...staticParams, ...dynamicParams]);\n}\nfunction encodeAddress(value) {\n    if (!isAddress(value))\n        throw new InvalidAddressError({ address: value });\n    return { dynamic: false, encoded: padHex(value.toLowerCase()) };\n}\nfunction encodeArray(value, { length, param, }) {\n    const dynamic = length === null;\n    if (!Array.isArray(value))\n        throw new InvalidArrayError(value);\n    if (!dynamic && value.length !== length)\n        throw new AbiEncodingArrayLengthMismatchError({\n            expectedLength: length,\n            givenLength: value.length,\n            type: `${param.type}[${length}]`,\n        });\n    let dynamicChild = false;\n    const preparedParams = [];\n    for (let i = 0; i < value.length; i++) {\n        const preparedParam = prepareParam({ param, value: value[i] });\n        if (preparedParam.dynamic)\n            dynamicChild = true;\n        preparedParams.push(preparedParam);\n    }\n    if (dynamic || dynamicChild) {\n        const data = encodeParams(preparedParams);\n        if (dynamic) {\n            const length = numberToHex(preparedParams.length, { size: 32 });\n            return {\n                dynamic: true,\n                encoded: preparedParams.length > 0 ? concat([length, data]) : length,\n            };\n        }\n        if (dynamicChild)\n            return { dynamic: true, encoded: data };\n    }\n    return {\n        dynamic: false,\n        encoded: concat(preparedParams.map(({ encoded }) => encoded)),\n    };\n}\nfunction encodeBytes(value, { param }) {\n    const [, paramSize] = param.type.split('bytes');\n    const bytesSize = size(value);\n    if (!paramSize) {\n        let value_ = value;\n        // If the size is not divisible by 32 bytes, pad the end\n        // with empty bytes to the ceiling 32 bytes.\n        if (bytesSize % 32 !== 0)\n            value_ = padHex(value_, {\n                dir: 'right',\n                size: Math.ceil((value.length - 2) / 2 / 32) * 32,\n            });\n        return {\n            dynamic: true,\n            encoded: concat([padHex(numberToHex(bytesSize, { size: 32 })), value_]),\n        };\n    }\n    if (bytesSize !== Number.parseInt(paramSize))\n        throw new AbiEncodingBytesSizeMismatchError({\n            expectedSize: Number.parseInt(paramSize),\n            value,\n        });\n    return { dynamic: false, encoded: padHex(value, { dir: 'right' }) };\n}\nfunction encodeBool(value) {\n    if (typeof value !== 'boolean')\n        throw new BaseError(`Invalid boolean value: \"${value}\" (type: ${typeof value}). Expected: \\`true\\` or \\`false\\`.`);\n    return { dynamic: false, encoded: padHex(boolToHex(value)) };\n}\nfunction encodeNumber(value, { signed, size = 256 }) {\n    if (typeof size === 'number') {\n        const max = 2n ** (BigInt(size) - (signed ? 1n : 0n)) - 1n;\n        const min = signed ? -max - 1n : 0n;\n        if (value > max || value < min)\n            throw new IntegerOutOfRangeError({\n                max: max.toString(),\n                min: min.toString(),\n                signed,\n                size: size / 8,\n                value: value.toString(),\n            });\n    }\n    return {\n        dynamic: false,\n        encoded: numberToHex(value, {\n            size: 32,\n            signed,\n        }),\n    };\n}\nfunction encodeString(value) {\n    const hexValue = stringToHex(value);\n    const partsLength = Math.ceil(size(hexValue) / 32);\n    const parts = [];\n    for (let i = 0; i < partsLength; i++) {\n        parts.push(padHex(slice(hexValue, i * 32, (i + 1) * 32), {\n            dir: 'right',\n        }));\n    }\n    return {\n        dynamic: true,\n        encoded: concat([\n            padHex(numberToHex(size(hexValue), { size: 32 })),\n            ...parts,\n        ]),\n    };\n}\nfunction encodeTuple(value, { param }) {\n    let dynamic = false;\n    const preparedParams = [];\n    for (let i = 0; i < param.components.length; i++) {\n        const param_ = param.components[i];\n        const index = Array.isArray(value) ? i : param_.name;\n        const preparedParam = prepareParam({\n            param: param_,\n            value: value[index],\n        });\n        preparedParams.push(preparedParam);\n        if (preparedParam.dynamic)\n            dynamic = true;\n    }\n    return {\n        dynamic,\n        encoded: dynamic\n            ? encodeParams(preparedParams)\n            : concat(preparedParams.map(({ encoded }) => encoded)),\n    };\n}\nexport function getArrayComponents(type) {\n    const matches = type.match(/^(.*)\\[(\\d+)?\\]$/);\n    return matches\n        ? // Return `null` if the array is dynamic.\n            [matches[2] ? Number(matches[2]) : null, matches[1]]\n        : undefined;\n}\n//# sourceMappingURL=encodeAbiParameters.js.map","import { AbiDecodingDataSizeTooSmallError, AbiDecodingZeroDataError, InvalidAbiDecodingTypeError, } from '../../errors/abi.js';\nimport { checksumAddress, } from '../address/getAddress.js';\nimport { createCursor, } from '../cursor.js';\nimport { size } from '../data/size.js';\nimport { sliceBytes } from '../data/slice.js';\nimport { trim } from '../data/trim.js';\nimport { bytesToBigInt, bytesToBool, bytesToNumber, bytesToString, } from '../encoding/fromBytes.js';\nimport { hexToBytes } from '../encoding/toBytes.js';\nimport { bytesToHex } from '../encoding/toHex.js';\nimport { getArrayComponents } from './encodeAbiParameters.js';\nexport function decodeAbiParameters(params, data) {\n    const bytes = typeof data === 'string' ? hexToBytes(data) : data;\n    const cursor = createCursor(bytes);\n    if (size(bytes) === 0 && params.length > 0)\n        throw new AbiDecodingZeroDataError();\n    if (size(data) && size(data) < 32)\n        throw new AbiDecodingDataSizeTooSmallError({\n            data: typeof data === 'string' ? data : bytesToHex(data),\n            params: params,\n            size: size(data),\n        });\n    let consumed = 0;\n    const values = [];\n    for (let i = 0; i < params.length; ++i) {\n        const param = params[i];\n        cursor.setPosition(consumed);\n        const [data, consumed_] = decodeParameter(cursor, param, {\n            staticPosition: 0,\n        });\n        consumed += consumed_;\n        values.push(data);\n    }\n    return values;\n}\nfunction decodeParameter(cursor, param, { staticPosition }) {\n    const arrayComponents = getArrayComponents(param.type);\n    if (arrayComponents) {\n        const [length, type] = arrayComponents;\n        return decodeArray(cursor, { ...param, type }, { length, staticPosition });\n    }\n    if (param.type === 'tuple')\n        return decodeTuple(cursor, param, { staticPosition });\n    if (param.type === 'address')\n        return decodeAddress(cursor);\n    if (param.type === 'bool')\n        return decodeBool(cursor);\n    if (param.type.startsWith('bytes'))\n        return decodeBytes(cursor, param, { staticPosition });\n    if (param.type.startsWith('uint') || param.type.startsWith('int'))\n        return decodeNumber(cursor, param);\n    if (param.type === 'string')\n        return decodeString(cursor, { staticPosition });\n    throw new InvalidAbiDecodingTypeError(param.type, {\n        docsPath: '/docs/contract/decodeAbiParameters',\n    });\n}\n////////////////////////////////////////////////////////////////////\n// Type Decoders\nconst sizeOfLength = 32;\nconst sizeOfOffset = 32;\nfunction decodeAddress(cursor) {\n    const value = cursor.readBytes(32);\n    return [checksumAddress(bytesToHex(sliceBytes(value, -20))), 32];\n}\nfunction decodeArray(cursor, param, { length, staticPosition }) {\n    // If the length of the array is not known in advance (dynamic array),\n    // this means we will need to wonder off to the pointer and decode.\n    if (!length) {\n        // Dealing with a dynamic type, so get the offset of the array data.\n        const offset = bytesToNumber(cursor.readBytes(sizeOfOffset));\n        // Start is the static position of current slot + offset.\n        const start = staticPosition + offset;\n        const startOfData = start + sizeOfLength;\n        // Get the length of the array from the offset.\n        cursor.setPosition(start);\n        const length = bytesToNumber(cursor.readBytes(sizeOfLength));\n        // Check if the array has any dynamic children.\n        const dynamicChild = hasDynamicChild(param);\n        let consumed = 0;\n        const value = [];\n        for (let i = 0; i < length; ++i) {\n            // If any of the children is dynamic, then all elements will be offset pointer, thus size of one slot (32 bytes).\n            // Otherwise, elements will be the size of their encoding (consumed bytes).\n            cursor.setPosition(startOfData + (dynamicChild ? i * 32 : consumed));\n            const [data, consumed_] = decodeParameter(cursor, param, {\n                staticPosition: startOfData,\n            });\n            consumed += consumed_;\n            value.push(data);\n        }\n        // As we have gone wondering, restore to the original position + next slot.\n        cursor.setPosition(staticPosition + 32);\n        return [value, 32];\n    }\n    // If the length of the array is known in advance,\n    // and the length of an element deeply nested in the array is not known,\n    // we need to decode the offset of the array data.\n    if (hasDynamicChild(param)) {\n        // Dealing with dynamic types, so get the offset of the array data.\n        const offset = bytesToNumber(cursor.readBytes(sizeOfOffset));\n        // Start is the static position of current slot + offset.\n        const start = staticPosition + offset;\n        const value = [];\n        for (let i = 0; i < length; ++i) {\n            // Move cursor along to the next slot (next offset pointer).\n            cursor.setPosition(start + i * 32);\n            const [data] = decodeParameter(cursor, param, {\n                staticPosition: start,\n            });\n            value.push(data);\n        }\n        // As we have gone wondering, restore to the original position + next slot.\n        cursor.setPosition(staticPosition + 32);\n        return [value, 32];\n    }\n    // If the length of the array is known in advance and the array is deeply static,\n    // then we can just decode each element in sequence.\n    let consumed = 0;\n    const value = [];\n    for (let i = 0; i < length; ++i) {\n        const [data, consumed_] = decodeParameter(cursor, param, {\n            staticPosition: staticPosition + consumed,\n        });\n        consumed += consumed_;\n        value.push(data);\n    }\n    return [value, consumed];\n}\nfunction decodeBool(cursor) {\n    return [bytesToBool(cursor.readBytes(32), { size: 32 }), 32];\n}\nfunction decodeBytes(cursor, param, { staticPosition }) {\n    const [_, size] = param.type.split('bytes');\n    if (!size) {\n        // Dealing with dynamic types, so get the offset of the bytes data.\n        const offset = bytesToNumber(cursor.readBytes(32));\n        // Set position of the cursor to start of bytes data.\n        cursor.setPosition(staticPosition + offset);\n        const length = bytesToNumber(cursor.readBytes(32));\n        // If there is no length, we have zero data.\n        if (length === 0) {\n            // As we have gone wondering, restore to the original position + next slot.\n            cursor.setPosition(staticPosition + 32);\n            return ['0x', 32];\n        }\n        const data = cursor.readBytes(length);\n        // As we have gone wondering, restore to the original position + next slot.\n        cursor.setPosition(staticPosition + 32);\n        return [bytesToHex(data), 32];\n    }\n    const value = bytesToHex(cursor.readBytes(Number.parseInt(size), 32));\n    return [value, 32];\n}\nfunction decodeNumber(cursor, param) {\n    const signed = param.type.startsWith('int');\n    const size = Number.parseInt(param.type.split('int')[1] || '256');\n    const value = cursor.readBytes(32);\n    return [\n        size > 48\n            ? bytesToBigInt(value, { signed })\n            : bytesToNumber(value, { signed }),\n        32,\n    ];\n}\nfunction decodeTuple(cursor, param, { staticPosition }) {\n    // Tuples can have unnamed components (i.e. they are arrays), so we must\n    // determine whether the tuple is named or unnamed. In the case of a named\n    // tuple, the value will be an object where each property is the name of the\n    // component. In the case of an unnamed tuple, the value will be an array.\n    const hasUnnamedChild = param.components.length === 0 || param.components.some(({ name }) => !name);\n    // Initialize the value to an object or an array, depending on whether the\n    // tuple is named or unnamed.\n    const value = hasUnnamedChild ? [] : {};\n    let consumed = 0;\n    // If the tuple has a dynamic child, we must first decode the offset to the\n    // tuple data.\n    if (hasDynamicChild(param)) {\n        // Dealing with dynamic types, so get the offset of the tuple data.\n        const offset = bytesToNumber(cursor.readBytes(sizeOfOffset));\n        // Start is the static position of referencing slot + offset.\n        const start = staticPosition + offset;\n        for (let i = 0; i < param.components.length; ++i) {\n            const component = param.components[i];\n            cursor.setPosition(start + consumed);\n            const [data, consumed_] = decodeParameter(cursor, component, {\n                staticPosition: start,\n            });\n            consumed += consumed_;\n            value[hasUnnamedChild ? i : component?.name] = data;\n        }\n        // As we have gone wondering, restore to the original position + next slot.\n        cursor.setPosition(staticPosition + 32);\n        return [value, 32];\n    }\n    // If the tuple has static children, we can just decode each component\n    // in sequence.\n    for (let i = 0; i < param.components.length; ++i) {\n        const component = param.components[i];\n        const [data, consumed_] = decodeParameter(cursor, component, {\n            staticPosition,\n        });\n        value[hasUnnamedChild ? i : component?.name] = data;\n        consumed += consumed_;\n    }\n    return [value, consumed];\n}\nfunction decodeString(cursor, { staticPosition }) {\n    // Get offset to start of string data.\n    const offset = bytesToNumber(cursor.readBytes(32));\n    // Start is the static position of current slot + offset.\n    const start = staticPosition + offset;\n    cursor.setPosition(start);\n    const length = bytesToNumber(cursor.readBytes(32));\n    // If there is no length, we have zero data (empty string).\n    if (length === 0) {\n        cursor.setPosition(staticPosition + 32);\n        return ['', 32];\n    }\n    const data = cursor.readBytes(length, 32);\n    const value = bytesToString(trim(data));\n    // As we have gone wondering, restore to the original position + next slot.\n    cursor.setPosition(staticPosition + 32);\n    return [value, 32];\n}\nfunction hasDynamicChild(param) {\n    const { type } = param;\n    if (type === 'string')\n        return true;\n    if (type === 'bytes')\n        return true;\n    if (type.endsWith('[]'))\n        return true;\n    if (type === 'tuple')\n        return param.components?.some(hasDynamicChild);\n    const arrayComponents = getArrayComponents(param.type);\n    if (arrayComponents &&\n        hasDynamicChild({ ...param, type: arrayComponents[1] }))\n        return true;\n    return false;\n}\n//# sourceMappingURL=decodeAbiParameters.js.map","import { solidityError, solidityPanic } from '../../constants/solidity.js';\nimport { AbiDecodingZeroDataError, AbiErrorSignatureNotFoundError, } from '../../errors/abi.js';\nimport { slice } from '../data/slice.js';\nimport { toFunctionSelector, } from '../hash/toFunctionSelector.js';\nimport { decodeAbiParameters, } from './decodeAbiParameters.js';\nimport { formatAbiItem } from './formatAbiItem.js';\nexport function decodeErrorResult(parameters) {\n    const { abi, data } = parameters;\n    const signature = slice(data, 0, 4);\n    if (signature === '0x')\n        throw new AbiDecodingZeroDataError();\n    const abi_ = [...(abi || []), solidityError, solidityPanic];\n    const abiItem = abi_.find((x) => x.type === 'error' && signature === toFunctionSelector(formatAbiItem(x)));\n    if (!abiItem)\n        throw new AbiErrorSignatureNotFoundError(signature, {\n            docsPath: '/docs/contract/decodeErrorResult',\n        });\n    return {\n        abiItem,\n        args: 'inputs' in abiItem && abiItem.inputs && abiItem.inputs.length > 0\n            ? decodeAbiParameters(abiItem.inputs, slice(data, 4))\n            : undefined,\n        errorName: abiItem.name,\n    };\n}\n//# sourceMappingURL=decodeErrorResult.js.map","export const stringify = (value, replacer, space) => JSON.stringify(value, (key, value_) => {\n    const value = typeof value_ === 'bigint' ? value_.toString() : value_;\n    return typeof replacer === 'function' ? replacer(key, value) : value;\n}, space);\n//# sourceMappingURL=stringify.js.map","import { stringify } from '../stringify.js';\nexport function formatAbiItemWithArgs({ abiItem, args, includeFunctionName = true, includeName = false, }) {\n    if (!('name' in abiItem))\n        return;\n    if (!('inputs' in abiItem))\n        return;\n    if (!abiItem.inputs)\n        return;\n    return `${includeFunctionName ? abiItem.name : ''}(${abiItem.inputs\n        .map((input, i) => `${includeName && input.name ? `${input.name}: ` : ''}${typeof args[i] === 'object' ? stringify(args[i]) : args[i]}`)\n        .join(', ')})`;\n}\n//# sourceMappingURL=formatAbiItemWithArgs.js.map","import { toSignatureHash, } from './toSignatureHash.js';\n/**\n * Returns the event selector for a given event definition.\n *\n * @example\n * const selector = toEventSelector('Transfer(address indexed from, address indexed to, uint256 amount)')\n * // 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\n */\nexport const toEventSelector = toSignatureHash;\n//# sourceMappingURL=toEventSelector.js.map","import { AbiItemAmbiguityError, } from '../../errors/abi.js';\nimport { isHex } from '../../utils/data/isHex.js';\nimport { isAddress } from '../address/isAddress.js';\nimport { toEventSelector } from '../hash/toEventSelector.js';\nimport { toFunctionSelector, } from '../hash/toFunctionSelector.js';\nexport function getAbiItem(parameters) {\n    const { abi, args = [], name } = parameters;\n    const isSelector = isHex(name, { strict: false });\n    const abiItems = abi.filter((abiItem) => {\n        if (isSelector) {\n            if (abiItem.type === 'function')\n                return toFunctionSelector(abiItem) === name;\n            if (abiItem.type === 'event')\n                return toEventSelector(abiItem) === name;\n            return false;\n        }\n        return 'name' in abiItem && abiItem.name === name;\n    });\n    if (abiItems.length === 0)\n        return undefined;\n    if (abiItems.length === 1)\n        return abiItems[0];\n    let matchedAbiItem = undefined;\n    for (const abiItem of abiItems) {\n        if (!('inputs' in abiItem))\n            continue;\n        if (!args || args.length === 0) {\n            if (!abiItem.inputs || abiItem.inputs.length === 0)\n                return abiItem;\n            continue;\n        }\n        if (!abiItem.inputs)\n            continue;\n        if (abiItem.inputs.length === 0)\n            continue;\n        if (abiItem.inputs.length !== args.length)\n            continue;\n        const matched = args.every((arg, index) => {\n            const abiParameter = 'inputs' in abiItem && abiItem.inputs[index];\n            if (!abiParameter)\n                return false;\n            return isArgOfType(arg, abiParameter);\n        });\n        if (matched) {\n            // Check for ambiguity against already matched parameters (e.g. `address` vs `bytes20`).\n            if (matchedAbiItem &&\n                'inputs' in matchedAbiItem &&\n                matchedAbiItem.inputs) {\n                const ambiguousTypes = getAmbiguousTypes(abiItem.inputs, matchedAbiItem.inputs, args);\n                if (ambiguousTypes)\n                    throw new AbiItemAmbiguityError({\n                        abiItem,\n                        type: ambiguousTypes[0],\n                    }, {\n                        abiItem: matchedAbiItem,\n                        type: ambiguousTypes[1],\n                    });\n            }\n            matchedAbiItem = abiItem;\n        }\n    }\n    if (matchedAbiItem)\n        return matchedAbiItem;\n    return abiItems[0];\n}\n/** @internal */\nexport function isArgOfType(arg, abiParameter) {\n    const argType = typeof arg;\n    const abiParameterType = abiParameter.type;\n    switch (abiParameterType) {\n        case 'address':\n            return isAddress(arg, { strict: false });\n        case 'bool':\n            return argType === 'boolean';\n        case 'function':\n            return argType === 'string';\n        case 'string':\n            return argType === 'string';\n        default: {\n            if (abiParameterType === 'tuple' && 'components' in abiParameter)\n                return Object.values(abiParameter.components).every((component, index) => {\n                    return isArgOfType(Object.values(arg)[index], component);\n                });\n            // `(u)int<M>`: (un)signed integer type of `M` bits, `0 < M <= 256`, `M % 8 == 0`\n            // https://regexr.com/6v8hp\n            if (/^u?int(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/.test(abiParameterType))\n                return argType === 'number' || argType === 'bigint';\n            // `bytes<M>`: binary type of `M` bytes, `0 < M <= 32`\n            // https://regexr.com/6va55\n            if (/^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/.test(abiParameterType))\n                return argType === 'string' || arg instanceof Uint8Array;\n            // fixed-length (`<type>[M]`) and dynamic (`<type>[]`) arrays\n            // https://regexr.com/6va6i\n            if (/[a-z]+[1-9]{0,3}(\\[[0-9]{0,}\\])+$/.test(abiParameterType)) {\n                return (Array.isArray(arg) &&\n                    arg.every((x) => isArgOfType(x, {\n                        ...abiParameter,\n                        // Pop off `[]` or `[M]` from end of type\n                        type: abiParameterType.replace(/(\\[[0-9]{0,}\\])$/, ''),\n                    })));\n            }\n            return false;\n        }\n    }\n}\n/** @internal */\nexport function getAmbiguousTypes(sourceParameters, targetParameters, args) {\n    for (const parameterIndex in sourceParameters) {\n        const sourceParameter = sourceParameters[parameterIndex];\n        const targetParameter = targetParameters[parameterIndex];\n        if (sourceParameter.type === 'tuple' &&\n            targetParameter.type === 'tuple' &&\n            'components' in sourceParameter &&\n            'components' in targetParameter)\n            return getAmbiguousTypes(sourceParameter.components, targetParameter.components, args[parameterIndex]);\n        const types = [sourceParameter.type, targetParameter.type];\n        const ambiguous = (() => {\n            if (types.includes('address') && types.includes('bytes20'))\n                return true;\n            if (types.includes('address') && types.includes('string'))\n                return isAddress(args[parameterIndex], { strict: false });\n            if (types.includes('address') && types.includes('bytes'))\n                return isAddress(args[parameterIndex], { strict: false });\n            return false;\n        })();\n        if (ambiguous)\n            return types;\n    }\n    return;\n}\n//# sourceMappingURL=getAbiItem.js.map","import { BaseError } from './base.js';\nexport class AccountStateConflictError extends BaseError {\n    constructor({ address }) {\n        super(`State for account \"${address}\" is set multiple times.`, {\n            name: 'AccountStateConflictError',\n        });\n    }\n}\nexport class StateAssignmentConflictError extends BaseError {\n    constructor() {\n        super('state and stateDiff are set on the same account.', {\n            name: 'StateAssignmentConflictError',\n        });\n    }\n}\n/** @internal */\nexport function prettyStateMapping(stateMapping) {\n    return stateMapping.reduce((pretty, { slot, value }) => {\n        return `${pretty}        ${slot}: ${value}\\n`;\n    }, '');\n}\nexport function prettyStateOverride(stateOverride) {\n    return stateOverride\n        .reduce((pretty, { address, ...state }) => {\n        let val = `${pretty}    ${address}:\\n`;\n        if (state.nonce)\n            val += `      nonce: ${state.nonce}\\n`;\n        if (state.balance)\n            val += `      balance: ${state.balance}\\n`;\n        if (state.code)\n            val += `      code: ${state.code}\\n`;\n        if (state.state) {\n            val += '      state:\\n';\n            val += prettyStateMapping(state.state);\n        }\n        if (state.stateDiff) {\n            val += '      stateDiff:\\n';\n            val += prettyStateMapping(state.stateDiff);\n        }\n        return val;\n    }, '  State Override:\\n')\n        .slice(0, -1);\n}\n//# sourceMappingURL=stateOverride.js.map","export const getContractAddress = (address) => address;\nexport const getUrl = (url) => url;\n//# sourceMappingURL=utils.js.map","import { parseAccount } from '../accounts/utils/parseAccount.js';\nimport { panicReasons } from '../constants/solidity.js';\nimport { decodeErrorResult, } from '../utils/abi/decodeErrorResult.js';\nimport { formatAbiItem } from '../utils/abi/formatAbiItem.js';\nimport { formatAbiItemWithArgs } from '../utils/abi/formatAbiItemWithArgs.js';\nimport { getAbiItem } from '../utils/abi/getAbiItem.js';\nimport { formatEther } from '../utils/unit/formatEther.js';\nimport { formatGwei } from '../utils/unit/formatGwei.js';\nimport { AbiErrorSignatureNotFoundError } from './abi.js';\nimport { BaseError } from './base.js';\nimport { prettyStateOverride } from './stateOverride.js';\nimport { prettyPrint } from './transaction.js';\nimport { getContractAddress } from './utils.js';\nexport class CallExecutionError extends BaseError {\n    constructor(cause, { account: account_, docsPath, chain, data, gas, gasPrice, maxFeePerGas, maxPriorityFeePerGas, nonce, to, value, stateOverride, }) {\n        const account = account_ ? parseAccount(account_) : undefined;\n        let prettyArgs = prettyPrint({\n            from: account?.address,\n            to,\n            value: typeof value !== 'undefined' &&\n                `${formatEther(value)} ${chain?.nativeCurrency?.symbol || 'ETH'}`,\n            data,\n            gas,\n            gasPrice: typeof gasPrice !== 'undefined' && `${formatGwei(gasPrice)} gwei`,\n            maxFeePerGas: typeof maxFeePerGas !== 'undefined' &&\n                `${formatGwei(maxFeePerGas)} gwei`,\n            maxPriorityFeePerGas: typeof maxPriorityFeePerGas !== 'undefined' &&\n                `${formatGwei(maxPriorityFeePerGas)} gwei`,\n            nonce,\n        });\n        if (stateOverride) {\n            prettyArgs += `\\n${prettyStateOverride(stateOverride)}`;\n        }\n        super(cause.shortMessage, {\n            cause,\n            docsPath,\n            metaMessages: [\n                ...(cause.metaMessages ? [...cause.metaMessages, ' '] : []),\n                'Raw Call Arguments:',\n                prettyArgs,\n            ].filter(Boolean),\n            name: 'CallExecutionError',\n        });\n        Object.defineProperty(this, \"cause\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        this.cause = cause;\n    }\n}\nexport class ContractFunctionExecutionError extends BaseError {\n    constructor(cause, { abi, args, contractAddress, docsPath, functionName, sender, }) {\n        const abiItem = getAbiItem({ abi, args, name: functionName });\n        const formattedArgs = abiItem\n            ? formatAbiItemWithArgs({\n                abiItem,\n                args,\n                includeFunctionName: false,\n                includeName: false,\n            })\n            : undefined;\n        const functionWithParams = abiItem\n            ? formatAbiItem(abiItem, { includeName: true })\n            : undefined;\n        const prettyArgs = prettyPrint({\n            address: contractAddress && getContractAddress(contractAddress),\n            function: functionWithParams,\n            args: formattedArgs &&\n                formattedArgs !== '()' &&\n                `${[...Array(functionName?.length ?? 0).keys()]\n                    .map(() => ' ')\n                    .join('')}${formattedArgs}`,\n            sender,\n        });\n        super(cause.shortMessage ||\n            `An unknown error occurred while executing the contract function \"${functionName}\".`, {\n            cause,\n            docsPath,\n            metaMessages: [\n                ...(cause.metaMessages ? [...cause.metaMessages, ' '] : []),\n                prettyArgs && 'Contract Call:',\n                prettyArgs,\n            ].filter(Boolean),\n            name: 'ContractFunctionExecutionError',\n        });\n        Object.defineProperty(this, \"abi\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"args\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"cause\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"contractAddress\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"formattedArgs\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"functionName\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"sender\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        this.abi = abi;\n        this.args = args;\n        this.cause = cause;\n        this.contractAddress = contractAddress;\n        this.functionName = functionName;\n        this.sender = sender;\n    }\n}\nexport class ContractFunctionRevertedError extends BaseError {\n    constructor({ abi, data, functionName, message, }) {\n        let cause;\n        let decodedData = undefined;\n        let metaMessages;\n        let reason;\n        if (data && data !== '0x') {\n            try {\n                decodedData = decodeErrorResult({ abi, data });\n                const { abiItem, errorName, args: errorArgs } = decodedData;\n                if (errorName === 'Error') {\n                    reason = errorArgs[0];\n                }\n                else if (errorName === 'Panic') {\n                    const [firstArg] = errorArgs;\n                    reason = panicReasons[firstArg];\n                }\n                else {\n                    const errorWithParams = abiItem\n                        ? formatAbiItem(abiItem, { includeName: true })\n                        : undefined;\n                    const formattedArgs = abiItem && errorArgs\n                        ? formatAbiItemWithArgs({\n                            abiItem,\n                            args: errorArgs,\n                            includeFunctionName: false,\n                            includeName: false,\n                        })\n                        : undefined;\n                    metaMessages = [\n                        errorWithParams ? `Error: ${errorWithParams}` : '',\n                        formattedArgs && formattedArgs !== '()'\n                            ? `       ${[...Array(errorName?.length ?? 0).keys()]\n                                .map(() => ' ')\n                                .join('')}${formattedArgs}`\n                            : '',\n                    ];\n                }\n            }\n            catch (err) {\n                cause = err;\n            }\n        }\n        else if (message)\n            reason = message;\n        let signature;\n        if (cause instanceof AbiErrorSignatureNotFoundError) {\n            signature = cause.signature;\n            metaMessages = [\n                `Unable to decode signature \"${signature}\" as it was not found on the provided ABI.`,\n                'Make sure you are using the correct ABI and that the error exists on it.',\n                `You can look up the decoded signature here: https://openchain.xyz/signatures?query=${signature}.`,\n            ];\n        }\n        super((reason && reason !== 'execution reverted') || signature\n            ? [\n                `The contract function \"${functionName}\" reverted with the following ${signature ? 'signature' : 'reason'}:`,\n                reason || signature,\n            ].join('\\n')\n            : `The contract function \"${functionName}\" reverted.`, {\n            cause,\n            metaMessages,\n            name: 'ContractFunctionRevertedError',\n        });\n        Object.defineProperty(this, \"data\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"raw\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"reason\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"signature\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        this.data = decodedData;\n        this.raw = data;\n        this.reason = reason;\n        this.signature = signature;\n    }\n}\nexport class ContractFunctionZeroDataError extends BaseError {\n    constructor({ functionName }) {\n        super(`The contract function \"${functionName}\" returned no data (\"0x\").`, {\n            metaMessages: [\n                'This could be due to any of the following:',\n                `  - The contract does not have the function \"${functionName}\",`,\n                '  - The parameters passed to the contract function may be invalid, or',\n                '  - The address is not a contract.',\n            ],\n            name: 'ContractFunctionZeroDataError',\n        });\n    }\n}\nexport class CounterfactualDeploymentFailedError extends BaseError {\n    constructor({ factory }) {\n        super(`Deployment for counterfactual contract call failed${factory ? ` for factory \"${factory}\".` : ''}`, {\n            metaMessages: [\n                'Please ensure:',\n                '- The `factory` is a valid contract deployment factory (ie. Create2 Factory, ERC-4337 Factory, etc).',\n                '- The `factoryData` is a valid encoded function call for contract deployment function on the factory.',\n            ],\n            name: 'CounterfactualDeploymentFailedError',\n        });\n    }\n}\nexport class RawContractError extends BaseError {\n    constructor({ data, message, }) {\n        super(message || '', { name: 'RawContractError' });\n        Object.defineProperty(this, \"code\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 3\n        });\n        Object.defineProperty(this, \"data\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        this.data = data;\n    }\n}\n//# sourceMappingURL=contract.js.map","import { stringify } from '../utils/stringify.js';\nimport { BaseError } from './base.js';\nimport { getUrl } from './utils.js';\nexport class HttpRequestError extends BaseError {\n    constructor({ body, cause, details, headers, status, url, }) {\n        super('HTTP request failed.', {\n            cause,\n            details,\n            metaMessages: [\n                status && `Status: ${status}`,\n                `URL: ${getUrl(url)}`,\n                body && `Request body: ${stringify(body)}`,\n            ].filter(Boolean),\n            name: 'HttpRequestError',\n        });\n        Object.defineProperty(this, \"body\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"headers\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"status\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"url\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        this.body = body;\n        this.headers = headers;\n        this.status = status;\n        this.url = url;\n    }\n}\nexport class WebSocketRequestError extends BaseError {\n    constructor({ body, cause, details, url, }) {\n        super('WebSocket request failed.', {\n            cause,\n            details,\n            metaMessages: [\n                `URL: ${getUrl(url)}`,\n                body && `Request body: ${stringify(body)}`,\n            ].filter(Boolean),\n            name: 'WebSocketRequestError',\n        });\n    }\n}\nexport class RpcRequestError extends BaseError {\n    constructor({ body, error, url, }) {\n        super('RPC Request failed.', {\n            cause: error,\n            details: error.message,\n            metaMessages: [`URL: ${getUrl(url)}`, `Request body: ${stringify(body)}`],\n            name: 'RpcRequestError',\n        });\n        Object.defineProperty(this, \"code\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"data\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        this.code = error.code;\n        this.data = error.data;\n    }\n}\nexport class SocketClosedError extends BaseError {\n    constructor({ url, } = {}) {\n        super('The socket has been closed.', {\n            metaMessages: [url && `URL: ${getUrl(url)}`].filter(Boolean),\n            name: 'SocketClosedError',\n        });\n    }\n}\nexport class TimeoutError extends BaseError {\n    constructor({ body, url, }) {\n        super('The request took too long to respond.', {\n            details: 'The request timed out.',\n            metaMessages: [`URL: ${getUrl(url)}`, `Request body: ${stringify(body)}`],\n            name: 'TimeoutError',\n        });\n    }\n}\n//# sourceMappingURL=request.js.map","import { BaseError } from './base.js';\nimport { RpcRequestError } from './request.js';\nconst unknownErrorCode = -1;\nexport class RpcError extends BaseError {\n    constructor(cause, { code, docsPath, metaMessages, name, shortMessage, }) {\n        super(shortMessage, {\n            cause,\n            docsPath,\n            metaMessages: metaMessages || cause?.metaMessages,\n            name: name || 'RpcError',\n        });\n        Object.defineProperty(this, \"code\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        this.name = name || cause.name;\n        this.code = (cause instanceof RpcRequestError ? cause.code : (code ?? unknownErrorCode));\n    }\n}\nexport class ProviderRpcError extends RpcError {\n    constructor(cause, options) {\n        super(cause, options);\n        Object.defineProperty(this, \"data\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        this.data = options.data;\n    }\n}\nexport class ParseRpcError extends RpcError {\n    constructor(cause) {\n        super(cause, {\n            code: ParseRpcError.code,\n            name: 'ParseRpcError',\n            shortMessage: 'Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.',\n        });\n    }\n}\nObject.defineProperty(ParseRpcError, \"code\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: -32700\n});\nexport class InvalidRequestRpcError extends RpcError {\n    constructor(cause) {\n        super(cause, {\n            code: InvalidRequestRpcError.code,\n            name: 'InvalidRequestRpcError',\n            shortMessage: 'JSON is not a valid request object.',\n        });\n    }\n}\nObject.defineProperty(InvalidRequestRpcError, \"code\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: -32600\n});\nexport class MethodNotFoundRpcError extends RpcError {\n    constructor(cause, { method } = {}) {\n        super(cause, {\n            code: MethodNotFoundRpcError.code,\n            name: 'MethodNotFoundRpcError',\n            shortMessage: `The method${method ? ` \"${method}\"` : ''} does not exist / is not available.`,\n        });\n    }\n}\nObject.defineProperty(MethodNotFoundRpcError, \"code\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: -32601\n});\nexport class InvalidParamsRpcError extends RpcError {\n    constructor(cause) {\n        super(cause, {\n            code: InvalidParamsRpcError.code,\n            name: 'InvalidParamsRpcError',\n            shortMessage: [\n                'Invalid parameters were provided to the RPC method.',\n                'Double check you have provided the correct parameters.',\n            ].join('\\n'),\n        });\n    }\n}\nObject.defineProperty(InvalidParamsRpcError, \"code\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: -32602\n});\nexport class InternalRpcError extends RpcError {\n    constructor(cause) {\n        super(cause, {\n            code: InternalRpcError.code,\n            name: 'InternalRpcError',\n            shortMessage: 'An internal error was received.',\n        });\n    }\n}\nObject.defineProperty(InternalRpcError, \"code\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: -32603\n});\nexport class InvalidInputRpcError extends RpcError {\n    constructor(cause) {\n        super(cause, {\n            code: InvalidInputRpcError.code,\n            name: 'InvalidInputRpcError',\n            shortMessage: [\n                'Missing or invalid parameters.',\n                'Double check you have provided the correct parameters.',\n            ].join('\\n'),\n        });\n    }\n}\nObject.defineProperty(InvalidInputRpcError, \"code\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: -32000\n});\nexport class ResourceNotFoundRpcError extends RpcError {\n    constructor(cause) {\n        super(cause, {\n            code: ResourceNotFoundRpcError.code,\n            name: 'ResourceNotFoundRpcError',\n            shortMessage: 'Requested resource not found.',\n        });\n        Object.defineProperty(this, \"name\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 'ResourceNotFoundRpcError'\n        });\n    }\n}\nObject.defineProperty(ResourceNotFoundRpcError, \"code\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: -32001\n});\nexport class ResourceUnavailableRpcError extends RpcError {\n    constructor(cause) {\n        super(cause, {\n            code: ResourceUnavailableRpcError.code,\n            name: 'ResourceUnavailableRpcError',\n            shortMessage: 'Requested resource not available.',\n        });\n    }\n}\nObject.defineProperty(ResourceUnavailableRpcError, \"code\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: -32002\n});\nexport class TransactionRejectedRpcError extends RpcError {\n    constructor(cause) {\n        super(cause, {\n            code: TransactionRejectedRpcError.code,\n            name: 'TransactionRejectedRpcError',\n            shortMessage: 'Transaction creation failed.',\n        });\n    }\n}\nObject.defineProperty(TransactionRejectedRpcError, \"code\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: -32003\n});\nexport class MethodNotSupportedRpcError extends RpcError {\n    constructor(cause, { method } = {}) {\n        super(cause, {\n            code: MethodNotSupportedRpcError.code,\n            name: 'MethodNotSupportedRpcError',\n            shortMessage: `Method${method ? ` \"${method}\"` : ''} is not supported.`,\n        });\n    }\n}\nObject.defineProperty(MethodNotSupportedRpcError, \"code\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: -32004\n});\nexport class LimitExceededRpcError extends RpcError {\n    constructor(cause) {\n        super(cause, {\n            code: LimitExceededRpcError.code,\n            name: 'LimitExceededRpcError',\n            shortMessage: 'Request exceeds defined limit.',\n        });\n    }\n}\nObject.defineProperty(LimitExceededRpcError, \"code\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: -32005\n});\nexport class JsonRpcVersionUnsupportedError extends RpcError {\n    constructor(cause) {\n        super(cause, {\n            code: JsonRpcVersionUnsupportedError.code,\n            name: 'JsonRpcVersionUnsupportedError',\n            shortMessage: 'Version of JSON-RPC protocol is not supported.',\n        });\n    }\n}\nObject.defineProperty(JsonRpcVersionUnsupportedError, \"code\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: -32006\n});\nexport class UserRejectedRequestError extends ProviderRpcError {\n    constructor(cause) {\n        super(cause, {\n            code: UserRejectedRequestError.code,\n            name: 'UserRejectedRequestError',\n            shortMessage: 'User rejected the request.',\n        });\n    }\n}\nObject.defineProperty(UserRejectedRequestError, \"code\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: 4001\n});\nexport class UnauthorizedProviderError extends ProviderRpcError {\n    constructor(cause) {\n        super(cause, {\n            code: UnauthorizedProviderError.code,\n            name: 'UnauthorizedProviderError',\n            shortMessage: 'The requested method and/or account has not been authorized by the user.',\n        });\n    }\n}\nObject.defineProperty(UnauthorizedProviderError, \"code\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: 4100\n});\nexport class UnsupportedProviderMethodError extends ProviderRpcError {\n    constructor(cause, { method } = {}) {\n        super(cause, {\n            code: UnsupportedProviderMethodError.code,\n            name: 'UnsupportedProviderMethodError',\n            shortMessage: `The Provider does not support the requested method${method ? ` \" ${method}\"` : ''}.`,\n        });\n    }\n}\nObject.defineProperty(UnsupportedProviderMethodError, \"code\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: 4200\n});\nexport class ProviderDisconnectedError extends ProviderRpcError {\n    constructor(cause) {\n        super(cause, {\n            code: ProviderDisconnectedError.code,\n            name: 'ProviderDisconnectedError',\n            shortMessage: 'The Provider is disconnected from all chains.',\n        });\n    }\n}\nObject.defineProperty(ProviderDisconnectedError, \"code\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: 4900\n});\nexport class ChainDisconnectedError extends ProviderRpcError {\n    constructor(cause) {\n        super(cause, {\n            code: ChainDisconnectedError.code,\n            name: 'ChainDisconnectedError',\n            shortMessage: 'The Provider is not connected to the requested chain.',\n        });\n    }\n}\nObject.defineProperty(ChainDisconnectedError, \"code\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: 4901\n});\nexport class SwitchChainError extends ProviderRpcError {\n    constructor(cause) {\n        super(cause, {\n            code: SwitchChainError.code,\n            name: 'SwitchChainError',\n            shortMessage: 'An error occurred when attempting to switch chain.',\n        });\n    }\n}\nObject.defineProperty(SwitchChainError, \"code\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: 4902\n});\nexport class UnsupportedNonOptionalCapabilityError extends ProviderRpcError {\n    constructor(cause) {\n        super(cause, {\n            code: UnsupportedNonOptionalCapabilityError.code,\n            name: 'UnsupportedNonOptionalCapabilityError',\n            shortMessage: 'This Wallet does not support a capability that was not marked as optional.',\n        });\n    }\n}\nObject.defineProperty(UnsupportedNonOptionalCapabilityError, \"code\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: 5700\n});\nexport class UnsupportedChainIdError extends ProviderRpcError {\n    constructor(cause) {\n        super(cause, {\n            code: UnsupportedChainIdError.code,\n            name: 'UnsupportedChainIdError',\n            shortMessage: 'This Wallet does not support the requested chain ID.',\n        });\n    }\n}\nObject.defineProperty(UnsupportedChainIdError, \"code\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: 5710\n});\nexport class DuplicateIdError extends ProviderRpcError {\n    constructor(cause) {\n        super(cause, {\n            code: DuplicateIdError.code,\n            name: 'DuplicateIdError',\n            shortMessage: 'There is already a bundle submitted with this ID.',\n        });\n    }\n}\nObject.defineProperty(DuplicateIdError, \"code\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: 5720\n});\nexport class UnknownBundleIdError extends ProviderRpcError {\n    constructor(cause) {\n        super(cause, {\n            code: UnknownBundleIdError.code,\n            name: 'UnknownBundleIdError',\n            shortMessage: 'This bundle id is unknown / has not been submitted',\n        });\n    }\n}\nObject.defineProperty(UnknownBundleIdError, \"code\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: 5730\n});\nexport class BundleTooLargeError extends ProviderRpcError {\n    constructor(cause) {\n        super(cause, {\n            code: BundleTooLargeError.code,\n            name: 'BundleTooLargeError',\n            shortMessage: 'The call bundle is too large for the Wallet to process.',\n        });\n    }\n}\nObject.defineProperty(BundleTooLargeError, \"code\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: 5740\n});\nexport class AtomicReadyWalletRejectedUpgradeError extends ProviderRpcError {\n    constructor(cause) {\n        super(cause, {\n            code: AtomicReadyWalletRejectedUpgradeError.code,\n            name: 'AtomicReadyWalletRejectedUpgradeError',\n            shortMessage: 'The Wallet can support atomicity after an upgrade, but the user rejected the upgrade.',\n        });\n    }\n}\nObject.defineProperty(AtomicReadyWalletRejectedUpgradeError, \"code\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: 5750\n});\nexport class AtomicityNotSupportedError extends ProviderRpcError {\n    constructor(cause) {\n        super(cause, {\n            code: AtomicityNotSupportedError.code,\n            name: 'AtomicityNotSupportedError',\n            shortMessage: 'The wallet does not support atomic execution but the request requires it.',\n        });\n    }\n}\nObject.defineProperty(AtomicityNotSupportedError, \"code\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: 5760\n});\nexport class UnknownRpcError extends RpcError {\n    constructor(cause) {\n        super(cause, {\n            name: 'UnknownRpcError',\n            shortMessage: 'An unknown RPC error occurred.',\n        });\n    }\n}\n//# sourceMappingURL=rpc.js.map","import { BaseError } from '../../errors/base.js';\nimport { ExecutionRevertedError, FeeCapTooHighError, FeeCapTooLowError, InsufficientFundsError, IntrinsicGasTooHighError, IntrinsicGasTooLowError, NonceMaxValueError, NonceTooHighError, NonceTooLowError, TipAboveFeeCapError, TransactionTypeNotSupportedError, UnknownNodeError, } from '../../errors/node.js';\nimport { RpcRequestError } from '../../errors/request.js';\nimport { InvalidInputRpcError, TransactionRejectedRpcError, } from '../../errors/rpc.js';\nexport function containsNodeError(err) {\n    return (err instanceof TransactionRejectedRpcError ||\n        err instanceof InvalidInputRpcError ||\n        (err instanceof RpcRequestError && err.code === ExecutionRevertedError.code));\n}\nexport function getNodeError(err, args) {\n    const message = (err.details || '').toLowerCase();\n    const executionRevertedError = err instanceof BaseError\n        ? err.walk((e) => e?.code ===\n            ExecutionRevertedError.code)\n        : err;\n    if (executionRevertedError instanceof BaseError)\n        return new ExecutionRevertedError({\n            cause: err,\n            message: executionRevertedError.details,\n        });\n    if (ExecutionRevertedError.nodeMessage.test(message))\n        return new ExecutionRevertedError({\n            cause: err,\n            message: err.details,\n        });\n    if (FeeCapTooHighError.nodeMessage.test(message))\n        return new FeeCapTooHighError({\n            cause: err,\n            maxFeePerGas: args?.maxFeePerGas,\n        });\n    if (FeeCapTooLowError.nodeMessage.test(message))\n        return new FeeCapTooLowError({\n            cause: err,\n            maxFeePerGas: args?.maxFeePerGas,\n        });\n    if (NonceTooHighError.nodeMessage.test(message))\n        return new NonceTooHighError({ cause: err, nonce: args?.nonce });\n    if (NonceTooLowError.nodeMessage.test(message))\n        return new NonceTooLowError({ cause: err, nonce: args?.nonce });\n    if (NonceMaxValueError.nodeMessage.test(message))\n        return new NonceMaxValueError({ cause: err, nonce: args?.nonce });\n    if (InsufficientFundsError.nodeMessage.test(message))\n        return new InsufficientFundsError({ cause: err });\n    if (IntrinsicGasTooHighError.nodeMessage.test(message))\n        return new IntrinsicGasTooHighError({ cause: err, gas: args?.gas });\n    if (IntrinsicGasTooLowError.nodeMessage.test(message))\n        return new IntrinsicGasTooLowError({ cause: err, gas: args?.gas });\n    if (TransactionTypeNotSupportedError.nodeMessage.test(message))\n        return new TransactionTypeNotSupportedError({ cause: err });\n    if (TipAboveFeeCapError.nodeMessage.test(message))\n        return new TipAboveFeeCapError({\n            cause: err,\n            maxFeePerGas: args?.maxFeePerGas,\n            maxPriorityFeePerGas: args?.maxPriorityFeePerGas,\n        });\n    return new UnknownNodeError({\n        cause: err,\n    });\n}\n//# sourceMappingURL=getNodeError.js.map","import { CallExecutionError, } from '../../errors/contract.js';\nimport { UnknownNodeError } from '../../errors/node.js';\nimport { getNodeError, } from './getNodeError.js';\nexport function getCallError(err, { docsPath, ...args }) {\n    const cause = (() => {\n        const cause = getNodeError(err, args);\n        if (cause instanceof UnknownNodeError)\n            return err;\n        return cause;\n    })();\n    return new CallExecutionError(cause, {\n        docsPath,\n        ...args,\n    });\n}\n//# sourceMappingURL=getCallError.js.map","/**\n * @description Picks out the keys from `value` that exist in the formatter..\n */\nexport function extract(value_, { format }) {\n    if (!format)\n        return {};\n    const value = {};\n    function extract_(formatted) {\n        const keys = Object.keys(formatted);\n        for (const key of keys) {\n            if (key in value_)\n                value[key] = value_[key];\n            if (formatted[key] &&\n                typeof formatted[key] === 'object' &&\n                !Array.isArray(formatted[key]))\n                extract_(formatted[key]);\n        }\n    }\n    const formatted = format(value_ || {});\n    extract_(formatted);\n    return value;\n}\n//# sourceMappingURL=extract.js.map","import { parseAccount, } from '../../accounts/utils/parseAccount.js';\nimport { maxUint256 } from '../../constants/number.js';\nimport { InvalidAddressError, } from '../../errors/address.js';\nimport { FeeCapTooHighError, TipAboveFeeCapError, } from '../../errors/node.js';\nimport { FeeConflictError, } from '../../errors/transaction.js';\nimport { isAddress } from '../address/isAddress.js';\nexport function assertRequest(args) {\n    const { account: account_, gasPrice, maxFeePerGas, maxPriorityFeePerGas, to, } = args;\n    const account = account_ ? parseAccount(account_) : undefined;\n    if (account && !isAddress(account.address))\n        throw new InvalidAddressError({ address: account.address });\n    if (to && !isAddress(to))\n        throw new InvalidAddressError({ address: to });\n    if (typeof gasPrice !== 'undefined' &&\n        (typeof maxFeePerGas !== 'undefined' ||\n            typeof maxPriorityFeePerGas !== 'undefined'))\n        throw new FeeConflictError();\n    if (maxFeePerGas && maxFeePerGas > maxUint256)\n        throw new FeeCapTooHighError({ maxFeePerGas });\n    if (maxPriorityFeePerGas &&\n        maxFeePerGas &&\n        maxPriorityFeePerGas > maxFeePerGas)\n        throw new TipAboveFeeCapError({ maxFeePerGas, maxPriorityFeePerGas });\n}\n//# sourceMappingURL=assertRequest.js.map","import { parseAccount } from '../../accounts/utils/parseAccount.js';\nimport { AccountNotFoundError } from '../../errors/account.js';\nimport { numberToHex } from '../../utils/encoding/toHex.js';\nimport { getCallError } from '../../utils/errors/getCallError.js';\nimport { extract } from '../../utils/formatters/extract.js';\nimport { formatTransactionRequest } from '../../utils/formatters/transactionRequest.js';\nimport { assertRequest, } from '../../utils/transaction/assertRequest.js';\n/**\n * Estimates the gas and fees per gas necessary to complete a transaction without submitting it to the network.\n *\n * @param client - Client to use\n * @param parameters - {@link EstimateGasParameters}\n * @returns A gas estimate and fees per gas (in wei). {@link EstimateGasReturnType}\n *\n * @example\n * import { createPublicClient, http, parseEther } from 'viem'\n * import { linea } from 'viem/chains'\n * import { estimateGas } from 'viem/linea'\n *\n * const client = createPublicClient({\n *   chain: linea,\n *   transport: http(),\n * })\n * const gasEstimate = await estimateGas(client, {\n *   account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n *   to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',\n *   value: 0n,\n * })\n */\nexport async function estimateGas(client, args) {\n    const { account: account_ = client.account } = args;\n    if (!account_)\n        throw new AccountNotFoundError();\n    const account = parseAccount(account_);\n    try {\n        const { accessList, blockNumber, blockTag, data, gas, gasPrice, maxFeePerGas, maxPriorityFeePerGas, nonce, to, value, ...rest } = args;\n        const blockNumberHex = typeof blockNumber === 'bigint' ? numberToHex(blockNumber) : undefined;\n        const block = blockNumberHex || blockTag;\n        assertRequest(args);\n        const chainFormat = client.chain?.formatters?.transactionRequest?.format;\n        const format = chainFormat || formatTransactionRequest;\n        const request = format({\n            // Pick out extra data that might exist on the chain's transaction request type.\n            ...extract(rest, { format: chainFormat }),\n            from: account?.address,\n            accessList,\n            data,\n            gas,\n            gasPrice,\n            maxFeePerGas,\n            maxPriorityFeePerGas,\n            nonce,\n            to,\n            value,\n        });\n        const { baseFeePerGas, gasLimit, priorityFeePerGas } = await client.request({\n            method: 'linea_estimateGas',\n            params: block ? [request, block] : [request],\n        });\n        return {\n            baseFeePerGas: BigInt(baseFeePerGas),\n            gasLimit: BigInt(gasLimit),\n            priorityFeePerGas: BigInt(priorityFeePerGas),\n        };\n    }\n    catch (err) {\n        throw getCallError(err, {\n            ...args,\n            account,\n            chain: client.chain,\n        });\n    }\n}\n//# sourceMappingURL=estimateGas.js.map","import { estimateGas } from './actions/estimateGas.js';\nexport const chainConfig = {\n    fees: {\n        estimateFeesPerGas,\n        async maxPriorityFeePerGas({ block, client, request }) {\n            const response = await estimateFeesPerGas({\n                block,\n                client,\n                multiply: (x) => x,\n                request,\n                type: 'eip1559',\n            });\n            // Returning `null` will trigger the base `estimateMaxPriorityFeePerGas` to perform\n            // fallback mechanisms to estimate priority fee.\n            if (!response?.maxPriorityFeePerGas)\n                return null;\n            return response.maxPriorityFeePerGas;\n        },\n    },\n};\n///////////////////////////////////////////////////////////////////////////\n// Internal\n///////////////////////////////////////////////////////////////////////////\nasync function estimateFeesPerGas({ client, multiply, request, type, }) {\n    try {\n        const response = await estimateGas(client, {\n            ...request,\n            account: request?.account,\n        });\n        const { priorityFeePerGas: maxPriorityFeePerGas } = response;\n        const baseFeePerGas = multiply(BigInt(response.baseFeePerGas));\n        const maxFeePerGas = baseFeePerGas + maxPriorityFeePerGas;\n        if (type === 'legacy')\n            return { gasPrice: maxFeePerGas };\n        return {\n            maxFeePerGas,\n            maxPriorityFeePerGas,\n        };\n    }\n    catch {\n        // Returning `null` will trigger the base `estimateFeesPerGas` to perform\n        // fallback mechanisms to estimate fees.\n        return null;\n    }\n}\n//# sourceMappingURL=chainConfig.js.map","import { chainConfig } from '../../linea/chainConfig.js';\nimport { defineChain } from '../../utils/chain/defineChain.js';\nexport const linea = /*#__PURE__*/ defineChain({\n    ...chainConfig,\n    id: 59_144,\n    name: 'Linea Mainnet',\n    nativeCurrency: { name: 'Linea Ether', symbol: 'ETH', decimals: 18 },\n    rpcUrls: {\n        default: {\n            http: ['https://rpc.linea.build'],\n            webSocket: ['wss://rpc.linea.build'],\n        },\n    },\n    blockExplorers: {\n        default: {\n            name: 'Etherscan',\n            url: 'https://lineascan.build',\n            apiUrl: 'https://api.lineascan.build/api',\n        },\n    },\n    contracts: {\n        multicall3: {\n            address: '0xcA11bde05977b3631167028862bE2a173976CA11',\n            blockCreated: 42,\n        },\n        ensRegistry: {\n            address: '0x50130b669B28C339991d8676FA73CF122a121267',\n            blockCreated: 6682888,\n        },\n        ensUniversalResolver: {\n            address: '0x3aA974fb3f8C1E02796048BDCdeD79e9D53a6965',\n            blockCreated: 6683000,\n        },\n    },\n    ensTlds: ['.linea.eth'],\n    testnet: false,\n});\n//# sourceMappingURL=linea.js.map","import { defineChain } from '../../utils/chain/defineChain.js';\nexport const mainnet = /*#__PURE__*/ defineChain({\n    id: 1,\n    name: 'Ethereum',\n    nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },\n    rpcUrls: {\n        default: {\n            http: ['https://eth.merkle.io'],\n        },\n    },\n    blockExplorers: {\n        default: {\n            name: 'Etherscan',\n            url: 'https://etherscan.io',\n            apiUrl: 'https://api.etherscan.io/api',\n        },\n    },\n    contracts: {\n        ensRegistry: {\n            address: '0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e',\n        },\n        ensUniversalResolver: {\n            address: '0xce01f8eee7E479C928F8919abD53E553a36CeF67',\n            blockCreated: 19_258_213,\n        },\n        multicall3: {\n            address: '0xca11bde05977b3631167028862be2a173976ca11',\n            blockCreated: 14_353_601,\n        },\n    },\n});\n//# sourceMappingURL=mainnet.js.map","import { chainConfig } from '../../op-stack/chainConfig.js';\nimport { defineChain } from '../../utils/chain/defineChain.js';\nconst sourceId = 1; // mainnet\nexport const optimism = /*#__PURE__*/ defineChain({\n    ...chainConfig,\n    id: 10,\n    name: 'OP Mainnet',\n    nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },\n    rpcUrls: {\n        default: {\n            http: ['https://mainnet.optimism.io'],\n        },\n    },\n    blockExplorers: {\n        default: {\n            name: 'Optimism Explorer',\n            url: 'https://optimistic.etherscan.io',\n            apiUrl: 'https://api-optimistic.etherscan.io/api',\n        },\n    },\n    contracts: {\n        ...chainConfig.contracts,\n        disputeGameFactory: {\n            [sourceId]: {\n                address: '0xe5965Ab5962eDc7477C8520243A95517CD252fA9',\n            },\n        },\n        l2OutputOracle: {\n            [sourceId]: {\n                address: '0xdfe97868233d1aa22e815a266982f2cf17685a27',\n            },\n        },\n        multicall3: {\n            address: '0xca11bde05977b3631167028862be2a173976ca11',\n            blockCreated: 4286263,\n        },\n        portal: {\n            [sourceId]: {\n                address: '0xbEb5Fc579115071764c7423A4f12eDde41f106Ed',\n            },\n        },\n        l1StandardBridge: {\n            [sourceId]: {\n                address: '0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1',\n            },\n        },\n    },\n    sourceId,\n});\n//# sourceMappingURL=optimism.js.map","import { defineChain } from '../../utils/chain/defineChain.js';\nexport const polygon = /*#__PURE__*/ defineChain({\n    id: 137,\n    name: 'Polygon',\n    nativeCurrency: { name: 'POL', symbol: 'POL', decimals: 18 },\n    rpcUrls: {\n        default: {\n            http: ['https://polygon-rpc.com'],\n        },\n    },\n    blockExplorers: {\n        default: {\n            name: 'PolygonScan',\n            url: 'https://polygonscan.com',\n            apiUrl: 'https://api.polygonscan.com/api',\n        },\n    },\n    contracts: {\n        multicall3: {\n            address: '0xca11bde05977b3631167028862be2a173976ca11',\n            blockCreated: 25770160,\n        },\n    },\n});\n//# sourceMappingURL=polygon.js.map","\"use client\";\n\nimport { getDefaultConfig } from \"@rainbow-me/rainbowkit\";\nimport { arbitrum, base, bsc, mainnet, optimism, polygon } from \"wagmi/chains\";\n\nexport const config = getDefaultConfig({\n  appName: \"RainbowKit App\",\n  projectId: \"YOUR_PROJECT_ID\",\n  chains: [arbitrum, base, bsc, mainnet, optimism, polygon],\n  ssr: true,\n});","/**\n * @module constants\n * @summary Useful constants\n * @description\n * Collection of useful date constants.\n *\n * The constants could be imported from `date-fns/constants`:\n *\n * ```ts\n * import { maxTime, minTime } from \"./constants/date-fns/constants\";\n *\n * function isAllowedTime(time) {\n *   return time <= maxTime && time >= minTime;\n * }\n * ```\n */\n\n/**\n * @constant\n * @name daysInWeek\n * @summary Days in 1 week.\n */\nexport const daysInWeek = 7;\n\n/**\n * @constant\n * @name daysInYear\n * @summary Days in 1 year.\n *\n * @description\n * How many days in a year.\n *\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occurs every 4 years, except for years that are divisible by 100 and not divisible by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n */\nexport const daysInYear = 365.2425;\n\n/**\n * @constant\n * @name maxTime\n * @summary Maximum allowed time.\n *\n * @example\n * import { maxTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = 8640000000000001 <= maxTime;\n * //=> false\n *\n * new Date(8640000000000001);\n * //=> Invalid Date\n */\nexport const maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * @constant\n * @name minTime\n * @summary Minimum allowed time.\n *\n * @example\n * import { minTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = -8640000000000001 >= minTime;\n * //=> false\n *\n * new Date(-8640000000000001)\n * //=> Invalid Date\n */\nexport const minTime = -maxTime;\n\n/**\n * @constant\n * @name millisecondsInWeek\n * @summary Milliseconds in 1 week.\n */\nexport const millisecondsInWeek = 604800000;\n\n/**\n * @constant\n * @name millisecondsInDay\n * @summary Milliseconds in 1 day.\n */\nexport const millisecondsInDay = 86400000;\n\n/**\n * @constant\n * @name millisecondsInMinute\n * @summary Milliseconds in 1 minute\n */\nexport const millisecondsInMinute = 60000;\n\n/**\n * @constant\n * @name millisecondsInHour\n * @summary Milliseconds in 1 hour\n */\nexport const millisecondsInHour = 3600000;\n\n/**\n * @constant\n * @name millisecondsInSecond\n * @summary Milliseconds in 1 second\n */\nexport const millisecondsInSecond = 1000;\n\n/**\n * @constant\n * @name minutesInYear\n * @summary Minutes in 1 year.\n */\nexport const minutesInYear = 525600;\n\n/**\n * @constant\n * @name minutesInMonth\n * @summary Minutes in 1 month.\n */\nexport const minutesInMonth = 43200;\n\n/**\n * @constant\n * @name minutesInDay\n * @summary Minutes in 1 day.\n */\nexport const minutesInDay = 1440;\n\n/**\n * @constant\n * @name minutesInHour\n * @summary Minutes in 1 hour.\n */\nexport const minutesInHour = 60;\n\n/**\n * @constant\n * @name monthsInQuarter\n * @summary Months in 1 quarter.\n */\nexport const monthsInQuarter = 3;\n\n/**\n * @constant\n * @name monthsInYear\n * @summary Months in 1 year.\n */\nexport const monthsInYear = 12;\n\n/**\n * @constant\n * @name quartersInYear\n * @summary Quarters in 1 year\n */\nexport const quartersInYear = 4;\n\n/**\n * @constant\n * @name secondsInHour\n * @summary Seconds in 1 hour.\n */\nexport const secondsInHour = 3600;\n\n/**\n * @constant\n * @name secondsInMinute\n * @summary Seconds in 1 minute.\n */\nexport const secondsInMinute = 60;\n\n/**\n * @constant\n * @name secondsInDay\n * @summary Seconds in 1 day.\n */\nexport const secondsInDay = secondsInHour * 24;\n\n/**\n * @constant\n * @name secondsInWeek\n * @summary Seconds in 1 week.\n */\nexport const secondsInWeek = secondsInDay * 7;\n\n/**\n * @constant\n * @name secondsInYear\n * @summary Seconds in 1 year.\n */\nexport const secondsInYear = secondsInDay * daysInYear;\n\n/**\n * @constant\n * @name secondsInMonth\n * @summary Seconds in 1 month\n */\nexport const secondsInMonth = secondsInYear / 12;\n\n/**\n * @constant\n * @name secondsInQuarter\n * @summary Seconds in 1 quarter.\n */\nexport const secondsInQuarter = secondsInMonth * 3;\n\n/**\n * @constant\n * @name constructFromSymbol\n * @summary Symbol enabling Date extensions to inherit properties from the reference date.\n *\n * The symbol is used to enable the `constructFrom` function to construct a date\n * using a reference date and a value. It allows to transfer extra properties\n * from the reference date to the new date. It's useful for extensions like\n * [`TZDate`](https://github.com/date-fns/tz) that accept a time zone as\n * a constructor argument.\n */\nexport const constructFromSymbol = Symbol.for(\"constructDateFrom\");\n","import { constructFromSymbol } from \"./constants.js\";\n\n/**\n * @name constructFrom\n * @category Generic Helpers\n * @summary Constructs a date using the reference date and the value\n *\n * @description\n * The function constructs a new date using the constructor from the reference\n * date and the given value. It helps to build generic functions that accept\n * date extensions.\n *\n * It defaults to `Date` if the passed reference date is a number or a string.\n *\n * Starting from v3.7.0, it allows to construct a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The reference date to take constructor from\n * @param value - The value to create the date\n *\n * @returns Date initialized using the given date and value\n *\n * @example\n * import { constructFrom } from \"./constructFrom/date-fns\";\n *\n * // A function that clones a date preserving the original type\n * function cloneDate<DateType extends Date>(date: DateType): DateType {\n *   return constructFrom(\n *     date, // Use constructor from the given date\n *     date.getTime() // Use the date value to create a new date\n *   );\n * }\n */\nexport function constructFrom(date, value) {\n  if (typeof date === \"function\") return date(value);\n\n  if (date && typeof date === \"object\" && constructFromSymbol in date)\n    return date[constructFromSymbol](value);\n\n  if (date instanceof Date) return new date.constructor(value);\n\n  return new Date(value);\n}\n\n// Fallback for modularized imports:\nexport default constructFrom;\n","import { constructFrom } from \"./constructFrom.js\";\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * Starting from v3.7.0, it clones a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param argument - The value to convert\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport function toDate(argument, context) {\n  // [TODO] Get rid of `toDate` or `constructFrom`?\n  return constructFrom(context || argument, argument);\n}\n\n// Fallback for modularized imports:\nexport default toDate;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link addDays} function options.\n */\n\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of days to be added.\n * @param options - An object with options\n *\n * @returns The new date with the days added\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nexport function addDays(date, amount, options) {\n  const _date = toDate(date, options?.in);\n  if (isNaN(amount)) return constructFrom(options?.in || date, NaN);\n\n  // If 0 days, no-op to avoid changing times in the hour before end of DST\n  if (!amount) return _date;\n\n  _date.setDate(_date.getDate() + amount);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default addDays;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link addMonths} function options.\n */\n\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of months to be added.\n * @param options - The options object\n *\n * @returns The new date with the months added\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n *\n * // Add one month to 30 January 2023:\n * const result = addMonths(new Date(2023, 0, 30), 1)\n * //=> Tue Feb 28 2023 00:00:00\n */\nexport function addMonths(date, amount, options) {\n  const _date = toDate(date, options?.in);\n  if (isNaN(amount)) return constructFrom(options?.in || date, NaN);\n  if (!amount) {\n    // If 0 months, no-op to avoid changing times in the hour before end of DST\n    return _date;\n  }\n  const dayOfMonth = _date.getDate();\n\n  // The JS Date object supports date math by accepting out-of-bounds values for\n  // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n  // new Date(2020, 13, 1) returns 1 Feb 2021.  This is *almost* the behavior we\n  // want except that dates will wrap around the end of a month, meaning that\n  // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n  // we'll default to the end of the desired month by adding 1 to the desired\n  // month and using a date of 0 to back up one day to the end of the desired\n  // month.\n  const endOfDesiredMonth = constructFrom(options?.in || date, _date.getTime());\n  endOfDesiredMonth.setMonth(_date.getMonth() + amount + 1, 0);\n  const daysInMonth = endOfDesiredMonth.getDate();\n  if (dayOfMonth >= daysInMonth) {\n    // If we're already at the end of the month, then this is the correct date\n    // and we're done.\n    return endOfDesiredMonth;\n  } else {\n    // Otherwise, we now know that setting the original day-of-month value won't\n    // cause an overflow, so set the desired day-of-month. Note that we can't\n    // just set the date of `endOfDesiredMonth` because that object may have had\n    // its time changed in the unusual case where where a DST transition was on\n    // the last day of the month and its local time was in the hour skipped or\n    // repeated next to a DST transition.  So we use `date` instead which is\n    // guaranteed to still have the original time.\n    _date.setFullYear(\n      endOfDesiredMonth.getFullYear(),\n      endOfDesiredMonth.getMonth(),\n      dayOfMonth,\n    );\n    return _date;\n  }\n}\n\n// Fallback for modularized imports:\nexport default addMonths;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link addMilliseconds} function options.\n */\n\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of milliseconds to be added.\n * @param options - The options object\n *\n * @returns The new date with the milliseconds added\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nexport function addMilliseconds(date, amount, options) {\n  return constructFrom(options?.in || date, +toDate(date) + amount);\n}\n\n// Fallback for modularized imports:\nexport default addMilliseconds;\n","import { addMilliseconds } from \"./addMilliseconds.js\";\nimport { millisecondsInHour } from \"./constants.js\";\n\n/**\n * The {@link addHours} function options.\n */\n\n/**\n * @name addHours\n * @category Hour Helpers\n * @summary Add the specified number of hours to the given date.\n *\n * @description\n * Add the specified number of hours to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of hours to be added\n * @param options - An object with options\n *\n * @returns The new date with the hours added\n *\n * @example\n * // Add 2 hours to 10 July 2014 23:00:00:\n * const result = addHours(new Date(2014, 6, 10, 23, 0), 2)\n * //=> Fri Jul 11 2014 01:00:00\n */\nexport function addHours(date, amount, options) {\n  return addMilliseconds(date, amount * millisecondsInHour, options);\n}\n\n// Fallback for modularized imports:\nexport default addHours;\n","let defaultOptions = {};\n\nexport function getDefaultOptions() {\n  return defaultOptions;\n}\n\nexport function setDefaultOptions(newOptions) {\n  defaultOptions = newOptions;\n}\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfWeek} function options.\n */\n\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfWeek(date, options) {\n  const defaultOptions = getDefaultOptions();\n  const weekStartsOn =\n    options?.weekStartsOn ??\n    options?.locale?.options?.weekStartsOn ??\n    defaultOptions.weekStartsOn ??\n    defaultOptions.locale?.options?.weekStartsOn ??\n    0;\n\n  const _date = toDate(date, options?.in);\n  const day = _date.getDay();\n  const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n\n  _date.setDate(_date.getDate() - diff);\n  _date.setHours(0, 0, 0, 0);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeek;\n","import { startOfWeek } from \"./startOfWeek.js\";\n\n/**\n * The {@link startOfISOWeek} function options.\n */\n\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of an ISO week\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * const result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfISOWeek(date, options) {\n  return startOfWeek(date, { ...options, weekStartsOn: 1 });\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeek;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getISOWeekYear} function options.\n */\n\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param date - The given date\n *\n * @returns The ISO week-numbering year\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * const result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nexport function getISOWeekYear(date, options) {\n  const _date = toDate(date, options?.in);\n  const year = _date.getFullYear();\n\n  const fourthOfJanuaryOfNextYear = constructFrom(_date, 0);\n  fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n  fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n  const startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n\n  const fourthOfJanuaryOfThisYear = constructFrom(_date, 0);\n  fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n  fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n  const startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n\n  if (_date.getTime() >= startOfNextYear.getTime()) {\n    return year + 1;\n  } else if (_date.getTime() >= startOfThisYear.getTime()) {\n    return year;\n  } else {\n    return year - 1;\n  }\n}\n\n// Fallback for modularized imports:\nexport default getISOWeekYear;\n","import { toDate } from \"../toDate.js\";\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport function getTimezoneOffsetInMilliseconds(date) {\n  const _date = toDate(date);\n  const utcDate = new Date(\n    Date.UTC(\n      _date.getFullYear(),\n      _date.getMonth(),\n      _date.getDate(),\n      _date.getHours(),\n      _date.getMinutes(),\n      _date.getSeconds(),\n      _date.getMilliseconds(),\n    ),\n  );\n  utcDate.setUTCFullYear(_date.getFullYear());\n  return +date - +utcDate;\n}\n","import { constructFrom } from \"../constructFrom.js\";\n\nexport function normalizeDates(context, ...dates) {\n  const normalize = constructFrom.bind(\n    null,\n    context || dates.find((date) => typeof date === \"object\"),\n  );\n  return dates.map(normalize);\n}\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfDay} function options.\n */\n\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a day\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport function startOfDay(date, options) {\n  const _date = toDate(date, options?.in);\n  _date.setHours(0, 0, 0, 0);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfDay;\n","import { getTimezoneOffsetInMilliseconds } from \"./_lib/getTimezoneOffsetInMilliseconds.js\";\nimport { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { millisecondsInDay } from \"./constants.js\";\nimport { startOfDay } from \"./startOfDay.js\";\n\n/**\n * The {@link differenceInCalendarDays} function options.\n */\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - The options object\n *\n * @returns The number of calendar days\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n *   new Date(2012, 6, 2, 0, 0),\n *   new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n *   new Date(2011, 6, 3, 0, 1),\n *   new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport function differenceInCalendarDays(laterDate, earlierDate, options) {\n  const [laterDate_, earlierDate_] = normalizeDates(\n    options?.in,\n    laterDate,\n    earlierDate,\n  );\n\n  const laterStartOfDay = startOfDay(laterDate_);\n  const earlierStartOfDay = startOfDay(earlierDate_);\n\n  const laterTimestamp =\n    +laterStartOfDay - getTimezoneOffsetInMilliseconds(laterStartOfDay);\n  const earlierTimestamp =\n    +earlierStartOfDay - getTimezoneOffsetInMilliseconds(earlierStartOfDay);\n\n  // Round the number of days to the nearest integer because the number of\n  // milliseconds in a day is not constant (e.g. it's different in the week of\n  // the daylight saving time clock shift).\n  return Math.round((laterTimestamp - earlierTimestamp) / millisecondsInDay);\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarDays;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { getISOWeekYear } from \"./getISOWeekYear.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\n\n/**\n * The {@link startOfISOWeekYear} function options.\n */\n\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of an ISO week-numbering year\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfISOWeekYear(date, options) {\n  const year = getISOWeekYear(date, options);\n  const fourthOfJanuary = constructFrom(options?.in || date, 0);\n  fourthOfJanuary.setFullYear(year, 0, 4);\n  fourthOfJanuary.setHours(0, 0, 0, 0);\n  return startOfISOWeek(fourthOfJanuary);\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeekYear;\n","import { millisecondsInMinute } from \"./constants.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link addMinutes} function options.\n */\n\n/**\n * @name addMinutes\n * @category Minute Helpers\n * @summary Add the specified number of minutes to the given date.\n *\n * @description\n * Add the specified number of minutes to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of minutes to be added.\n * @param options - An object with options\n *\n * @returns The new date with the minutes added\n *\n * @example\n * // Add 30 minutes to 10 July 2014 12:00:00:\n * const result = addMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 12:30:00\n */\nexport function addMinutes(date, amount, options) {\n  const _date = toDate(date, options?.in);\n  _date.setTime(_date.getTime() + amount * millisecondsInMinute);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default addMinutes;\n","import { addMonths } from \"./addMonths.js\";\n\n/**\n * The {@link addQuarters} function options.\n */\n\n/**\n * @name addQuarters\n * @category Quarter Helpers\n * @summary Add the specified number of year quarters to the given date.\n *\n * @description\n * Add the specified number of year quarters to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of quarters to be added.\n * @param options - An object with options\n *\n * @returns The new date with the quarters added\n *\n * @example\n * // Add 1 quarter to 1 September 2014:\n * const result = addQuarters(new Date(2014, 8, 1), 1)\n * //=; Mon Dec 01 2014 00:00:00\n */\nexport function addQuarters(date, amount, options) {\n  return addMonths(date, amount * 3, options);\n}\n\n// Fallback for modularized imports:\nexport default addQuarters;\n","import { addMilliseconds } from \"./addMilliseconds.js\";\n\n/**\n * The {@link addSeconds} function options.\n */\n\n/**\n * @name addSeconds\n * @category Second Helpers\n * @summary Add the specified number of seconds to the given date.\n *\n * @description\n * Add the specified number of seconds to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of seconds to be added.\n * @param options - An object with options\n *\n * @returns The new date with the seconds added\n *\n * @example\n * // Add 30 seconds to 10 July 2014 12:45:00:\n * const result = addSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)\n * //=> Thu Jul 10 2014 12:45:30\n */\nexport function addSeconds(date, amount, options) {\n  return addMilliseconds(date, amount * 1000, options);\n}\n\n// Fallback for modularized imports:\nexport default addSeconds;\n","import { addDays } from \"./addDays.js\";\n\n/**\n * The {@link addWeeks} function options.\n */\n\n/**\n * @name addWeeks\n * @category Week Helpers\n * @summary Add the specified number of weeks to the given date.\n *\n * @description\n * Add the specified number of weeks to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of weeks to be added.\n * @param options - An object with options\n *\n * @returns The new date with the weeks added\n *\n * @example\n * // Add 4 weeks to 1 September 2014:\n * const result = addWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Sep 29 2014 00:00:00\n */\nexport function addWeeks(date, amount, options) {\n  return addDays(date, amount * 7, options);\n}\n\n// Fallback for modularized imports:\nexport default addWeeks;\n","import { addMonths } from \"./addMonths.js\";\n\n/**\n * The {@link addYears} function options.\n */\n\n/**\n * @name addYears\n * @category Year Helpers\n * @summary Add the specified number of years to the given date.\n *\n * @description\n * Add the specified number of years to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type.\n *\n * @param date - The date to be changed\n * @param amount - The amount of years to be added.\n * @param options - The options\n *\n * @returns The new date with the years added\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * const result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\nexport function addYears(date, amount, options) {\n  return addMonths(date, amount * 12, options);\n}\n\n// Fallback for modularized imports:\nexport default addYears;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link max} function options.\n */\n\n/**\n * @name max\n * @category Common Helpers\n * @summary Return the latest of the given dates.\n *\n * @description\n * Return the latest of the given dates.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param dates - The dates to compare\n *\n * @returns The latest of the dates\n *\n * @example\n * // Which of these dates is the latest?\n * const result = max([\n *   new Date(1989, 6, 10),\n *   new Date(1987, 1, 11),\n *   new Date(1995, 6, 2),\n *   new Date(1990, 0, 1)\n * ])\n * //=> Sun Jul 02 1995 00:00:00\n */\nexport function max(dates, options) {\n  let result;\n  let context = options?.in;\n\n  dates.forEach((date) => {\n    // Use the first date object as the context function\n    if (!context && typeof date === \"object\")\n      context = constructFrom.bind(null, date);\n\n    const date_ = toDate(date, context);\n    if (!result || result < date_ || isNaN(+date_)) result = date_;\n  });\n\n  return constructFrom(context, result || NaN);\n}\n\n// Fallback for modularized imports:\nexport default max;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link min} function options.\n */\n\n/**\n * @name min\n * @category Common Helpers\n * @summary Returns the earliest of the given dates.\n *\n * @description\n * Returns the earliest of the given dates.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param dates - The dates to compare\n *\n * @returns The earliest of the dates\n *\n * @example\n * // Which of these dates is the earliest?\n * const result = min([\n *   new Date(1989, 6, 10),\n *   new Date(1987, 1, 11),\n *   new Date(1995, 6, 2),\n *   new Date(1990, 0, 1)\n * ])\n * //=> Wed Feb 11 1987 00:00:00\n */\nexport function min(dates, options) {\n  let result;\n  let context = options?.in;\n\n  dates.forEach((date) => {\n    // Use the first date object as the context function\n    if (!context && typeof date === \"object\")\n      context = constructFrom.bind(null, date);\n\n    const date_ = toDate(date, context);\n    if (!result || result > date_ || isNaN(+date_)) result = date_;\n  });\n\n  return constructFrom(context, result || NaN);\n}\n\n// Fallback for modularized imports:\nexport default min;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { startOfDay } from \"./startOfDay.js\";\n\n/**\n * The {@link isSameDay} function options.\n */\n\n/**\n * @name isSameDay\n * @category Day Helpers\n * @summary Are the given dates in the same day (and year and month)?\n *\n * @description\n * Are the given dates in the same day (and year and month)?\n *\n * @param laterDate - The first date to check\n * @param earlierDate - The second date to check\n * @param options - An object with options\n *\n * @returns The dates are in the same day (and year and month)\n *\n * @example\n * // Are 4 September 06:00:00 and 4 September 18:00:00 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 18, 0))\n * //=> true\n *\n * @example\n * // Are 4 September and 4 October in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2014, 9, 4))\n * //=> false\n *\n * @example\n * // Are 4 September, 2014 and 4 September, 2015 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2015, 8, 4))\n * //=> false\n */\nexport function isSameDay(laterDate, earlierDate, options) {\n  const [dateLeft_, dateRight_] = normalizeDates(\n    options?.in,\n    laterDate,\n    earlierDate,\n  );\n  return +startOfDay(dateLeft_) === +startOfDay(dateRight_);\n}\n\n// Fallback for modularized imports:\nexport default isSameDay;\n","/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param value - The value to check\n *\n * @returns True if the given value is a date\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport function isDate(value) {\n  return (\n    value instanceof Date ||\n    (typeof value === \"object\" &&\n      Object.prototype.toString.call(value) === \"[object Date]\")\n  );\n}\n\n// Fallback for modularized imports:\nexport default isDate;\n","import { isDate } from \"./isDate.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate](https://date-fns.org/docs/toDate)\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param date - The date to check\n *\n * @returns The date is valid\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertible into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport function isValid(date) {\n  return !((!isDate(date) && typeof date !== \"number\") || isNaN(+toDate(date)));\n}\n\n// Fallback for modularized imports:\nexport default isValid;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\n\n/**\n * The {@link differenceInCalendarMonths} function options.\n */\n\n/**\n * @name differenceInCalendarMonths\n * @category Month Helpers\n * @summary Get the number of calendar months between the given dates.\n *\n * @description\n * Get the number of calendar months between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n *\n * @returns The number of calendar months\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInCalendarMonths(\n *   new Date(2014, 8, 1),\n *   new Date(2014, 0, 31)\n * )\n * //=> 8\n */\nexport function differenceInCalendarMonths(laterDate, earlierDate, options) {\n  const [laterDate_, earlierDate_] = normalizeDates(\n    options?.in,\n    laterDate,\n    earlierDate,\n  );\n\n  const yearsDiff = laterDate_.getFullYear() - earlierDate_.getFullYear();\n  const monthsDiff = laterDate_.getMonth() - earlierDate_.getMonth();\n\n  return yearsDiff * 12 + monthsDiff;\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarMonths;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getQuarter} function options.\n */\n\n/**\n * @name getQuarter\n * @category Quarter Helpers\n * @summary Get the year quarter of the given date.\n *\n * @description\n * Get the year quarter of the given date.\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The quarter\n *\n * @example\n * // Which quarter is 2 July 2014?\n * const result = getQuarter(new Date(2014, 6, 2));\n * //=> 3\n */\nexport function getQuarter(date, options) {\n  const _date = toDate(date, options?.in);\n  const quarter = Math.trunc(_date.getMonth() / 3) + 1;\n  return quarter;\n}\n\n// Fallback for modularized imports:\nexport default getQuarter;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { getQuarter } from \"./getQuarter.js\";\n\n/**\n * The {@link differenceInCalendarQuarters} function options.\n */\n\n/**\n * @name differenceInCalendarQuarters\n * @category Quarter Helpers\n * @summary Get the number of calendar quarters between the given dates.\n *\n * @description\n * Get the number of calendar quarters between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n *\n * @returns The number of calendar quarters\n *\n * @example\n * // How many calendar quarters are between 31 December 2013 and 2 July 2014?\n * const result = differenceInCalendarQuarters(\n *   new Date(2014, 6, 2),\n *   new Date(2013, 11, 31)\n * )\n * //=> 3\n */\nexport function differenceInCalendarQuarters(laterDate, earlierDate, options) {\n  const [laterDate_, earlierDate_] = normalizeDates(\n    options?.in,\n    laterDate,\n    earlierDate,\n  );\n\n  const yearsDiff = laterDate_.getFullYear() - earlierDate_.getFullYear();\n  const quartersDiff = getQuarter(laterDate_) - getQuarter(earlierDate_);\n\n  return yearsDiff * 4 + quartersDiff;\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarQuarters;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\n\n/**\n * The {@link differenceInCalendarYears} function options.\n */\n\n/**\n * @name differenceInCalendarYears\n * @category Year Helpers\n * @summary Get the number of calendar years between the given dates.\n *\n * @description\n * Get the number of calendar years between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n\n * @returns The number of calendar years\n *\n * @example\n * // How many calendar years are between 31 December 2013 and 11 February 2015?\n * const result = differenceInCalendarYears(\n *   new Date(2015, 1, 11),\n *   new Date(2013, 11, 31)\n * );\n * //=> 2\n */\nexport function differenceInCalendarYears(laterDate, earlierDate, options) {\n  const [laterDate_, earlierDate_] = normalizeDates(\n    options?.in,\n    laterDate,\n    earlierDate,\n  );\n  return laterDate_.getFullYear() - earlierDate_.getFullYear();\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarYears;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { differenceInCalendarDays } from \"./differenceInCalendarDays.js\";\n\n/**\n * The {@link differenceInDays} function options.\n */\n\n/**\n * @name differenceInDays\n * @category Day Helpers\n * @summary Get the number of full days between the given dates.\n *\n * @description\n * Get the number of full day periods between two dates. Fractional days are\n * truncated towards zero.\n *\n * One \"full day\" is the distance between a local time in one day to the same\n * local time on the next or previous day. A full day can sometimes be less than\n * or more than 24 hours if a daylight savings change happens between two dates.\n *\n * To ignore DST and only measure exact 24-hour periods, use this instead:\n * `Math.trunc(differenceInHours(dateLeft, dateRight)/24)|0`.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n *\n * @returns The number of full days according to the local timezone\n *\n * @example\n * // How many full days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInDays(\n *   new Date(2012, 6, 2, 0, 0),\n *   new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 365\n *\n * @example\n * // How many full days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInDays(\n *   new Date(2011, 6, 3, 0, 1),\n *   new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 0\n *\n * @example\n * // How many full days are between\n * // 1 March 2020 0:00 and 1 June 2020 0:00 ?\n * // Note: because local time is used, the\n * // result will always be 92 days, even in\n * // time zones where DST starts and the\n * // period has only 92*24-1 hours.\n * const result = differenceInDays(\n *   new Date(2020, 5, 1),\n *   new Date(2020, 2, 1)\n * )\n * //=> 92\n */\nexport function differenceInDays(laterDate, earlierDate, options) {\n  const [laterDate_, earlierDate_] = normalizeDates(\n    options?.in,\n    laterDate,\n    earlierDate,\n  );\n\n  const sign = compareLocalAsc(laterDate_, earlierDate_);\n  const difference = Math.abs(\n    differenceInCalendarDays(laterDate_, earlierDate_),\n  );\n\n  laterDate_.setDate(laterDate_.getDate() - sign * difference);\n\n  // Math.abs(diff in full days - diff in calendar days) === 1 if last calendar day is not full\n  // If so, result must be decreased by 1 in absolute value\n  const isLastDayNotFull = Number(\n    compareLocalAsc(laterDate_, earlierDate_) === -sign,\n  );\n\n  const result = sign * (difference - isLastDayNotFull);\n  // Prevent negative zero\n  return result === 0 ? 0 : result;\n}\n\n// Like `compareAsc` but uses local time not UTC, which is needed\n// for accurate equality comparisons of UTC timestamps that end up\n// having the same representation in local time, e.g. one hour before\n// DST ends vs. the instant that DST ends.\nfunction compareLocalAsc(laterDate, earlierDate) {\n  const diff =\n    laterDate.getFullYear() - earlierDate.getFullYear() ||\n    laterDate.getMonth() - earlierDate.getMonth() ||\n    laterDate.getDate() - earlierDate.getDate() ||\n    laterDate.getHours() - earlierDate.getHours() ||\n    laterDate.getMinutes() - earlierDate.getMinutes() ||\n    laterDate.getSeconds() - earlierDate.getSeconds() ||\n    laterDate.getMilliseconds() - earlierDate.getMilliseconds();\n\n  if (diff < 0) return -1;\n  if (diff > 0) return 1;\n\n  // Return 0 if diff is 0; return NaN if diff is NaN\n  return diff;\n}\n\n// Fallback for modularized imports:\nexport default differenceInDays;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfDay} function options.\n */\n\n/**\n * @name endOfDay\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The end of a day\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * const result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\nexport function endOfDay(date, options) {\n  const _date = toDate(date, options?.in);\n  _date.setHours(23, 59, 59, 999);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfDay;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfMonth} function options.\n */\n\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The end of a month\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * const result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nexport function endOfMonth(date, options) {\n  const _date = toDate(date, options?.in);\n  const month = _date.getMonth();\n  _date.setFullYear(_date.getFullYear(), month + 1, 0);\n  _date.setHours(23, 59, 59, 999);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfMonth;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfQuarter} function options.\n */\n\n/**\n * @name startOfQuarter\n * @category Quarter Helpers\n * @summary Return the start of a year quarter for the given date.\n *\n * @description\n * Return the start of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a quarter\n *\n * @example\n * // The start of a quarter for 2 September 2014 11:55:00:\n * const result = startOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Jul 01 2014 00:00:00\n */\nexport function startOfQuarter(date, options) {\n  const _date = toDate(date, options?.in);\n  const currentMonth = _date.getMonth();\n  const month = currentMonth - (currentMonth % 3);\n  _date.setMonth(month, 1);\n  _date.setHours(0, 0, 0, 0);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfQuarter;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfMonth} function options.\n */\n\n/**\n * @name startOfMonth\n * @category Month Helpers\n * @summary Return the start of a month for the given date.\n *\n * @description\n * Return the start of a month for the given date. The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments.\n * Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed,\n * or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a month\n *\n * @example\n * // The start of a month for 2 September 2014 11:55:00:\n * const result = startOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfMonth(date, options) {\n  const _date = toDate(date, options?.in);\n  _date.setDate(1);\n  _date.setHours(0, 0, 0, 0);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfMonth;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfYear} function options.\n */\n\n/**\n * @name endOfYear\n * @category Year Helpers\n * @summary Return the end of a year for the given date.\n *\n * @description\n * Return the end of a year for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The end of a year\n *\n * @example\n * // The end of a year for 2 September 2014 11:55:00:\n * const result = endOfYear(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Wed Dec 31 2014 23:59:59.999\n */\nexport function endOfYear(date, options) {\n  const _date = toDate(date, options?.in);\n  const year = _date.getFullYear();\n  _date.setFullYear(year + 1, 0, 0);\n  _date.setHours(23, 59, 59, 999);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfYear;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfYear} function options.\n */\n\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a year\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nexport function startOfYear(date, options) {\n  const date_ = toDate(date, options?.in);\n  date_.setFullYear(date_.getFullYear(), 0, 1);\n  date_.setHours(0, 0, 0, 0);\n  return date_;\n}\n\n// Fallback for modularized imports:\nexport default startOfYear;\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfWeek} function options.\n */\n\n/**\n * @name endOfWeek\n * @category Week Helpers\n * @summary Return the end of a week for the given date.\n *\n * @description\n * Return the end of a week for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The end of a week\n *\n * @example\n * // The end of a week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 23:59:59.999\n *\n * @example\n * // If the week starts on Monday, the end of the week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nexport function endOfWeek(date, options) {\n  const defaultOptions = getDefaultOptions();\n  const weekStartsOn =\n    options?.weekStartsOn ??\n    options?.locale?.options?.weekStartsOn ??\n    defaultOptions.weekStartsOn ??\n    defaultOptions.locale?.options?.weekStartsOn ??\n    0;\n\n  const _date = toDate(date, options?.in);\n  const day = _date.getDay();\n  const diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\n\n  _date.setDate(_date.getDate() + diff);\n  _date.setHours(23, 59, 59, 999);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfWeek;\n","const formatDistanceLocale = {\n  lessThanXSeconds: {\n    one: \"less than a second\",\n    other: \"less than {{count}} seconds\",\n  },\n\n  xSeconds: {\n    one: \"1 second\",\n    other: \"{{count}} seconds\",\n  },\n\n  halfAMinute: \"half a minute\",\n\n  lessThanXMinutes: {\n    one: \"less than a minute\",\n    other: \"less than {{count}} minutes\",\n  },\n\n  xMinutes: {\n    one: \"1 minute\",\n    other: \"{{count}} minutes\",\n  },\n\n  aboutXHours: {\n    one: \"about 1 hour\",\n    other: \"about {{count}} hours\",\n  },\n\n  xHours: {\n    one: \"1 hour\",\n    other: \"{{count}} hours\",\n  },\n\n  xDays: {\n    one: \"1 day\",\n    other: \"{{count}} days\",\n  },\n\n  aboutXWeeks: {\n    one: \"about 1 week\",\n    other: \"about {{count}} weeks\",\n  },\n\n  xWeeks: {\n    one: \"1 week\",\n    other: \"{{count}} weeks\",\n  },\n\n  aboutXMonths: {\n    one: \"about 1 month\",\n    other: \"about {{count}} months\",\n  },\n\n  xMonths: {\n    one: \"1 month\",\n    other: \"{{count}} months\",\n  },\n\n  aboutXYears: {\n    one: \"about 1 year\",\n    other: \"about {{count}} years\",\n  },\n\n  xYears: {\n    one: \"1 year\",\n    other: \"{{count}} years\",\n  },\n\n  overXYears: {\n    one: \"over 1 year\",\n    other: \"over {{count}} years\",\n  },\n\n  almostXYears: {\n    one: \"almost 1 year\",\n    other: \"almost {{count}} years\",\n  },\n};\n\nexport const formatDistance = (token, count, options) => {\n  let result;\n\n  const tokenValue = formatDistanceLocale[token];\n  if (typeof tokenValue === \"string\") {\n    result = tokenValue;\n  } else if (count === 1) {\n    result = tokenValue.one;\n  } else {\n    result = tokenValue.other.replace(\"{{count}}\", count.toString());\n  }\n\n  if (options?.addSuffix) {\n    if (options.comparison && options.comparison > 0) {\n      return \"in \" + result;\n    } else {\n      return result + \" ago\";\n    }\n  }\n\n  return result;\n};\n","export function buildFormatLongFn(args) {\n  return (options = {}) => {\n    // TODO: Remove String()\n    const width = options.width ? String(options.width) : args.defaultWidth;\n    const format = args.formats[width] || args.formats[args.defaultWidth];\n    return format;\n  };\n}\n","import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.js\";\n\nconst dateFormats = {\n  full: \"EEEE, MMMM do, y\",\n  long: \"MMMM do, y\",\n  medium: \"MMM d, y\",\n  short: \"MM/dd/yyyy\",\n};\n\nconst timeFormats = {\n  full: \"h:mm:ss a zzzz\",\n  long: \"h:mm:ss a z\",\n  medium: \"h:mm:ss a\",\n  short: \"h:mm a\",\n};\n\nconst dateTimeFormats = {\n  full: \"{{date}} 'at' {{time}}\",\n  long: \"{{date}} 'at' {{time}}\",\n  medium: \"{{date}}, {{time}}\",\n  short: \"{{date}}, {{time}}\",\n};\n\nexport const formatLong = {\n  date: buildFormatLongFn({\n    formats: dateFormats,\n    defaultWidth: \"full\",\n  }),\n\n  time: buildFormatLongFn({\n    formats: timeFormats,\n    defaultWidth: \"full\",\n  }),\n\n  dateTime: buildFormatLongFn({\n    formats: dateTimeFormats,\n    defaultWidth: \"full\",\n  }),\n};\n","const formatRelativeLocale = {\n  lastWeek: \"'last' eeee 'at' p\",\n  yesterday: \"'yesterday at' p\",\n  today: \"'today at' p\",\n  tomorrow: \"'tomorrow at' p\",\n  nextWeek: \"eeee 'at' p\",\n  other: \"P\",\n};\n\nexport const formatRelative = (token, _date, _baseDate, _options) =>\n  formatRelativeLocale[token];\n","/**\n * The localize function argument callback which allows to convert raw value to\n * the actual type.\n *\n * @param value - The value to convert\n *\n * @returns The converted value\n */\n\n/**\n * The map of localized values for each width.\n */\n\n/**\n * The index type of the locale unit value. It types conversion of units of\n * values that don't start at 0 (i.e. quarters).\n */\n\n/**\n * Converts the unit value to the tuple of values.\n */\n\n/**\n * The tuple of localized era values. The first element represents BC,\n * the second element represents AD.\n */\n\n/**\n * The tuple of localized quarter values. The first element represents Q1.\n */\n\n/**\n * The tuple of localized day values. The first element represents Sunday.\n */\n\n/**\n * The tuple of localized month values. The first element represents January.\n */\n\nexport function buildLocalizeFn(args) {\n  return (value, options) => {\n    const context = options?.context ? String(options.context) : \"standalone\";\n\n    let valuesArray;\n    if (context === \"formatting\" && args.formattingValues) {\n      const defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n      const width = options?.width ? String(options.width) : defaultWidth;\n\n      valuesArray =\n        args.formattingValues[width] || args.formattingValues[defaultWidth];\n    } else {\n      const defaultWidth = args.defaultWidth;\n      const width = options?.width ? String(options.width) : args.defaultWidth;\n\n      valuesArray = args.values[width] || args.values[defaultWidth];\n    }\n    const index = args.argumentCallback ? args.argumentCallback(value) : value;\n\n    // @ts-expect-error - For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n    return valuesArray[index];\n  };\n}\n","import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.js\";\n\nconst eraValues = {\n  narrow: [\"B\", \"A\"],\n  abbreviated: [\"BC\", \"AD\"],\n  wide: [\"Before Christ\", \"Anno Domini\"],\n};\n\nconst quarterValues = {\n  narrow: [\"1\", \"2\", \"3\", \"4\"],\n  abbreviated: [\"Q1\", \"Q2\", \"Q3\", \"Q4\"],\n  wide: [\"1st quarter\", \"2nd quarter\", \"3rd quarter\", \"4th quarter\"],\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nconst monthValues = {\n  narrow: [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"],\n  abbreviated: [\n    \"Jan\",\n    \"Feb\",\n    \"Mar\",\n    \"Apr\",\n    \"May\",\n    \"Jun\",\n    \"Jul\",\n    \"Aug\",\n    \"Sep\",\n    \"Oct\",\n    \"Nov\",\n    \"Dec\",\n  ],\n\n  wide: [\n    \"January\",\n    \"February\",\n    \"March\",\n    \"April\",\n    \"May\",\n    \"June\",\n    \"July\",\n    \"August\",\n    \"September\",\n    \"October\",\n    \"November\",\n    \"December\",\n  ],\n};\n\nconst dayValues = {\n  narrow: [\"S\", \"M\", \"T\", \"W\", \"T\", \"F\", \"S\"],\n  short: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n  abbreviated: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n  wide: [\n    \"Sunday\",\n    \"Monday\",\n    \"Tuesday\",\n    \"Wednesday\",\n    \"Thursday\",\n    \"Friday\",\n    \"Saturday\",\n  ],\n};\n\nconst dayPeriodValues = {\n  narrow: {\n    am: \"a\",\n    pm: \"p\",\n    midnight: \"mi\",\n    noon: \"n\",\n    morning: \"morning\",\n    afternoon: \"afternoon\",\n    evening: \"evening\",\n    night: \"night\",\n  },\n  abbreviated: {\n    am: \"AM\",\n    pm: \"PM\",\n    midnight: \"midnight\",\n    noon: \"noon\",\n    morning: \"morning\",\n    afternoon: \"afternoon\",\n    evening: \"evening\",\n    night: \"night\",\n  },\n  wide: {\n    am: \"a.m.\",\n    pm: \"p.m.\",\n    midnight: \"midnight\",\n    noon: \"noon\",\n    morning: \"morning\",\n    afternoon: \"afternoon\",\n    evening: \"evening\",\n    night: \"night\",\n  },\n};\n\nconst formattingDayPeriodValues = {\n  narrow: {\n    am: \"a\",\n    pm: \"p\",\n    midnight: \"mi\",\n    noon: \"n\",\n    morning: \"in the morning\",\n    afternoon: \"in the afternoon\",\n    evening: \"in the evening\",\n    night: \"at night\",\n  },\n  abbreviated: {\n    am: \"AM\",\n    pm: \"PM\",\n    midnight: \"midnight\",\n    noon: \"noon\",\n    morning: \"in the morning\",\n    afternoon: \"in the afternoon\",\n    evening: \"in the evening\",\n    night: \"at night\",\n  },\n  wide: {\n    am: \"a.m.\",\n    pm: \"p.m.\",\n    midnight: \"midnight\",\n    noon: \"noon\",\n    morning: \"in the morning\",\n    afternoon: \"in the afternoon\",\n    evening: \"in the evening\",\n    night: \"at night\",\n  },\n};\n\nconst ordinalNumber = (dirtyNumber, _options) => {\n  const number = Number(dirtyNumber);\n\n  // If ordinal numbers depend on context, for example,\n  // if they are different for different grammatical genders,\n  // use `options.unit`.\n  //\n  // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n  // 'day', 'hour', 'minute', 'second'.\n\n  const rem100 = number % 100;\n  if (rem100 > 20 || rem100 < 10) {\n    switch (rem100 % 10) {\n      case 1:\n        return number + \"st\";\n      case 2:\n        return number + \"nd\";\n      case 3:\n        return number + \"rd\";\n    }\n  }\n  return number + \"th\";\n};\n\nexport const localize = {\n  ordinalNumber,\n\n  era: buildLocalizeFn({\n    values: eraValues,\n    defaultWidth: \"wide\",\n  }),\n\n  quarter: buildLocalizeFn({\n    values: quarterValues,\n    defaultWidth: \"wide\",\n    argumentCallback: (quarter) => quarter - 1,\n  }),\n\n  month: buildLocalizeFn({\n    values: monthValues,\n    defaultWidth: \"wide\",\n  }),\n\n  day: buildLocalizeFn({\n    values: dayValues,\n    defaultWidth: \"wide\",\n  }),\n\n  dayPeriod: buildLocalizeFn({\n    values: dayPeriodValues,\n    defaultWidth: \"wide\",\n    formattingValues: formattingDayPeriodValues,\n    defaultFormattingWidth: \"wide\",\n  }),\n};\n","export function buildMatchFn(args) {\n  return (string, options = {}) => {\n    const width = options.width;\n\n    const matchPattern =\n      (width && args.matchPatterns[width]) ||\n      args.matchPatterns[args.defaultMatchWidth];\n    const matchResult = string.match(matchPattern);\n\n    if (!matchResult) {\n      return null;\n    }\n    const matchedString = matchResult[0];\n\n    const parsePatterns =\n      (width && args.parsePatterns[width]) ||\n      args.parsePatterns[args.defaultParseWidth];\n\n    const key = Array.isArray(parsePatterns)\n      ? findIndex(parsePatterns, (pattern) => pattern.test(matchedString))\n      : // [TODO] -- I challenge you to fix the type\n        findKey(parsePatterns, (pattern) => pattern.test(matchedString));\n\n    let value;\n\n    value = args.valueCallback ? args.valueCallback(key) : key;\n    value = options.valueCallback\n      ? // [TODO] -- I challenge you to fix the type\n        options.valueCallback(value)\n      : value;\n\n    const rest = string.slice(matchedString.length);\n\n    return { value, rest };\n  };\n}\n\nfunction findKey(object, predicate) {\n  for (const key in object) {\n    if (\n      Object.prototype.hasOwnProperty.call(object, key) &&\n      predicate(object[key])\n    ) {\n      return key;\n    }\n  }\n  return undefined;\n}\n\nfunction findIndex(array, predicate) {\n  for (let key = 0; key < array.length; key++) {\n    if (predicate(array[key])) {\n      return key;\n    }\n  }\n  return undefined;\n}\n","export function buildMatchPatternFn(args) {\n  return (string, options = {}) => {\n    const matchResult = string.match(args.matchPattern);\n    if (!matchResult) return null;\n    const matchedString = matchResult[0];\n\n    const parseResult = string.match(args.parsePattern);\n    if (!parseResult) return null;\n    let value = args.valueCallback\n      ? args.valueCallback(parseResult[0])\n      : parseResult[0];\n\n    // [TODO] I challenge you to fix the type\n    value = options.valueCallback ? options.valueCallback(value) : value;\n\n    const rest = string.slice(matchedString.length);\n\n    return { value, rest };\n  };\n}\n","import { buildMatchFn } from \"../../_lib/buildMatchFn.js\";\nimport { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.js\";\n\nconst matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nconst parseOrdinalNumberPattern = /\\d+/i;\n\nconst matchEraPatterns = {\n  narrow: /^(b|a)/i,\n  abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n  wide: /^(before christ|before common era|anno domini|common era)/i,\n};\nconst parseEraPatterns = {\n  any: [/^b/i, /^(a|c)/i],\n};\n\nconst matchQuarterPatterns = {\n  narrow: /^[1234]/i,\n  abbreviated: /^q[1234]/i,\n  wide: /^[1234](th|st|nd|rd)? quarter/i,\n};\nconst parseQuarterPatterns = {\n  any: [/1/i, /2/i, /3/i, /4/i],\n};\n\nconst matchMonthPatterns = {\n  narrow: /^[jfmasond]/i,\n  abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n  wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i,\n};\nconst parseMonthPatterns = {\n  narrow: [\n    /^j/i,\n    /^f/i,\n    /^m/i,\n    /^a/i,\n    /^m/i,\n    /^j/i,\n    /^j/i,\n    /^a/i,\n    /^s/i,\n    /^o/i,\n    /^n/i,\n    /^d/i,\n  ],\n\n  any: [\n    /^ja/i,\n    /^f/i,\n    /^mar/i,\n    /^ap/i,\n    /^may/i,\n    /^jun/i,\n    /^jul/i,\n    /^au/i,\n    /^s/i,\n    /^o/i,\n    /^n/i,\n    /^d/i,\n  ],\n};\n\nconst matchDayPatterns = {\n  narrow: /^[smtwf]/i,\n  short: /^(su|mo|tu|we|th|fr|sa)/i,\n  abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n  wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i,\n};\nconst parseDayPatterns = {\n  narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n  any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i],\n};\n\nconst matchDayPeriodPatterns = {\n  narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n  any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i,\n};\nconst parseDayPeriodPatterns = {\n  any: {\n    am: /^a/i,\n    pm: /^p/i,\n    midnight: /^mi/i,\n    noon: /^no/i,\n    morning: /morning/i,\n    afternoon: /afternoon/i,\n    evening: /evening/i,\n    night: /night/i,\n  },\n};\n\nexport const match = {\n  ordinalNumber: buildMatchPatternFn({\n    matchPattern: matchOrdinalNumberPattern,\n    parsePattern: parseOrdinalNumberPattern,\n    valueCallback: (value) => parseInt(value, 10),\n  }),\n\n  era: buildMatchFn({\n    matchPatterns: matchEraPatterns,\n    defaultMatchWidth: \"wide\",\n    parsePatterns: parseEraPatterns,\n    defaultParseWidth: \"any\",\n  }),\n\n  quarter: buildMatchFn({\n    matchPatterns: matchQuarterPatterns,\n    defaultMatchWidth: \"wide\",\n    parsePatterns: parseQuarterPatterns,\n    defaultParseWidth: \"any\",\n    valueCallback: (index) => index + 1,\n  }),\n\n  month: buildMatchFn({\n    matchPatterns: matchMonthPatterns,\n    defaultMatchWidth: \"wide\",\n    parsePatterns: parseMonthPatterns,\n    defaultParseWidth: \"any\",\n  }),\n\n  day: buildMatchFn({\n    matchPatterns: matchDayPatterns,\n    defaultMatchWidth: \"wide\",\n    parsePatterns: parseDayPatterns,\n    defaultParseWidth: \"any\",\n  }),\n\n  dayPeriod: buildMatchFn({\n    matchPatterns: matchDayPeriodPatterns,\n    defaultMatchWidth: \"any\",\n    parsePatterns: parseDayPeriodPatterns,\n    defaultParseWidth: \"any\",\n  }),\n};\n","import { formatDistance } from \"./en-US/_lib/formatDistance.js\";\nimport { formatLong } from \"./en-US/_lib/formatLong.js\";\nimport { formatRelative } from \"./en-US/_lib/formatRelative.js\";\nimport { localize } from \"./en-US/_lib/localize.js\";\nimport { match } from \"./en-US/_lib/match.js\";\n\n/**\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp](https://github.com/kossnocorp)\n * @author Lesha Koss [@leshakoss](https://github.com/leshakoss)\n */\nexport const enUS = {\n  code: \"en-US\",\n  formatDistance: formatDistance,\n  formatLong: formatLong,\n  formatRelative: formatRelative,\n  localize: localize,\n  match: match,\n  options: {\n    weekStartsOn: 0 /* Sunday */,\n    firstWeekContainsDate: 1,\n  },\n};\n\n// Fallback for modularized imports:\nexport default enUS;\n","import { differenceInCalendarDays } from \"./differenceInCalendarDays.js\";\nimport { startOfYear } from \"./startOfYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getDayOfYear} function options.\n */\n\n/**\n * @name getDayOfYear\n * @category Day Helpers\n * @summary Get the day of the year of the given date.\n *\n * @description\n * Get the day of the year of the given date.\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The day of year\n *\n * @example\n * // Which day of the year is 2 July 2014?\n * const result = getDayOfYear(new Date(2014, 6, 2))\n * //=> 183\n */\nexport function getDayOfYear(date, options) {\n  const _date = toDate(date, options?.in);\n  const diff = differenceInCalendarDays(_date, startOfYear(_date));\n  const dayOfYear = diff + 1;\n  return dayOfYear;\n}\n\n// Fallback for modularized imports:\nexport default getDayOfYear;\n","import { millisecondsInWeek } from \"./constants.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\nimport { startOfISOWeekYear } from \"./startOfISOWeekYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getISOWeek} function options.\n */\n\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The ISO week\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nexport function getISOWeek(date, options) {\n  const _date = toDate(date, options?.in);\n  const diff = +startOfISOWeek(_date) - +startOfISOWeekYear(_date);\n\n  // Round the number of weeks to the nearest integer because the number of\n  // milliseconds in a week is not constant (e.g. it's different in the week of\n  // the daylight saving time clock shift).\n  return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getISOWeek;\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getWeekYear} function options.\n */\n\n/**\n * @name getWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Get the local week-numbering year of the given date.\n *\n * @description\n * Get the local week-numbering year of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @param date - The given date\n * @param options - An object with options.\n *\n * @returns The local week-numbering year\n *\n * @example\n * // Which week numbering year is 26 December 2004 with the default settings?\n * const result = getWeekYear(new Date(2004, 11, 26))\n * //=> 2005\n *\n * @example\n * // Which week numbering year is 26 December 2004 if week starts on Saturday?\n * const result = getWeekYear(new Date(2004, 11, 26), { weekStartsOn: 6 })\n * //=> 2004\n *\n * @example\n * // Which week numbering year is 26 December 2004 if the first week contains 4 January?\n * const result = getWeekYear(new Date(2004, 11, 26), { firstWeekContainsDate: 4 })\n * //=> 2004\n */\nexport function getWeekYear(date, options) {\n  const _date = toDate(date, options?.in);\n  const year = _date.getFullYear();\n\n  const defaultOptions = getDefaultOptions();\n  const firstWeekContainsDate =\n    options?.firstWeekContainsDate ??\n    options?.locale?.options?.firstWeekContainsDate ??\n    defaultOptions.firstWeekContainsDate ??\n    defaultOptions.locale?.options?.firstWeekContainsDate ??\n    1;\n\n  const firstWeekOfNextYear = constructFrom(options?.in || date, 0);\n  firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);\n  firstWeekOfNextYear.setHours(0, 0, 0, 0);\n  const startOfNextYear = startOfWeek(firstWeekOfNextYear, options);\n\n  const firstWeekOfThisYear = constructFrom(options?.in || date, 0);\n  firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate);\n  firstWeekOfThisYear.setHours(0, 0, 0, 0);\n  const startOfThisYear = startOfWeek(firstWeekOfThisYear, options);\n\n  if (+_date >= +startOfNextYear) {\n    return year + 1;\n  } else if (+_date >= +startOfThisYear) {\n    return year;\n  } else {\n    return year - 1;\n  }\n}\n\n// Fallback for modularized imports:\nexport default getWeekYear;\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { getWeekYear } from \"./getWeekYear.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\n\n/**\n * The {@link startOfWeekYear} function options.\n */\n\n/**\n * @name startOfWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Return the start of a local week-numbering year for the given date.\n *\n * @description\n * Return the start of a local week-numbering year.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week-numbering year\n *\n * @example\n * // The start of an a week-numbering year for 2 July 2005 with default settings:\n * const result = startOfWeekYear(new Date(2005, 6, 2))\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // The start of a week-numbering year for 2 July 2005\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * const result = startOfWeekYear(new Date(2005, 6, 2), {\n *   weekStartsOn: 1,\n *   firstWeekContainsDate: 4\n * })\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfWeekYear(date, options) {\n  const defaultOptions = getDefaultOptions();\n  const firstWeekContainsDate =\n    options?.firstWeekContainsDate ??\n    options?.locale?.options?.firstWeekContainsDate ??\n    defaultOptions.firstWeekContainsDate ??\n    defaultOptions.locale?.options?.firstWeekContainsDate ??\n    1;\n\n  const year = getWeekYear(date, options);\n  const firstWeek = constructFrom(options?.in || date, 0);\n  firstWeek.setFullYear(year, 0, firstWeekContainsDate);\n  firstWeek.setHours(0, 0, 0, 0);\n  const _date = startOfWeek(firstWeek, options);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeekYear;\n","import { millisecondsInWeek } from \"./constants.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\nimport { startOfWeekYear } from \"./startOfWeekYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getWeek} function options.\n */\n\n/**\n * @name getWeek\n * @category Week Helpers\n * @summary Get the local week index of the given date.\n *\n * @description\n * Get the local week index of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The week\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005 with default options?\n * const result = getWeek(new Date(2005, 0, 2))\n * //=> 2\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January?\n * const result = getWeek(new Date(2005, 0, 2), {\n *   weekStartsOn: 1,\n *   firstWeekContainsDate: 4\n * })\n * //=> 53\n */\nexport function getWeek(date, options) {\n  const _date = toDate(date, options?.in);\n  const diff = +startOfWeek(_date, options) - +startOfWeekYear(_date, options);\n\n  // Round the number of weeks to the nearest integer because the number of\n  // milliseconds in a week is not constant (e.g. it's different in the week of\n  // the daylight saving time clock shift).\n  return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getWeek;\n","export function addLeadingZeros(number, targetLength) {\n  const sign = number < 0 ? \"-\" : \"\";\n  const output = Math.abs(number).toString().padStart(targetLength, \"0\");\n  return sign + output;\n}\n","import { addLeadingZeros } from \"../addLeadingZeros.js\";\n\n/*\n * |     | Unit                           |     | Unit                           |\n * |-----|--------------------------------|-----|--------------------------------|\n * |  a  | AM, PM                         |  A* |                                |\n * |  d  | Day of month                   |  D  |                                |\n * |  h  | Hour [1-12]                    |  H  | Hour [0-23]                    |\n * |  m  | Minute                         |  M  | Month                          |\n * |  s  | Second                         |  S  | Fraction of second             |\n * |  y  | Year (abs)                     |  Y  |                                |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nexport const lightFormatters = {\n  // Year\n  y(date, token) {\n    // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n    // | Year     |     y | yy |   yyy |  yyyy | yyyyy |\n    // |----------|-------|----|-------|-------|-------|\n    // | AD 1     |     1 | 01 |   001 |  0001 | 00001 |\n    // | AD 12    |    12 | 12 |   012 |  0012 | 00012 |\n    // | AD 123   |   123 | 23 |   123 |  0123 | 00123 |\n    // | AD 1234  |  1234 | 34 |  1234 |  1234 | 01234 |\n    // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n    const signedYear = date.getFullYear();\n    // Returns 1 for 1 BC (which is year 0 in JavaScript)\n    const year = signedYear > 0 ? signedYear : 1 - signedYear;\n    return addLeadingZeros(token === \"yy\" ? year % 100 : year, token.length);\n  },\n\n  // Month\n  M(date, token) {\n    const month = date.getMonth();\n    return token === \"M\" ? String(month + 1) : addLeadingZeros(month + 1, 2);\n  },\n\n  // Day of the month\n  d(date, token) {\n    return addLeadingZeros(date.getDate(), token.length);\n  },\n\n  // AM or PM\n  a(date, token) {\n    const dayPeriodEnumValue = date.getHours() / 12 >= 1 ? \"pm\" : \"am\";\n\n    switch (token) {\n      case \"a\":\n      case \"aa\":\n        return dayPeriodEnumValue.toUpperCase();\n      case \"aaa\":\n        return dayPeriodEnumValue;\n      case \"aaaaa\":\n        return dayPeriodEnumValue[0];\n      case \"aaaa\":\n      default:\n        return dayPeriodEnumValue === \"am\" ? \"a.m.\" : \"p.m.\";\n    }\n  },\n\n  // Hour [1-12]\n  h(date, token) {\n    return addLeadingZeros(date.getHours() % 12 || 12, token.length);\n  },\n\n  // Hour [0-23]\n  H(date, token) {\n    return addLeadingZeros(date.getHours(), token.length);\n  },\n\n  // Minute\n  m(date, token) {\n    return addLeadingZeros(date.getMinutes(), token.length);\n  },\n\n  // Second\n  s(date, token) {\n    return addLeadingZeros(date.getSeconds(), token.length);\n  },\n\n  // Fraction of second\n  S(date, token) {\n    const numberOfDigits = token.length;\n    const milliseconds = date.getMilliseconds();\n    const fractionalSeconds = Math.trunc(\n      milliseconds * Math.pow(10, numberOfDigits - 3),\n    );\n    return addLeadingZeros(fractionalSeconds, token.length);\n  },\n};\n","import { getDayOfYear } from \"../../getDayOfYear.js\";\nimport { getISOWeek } from \"../../getISOWeek.js\";\nimport { getISOWeekYear } from \"../../getISOWeekYear.js\";\nimport { getWeek } from \"../../getWeek.js\";\nimport { getWeekYear } from \"../../getWeekYear.js\";\n\nimport { addLeadingZeros } from \"../addLeadingZeros.js\";\nimport { lightFormatters } from \"./lightFormatters.js\";\n\nconst dayPeriodEnum = {\n  am: \"am\",\n  pm: \"pm\",\n  midnight: \"midnight\",\n  noon: \"noon\",\n  morning: \"morning\",\n  afternoon: \"afternoon\",\n  evening: \"evening\",\n  night: \"night\",\n};\n\n/*\n * |     | Unit                           |     | Unit                           |\n * |-----|--------------------------------|-----|--------------------------------|\n * |  a  | AM, PM                         |  A* | Milliseconds in day            |\n * |  b  | AM, PM, noon, midnight         |  B  | Flexible day period            |\n * |  c  | Stand-alone local day of week  |  C* | Localized hour w/ day period   |\n * |  d  | Day of month                   |  D  | Day of year                    |\n * |  e  | Local day of week              |  E  | Day of week                    |\n * |  f  |                                |  F* | Day of week in month           |\n * |  g* | Modified Julian day            |  G  | Era                            |\n * |  h  | Hour [1-12]                    |  H  | Hour [0-23]                    |\n * |  i! | ISO day of week                |  I! | ISO week of year               |\n * |  j* | Localized hour w/ day period   |  J* | Localized hour w/o day period  |\n * |  k  | Hour [1-24]                    |  K  | Hour [0-11]                    |\n * |  l* | (deprecated)                   |  L  | Stand-alone month              |\n * |  m  | Minute                         |  M  | Month                          |\n * |  n  |                                |  N  |                                |\n * |  o! | Ordinal number modifier        |  O  | Timezone (GMT)                 |\n * |  p! | Long localized time            |  P! | Long localized date            |\n * |  q  | Stand-alone quarter            |  Q  | Quarter                        |\n * |  r* | Related Gregorian year         |  R! | ISO week-numbering year        |\n * |  s  | Second                         |  S  | Fraction of second             |\n * |  t! | Seconds timestamp              |  T! | Milliseconds timestamp         |\n * |  u  | Extended year                  |  U* | Cyclic year                    |\n * |  v* | Timezone (generic non-locat.)  |  V* | Timezone (location)            |\n * |  w  | Local week of year             |  W* | Week of month                  |\n * |  x  | Timezone (ISO-8601 w/o Z)      |  X  | Timezone (ISO-8601)            |\n * |  y  | Year (abs)                     |  Y  | Local week-numbering year      |\n * |  z  | Timezone (specific non-locat.) |  Z* | Timezone (aliases)             |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n *   i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n *   `R` is supposed to be used in conjunction with `I` and `i`\n *   for universal ISO week-numbering date, whereas\n *   `Y` is supposed to be used in conjunction with `w` and `e`\n *   for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nexport const formatters = {\n  // Era\n  G: function (date, token, localize) {\n    const era = date.getFullYear() > 0 ? 1 : 0;\n    switch (token) {\n      // AD, BC\n      case \"G\":\n      case \"GG\":\n      case \"GGG\":\n        return localize.era(era, { width: \"abbreviated\" });\n      // A, B\n      case \"GGGGG\":\n        return localize.era(era, { width: \"narrow\" });\n      // Anno Domini, Before Christ\n      case \"GGGG\":\n      default:\n        return localize.era(era, { width: \"wide\" });\n    }\n  },\n\n  // Year\n  y: function (date, token, localize) {\n    // Ordinal number\n    if (token === \"yo\") {\n      const signedYear = date.getFullYear();\n      // Returns 1 for 1 BC (which is year 0 in JavaScript)\n      const year = signedYear > 0 ? signedYear : 1 - signedYear;\n      return localize.ordinalNumber(year, { unit: \"year\" });\n    }\n\n    return lightFormatters.y(date, token);\n  },\n\n  // Local week-numbering year\n  Y: function (date, token, localize, options) {\n    const signedWeekYear = getWeekYear(date, options);\n    // Returns 1 for 1 BC (which is year 0 in JavaScript)\n    const weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n    // Two digit year\n    if (token === \"YY\") {\n      const twoDigitYear = weekYear % 100;\n      return addLeadingZeros(twoDigitYear, 2);\n    }\n\n    // Ordinal number\n    if (token === \"Yo\") {\n      return localize.ordinalNumber(weekYear, { unit: \"year\" });\n    }\n\n    // Padding\n    return addLeadingZeros(weekYear, token.length);\n  },\n\n  // ISO week-numbering year\n  R: function (date, token) {\n    const isoWeekYear = getISOWeekYear(date);\n\n    // Padding\n    return addLeadingZeros(isoWeekYear, token.length);\n  },\n\n  // Extended year. This is a single number designating the year of this calendar system.\n  // The main difference between `y` and `u` localizers are B.C. years:\n  // | Year | `y` | `u` |\n  // |------|-----|-----|\n  // | AC 1 |   1 |   1 |\n  // | BC 1 |   1 |   0 |\n  // | BC 2 |   2 |  -1 |\n  // Also `yy` always returns the last two digits of a year,\n  // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n  u: function (date, token) {\n    const year = date.getFullYear();\n    return addLeadingZeros(year, token.length);\n  },\n\n  // Quarter\n  Q: function (date, token, localize) {\n    const quarter = Math.ceil((date.getMonth() + 1) / 3);\n    switch (token) {\n      // 1, 2, 3, 4\n      case \"Q\":\n        return String(quarter);\n      // 01, 02, 03, 04\n      case \"QQ\":\n        return addLeadingZeros(quarter, 2);\n      // 1st, 2nd, 3rd, 4th\n      case \"Qo\":\n        return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n      // Q1, Q2, Q3, Q4\n      case \"QQQ\":\n        return localize.quarter(quarter, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n      case \"QQQQQ\":\n        return localize.quarter(quarter, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      // 1st quarter, 2nd quarter, ...\n      case \"QQQQ\":\n      default:\n        return localize.quarter(quarter, {\n          width: \"wide\",\n          context: \"formatting\",\n        });\n    }\n  },\n\n  // Stand-alone quarter\n  q: function (date, token, localize) {\n    const quarter = Math.ceil((date.getMonth() + 1) / 3);\n    switch (token) {\n      // 1, 2, 3, 4\n      case \"q\":\n        return String(quarter);\n      // 01, 02, 03, 04\n      case \"qq\":\n        return addLeadingZeros(quarter, 2);\n      // 1st, 2nd, 3rd, 4th\n      case \"qo\":\n        return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n      // Q1, Q2, Q3, Q4\n      case \"qqq\":\n        return localize.quarter(quarter, {\n          width: \"abbreviated\",\n          context: \"standalone\",\n        });\n      // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n      case \"qqqqq\":\n        return localize.quarter(quarter, {\n          width: \"narrow\",\n          context: \"standalone\",\n        });\n      // 1st quarter, 2nd quarter, ...\n      case \"qqqq\":\n      default:\n        return localize.quarter(quarter, {\n          width: \"wide\",\n          context: \"standalone\",\n        });\n    }\n  },\n\n  // Month\n  M: function (date, token, localize) {\n    const month = date.getMonth();\n    switch (token) {\n      case \"M\":\n      case \"MM\":\n        return lightFormatters.M(date, token);\n      // 1st, 2nd, ..., 12th\n      case \"Mo\":\n        return localize.ordinalNumber(month + 1, { unit: \"month\" });\n      // Jan, Feb, ..., Dec\n      case \"MMM\":\n        return localize.month(month, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      // J, F, ..., D\n      case \"MMMMM\":\n        return localize.month(month, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      // January, February, ..., December\n      case \"MMMM\":\n      default:\n        return localize.month(month, { width: \"wide\", context: \"formatting\" });\n    }\n  },\n\n  // Stand-alone month\n  L: function (date, token, localize) {\n    const month = date.getMonth();\n    switch (token) {\n      // 1, 2, ..., 12\n      case \"L\":\n        return String(month + 1);\n      // 01, 02, ..., 12\n      case \"LL\":\n        return addLeadingZeros(month + 1, 2);\n      // 1st, 2nd, ..., 12th\n      case \"Lo\":\n        return localize.ordinalNumber(month + 1, { unit: \"month\" });\n      // Jan, Feb, ..., Dec\n      case \"LLL\":\n        return localize.month(month, {\n          width: \"abbreviated\",\n          context: \"standalone\",\n        });\n      // J, F, ..., D\n      case \"LLLLL\":\n        return localize.month(month, {\n          width: \"narrow\",\n          context: \"standalone\",\n        });\n      // January, February, ..., December\n      case \"LLLL\":\n      default:\n        return localize.month(month, { width: \"wide\", context: \"standalone\" });\n    }\n  },\n\n  // Local week of year\n  w: function (date, token, localize, options) {\n    const week = getWeek(date, options);\n\n    if (token === \"wo\") {\n      return localize.ordinalNumber(week, { unit: \"week\" });\n    }\n\n    return addLeadingZeros(week, token.length);\n  },\n\n  // ISO week of year\n  I: function (date, token, localize) {\n    const isoWeek = getISOWeek(date);\n\n    if (token === \"Io\") {\n      return localize.ordinalNumber(isoWeek, { unit: \"week\" });\n    }\n\n    return addLeadingZeros(isoWeek, token.length);\n  },\n\n  // Day of the month\n  d: function (date, token, localize) {\n    if (token === \"do\") {\n      return localize.ordinalNumber(date.getDate(), { unit: \"date\" });\n    }\n\n    return lightFormatters.d(date, token);\n  },\n\n  // Day of year\n  D: function (date, token, localize) {\n    const dayOfYear = getDayOfYear(date);\n\n    if (token === \"Do\") {\n      return localize.ordinalNumber(dayOfYear, { unit: \"dayOfYear\" });\n    }\n\n    return addLeadingZeros(dayOfYear, token.length);\n  },\n\n  // Day of week\n  E: function (date, token, localize) {\n    const dayOfWeek = date.getDay();\n    switch (token) {\n      // Tue\n      case \"E\":\n      case \"EE\":\n      case \"EEE\":\n        return localize.day(dayOfWeek, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      // T\n      case \"EEEEE\":\n        return localize.day(dayOfWeek, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      // Tu\n      case \"EEEEEE\":\n        return localize.day(dayOfWeek, {\n          width: \"short\",\n          context: \"formatting\",\n        });\n      // Tuesday\n      case \"EEEE\":\n      default:\n        return localize.day(dayOfWeek, {\n          width: \"wide\",\n          context: \"formatting\",\n        });\n    }\n  },\n\n  // Local day of week\n  e: function (date, token, localize, options) {\n    const dayOfWeek = date.getDay();\n    const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n    switch (token) {\n      // Numerical value (Nth day of week with current locale or weekStartsOn)\n      case \"e\":\n        return String(localDayOfWeek);\n      // Padded numerical value\n      case \"ee\":\n        return addLeadingZeros(localDayOfWeek, 2);\n      // 1st, 2nd, ..., 7th\n      case \"eo\":\n        return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n      case \"eee\":\n        return localize.day(dayOfWeek, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      // T\n      case \"eeeee\":\n        return localize.day(dayOfWeek, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      // Tu\n      case \"eeeeee\":\n        return localize.day(dayOfWeek, {\n          width: \"short\",\n          context: \"formatting\",\n        });\n      // Tuesday\n      case \"eeee\":\n      default:\n        return localize.day(dayOfWeek, {\n          width: \"wide\",\n          context: \"formatting\",\n        });\n    }\n  },\n\n  // Stand-alone local day of week\n  c: function (date, token, localize, options) {\n    const dayOfWeek = date.getDay();\n    const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n    switch (token) {\n      // Numerical value (same as in `e`)\n      case \"c\":\n        return String(localDayOfWeek);\n      // Padded numerical value\n      case \"cc\":\n        return addLeadingZeros(localDayOfWeek, token.length);\n      // 1st, 2nd, ..., 7th\n      case \"co\":\n        return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n      case \"ccc\":\n        return localize.day(dayOfWeek, {\n          width: \"abbreviated\",\n          context: \"standalone\",\n        });\n      // T\n      case \"ccccc\":\n        return localize.day(dayOfWeek, {\n          width: \"narrow\",\n          context: \"standalone\",\n        });\n      // Tu\n      case \"cccccc\":\n        return localize.day(dayOfWeek, {\n          width: \"short\",\n          context: \"standalone\",\n        });\n      // Tuesday\n      case \"cccc\":\n      default:\n        return localize.day(dayOfWeek, {\n          width: \"wide\",\n          context: \"standalone\",\n        });\n    }\n  },\n\n  // ISO day of week\n  i: function (date, token, localize) {\n    const dayOfWeek = date.getDay();\n    const isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n    switch (token) {\n      // 2\n      case \"i\":\n        return String(isoDayOfWeek);\n      // 02\n      case \"ii\":\n        return addLeadingZeros(isoDayOfWeek, token.length);\n      // 2nd\n      case \"io\":\n        return localize.ordinalNumber(isoDayOfWeek, { unit: \"day\" });\n      // Tue\n      case \"iii\":\n        return localize.day(dayOfWeek, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      // T\n      case \"iiiii\":\n        return localize.day(dayOfWeek, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      // Tu\n      case \"iiiiii\":\n        return localize.day(dayOfWeek, {\n          width: \"short\",\n          context: \"formatting\",\n        });\n      // Tuesday\n      case \"iiii\":\n      default:\n        return localize.day(dayOfWeek, {\n          width: \"wide\",\n          context: \"formatting\",\n        });\n    }\n  },\n\n  // AM or PM\n  a: function (date, token, localize) {\n    const hours = date.getHours();\n    const dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n\n    switch (token) {\n      case \"a\":\n      case \"aa\":\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      case \"aaa\":\n        return localize\n          .dayPeriod(dayPeriodEnumValue, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          })\n          .toLowerCase();\n      case \"aaaaa\":\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      case \"aaaa\":\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"wide\",\n          context: \"formatting\",\n        });\n    }\n  },\n\n  // AM, PM, midnight, noon\n  b: function (date, token, localize) {\n    const hours = date.getHours();\n    let dayPeriodEnumValue;\n    if (hours === 12) {\n      dayPeriodEnumValue = dayPeriodEnum.noon;\n    } else if (hours === 0) {\n      dayPeriodEnumValue = dayPeriodEnum.midnight;\n    } else {\n      dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n    }\n\n    switch (token) {\n      case \"b\":\n      case \"bb\":\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      case \"bbb\":\n        return localize\n          .dayPeriod(dayPeriodEnumValue, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          })\n          .toLowerCase();\n      case \"bbbbb\":\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      case \"bbbb\":\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"wide\",\n          context: \"formatting\",\n        });\n    }\n  },\n\n  // in the morning, in the afternoon, in the evening, at night\n  B: function (date, token, localize) {\n    const hours = date.getHours();\n    let dayPeriodEnumValue;\n    if (hours >= 17) {\n      dayPeriodEnumValue = dayPeriodEnum.evening;\n    } else if (hours >= 12) {\n      dayPeriodEnumValue = dayPeriodEnum.afternoon;\n    } else if (hours >= 4) {\n      dayPeriodEnumValue = dayPeriodEnum.morning;\n    } else {\n      dayPeriodEnumValue = dayPeriodEnum.night;\n    }\n\n    switch (token) {\n      case \"B\":\n      case \"BB\":\n      case \"BBB\":\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      case \"BBBBB\":\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      case \"BBBB\":\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"wide\",\n          context: \"formatting\",\n        });\n    }\n  },\n\n  // Hour [1-12]\n  h: function (date, token, localize) {\n    if (token === \"ho\") {\n      let hours = date.getHours() % 12;\n      if (hours === 0) hours = 12;\n      return localize.ordinalNumber(hours, { unit: \"hour\" });\n    }\n\n    return lightFormatters.h(date, token);\n  },\n\n  // Hour [0-23]\n  H: function (date, token, localize) {\n    if (token === \"Ho\") {\n      return localize.ordinalNumber(date.getHours(), { unit: \"hour\" });\n    }\n\n    return lightFormatters.H(date, token);\n  },\n\n  // Hour [0-11]\n  K: function (date, token, localize) {\n    const hours = date.getHours() % 12;\n\n    if (token === \"Ko\") {\n      return localize.ordinalNumber(hours, { unit: \"hour\" });\n    }\n\n    return addLeadingZeros(hours, token.length);\n  },\n\n  // Hour [1-24]\n  k: function (date, token, localize) {\n    let hours = date.getHours();\n    if (hours === 0) hours = 24;\n\n    if (token === \"ko\") {\n      return localize.ordinalNumber(hours, { unit: \"hour\" });\n    }\n\n    return addLeadingZeros(hours, token.length);\n  },\n\n  // Minute\n  m: function (date, token, localize) {\n    if (token === \"mo\") {\n      return localize.ordinalNumber(date.getMinutes(), { unit: \"minute\" });\n    }\n\n    return lightFormatters.m(date, token);\n  },\n\n  // Second\n  s: function (date, token, localize) {\n    if (token === \"so\") {\n      return localize.ordinalNumber(date.getSeconds(), { unit: \"second\" });\n    }\n\n    return lightFormatters.s(date, token);\n  },\n\n  // Fraction of second\n  S: function (date, token) {\n    return lightFormatters.S(date, token);\n  },\n\n  // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n  X: function (date, token, _localize) {\n    const timezoneOffset = date.getTimezoneOffset();\n\n    if (timezoneOffset === 0) {\n      return \"Z\";\n    }\n\n    switch (token) {\n      // Hours and optional minutes\n      case \"X\":\n        return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n      // Hours, minutes and optional seconds without `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `XX`\n      case \"XXXX\":\n      case \"XX\": // Hours and minutes without `:` delimiter\n        return formatTimezone(timezoneOffset);\n\n      // Hours, minutes and optional seconds with `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `XXX`\n      case \"XXXXX\":\n      case \"XXX\": // Hours and minutes with `:` delimiter\n      default:\n        return formatTimezone(timezoneOffset, \":\");\n    }\n  },\n\n  // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n  x: function (date, token, _localize) {\n    const timezoneOffset = date.getTimezoneOffset();\n\n    switch (token) {\n      // Hours and optional minutes\n      case \"x\":\n        return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n      // Hours, minutes and optional seconds without `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `xx`\n      case \"xxxx\":\n      case \"xx\": // Hours and minutes without `:` delimiter\n        return formatTimezone(timezoneOffset);\n\n      // Hours, minutes and optional seconds with `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `xxx`\n      case \"xxxxx\":\n      case \"xxx\": // Hours and minutes with `:` delimiter\n      default:\n        return formatTimezone(timezoneOffset, \":\");\n    }\n  },\n\n  // Timezone (GMT)\n  O: function (date, token, _localize) {\n    const timezoneOffset = date.getTimezoneOffset();\n\n    switch (token) {\n      // Short\n      case \"O\":\n      case \"OO\":\n      case \"OOO\":\n        return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n      // Long\n      case \"OOOO\":\n      default:\n        return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n    }\n  },\n\n  // Timezone (specific non-location)\n  z: function (date, token, _localize) {\n    const timezoneOffset = date.getTimezoneOffset();\n\n    switch (token) {\n      // Short\n      case \"z\":\n      case \"zz\":\n      case \"zzz\":\n        return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n      // Long\n      case \"zzzz\":\n      default:\n        return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n    }\n  },\n\n  // Seconds timestamp\n  t: function (date, token, _localize) {\n    const timestamp = Math.trunc(+date / 1000);\n    return addLeadingZeros(timestamp, token.length);\n  },\n\n  // Milliseconds timestamp\n  T: function (date, token, _localize) {\n    return addLeadingZeros(+date, token.length);\n  },\n};\n\nfunction formatTimezoneShort(offset, delimiter = \"\") {\n  const sign = offset > 0 ? \"-\" : \"+\";\n  const absOffset = Math.abs(offset);\n  const hours = Math.trunc(absOffset / 60);\n  const minutes = absOffset % 60;\n  if (minutes === 0) {\n    return sign + String(hours);\n  }\n  return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, delimiter) {\n  if (offset % 60 === 0) {\n    const sign = offset > 0 ? \"-\" : \"+\";\n    return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n  }\n  return formatTimezone(offset, delimiter);\n}\n\nfunction formatTimezone(offset, delimiter = \"\") {\n  const sign = offset > 0 ? \"-\" : \"+\";\n  const absOffset = Math.abs(offset);\n  const hours = addLeadingZeros(Math.trunc(absOffset / 60), 2);\n  const minutes = addLeadingZeros(absOffset % 60, 2);\n  return sign + hours + delimiter + minutes;\n}\n","const dateLongFormatter = (pattern, formatLong) => {\n  switch (pattern) {\n    case \"P\":\n      return formatLong.date({ width: \"short\" });\n    case \"PP\":\n      return formatLong.date({ width: \"medium\" });\n    case \"PPP\":\n      return formatLong.date({ width: \"long\" });\n    case \"PPPP\":\n    default:\n      return formatLong.date({ width: \"full\" });\n  }\n};\n\nconst timeLongFormatter = (pattern, formatLong) => {\n  switch (pattern) {\n    case \"p\":\n      return formatLong.time({ width: \"short\" });\n    case \"pp\":\n      return formatLong.time({ width: \"medium\" });\n    case \"ppp\":\n      return formatLong.time({ width: \"long\" });\n    case \"pppp\":\n    default:\n      return formatLong.time({ width: \"full\" });\n  }\n};\n\nconst dateTimeLongFormatter = (pattern, formatLong) => {\n  const matchResult = pattern.match(/(P+)(p+)?/) || [];\n  const datePattern = matchResult[1];\n  const timePattern = matchResult[2];\n\n  if (!timePattern) {\n    return dateLongFormatter(pattern, formatLong);\n  }\n\n  let dateTimeFormat;\n\n  switch (datePattern) {\n    case \"P\":\n      dateTimeFormat = formatLong.dateTime({ width: \"short\" });\n      break;\n    case \"PP\":\n      dateTimeFormat = formatLong.dateTime({ width: \"medium\" });\n      break;\n    case \"PPP\":\n      dateTimeFormat = formatLong.dateTime({ width: \"long\" });\n      break;\n    case \"PPPP\":\n    default:\n      dateTimeFormat = formatLong.dateTime({ width: \"full\" });\n      break;\n  }\n\n  return dateTimeFormat\n    .replace(\"{{date}}\", dateLongFormatter(datePattern, formatLong))\n    .replace(\"{{time}}\", timeLongFormatter(timePattern, formatLong));\n};\n\nexport const longFormatters = {\n  p: timeLongFormatter,\n  P: dateTimeLongFormatter,\n};\n","const dayOfYearTokenRE = /^D+$/;\nconst weekYearTokenRE = /^Y+$/;\n\nconst throwTokens = [\"D\", \"DD\", \"YY\", \"YYYY\"];\n\nexport function isProtectedDayOfYearToken(token) {\n  return dayOfYearTokenRE.test(token);\n}\n\nexport function isProtectedWeekYearToken(token) {\n  return weekYearTokenRE.test(token);\n}\n\nexport function warnOrThrowProtectedError(token, format, input) {\n  const _message = message(token, format, input);\n  console.warn(_message);\n  if (throwTokens.includes(token)) throw new RangeError(_message);\n}\n\nfunction message(token, format, input) {\n  const subject = token[0] === \"Y\" ? \"years\" : \"days of the month\";\n  return `Use \\`${token.toLowerCase()}\\` instead of \\`${token}\\` (in \\`${format}\\`) for formatting ${subject} to the input \\`${input}\\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`;\n}\n","import { defaultLocale } from \"./_lib/defaultLocale.js\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { formatters } from \"./_lib/format/formatters.js\";\nimport { longFormatters } from \"./_lib/format/longFormatters.js\";\nimport {\n  isProtectedDayOfYearToken,\n  isProtectedWeekYearToken,\n  warnOrThrowProtectedError,\n} from \"./_lib/protectedTokens.js\";\nimport { isValid } from \"./isValid.js\";\nimport { toDate } from \"./toDate.js\";\n\n// Rexports of internal for libraries to use.\n// See: https://github.com/date-fns/date-fns/issues/3638#issuecomment-1877082874\nexport { formatters, longFormatters };\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n//   (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n//   except a single quote symbol, which ends the sequence.\n//   Two quote characters do not end the sequence.\n//   If there is no matching single quote\n//   then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nconst formattingTokensRegExp =\n  /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nconst longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\n\nconst escapedStringRegExp = /^'([^]*?)'?$/;\nconst doubleQuoteRegExp = /''/g;\nconst unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\nexport { format as formatDate };\n\n/**\n * The {@link format} function options.\n */\n\n/**\n * @name format\n * @alias formatDate\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit                            | Pattern | Result examples                   | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era                             | G..GGG  | AD, BC                            |       |\n * |                                 | GGGG    | Anno Domini, Before Christ        | 2     |\n * |                                 | GGGGG   | A, B                              |       |\n * | Calendar year                   | y       | 44, 1, 1900, 2017                 | 5     |\n * |                                 | yo      | 44th, 1st, 0th, 17th              | 5,7   |\n * |                                 | yy      | 44, 01, 00, 17                    | 5     |\n * |                                 | yyy     | 044, 001, 1900, 2017              | 5     |\n * |                                 | yyyy    | 0044, 0001, 1900, 2017            | 5     |\n * |                                 | yyyyy   | ...                               | 3,5   |\n * | Local week-numbering year       | Y       | 44, 1, 1900, 2017                 | 5     |\n * |                                 | Yo      | 44th, 1st, 1900th, 2017th         | 5,7   |\n * |                                 | YY      | 44, 01, 00, 17                    | 5,8   |\n * |                                 | YYY     | 044, 001, 1900, 2017              | 5     |\n * |                                 | YYYY    | 0044, 0001, 1900, 2017            | 5,8   |\n * |                                 | YYYYY   | ...                               | 3,5   |\n * | ISO week-numbering year         | R       | -43, 0, 1, 1900, 2017             | 5,7   |\n * |                                 | RR      | -43, 00, 01, 1900, 2017           | 5,7   |\n * |                                 | RRR     | -043, 000, 001, 1900, 2017        | 5,7   |\n * |                                 | RRRR    | -0043, 0000, 0001, 1900, 2017     | 5,7   |\n * |                                 | RRRRR   | ...                               | 3,5,7 |\n * | Extended year                   | u       | -43, 0, 1, 1900, 2017             | 5     |\n * |                                 | uu      | -43, 01, 1900, 2017               | 5     |\n * |                                 | uuu     | -043, 001, 1900, 2017             | 5     |\n * |                                 | uuuu    | -0043, 0001, 1900, 2017           | 5     |\n * |                                 | uuuuu   | ...                               | 3,5   |\n * | Quarter (formatting)            | Q       | 1, 2, 3, 4                        |       |\n * |                                 | Qo      | 1st, 2nd, 3rd, 4th                | 7     |\n * |                                 | QQ      | 01, 02, 03, 04                    |       |\n * |                                 | QQQ     | Q1, Q2, Q3, Q4                    |       |\n * |                                 | QQQQ    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 | QQQQQ   | 1, 2, 3, 4                        | 4     |\n * | Quarter (stand-alone)           | q       | 1, 2, 3, 4                        |       |\n * |                                 | qo      | 1st, 2nd, 3rd, 4th                | 7     |\n * |                                 | qq      | 01, 02, 03, 04                    |       |\n * |                                 | qqq     | Q1, Q2, Q3, Q4                    |       |\n * |                                 | qqqq    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 | qqqqq   | 1, 2, 3, 4                        | 4     |\n * | Month (formatting)              | M       | 1, 2, ..., 12                     |       |\n * |                                 | Mo      | 1st, 2nd, ..., 12th               | 7     |\n * |                                 | MM      | 01, 02, ..., 12                   |       |\n * |                                 | MMM     | Jan, Feb, ..., Dec                |       |\n * |                                 | MMMM    | January, February, ..., December  | 2     |\n * |                                 | MMMMM   | J, F, ..., D                      |       |\n * | Month (stand-alone)             | L       | 1, 2, ..., 12                     |       |\n * |                                 | Lo      | 1st, 2nd, ..., 12th               | 7     |\n * |                                 | LL      | 01, 02, ..., 12                   |       |\n * |                                 | LLL     | Jan, Feb, ..., Dec                |       |\n * |                                 | LLLL    | January, February, ..., December  | 2     |\n * |                                 | LLLLL   | J, F, ..., D                      |       |\n * | Local week of year              | w       | 1, 2, ..., 53                     |       |\n * |                                 | wo      | 1st, 2nd, ..., 53th               | 7     |\n * |                                 | ww      | 01, 02, ..., 53                   |       |\n * | ISO week of year                | I       | 1, 2, ..., 53                     | 7     |\n * |                                 | Io      | 1st, 2nd, ..., 53th               | 7     |\n * |                                 | II      | 01, 02, ..., 53                   | 7     |\n * | Day of month                    | d       | 1, 2, ..., 31                     |       |\n * |                                 | do      | 1st, 2nd, ..., 31st               | 7     |\n * |                                 | dd      | 01, 02, ..., 31                   |       |\n * | Day of year                     | D       | 1, 2, ..., 365, 366               | 9     |\n * |                                 | Do      | 1st, 2nd, ..., 365th, 366th       | 7     |\n * |                                 | DD      | 01, 02, ..., 365, 366             | 9     |\n * |                                 | DDD     | 001, 002, ..., 365, 366           |       |\n * |                                 | DDDD    | ...                               | 3     |\n * | Day of week (formatting)        | E..EEE  | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | EEEE    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | EEEEE   | M, T, W, T, F, S, S               |       |\n * |                                 | EEEEEE  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | ISO day of week (formatting)    | i       | 1, 2, 3, ..., 7                   | 7     |\n * |                                 | io      | 1st, 2nd, ..., 7th                | 7     |\n * |                                 | ii      | 01, 02, ..., 07                   | 7     |\n * |                                 | iii     | Mon, Tue, Wed, ..., Sun           | 7     |\n * |                                 | iiii    | Monday, Tuesday, ..., Sunday      | 2,7   |\n * |                                 | iiiii   | M, T, W, T, F, S, S               | 7     |\n * |                                 | iiiiii  | Mo, Tu, We, Th, Fr, Sa, Su        | 7     |\n * | Local day of week (formatting)  | e       | 2, 3, 4, ..., 1                   |       |\n * |                                 | eo      | 2nd, 3rd, ..., 1st                | 7     |\n * |                                 | ee      | 02, 03, ..., 01                   |       |\n * |                                 | eee     | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | eeee    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | eeeee   | M, T, W, T, F, S, S               |       |\n * |                                 | eeeeee  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | Local day of week (stand-alone) | c       | 2, 3, 4, ..., 1                   |       |\n * |                                 | co      | 2nd, 3rd, ..., 1st                | 7     |\n * |                                 | cc      | 02, 03, ..., 01                   |       |\n * |                                 | ccc     | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | cccc    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | ccccc   | M, T, W, T, F, S, S               |       |\n * |                                 | cccccc  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | AM, PM                          | a..aa   | AM, PM                            |       |\n * |                                 | aaa     | am, pm                            |       |\n * |                                 | aaaa    | a.m., p.m.                        | 2     |\n * |                                 | aaaaa   | a, p                              |       |\n * | AM, PM, noon, midnight          | b..bb   | AM, PM, noon, midnight            |       |\n * |                                 | bbb     | am, pm, noon, midnight            |       |\n * |                                 | bbbb    | a.m., p.m., noon, midnight        | 2     |\n * |                                 | bbbbb   | a, p, n, mi                       |       |\n * | Flexible day period             | B..BBB  | at night, in the morning, ...     |       |\n * |                                 | BBBB    | at night, in the morning, ...     | 2     |\n * |                                 | BBBBB   | at night, in the morning, ...     |       |\n * | Hour [1-12]                     | h       | 1, 2, ..., 11, 12                 |       |\n * |                                 | ho      | 1st, 2nd, ..., 11th, 12th         | 7     |\n * |                                 | hh      | 01, 02, ..., 11, 12               |       |\n * | Hour [0-23]                     | H       | 0, 1, 2, ..., 23                  |       |\n * |                                 | Ho      | 0th, 1st, 2nd, ..., 23rd          | 7     |\n * |                                 | HH      | 00, 01, 02, ..., 23               |       |\n * | Hour [0-11]                     | K       | 1, 2, ..., 11, 0                  |       |\n * |                                 | Ko      | 1st, 2nd, ..., 11th, 0th          | 7     |\n * |                                 | KK      | 01, 02, ..., 11, 00               |       |\n * | Hour [1-24]                     | k       | 24, 1, 2, ..., 23                 |       |\n * |                                 | ko      | 24th, 1st, 2nd, ..., 23rd         | 7     |\n * |                                 | kk      | 24, 01, 02, ..., 23               |       |\n * | Minute                          | m       | 0, 1, ..., 59                     |       |\n * |                                 | mo      | 0th, 1st, ..., 59th               | 7     |\n * |                                 | mm      | 00, 01, ..., 59                   |       |\n * | Second                          | s       | 0, 1, ..., 59                     |       |\n * |                                 | so      | 0th, 1st, ..., 59th               | 7     |\n * |                                 | ss      | 00, 01, ..., 59                   |       |\n * | Fraction of second              | S       | 0, 1, ..., 9                      |       |\n * |                                 | SS      | 00, 01, ..., 99                   |       |\n * |                                 | SSS     | 000, 001, ..., 999                |       |\n * |                                 | SSSS    | ...                               | 3     |\n * | Timezone (ISO-8601 w/ Z)        | X       | -08, +0530, Z                     |       |\n * |                                 | XX      | -0800, +0530, Z                   |       |\n * |                                 | XXX     | -08:00, +05:30, Z                 |       |\n * |                                 | XXXX    | -0800, +0530, Z, +123456          | 2     |\n * |                                 | XXXXX   | -08:00, +05:30, Z, +12:34:56      |       |\n * | Timezone (ISO-8601 w/o Z)       | x       | -08, +0530, +00                   |       |\n * |                                 | xx      | -0800, +0530, +0000               |       |\n * |                                 | xxx     | -08:00, +05:30, +00:00            | 2     |\n * |                                 | xxxx    | -0800, +0530, +0000, +123456      |       |\n * |                                 | xxxxx   | -08:00, +05:30, +00:00, +12:34:56 |       |\n * | Timezone (GMT)                  | O...OOO | GMT-8, GMT+5:30, GMT+0            |       |\n * |                                 | OOOO    | GMT-08:00, GMT+05:30, GMT+00:00   | 2     |\n * | Timezone (specific non-locat.)  | z...zzz | GMT-8, GMT+5:30, GMT+0            | 6     |\n * |                                 | zzzz    | GMT-08:00, GMT+05:30, GMT+00:00   | 2,6   |\n * | Seconds timestamp               | t       | 512969520                         | 7     |\n * |                                 | tt      | ...                               | 3,7   |\n * | Milliseconds timestamp          | T       | 512969520900                      | 7     |\n * |                                 | TT      | ...                               | 3,7   |\n * | Long localized date             | P       | 04/29/1453                        | 7     |\n * |                                 | PP      | Apr 29, 1453                      | 7     |\n * |                                 | PPP     | April 29th, 1453                  | 7     |\n * |                                 | PPPP    | Friday, April 29th, 1453          | 2,7   |\n * | Long localized time             | p       | 12:00 AM                          | 7     |\n * |                                 | pp      | 12:00:00 AM                       | 7     |\n * |                                 | ppp     | 12:00:00 AM GMT+2                 | 7     |\n * |                                 | pppp    | 12:00:00 AM GMT+02:00             | 2,7   |\n * | Combination of date and time    | Pp      | 04/29/1453, 12:00 AM              | 7     |\n * |                                 | PPpp    | Apr 29, 1453, 12:00:00 AM         | 7     |\n * |                                 | PPPppp  | April 29th, 1453 at ...           | 7     |\n * |                                 | PPPPpppp| Friday, April 29th, 1453 at ...   | 2,7   |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n *    are the same as \"stand-alone\" units, but are different in some languages.\n *    \"Formatting\" units are declined according to the rules of the language\n *    in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n *    `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n *    `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n *    the single quote characters (see below).\n *    If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n *    the output will be the same as default pattern for this unit, usually\n *    the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n *    are marked with \"2\" in the last column of the table.\n *\n *    `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n *    The output will be padded with zeros to match the length of the pattern.\n *\n *    `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n *    These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n *    | Year | `y` | `u` |\n *    |------|-----|-----|\n *    | AC 1 |   1 |   1 |\n *    | BC 1 |   1 |   0 |\n *    | BC 2 |   2 |  -1 |\n *\n *    Also `yy` always returns the last two digits of a year,\n *    while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n *    | Year | `yy` | `uu` |\n *    |------|------|------|\n *    | 1    |   01 |   01 |\n *    | 14   |   14 |   14 |\n *    | 376  |   76 |  376 |\n *    | 1453 |   53 | 1453 |\n *\n *    The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n *    except local week-numbering years are dependent on `options.weekStartsOn`\n *    and `options.firstWeekContainsDate` (compare [getISOWeekYear](https://date-fns.org/docs/getISOWeekYear)\n *    and [getWeekYear](https://date-fns.org/docs/getWeekYear)).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n *    so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n *    - `i`: ISO day of week\n *    - `I`: ISO week of year\n *    - `R`: ISO week-numbering year\n *    - `t`: seconds timestamp\n *    - `T`: milliseconds timestamp\n *    - `o`: ordinal number modifier\n *    - `P`: long localized date\n *    - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n *    You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n *    You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param date - The original date\n * @param format - The string of tokens\n * @param options - An object with options\n *\n * @returns The formatted date string\n *\n * @throws `date` must not be Invalid Date\n * @throws `options.locale` must contain `localize` property\n * @throws `options.locale` must contain `formatLong` property\n * @throws use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n *   locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\nexport function format(date, formatStr, options) {\n  const defaultOptions = getDefaultOptions();\n  const locale = options?.locale ?? defaultOptions.locale ?? defaultLocale;\n\n  const firstWeekContainsDate =\n    options?.firstWeekContainsDate ??\n    options?.locale?.options?.firstWeekContainsDate ??\n    defaultOptions.firstWeekContainsDate ??\n    defaultOptions.locale?.options?.firstWeekContainsDate ??\n    1;\n\n  const weekStartsOn =\n    options?.weekStartsOn ??\n    options?.locale?.options?.weekStartsOn ??\n    defaultOptions.weekStartsOn ??\n    defaultOptions.locale?.options?.weekStartsOn ??\n    0;\n\n  const originalDate = toDate(date, options?.in);\n\n  if (!isValid(originalDate)) {\n    throw new RangeError(\"Invalid time value\");\n  }\n\n  let parts = formatStr\n    .match(longFormattingTokensRegExp)\n    .map((substring) => {\n      const firstCharacter = substring[0];\n      if (firstCharacter === \"p\" || firstCharacter === \"P\") {\n        const longFormatter = longFormatters[firstCharacter];\n        return longFormatter(substring, locale.formatLong);\n      }\n      return substring;\n    })\n    .join(\"\")\n    .match(formattingTokensRegExp)\n    .map((substring) => {\n      // Replace two single quote characters with one single quote character\n      if (substring === \"''\") {\n        return { isToken: false, value: \"'\" };\n      }\n\n      const firstCharacter = substring[0];\n      if (firstCharacter === \"'\") {\n        return { isToken: false, value: cleanEscapedString(substring) };\n      }\n\n      if (formatters[firstCharacter]) {\n        return { isToken: true, value: substring };\n      }\n\n      if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n        throw new RangeError(\n          \"Format string contains an unescaped latin alphabet character `\" +\n            firstCharacter +\n            \"`\",\n        );\n      }\n\n      return { isToken: false, value: substring };\n    });\n\n  // invoke localize preprocessor (only for french locales at the moment)\n  if (locale.localize.preprocessor) {\n    parts = locale.localize.preprocessor(originalDate, parts);\n  }\n\n  const formatterOptions = {\n    firstWeekContainsDate,\n    weekStartsOn,\n    locale,\n  };\n\n  return parts\n    .map((part) => {\n      if (!part.isToken) return part.value;\n\n      const token = part.value;\n\n      if (\n        (!options?.useAdditionalWeekYearTokens &&\n          isProtectedWeekYearToken(token)) ||\n        (!options?.useAdditionalDayOfYearTokens &&\n          isProtectedDayOfYearToken(token))\n      ) {\n        warnOrThrowProtectedError(token, formatStr, String(date));\n      }\n\n      const formatter = formatters[token[0]];\n      return formatter(originalDate, token, locale.localize, formatterOptions);\n    })\n    .join(\"\");\n}\n\nfunction cleanEscapedString(input) {\n  const matched = input.match(escapedStringRegExp);\n\n  if (!matched) {\n    return input;\n  }\n\n  return matched[1].replace(doubleQuoteRegExp, \"'\");\n}\n\n// Fallback for modularized imports:\nexport default format;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getDate} function options.\n */\n\n/**\n * @name getDate\n * @category Day Helpers\n * @summary Get the day of the month of the given date.\n *\n * @description\n * Get the day of the month of the given date.\n *\n * @param date - The given date\n * @param options - An object with options.\n *\n * @returns The day of month\n *\n * @example\n * // Which day of the month is 29 February 2012?\n * const result = getDate(new Date(2012, 1, 29))\n * //=> 29\n */\nexport function getDate(date, options) {\n  return toDate(date, options?.in).getDate();\n}\n\n// Fallback for modularized imports:\nexport default getDate;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getDay} function options.\n */\n\n/**\n * @name getDay\n * @category Weekday Helpers\n * @summary Get the day of the week of the given date.\n *\n * @description\n * Get the day of the week of the given date.\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The day of week, 0 represents Sunday\n *\n * @example\n * // Which day of the week is 29 February 2012?\n * const result = getDay(new Date(2012, 1, 29))\n * //=> 3\n */\nexport function getDay(date, options) {\n  return toDate(date, options?.in).getDay();\n}\n\n// Fallback for modularized imports:\nexport default getDay;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getDaysInMonth} function options.\n */\n\n/**\n * @name getDaysInMonth\n * @category Month Helpers\n * @summary Get the number of days in a month of the given date.\n *\n * @description\n * Get the number of days in a month of the given date, considering the context if provided.\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The number of days in a month\n *\n * @example\n * // How many days are in February 2000?\n * const result = getDaysInMonth(new Date(2000, 1))\n * //=> 29\n */\nexport function getDaysInMonth(date, options) {\n  const _date = toDate(date, options?.in);\n  const year = _date.getFullYear();\n  const monthIndex = _date.getMonth();\n  const lastDayOfMonth = constructFrom(_date, 0);\n  lastDayOfMonth.setFullYear(year, monthIndex + 1, 0);\n  lastDayOfMonth.setHours(0, 0, 0, 0);\n  return lastDayOfMonth.getDate();\n}\n\n// Fallback for modularized imports:\nexport default getDaysInMonth;\n","import { getDefaultOptions as getInternalDefaultOptions } from \"./_lib/defaultOptions.js\";\n\n/**\n * @name getDefaultOptions\n * @category Common Helpers\n * @summary Get default options.\n * @pure false\n *\n * @description\n * Returns an object that contains defaults for\n * `options.locale`, `options.weekStartsOn` and `options.firstWeekContainsDate`\n * arguments for all functions.\n *\n * You can change these with [setDefaultOptions](https://date-fns.org/docs/setDefaultOptions).\n *\n * @returns The default options\n *\n * @example\n * const result = getDefaultOptions()\n * //=> {}\n *\n * @example\n * setDefaultOptions({ weekStarsOn: 1, firstWeekContainsDate: 4 })\n * const result = getDefaultOptions()\n * //=> { weekStarsOn: 1, firstWeekContainsDate: 4 }\n */\nexport function getDefaultOptions() {\n  return Object.assign({}, getInternalDefaultOptions());\n}\n\n// Fallback for modularized imports:\nexport default getDefaultOptions;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getHours} function options.\n */\n\n/**\n * @name getHours\n * @category Hour Helpers\n * @summary Get the hours of the given date.\n *\n * @description\n * Get the hours of the given date.\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The hours\n *\n * @example\n * // Get the hours of 29 February 2012 11:45:00:\n * const result = getHours(new Date(2012, 1, 29, 11, 45))\n * //=> 11\n */\nexport function getHours(date, options) {\n  return toDate(date, options?.in).getHours();\n}\n\n// Fallback for modularized imports:\nexport default getHours;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getISODay} function options.\n */\n\n/**\n * @name getISODay\n * @category Weekday Helpers\n * @summary Get the day of the ISO week of the given date.\n *\n * @description\n * Get the day of the ISO week of the given date,\n * which is 7 for Sunday, 1 for Monday etc.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The day of ISO week\n *\n * @example\n * // Which day of the ISO week is 26 February 2012?\n * const result = getISODay(new Date(2012, 1, 26))\n * //=> 7\n */\nexport function getISODay(date, options) {\n  const day = toDate(date, options?.in).getDay();\n  return day === 0 ? 7 : day;\n}\n\n// Fallback for modularized imports:\nexport default getISODay;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getMinutes} function options.\n */\n\n/**\n * @name getMinutes\n * @category Minute Helpers\n * @summary Get the minutes of the given date.\n *\n * @description\n * Get the minutes of the given date.\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The minutes\n *\n * @example\n * // Get the minutes of 29 February 2012 11:45:05:\n * const result = getMinutes(new Date(2012, 1, 29, 11, 45, 5))\n * //=> 45\n */\nexport function getMinutes(date, options) {\n  return toDate(date, options?.in).getMinutes();\n}\n\n// Fallback for modularized imports:\nexport default getMinutes;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getMonth} function options.\n */\n\n/**\n * @name getMonth\n * @category Month Helpers\n * @summary Get the month of the given date.\n *\n * @description\n * Get the month of the given date.\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The month index (0-11)\n *\n * @example\n * // Which month is 29 February 2012?\n * const result = getMonth(new Date(2012, 1, 29))\n * //=> 1\n */\nexport function getMonth(date, options) {\n  return toDate(date, options?.in).getMonth();\n}\n\n// Fallback for modularized imports:\nexport default getMonth;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * @name getSeconds\n * @category Second Helpers\n * @summary Get the seconds of the given date.\n *\n * @description\n * Get the seconds of the given date.\n *\n * @param date - The given date\n *\n * @returns The seconds\n *\n * @example\n * // Get the seconds of 29 February 2012 11:45:05.123:\n * const result = getSeconds(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 5\n */\nexport function getSeconds(date) {\n  return toDate(date).getSeconds();\n}\n\n// Fallback for modularized imports:\nexport default getSeconds;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * @name getTime\n * @category Timestamp Helpers\n * @summary Get the milliseconds timestamp of the given date.\n *\n * @description\n * Get the milliseconds timestamp of the given date.\n *\n * @param date - The given date\n *\n * @returns The timestamp\n *\n * @example\n * // Get the timestamp of 29 February 2012 11:45:05.123:\n * const result = getTime(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 1330515905123\n */\nexport function getTime(date) {\n  return +toDate(date);\n}\n\n// Fallback for modularized imports:\nexport default getTime;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getYear} function options.\n */\n\n/**\n * @name getYear\n * @category Year Helpers\n * @summary Get the year of the given date.\n *\n * @description\n * Get the year of the given date.\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The year\n *\n * @example\n * // Which year is 2 July 2014?\n * const result = getYear(new Date(2014, 6, 2))\n * //=> 2014\n */\nexport function getYear(date, options) {\n  return toDate(date, options?.in).getFullYear();\n}\n\n// Fallback for modularized imports:\nexport default getYear;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * @name isAfter\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * @param date - The date that should be after the other one to return true\n * @param dateToCompare - The date to compare with\n *\n * @returns The first date is after the second date\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * const result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\nexport function isAfter(date, dateToCompare) {\n  return +toDate(date) > +toDate(dateToCompare);\n}\n\n// Fallback for modularized imports:\nexport default isAfter;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @param date - The date that should be before the other one to return true\n * @param dateToCompare - The date to compare with\n *\n * @returns The first date is before the second date\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * const result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nexport function isBefore(date, dateToCompare) {\n  return +toDate(date) < +toDate(dateToCompare);\n}\n\n// Fallback for modularized imports:\nexport default isBefore;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * @name isEqual\n * @category Common Helpers\n * @summary Are the given dates equal?\n *\n * @description\n * Are the given dates equal?\n *\n * @param dateLeft - The first date to compare\n * @param dateRight - The second date to compare\n *\n * @returns The dates are equal\n *\n * @example\n * // Are 2 July 2014 06:30:45.000 and 2 July 2014 06:30:45.500 equal?\n * const result = isEqual(\n *   new Date(2014, 6, 2, 6, 30, 45, 0),\n *   new Date(2014, 6, 2, 6, 30, 45, 500)\n * )\n * //=> false\n */\nexport function isEqual(leftDate, rightDate) {\n  return +toDate(leftDate) === +toDate(rightDate);\n}\n\n// Fallback for modularized imports:\nexport default isEqual;\n","import { constructFrom } from \"./constructFrom.js\";\n\n/**\n * @name transpose\n * @category Generic Helpers\n * @summary Transpose the date to the given constructor.\n *\n * @description\n * The function transposes the date to the given constructor. It helps you\n * to transpose the date in the system time zone to say `UTCDate` or any other\n * date extension.\n *\n * @typeParam InputDate - The input `Date` type derived from the passed argument.\n * @typeParam ResultDate - The result `Date` type derived from the passed constructor.\n *\n * @param date - The date to use values from\n * @param constructor - The date constructor to use\n *\n * @returns Date transposed to the given constructor\n *\n * @example\n * // Create July 10, 2022 00:00 in locale time zone\n * const date = new Date(2022, 6, 10)\n * //=> 'Sun Jul 10 2022 00:00:00 GMT+0800 (Singapore Standard Time)'\n *\n * @example\n * // Transpose the date to July 10, 2022 00:00 in UTC\n * transpose(date, UTCDate)\n * //=> 'Sun Jul 10 2022 00:00:00 GMT+0000 (Coordinated Universal Time)'\n */\nexport function transpose(date, constructor) {\n  const date_ = isConstructor(constructor)\n    ? new constructor(0)\n    : constructFrom(constructor, 0);\n  date_.setFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n  date_.setHours(\n    date.getHours(),\n    date.getMinutes(),\n    date.getSeconds(),\n    date.getMilliseconds(),\n  );\n  return date_;\n}\n\nfunction isConstructor(constructor) {\n  return (\n    typeof constructor === \"function\" &&\n    constructor.prototype?.constructor === constructor\n  );\n}\n\n// Fallback for modularized imports:\nexport default transpose;\n","import { constructFrom } from \"../../constructFrom.js\";\nimport { transpose } from \"../../transpose.js\";\n\nconst TIMEZONE_UNIT_PRIORITY = 10;\n\nexport class Setter {\n  subPriority = 0;\n\n  validate(_utcDate, _options) {\n    return true;\n  }\n}\n\nexport class ValueSetter extends Setter {\n  constructor(\n    value,\n\n    validateValue,\n\n    setValue,\n\n    priority,\n    subPriority,\n  ) {\n    super();\n    this.value = value;\n    this.validateValue = validateValue;\n    this.setValue = setValue;\n    this.priority = priority;\n    if (subPriority) {\n      this.subPriority = subPriority;\n    }\n  }\n\n  validate(date, options) {\n    return this.validateValue(date, this.value, options);\n  }\n\n  set(date, flags, options) {\n    return this.setValue(date, flags, this.value, options);\n  }\n}\n\nexport class DateTimezoneSetter extends Setter {\n  priority = TIMEZONE_UNIT_PRIORITY;\n  subPriority = -1;\n\n  constructor(context, reference) {\n    super();\n    this.context = context || ((date) => constructFrom(reference, date));\n  }\n\n  set(date, flags) {\n    if (flags.timestampIsSet) return date;\n    return constructFrom(date, transpose(date, this.context));\n  }\n}\n","import { ValueSetter } from \"./Setter.js\";\n\nexport class Parser {\n  run(dateString, token, match, options) {\n    const result = this.parse(dateString, token, match, options);\n    if (!result) {\n      return null;\n    }\n\n    return {\n      setter: new ValueSetter(\n        result.value,\n        this.validate,\n        this.set,\n        this.priority,\n        this.subPriority,\n      ),\n      rest: result.rest,\n    };\n  }\n\n  validate(_utcDate, _value, _options) {\n    return true;\n  }\n}\n","import { Parser } from \"../Parser.js\";\n\nexport class EraParser extends Parser {\n  priority = 140;\n\n  parse(dateString, token, match) {\n    switch (token) {\n      // AD, BC\n      case \"G\":\n      case \"GG\":\n      case \"GGG\":\n        return (\n          match.era(dateString, { width: \"abbreviated\" }) ||\n          match.era(dateString, { width: \"narrow\" })\n        );\n\n      // A, B\n      case \"GGGGG\":\n        return match.era(dateString, { width: \"narrow\" });\n      // Anno Domini, Before Christ\n      case \"GGGG\":\n      default:\n        return (\n          match.era(dateString, { width: \"wide\" }) ||\n          match.era(dateString, { width: \"abbreviated\" }) ||\n          match.era(dateString, { width: \"narrow\" })\n        );\n    }\n  }\n\n  set(date, flags, value) {\n    flags.era = value;\n    date.setFullYear(value, 0, 1);\n    date.setHours(0, 0, 0, 0);\n    return date;\n  }\n\n  incompatibleTokens = [\"R\", \"u\", \"t\", \"T\"];\n}\n","export const numericPatterns = {\n  month: /^(1[0-2]|0?\\d)/, // 0 to 12\n  date: /^(3[0-1]|[0-2]?\\d)/, // 0 to 31\n  dayOfYear: /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/, // 0 to 366\n  week: /^(5[0-3]|[0-4]?\\d)/, // 0 to 53\n  hour23h: /^(2[0-3]|[0-1]?\\d)/, // 0 to 23\n  hour24h: /^(2[0-4]|[0-1]?\\d)/, // 0 to 24\n  hour11h: /^(1[0-1]|0?\\d)/, // 0 to 11\n  hour12h: /^(1[0-2]|0?\\d)/, // 0 to 12\n  minute: /^[0-5]?\\d/, // 0 to 59\n  second: /^[0-5]?\\d/, // 0 to 59\n\n  singleDigit: /^\\d/, // 0 to 9\n  twoDigits: /^\\d{1,2}/, // 0 to 99\n  threeDigits: /^\\d{1,3}/, // 0 to 999\n  fourDigits: /^\\d{1,4}/, // 0 to 9999\n\n  anyDigitsSigned: /^-?\\d+/,\n  singleDigitSigned: /^-?\\d/, // 0 to 9, -0 to -9\n  twoDigitsSigned: /^-?\\d{1,2}/, // 0 to 99, -0 to -99\n  threeDigitsSigned: /^-?\\d{1,3}/, // 0 to 999, -0 to -999\n  fourDigitsSigned: /^-?\\d{1,4}/, // 0 to 9999, -0 to -9999\n};\n\nexport const timezonePatterns = {\n  basicOptionalMinutes: /^([+-])(\\d{2})(\\d{2})?|Z/,\n  basic: /^([+-])(\\d{2})(\\d{2})|Z/,\n  basicOptionalSeconds: /^([+-])(\\d{2})(\\d{2})((\\d{2}))?|Z/,\n  extended: /^([+-])(\\d{2}):(\\d{2})|Z/,\n  extendedOptionalSeconds: /^([+-])(\\d{2}):(\\d{2})(:(\\d{2}))?|Z/,\n};\n","import {\n  millisecondsInHour,\n  millisecondsInMinute,\n  millisecondsInSecond,\n} from \"../../constants.js\";\n\nimport { numericPatterns } from \"./constants.js\";\n\nexport function mapValue(parseFnResult, mapFn) {\n  if (!parseFnResult) {\n    return parseFnResult;\n  }\n\n  return {\n    value: mapFn(parseFnResult.value),\n    rest: parseFnResult.rest,\n  };\n}\n\nexport function parseNumericPattern(pattern, dateString) {\n  const matchResult = dateString.match(pattern);\n\n  if (!matchResult) {\n    return null;\n  }\n\n  return {\n    value: parseInt(matchResult[0], 10),\n    rest: dateString.slice(matchResult[0].length),\n  };\n}\n\nexport function parseTimezonePattern(pattern, dateString) {\n  const matchResult = dateString.match(pattern);\n\n  if (!matchResult) {\n    return null;\n  }\n\n  // Input is 'Z'\n  if (matchResult[0] === \"Z\") {\n    return {\n      value: 0,\n      rest: dateString.slice(1),\n    };\n  }\n\n  const sign = matchResult[1] === \"+\" ? 1 : -1;\n  const hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0;\n  const minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0;\n  const seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0;\n\n  return {\n    value:\n      sign *\n      (hours * millisecondsInHour +\n        minutes * millisecondsInMinute +\n        seconds * millisecondsInSecond),\n    rest: dateString.slice(matchResult[0].length),\n  };\n}\n\nexport function parseAnyDigitsSigned(dateString) {\n  return parseNumericPattern(numericPatterns.anyDigitsSigned, dateString);\n}\n\nexport function parseNDigits(n, dateString) {\n  switch (n) {\n    case 1:\n      return parseNumericPattern(numericPatterns.singleDigit, dateString);\n    case 2:\n      return parseNumericPattern(numericPatterns.twoDigits, dateString);\n    case 3:\n      return parseNumericPattern(numericPatterns.threeDigits, dateString);\n    case 4:\n      return parseNumericPattern(numericPatterns.fourDigits, dateString);\n    default:\n      return parseNumericPattern(new RegExp(\"^\\\\d{1,\" + n + \"}\"), dateString);\n  }\n}\n\nexport function parseNDigitsSigned(n, dateString) {\n  switch (n) {\n    case 1:\n      return parseNumericPattern(numericPatterns.singleDigitSigned, dateString);\n    case 2:\n      return parseNumericPattern(numericPatterns.twoDigitsSigned, dateString);\n    case 3:\n      return parseNumericPattern(numericPatterns.threeDigitsSigned, dateString);\n    case 4:\n      return parseNumericPattern(numericPatterns.fourDigitsSigned, dateString);\n    default:\n      return parseNumericPattern(new RegExp(\"^-?\\\\d{1,\" + n + \"}\"), dateString);\n  }\n}\n\nexport function dayPeriodEnumToHours(dayPeriod) {\n  switch (dayPeriod) {\n    case \"morning\":\n      return 4;\n    case \"evening\":\n      return 17;\n    case \"pm\":\n    case \"noon\":\n    case \"afternoon\":\n      return 12;\n    case \"am\":\n    case \"midnight\":\n    case \"night\":\n    default:\n      return 0;\n  }\n}\n\nexport function normalizeTwoDigitYear(twoDigitYear, currentYear) {\n  const isCommonEra = currentYear > 0;\n  // Absolute number of the current year:\n  // 1 -> 1 AC\n  // 0 -> 1 BC\n  // -1 -> 2 BC\n  const absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;\n\n  let result;\n  if (absCurrentYear <= 50) {\n    result = twoDigitYear || 100;\n  } else {\n    const rangeEnd = absCurrentYear + 50;\n    const rangeEndCentury = Math.trunc(rangeEnd / 100) * 100;\n    const isPreviousCentury = twoDigitYear >= rangeEnd % 100;\n    result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0);\n  }\n\n  return isCommonEra ? result : 1 - result;\n}\n\nexport function isLeapYearIndex(year) {\n  return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0);\n}\n","import { Parser } from \"../Parser.js\";\n\nimport { mapValue, normalizeTwoDigitYear, parseNDigits } from \"../utils.js\";\n\n// From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns\n// | Year     |     y | yy |   yyy |  yyyy | yyyyy |\n// |----------|-------|----|-------|-------|-------|\n// | AD 1     |     1 | 01 |   001 |  0001 | 00001 |\n// | AD 12    |    12 | 12 |   012 |  0012 | 00012 |\n// | AD 123   |   123 | 23 |   123 |  0123 | 00123 |\n// | AD 1234  |  1234 | 34 |  1234 |  1234 | 01234 |\n// | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\nexport class YearParser extends Parser {\n  priority = 130;\n  incompatibleTokens = [\"Y\", \"R\", \"u\", \"w\", \"I\", \"i\", \"e\", \"c\", \"t\", \"T\"];\n\n  parse(dateString, token, match) {\n    const valueCallback = (year) => ({\n      year,\n      isTwoDigitYear: token === \"yy\",\n    });\n\n    switch (token) {\n      case \"y\":\n        return mapValue(parseNDigits(4, dateString), valueCallback);\n      case \"yo\":\n        return mapValue(\n          match.ordinalNumber(dateString, {\n            unit: \"year\",\n          }),\n          valueCallback,\n        );\n      default:\n        return mapValue(parseNDigits(token.length, dateString), valueCallback);\n    }\n  }\n\n  validate(_date, value) {\n    return value.isTwoDigitYear || value.year > 0;\n  }\n\n  set(date, flags, value) {\n    const currentYear = date.getFullYear();\n\n    if (value.isTwoDigitYear) {\n      const normalizedTwoDigitYear = normalizeTwoDigitYear(\n        value.year,\n        currentYear,\n      );\n      date.setFullYear(normalizedTwoDigitYear, 0, 1);\n      date.setHours(0, 0, 0, 0);\n      return date;\n    }\n\n    const year =\n      !(\"era\" in flags) || flags.era === 1 ? value.year : 1 - value.year;\n    date.setFullYear(year, 0, 1);\n    date.setHours(0, 0, 0, 0);\n    return date;\n  }\n}\n","import { getWeekYear } from \"../../../getWeekYear.js\";\n\nimport { startOfWeek } from \"../../../startOfWeek.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { mapValue, normalizeTwoDigitYear, parseNDigits } from \"../utils.js\";\n\n// Local week-numbering year\nexport class LocalWeekYearParser extends Parser {\n  priority = 130;\n\n  parse(dateString, token, match) {\n    const valueCallback = (year) => ({\n      year,\n      isTwoDigitYear: token === \"YY\",\n    });\n\n    switch (token) {\n      case \"Y\":\n        return mapValue(parseNDigits(4, dateString), valueCallback);\n      case \"Yo\":\n        return mapValue(\n          match.ordinalNumber(dateString, {\n            unit: \"year\",\n          }),\n          valueCallback,\n        );\n      default:\n        return mapValue(parseNDigits(token.length, dateString), valueCallback);\n    }\n  }\n\n  validate(_date, value) {\n    return value.isTwoDigitYear || value.year > 0;\n  }\n\n  set(date, flags, value, options) {\n    const currentYear = getWeekYear(date, options);\n\n    if (value.isTwoDigitYear) {\n      const normalizedTwoDigitYear = normalizeTwoDigitYear(\n        value.year,\n        currentYear,\n      );\n      date.setFullYear(\n        normalizedTwoDigitYear,\n        0,\n        options.firstWeekContainsDate,\n      );\n      date.setHours(0, 0, 0, 0);\n      return startOfWeek(date, options);\n    }\n\n    const year =\n      !(\"era\" in flags) || flags.era === 1 ? value.year : 1 - value.year;\n    date.setFullYear(year, 0, options.firstWeekContainsDate);\n    date.setHours(0, 0, 0, 0);\n    return startOfWeek(date, options);\n  }\n\n  incompatibleTokens = [\n    \"y\",\n    \"R\",\n    \"u\",\n    \"Q\",\n    \"q\",\n    \"M\",\n    \"L\",\n    \"I\",\n    \"d\",\n    \"D\",\n    \"i\",\n    \"t\",\n    \"T\",\n  ];\n}\n","import { startOfISOWeek } from \"../../../startOfISOWeek.js\";\nimport { constructFrom } from \"../../../constructFrom.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseNDigitsSigned } from \"../utils.js\";\n\n// ISO week-numbering year\nexport class ISOWeekYearParser extends Parser {\n  priority = 130;\n\n  parse(dateString, token) {\n    if (token === \"R\") {\n      return parseNDigitsSigned(4, dateString);\n    }\n\n    return parseNDigitsSigned(token.length, dateString);\n  }\n\n  set(date, _flags, value) {\n    const firstWeekOfYear = constructFrom(date, 0);\n    firstWeekOfYear.setFullYear(value, 0, 4);\n    firstWeekOfYear.setHours(0, 0, 0, 0);\n    return startOfISOWeek(firstWeekOfYear);\n  }\n\n  incompatibleTokens = [\n    \"G\",\n    \"y\",\n    \"Y\",\n    \"u\",\n    \"Q\",\n    \"q\",\n    \"M\",\n    \"L\",\n    \"w\",\n    \"d\",\n    \"D\",\n    \"e\",\n    \"c\",\n    \"t\",\n    \"T\",\n  ];\n}\n","import { Parser } from \"../Parser.js\";\n\nimport { parseNDigitsSigned } from \"../utils.js\";\n\nexport class ExtendedYearParser extends Parser {\n  priority = 130;\n\n  parse(dateString, token) {\n    if (token === \"u\") {\n      return parseNDigitsSigned(4, dateString);\n    }\n\n    return parseNDigitsSigned(token.length, dateString);\n  }\n\n  set(date, _flags, value) {\n    date.setFullYear(value, 0, 1);\n    date.setHours(0, 0, 0, 0);\n    return date;\n  }\n\n  incompatibleTokens = [\"G\", \"y\", \"Y\", \"R\", \"w\", \"I\", \"i\", \"e\", \"c\", \"t\", \"T\"];\n}\n","import { Parser } from \"../Parser.js\";\n\nimport { parseNDigits } from \"../utils.js\";\n\nexport class QuarterParser extends Parser {\n  priority = 120;\n\n  parse(dateString, token, match) {\n    switch (token) {\n      // 1, 2, 3, 4\n      case \"Q\":\n      case \"QQ\": // 01, 02, 03, 04\n        return parseNDigits(token.length, dateString);\n      // 1st, 2nd, 3rd, 4th\n      case \"Qo\":\n        return match.ordinalNumber(dateString, { unit: \"quarter\" });\n      // Q1, Q2, Q3, Q4\n      case \"QQQ\":\n        return (\n          match.quarter(dateString, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          }) ||\n          match.quarter(dateString, {\n            width: \"narrow\",\n            context: \"formatting\",\n          })\n        );\n\n      // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n      case \"QQQQQ\":\n        return match.quarter(dateString, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      // 1st quarter, 2nd quarter, ...\n      case \"QQQQ\":\n      default:\n        return (\n          match.quarter(dateString, {\n            width: \"wide\",\n            context: \"formatting\",\n          }) ||\n          match.quarter(dateString, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          }) ||\n          match.quarter(dateString, {\n            width: \"narrow\",\n            context: \"formatting\",\n          })\n        );\n    }\n  }\n\n  validate(_date, value) {\n    return value >= 1 && value <= 4;\n  }\n\n  set(date, _flags, value) {\n    date.setMonth((value - 1) * 3, 1);\n    date.setHours(0, 0, 0, 0);\n    return date;\n  }\n\n  incompatibleTokens = [\n    \"Y\",\n    \"R\",\n    \"q\",\n    \"M\",\n    \"L\",\n    \"w\",\n    \"I\",\n    \"d\",\n    \"D\",\n    \"i\",\n    \"e\",\n    \"c\",\n    \"t\",\n    \"T\",\n  ];\n}\n","import { Parser } from \"../Parser.js\";\n\nimport { parseNDigits } from \"../utils.js\";\n\nexport class StandAloneQuarterParser extends Parser {\n  priority = 120;\n\n  parse(dateString, token, match) {\n    switch (token) {\n      // 1, 2, 3, 4\n      case \"q\":\n      case \"qq\": // 01, 02, 03, 04\n        return parseNDigits(token.length, dateString);\n      // 1st, 2nd, 3rd, 4th\n      case \"qo\":\n        return match.ordinalNumber(dateString, { unit: \"quarter\" });\n      // Q1, Q2, Q3, Q4\n      case \"qqq\":\n        return (\n          match.quarter(dateString, {\n            width: \"abbreviated\",\n            context: \"standalone\",\n          }) ||\n          match.quarter(dateString, {\n            width: \"narrow\",\n            context: \"standalone\",\n          })\n        );\n\n      // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n      case \"qqqqq\":\n        return match.quarter(dateString, {\n          width: \"narrow\",\n          context: \"standalone\",\n        });\n      // 1st quarter, 2nd quarter, ...\n      case \"qqqq\":\n      default:\n        return (\n          match.quarter(dateString, {\n            width: \"wide\",\n            context: \"standalone\",\n          }) ||\n          match.quarter(dateString, {\n            width: \"abbreviated\",\n            context: \"standalone\",\n          }) ||\n          match.quarter(dateString, {\n            width: \"narrow\",\n            context: \"standalone\",\n          })\n        );\n    }\n  }\n\n  validate(_date, value) {\n    return value >= 1 && value <= 4;\n  }\n\n  set(date, _flags, value) {\n    date.setMonth((value - 1) * 3, 1);\n    date.setHours(0, 0, 0, 0);\n    return date;\n  }\n\n  incompatibleTokens = [\n    \"Y\",\n    \"R\",\n    \"Q\",\n    \"M\",\n    \"L\",\n    \"w\",\n    \"I\",\n    \"d\",\n    \"D\",\n    \"i\",\n    \"e\",\n    \"c\",\n    \"t\",\n    \"T\",\n  ];\n}\n","import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { mapValue, parseNDigits, parseNumericPattern } from \"../utils.js\";\n\nexport class MonthParser extends Parser {\n  incompatibleTokens = [\n    \"Y\",\n    \"R\",\n    \"q\",\n    \"Q\",\n    \"L\",\n    \"w\",\n    \"I\",\n    \"D\",\n    \"i\",\n    \"e\",\n    \"c\",\n    \"t\",\n    \"T\",\n  ];\n\n  priority = 110;\n\n  parse(dateString, token, match) {\n    const valueCallback = (value) => value - 1;\n\n    switch (token) {\n      // 1, 2, ..., 12\n      case \"M\":\n        return mapValue(\n          parseNumericPattern(numericPatterns.month, dateString),\n          valueCallback,\n        );\n      // 01, 02, ..., 12\n      case \"MM\":\n        return mapValue(parseNDigits(2, dateString), valueCallback);\n      // 1st, 2nd, ..., 12th\n      case \"Mo\":\n        return mapValue(\n          match.ordinalNumber(dateString, {\n            unit: \"month\",\n          }),\n          valueCallback,\n        );\n      // Jan, Feb, ..., Dec\n      case \"MMM\":\n        return (\n          match.month(dateString, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          }) ||\n          match.month(dateString, { width: \"narrow\", context: \"formatting\" })\n        );\n\n      // J, F, ..., D\n      case \"MMMMM\":\n        return match.month(dateString, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      // January, February, ..., December\n      case \"MMMM\":\n      default:\n        return (\n          match.month(dateString, { width: \"wide\", context: \"formatting\" }) ||\n          match.month(dateString, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          }) ||\n          match.month(dateString, { width: \"narrow\", context: \"formatting\" })\n        );\n    }\n  }\n\n  validate(_date, value) {\n    return value >= 0 && value <= 11;\n  }\n\n  set(date, _flags, value) {\n    date.setMonth(value, 1);\n    date.setHours(0, 0, 0, 0);\n    return date;\n  }\n}\n","import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { mapValue, parseNDigits, parseNumericPattern } from \"../utils.js\";\n\nexport class StandAloneMonthParser extends Parser {\n  priority = 110;\n\n  parse(dateString, token, match) {\n    const valueCallback = (value) => value - 1;\n\n    switch (token) {\n      // 1, 2, ..., 12\n      case \"L\":\n        return mapValue(\n          parseNumericPattern(numericPatterns.month, dateString),\n          valueCallback,\n        );\n      // 01, 02, ..., 12\n      case \"LL\":\n        return mapValue(parseNDigits(2, dateString), valueCallback);\n      // 1st, 2nd, ..., 12th\n      case \"Lo\":\n        return mapValue(\n          match.ordinalNumber(dateString, {\n            unit: \"month\",\n          }),\n          valueCallback,\n        );\n      // Jan, Feb, ..., Dec\n      case \"LLL\":\n        return (\n          match.month(dateString, {\n            width: \"abbreviated\",\n            context: \"standalone\",\n          }) ||\n          match.month(dateString, { width: \"narrow\", context: \"standalone\" })\n        );\n\n      // J, F, ..., D\n      case \"LLLLL\":\n        return match.month(dateString, {\n          width: \"narrow\",\n          context: \"standalone\",\n        });\n      // January, February, ..., December\n      case \"LLLL\":\n      default:\n        return (\n          match.month(dateString, { width: \"wide\", context: \"standalone\" }) ||\n          match.month(dateString, {\n            width: \"abbreviated\",\n            context: \"standalone\",\n          }) ||\n          match.month(dateString, { width: \"narrow\", context: \"standalone\" })\n        );\n    }\n  }\n\n  validate(_date, value) {\n    return value >= 0 && value <= 11;\n  }\n\n  set(date, _flags, value) {\n    date.setMonth(value, 1);\n    date.setHours(0, 0, 0, 0);\n    return date;\n  }\n\n  incompatibleTokens = [\n    \"Y\",\n    \"R\",\n    \"q\",\n    \"Q\",\n    \"M\",\n    \"w\",\n    \"I\",\n    \"D\",\n    \"i\",\n    \"e\",\n    \"c\",\n    \"t\",\n    \"T\",\n  ];\n}\n","import { getWeek } from \"./getWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link setWeek} function options.\n */\n\n/**\n * @name setWeek\n * @category Week Helpers\n * @summary Set the local week to the given date.\n *\n * @description\n * Set the local week to the given date, saving the weekday number.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param week - The week of the new date\n * @param options - An object with options\n *\n * @returns The new date with the local week set\n *\n * @example\n * // Set the 1st week to 2 January 2005 with default options:\n * const result = setWeek(new Date(2005, 0, 2), 1)\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // Set the 1st week to 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January:\n * const result = setWeek(new Date(2005, 0, 2), 1, {\n *   weekStartsOn: 1,\n *   firstWeekContainsDate: 4\n * })\n * //=> Sun Jan 4 2004 00:00:00\n */\nexport function setWeek(date, week, options) {\n  const date_ = toDate(date, options?.in);\n  const diff = getWeek(date_, options) - week;\n  date_.setDate(date_.getDate() - diff * 7);\n  return toDate(date_, options?.in);\n}\n\n// Fallback for modularized imports:\nexport default setWeek;\n","import { setWeek } from \"../../../setWeek.js\";\nimport { startOfWeek } from \"../../../startOfWeek.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseNDigits, parseNumericPattern } from \"../utils.js\";\n\n// Local week of year\nexport class LocalWeekParser extends Parser {\n  priority = 100;\n\n  parse(dateString, token, match) {\n    switch (token) {\n      case \"w\":\n        return parseNumericPattern(numericPatterns.week, dateString);\n      case \"wo\":\n        return match.ordinalNumber(dateString, { unit: \"week\" });\n      default:\n        return parseNDigits(token.length, dateString);\n    }\n  }\n\n  validate(_date, value) {\n    return value >= 1 && value <= 53;\n  }\n\n  set(date, _flags, value, options) {\n    return startOfWeek(setWeek(date, value, options), options);\n  }\n\n  incompatibleTokens = [\n    \"y\",\n    \"R\",\n    \"u\",\n    \"q\",\n    \"Q\",\n    \"M\",\n    \"L\",\n    \"I\",\n    \"d\",\n    \"D\",\n    \"i\",\n    \"t\",\n    \"T\",\n  ];\n}\n","import { getISOWeek } from \"./getISOWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link setISOWeek} function options.\n */\n\n/**\n * @name setISOWeek\n * @category ISO Week Helpers\n * @summary Set the ISO week to the given date.\n *\n * @description\n * Set the ISO week to the given date, saving the weekday number.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The `Date` type of the context function.\n *\n * @param date - The date to be changed\n * @param week - The ISO week of the new date\n * @param options - An object with options\n *\n * @returns The new date with the ISO week set\n *\n * @example\n * // Set the 53rd ISO week to 7 August 2004:\n * const result = setISOWeek(new Date(2004, 7, 7), 53)\n * //=> Sat Jan 01 2005 00:00:00\n */\nexport function setISOWeek(date, week, options) {\n  const _date = toDate(date, options?.in);\n  const diff = getISOWeek(_date, options) - week;\n  _date.setDate(_date.getDate() - diff * 7);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default setISOWeek;\n","import { setISOWeek } from \"../../../setISOWeek.js\";\nimport { startOfISOWeek } from \"../../../startOfISOWeek.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseNDigits, parseNumericPattern } from \"../utils.js\";\n\n// ISO week of year\nexport class ISOWeekParser extends Parser {\n  priority = 100;\n\n  parse(dateString, token, match) {\n    switch (token) {\n      case \"I\":\n        return parseNumericPattern(numericPatterns.week, dateString);\n      case \"Io\":\n        return match.ordinalNumber(dateString, { unit: \"week\" });\n      default:\n        return parseNDigits(token.length, dateString);\n    }\n  }\n\n  validate(_date, value) {\n    return value >= 1 && value <= 53;\n  }\n\n  set(date, _flags, value) {\n    return startOfISOWeek(setISOWeek(date, value));\n  }\n\n  incompatibleTokens = [\n    \"y\",\n    \"Y\",\n    \"u\",\n    \"q\",\n    \"Q\",\n    \"M\",\n    \"L\",\n    \"w\",\n    \"d\",\n    \"D\",\n    \"e\",\n    \"c\",\n    \"t\",\n    \"T\",\n  ];\n}\n","import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport {\n  isLeapYearIndex,\n  parseNDigits,\n  parseNumericPattern,\n} from \"../utils.js\";\n\nconst DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nconst DAYS_IN_MONTH_LEAP_YEAR = [\n  31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31,\n];\n\n// Day of the month\nexport class DateParser extends Parser {\n  priority = 90;\n  subPriority = 1;\n\n  parse(dateString, token, match) {\n    switch (token) {\n      case \"d\":\n        return parseNumericPattern(numericPatterns.date, dateString);\n      case \"do\":\n        return match.ordinalNumber(dateString, { unit: \"date\" });\n      default:\n        return parseNDigits(token.length, dateString);\n    }\n  }\n\n  validate(date, value) {\n    const year = date.getFullYear();\n    const isLeapYear = isLeapYearIndex(year);\n    const month = date.getMonth();\n    if (isLeapYear) {\n      return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR[month];\n    } else {\n      return value >= 1 && value <= DAYS_IN_MONTH[month];\n    }\n  }\n\n  set(date, _flags, value) {\n    date.setDate(value);\n    date.setHours(0, 0, 0, 0);\n    return date;\n  }\n\n  incompatibleTokens = [\n    \"Y\",\n    \"R\",\n    \"q\",\n    \"Q\",\n    \"w\",\n    \"I\",\n    \"D\",\n    \"i\",\n    \"e\",\n    \"c\",\n    \"t\",\n    \"T\",\n  ];\n}\n","import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport {\n  isLeapYearIndex,\n  parseNDigits,\n  parseNumericPattern,\n} from \"../utils.js\";\n\nexport class DayOfYearParser extends Parser {\n  priority = 90;\n\n  subpriority = 1;\n\n  parse(dateString, token, match) {\n    switch (token) {\n      case \"D\":\n      case \"DD\":\n        return parseNumericPattern(numericPatterns.dayOfYear, dateString);\n      case \"Do\":\n        return match.ordinalNumber(dateString, { unit: \"date\" });\n      default:\n        return parseNDigits(token.length, dateString);\n    }\n  }\n\n  validate(date, value) {\n    const year = date.getFullYear();\n    const isLeapYear = isLeapYearIndex(year);\n    if (isLeapYear) {\n      return value >= 1 && value <= 366;\n    } else {\n      return value >= 1 && value <= 365;\n    }\n  }\n\n  set(date, _flags, value) {\n    date.setMonth(0, value);\n    date.setHours(0, 0, 0, 0);\n    return date;\n  }\n\n  incompatibleTokens = [\n    \"Y\",\n    \"R\",\n    \"q\",\n    \"Q\",\n    \"M\",\n    \"L\",\n    \"w\",\n    \"I\",\n    \"d\",\n    \"E\",\n    \"i\",\n    \"e\",\n    \"c\",\n    \"t\",\n    \"T\",\n  ];\n}\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { addDays } from \"./addDays.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link setDay} function options.\n */\n\n/**\n * @name setDay\n * @category Weekday Helpers\n * @summary Set the day of the week to the given date.\n *\n * @description\n * Set the day of the week to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param day - The day of the week of the new date\n * @param options - An object with options.\n *\n * @returns The new date with the day of the week set\n *\n * @example\n * // Set week day to Sunday, with the default weekStartsOn of Sunday:\n * const result = setDay(new Date(2014, 8, 1), 0)\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // Set week day to Sunday, with a weekStartsOn of Monday:\n * const result = setDay(new Date(2014, 8, 1), 0, { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 00:00:00\n */\nexport function setDay(date, day, options) {\n  const defaultOptions = getDefaultOptions();\n  const weekStartsOn =\n    options?.weekStartsOn ??\n    options?.locale?.options?.weekStartsOn ??\n    defaultOptions.weekStartsOn ??\n    defaultOptions.locale?.options?.weekStartsOn ??\n    0;\n\n  const date_ = toDate(date, options?.in);\n  const currentDay = date_.getDay();\n\n  const remainder = day % 7;\n  const dayIndex = (remainder + 7) % 7;\n\n  const delta = 7 - weekStartsOn;\n  const diff =\n    day < 0 || day > 6\n      ? day - ((currentDay + delta) % 7)\n      : ((dayIndex + delta) % 7) - ((currentDay + delta) % 7);\n  return addDays(date_, diff, options);\n}\n\n// Fallback for modularized imports:\nexport default setDay;\n","import { setDay } from \"../../../setDay.js\";\nimport { Parser } from \"../Parser.js\";\n\n// Day of week\nexport class DayParser extends Parser {\n  priority = 90;\n\n  parse(dateString, token, match) {\n    switch (token) {\n      // Tue\n      case \"E\":\n      case \"EE\":\n      case \"EEE\":\n        return (\n          match.day(dateString, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          }) ||\n          match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n          match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n        );\n\n      // T\n      case \"EEEEE\":\n        return match.day(dateString, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      // Tu\n      case \"EEEEEE\":\n        return (\n          match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n          match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n        );\n\n      // Tuesday\n      case \"EEEE\":\n      default:\n        return (\n          match.day(dateString, { width: \"wide\", context: \"formatting\" }) ||\n          match.day(dateString, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          }) ||\n          match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n          match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n        );\n    }\n  }\n\n  validate(_date, value) {\n    return value >= 0 && value <= 6;\n  }\n\n  set(date, _flags, value, options) {\n    date = setDay(date, value, options);\n    date.setHours(0, 0, 0, 0);\n    return date;\n  }\n\n  incompatibleTokens = [\"D\", \"i\", \"e\", \"c\", \"t\", \"T\"];\n}\n","import { setDay } from \"../../../setDay.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { mapValue, parseNDigits } from \"../utils.js\";\n\n// Local day of week\nexport class LocalDayParser extends Parser {\n  priority = 90;\n  parse(dateString, token, match, options) {\n    const valueCallback = (value) => {\n      // We want here floor instead of trunc, so we get -7 for value 0 instead of 0\n      const wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n      return ((value + options.weekStartsOn + 6) % 7) + wholeWeekDays;\n    };\n\n    switch (token) {\n      // 3\n      case \"e\":\n      case \"ee\": // 03\n        return mapValue(parseNDigits(token.length, dateString), valueCallback);\n      // 3rd\n      case \"eo\":\n        return mapValue(\n          match.ordinalNumber(dateString, {\n            unit: \"day\",\n          }),\n          valueCallback,\n        );\n      // Tue\n      case \"eee\":\n        return (\n          match.day(dateString, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          }) ||\n          match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n          match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n        );\n\n      // T\n      case \"eeeee\":\n        return match.day(dateString, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      // Tu\n      case \"eeeeee\":\n        return (\n          match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n          match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n        );\n\n      // Tuesday\n      case \"eeee\":\n      default:\n        return (\n          match.day(dateString, { width: \"wide\", context: \"formatting\" }) ||\n          match.day(dateString, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          }) ||\n          match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n          match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n        );\n    }\n  }\n\n  validate(_date, value) {\n    return value >= 0 && value <= 6;\n  }\n\n  set(date, _flags, value, options) {\n    date = setDay(date, value, options);\n    date.setHours(0, 0, 0, 0);\n    return date;\n  }\n\n  incompatibleTokens = [\n    \"y\",\n    \"R\",\n    \"u\",\n    \"q\",\n    \"Q\",\n    \"M\",\n    \"L\",\n    \"I\",\n    \"d\",\n    \"D\",\n    \"E\",\n    \"i\",\n    \"c\",\n    \"t\",\n    \"T\",\n  ];\n}\n","import { setDay } from \"../../../setDay.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { mapValue, parseNDigits } from \"../utils.js\";\n\n// Stand-alone local day of week\nexport class StandAloneLocalDayParser extends Parser {\n  priority = 90;\n\n  parse(dateString, token, match, options) {\n    const valueCallback = (value) => {\n      // We want here floor instead of trunc, so we get -7 for value 0 instead of 0\n      const wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n      return ((value + options.weekStartsOn + 6) % 7) + wholeWeekDays;\n    };\n\n    switch (token) {\n      // 3\n      case \"c\":\n      case \"cc\": // 03\n        return mapValue(parseNDigits(token.length, dateString), valueCallback);\n      // 3rd\n      case \"co\":\n        return mapValue(\n          match.ordinalNumber(dateString, {\n            unit: \"day\",\n          }),\n          valueCallback,\n        );\n      // Tue\n      case \"ccc\":\n        return (\n          match.day(dateString, {\n            width: \"abbreviated\",\n            context: \"standalone\",\n          }) ||\n          match.day(dateString, { width: \"short\", context: \"standalone\" }) ||\n          match.day(dateString, { width: \"narrow\", context: \"standalone\" })\n        );\n\n      // T\n      case \"ccccc\":\n        return match.day(dateString, {\n          width: \"narrow\",\n          context: \"standalone\",\n        });\n      // Tu\n      case \"cccccc\":\n        return (\n          match.day(dateString, { width: \"short\", context: \"standalone\" }) ||\n          match.day(dateString, { width: \"narrow\", context: \"standalone\" })\n        );\n\n      // Tuesday\n      case \"cccc\":\n      default:\n        return (\n          match.day(dateString, { width: \"wide\", context: \"standalone\" }) ||\n          match.day(dateString, {\n            width: \"abbreviated\",\n            context: \"standalone\",\n          }) ||\n          match.day(dateString, { width: \"short\", context: \"standalone\" }) ||\n          match.day(dateString, { width: \"narrow\", context: \"standalone\" })\n        );\n    }\n  }\n\n  validate(_date, value) {\n    return value >= 0 && value <= 6;\n  }\n\n  set(date, _flags, value, options) {\n    date = setDay(date, value, options);\n    date.setHours(0, 0, 0, 0);\n    return date;\n  }\n\n  incompatibleTokens = [\n    \"y\",\n    \"R\",\n    \"u\",\n    \"q\",\n    \"Q\",\n    \"M\",\n    \"L\",\n    \"I\",\n    \"d\",\n    \"D\",\n    \"E\",\n    \"i\",\n    \"e\",\n    \"t\",\n    \"T\",\n  ];\n}\n","import { addDays } from \"./addDays.js\";\nimport { getISODay } from \"./getISODay.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link setISODay} function options.\n */\n\n/**\n * @name setISODay\n * @category Weekday Helpers\n * @summary Set the day of the ISO week to the given date.\n *\n * @description\n * Set the day of the ISO week to the given date.\n * ISO week starts with Monday.\n * 7 is the index of Sunday, 1 is the index of Monday, etc.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param day - The day of the ISO week of the new date\n * @param options - An object with options\n *\n * @returns The new date with the day of the ISO week set\n *\n * @example\n * // Set Sunday to 1 September 2014:\n * const result = setISODay(new Date(2014, 8, 1), 7)\n * //=> Sun Sep 07 2014 00:00:00\n */\nexport function setISODay(date, day, options) {\n  const date_ = toDate(date, options?.in);\n  const currentDay = getISODay(date_, options);\n  const diff = day - currentDay;\n  return addDays(date_, diff, options);\n}\n\n// Fallback for modularized imports:\nexport default setISODay;\n","import { setISODay } from \"../../../setISODay.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { mapValue, parseNDigits } from \"../utils.js\";\n\n// ISO day of week\nexport class ISODayParser extends Parser {\n  priority = 90;\n\n  parse(dateString, token, match) {\n    const valueCallback = (value) => {\n      if (value === 0) {\n        return 7;\n      }\n      return value;\n    };\n\n    switch (token) {\n      // 2\n      case \"i\":\n      case \"ii\": // 02\n        return parseNDigits(token.length, dateString);\n      // 2nd\n      case \"io\":\n        return match.ordinalNumber(dateString, { unit: \"day\" });\n      // Tue\n      case \"iii\":\n        return mapValue(\n          match.day(dateString, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          }) ||\n            match.day(dateString, {\n              width: \"short\",\n              context: \"formatting\",\n            }) ||\n            match.day(dateString, {\n              width: \"narrow\",\n              context: \"formatting\",\n            }),\n          valueCallback,\n        );\n      // T\n      case \"iiiii\":\n        return mapValue(\n          match.day(dateString, {\n            width: \"narrow\",\n            context: \"formatting\",\n          }),\n          valueCallback,\n        );\n      // Tu\n      case \"iiiiii\":\n        return mapValue(\n          match.day(dateString, {\n            width: \"short\",\n            context: \"formatting\",\n          }) ||\n            match.day(dateString, {\n              width: \"narrow\",\n              context: \"formatting\",\n            }),\n          valueCallback,\n        );\n      // Tuesday\n      case \"iiii\":\n      default:\n        return mapValue(\n          match.day(dateString, {\n            width: \"wide\",\n            context: \"formatting\",\n          }) ||\n            match.day(dateString, {\n              width: \"abbreviated\",\n              context: \"formatting\",\n            }) ||\n            match.day(dateString, {\n              width: \"short\",\n              context: \"formatting\",\n            }) ||\n            match.day(dateString, {\n              width: \"narrow\",\n              context: \"formatting\",\n            }),\n          valueCallback,\n        );\n    }\n  }\n\n  validate(_date, value) {\n    return value >= 1 && value <= 7;\n  }\n\n  set(date, _flags, value) {\n    date = setISODay(date, value);\n    date.setHours(0, 0, 0, 0);\n    return date;\n  }\n\n  incompatibleTokens = [\n    \"y\",\n    \"Y\",\n    \"u\",\n    \"q\",\n    \"Q\",\n    \"M\",\n    \"L\",\n    \"w\",\n    \"d\",\n    \"D\",\n    \"E\",\n    \"e\",\n    \"c\",\n    \"t\",\n    \"T\",\n  ];\n}\n","import { Parser } from \"../Parser.js\";\n\nimport { dayPeriodEnumToHours } from \"../utils.js\";\n\nexport class AMPMParser extends Parser {\n  priority = 80;\n\n  parse(dateString, token, match) {\n    switch (token) {\n      case \"a\":\n      case \"aa\":\n      case \"aaa\":\n        return (\n          match.dayPeriod(dateString, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          }) ||\n          match.dayPeriod(dateString, {\n            width: \"narrow\",\n            context: \"formatting\",\n          })\n        );\n\n      case \"aaaaa\":\n        return match.dayPeriod(dateString, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      case \"aaaa\":\n      default:\n        return (\n          match.dayPeriod(dateString, {\n            width: \"wide\",\n            context: \"formatting\",\n          }) ||\n          match.dayPeriod(dateString, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          }) ||\n          match.dayPeriod(dateString, {\n            width: \"narrow\",\n            context: \"formatting\",\n          })\n        );\n    }\n  }\n\n  set(date, _flags, value) {\n    date.setHours(dayPeriodEnumToHours(value), 0, 0, 0);\n    return date;\n  }\n\n  incompatibleTokens = [\"b\", \"B\", \"H\", \"k\", \"t\", \"T\"];\n}\n","import { Parser } from \"../Parser.js\";\n\nimport { dayPeriodEnumToHours } from \"../utils.js\";\n\nexport class AMPMMidnightParser extends Parser {\n  priority = 80;\n\n  parse(dateString, token, match) {\n    switch (token) {\n      case \"b\":\n      case \"bb\":\n      case \"bbb\":\n        return (\n          match.dayPeriod(dateString, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          }) ||\n          match.dayPeriod(dateString, {\n            width: \"narrow\",\n            context: \"formatting\",\n          })\n        );\n\n      case \"bbbbb\":\n        return match.dayPeriod(dateString, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      case \"bbbb\":\n      default:\n        return (\n          match.dayPeriod(dateString, {\n            width: \"wide\",\n            context: \"formatting\",\n          }) ||\n          match.dayPeriod(dateString, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          }) ||\n          match.dayPeriod(dateString, {\n            width: \"narrow\",\n            context: \"formatting\",\n          })\n        );\n    }\n  }\n\n  set(date, _flags, value) {\n    date.setHours(dayPeriodEnumToHours(value), 0, 0, 0);\n    return date;\n  }\n\n  incompatibleTokens = [\"a\", \"B\", \"H\", \"k\", \"t\", \"T\"];\n}\n","import { Parser } from \"../Parser.js\";\n\nimport { dayPeriodEnumToHours } from \"../utils.js\";\n\n// in the morning, in the afternoon, in the evening, at night\nexport class DayPeriodParser extends Parser {\n  priority = 80;\n\n  parse(dateString, token, match) {\n    switch (token) {\n      case \"B\":\n      case \"BB\":\n      case \"BBB\":\n        return (\n          match.dayPeriod(dateString, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          }) ||\n          match.dayPeriod(dateString, {\n            width: \"narrow\",\n            context: \"formatting\",\n          })\n        );\n\n      case \"BBBBB\":\n        return match.dayPeriod(dateString, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      case \"BBBB\":\n      default:\n        return (\n          match.dayPeriod(dateString, {\n            width: \"wide\",\n            context: \"formatting\",\n          }) ||\n          match.dayPeriod(dateString, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          }) ||\n          match.dayPeriod(dateString, {\n            width: \"narrow\",\n            context: \"formatting\",\n          })\n        );\n    }\n  }\n\n  set(date, _flags, value) {\n    date.setHours(dayPeriodEnumToHours(value), 0, 0, 0);\n    return date;\n  }\n\n  incompatibleTokens = [\"a\", \"b\", \"t\", \"T\"];\n}\n","import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseNDigits, parseNumericPattern } from \"../utils.js\";\n\nexport class Hour1to12Parser extends Parser {\n  priority = 70;\n\n  parse(dateString, token, match) {\n    switch (token) {\n      case \"h\":\n        return parseNumericPattern(numericPatterns.hour12h, dateString);\n      case \"ho\":\n        return match.ordinalNumber(dateString, { unit: \"hour\" });\n      default:\n        return parseNDigits(token.length, dateString);\n    }\n  }\n\n  validate(_date, value) {\n    return value >= 1 && value <= 12;\n  }\n\n  set(date, _flags, value) {\n    const isPM = date.getHours() >= 12;\n    if (isPM && value < 12) {\n      date.setHours(value + 12, 0, 0, 0);\n    } else if (!isPM && value === 12) {\n      date.setHours(0, 0, 0, 0);\n    } else {\n      date.setHours(value, 0, 0, 0);\n    }\n    return date;\n  }\n\n  incompatibleTokens = [\"H\", \"K\", \"k\", \"t\", \"T\"];\n}\n","import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseNDigits, parseNumericPattern } from \"../utils.js\";\n\nexport class Hour0to23Parser extends Parser {\n  priority = 70;\n\n  parse(dateString, token, match) {\n    switch (token) {\n      case \"H\":\n        return parseNumericPattern(numericPatterns.hour23h, dateString);\n      case \"Ho\":\n        return match.ordinalNumber(dateString, { unit: \"hour\" });\n      default:\n        return parseNDigits(token.length, dateString);\n    }\n  }\n\n  validate(_date, value) {\n    return value >= 0 && value <= 23;\n  }\n\n  set(date, _flags, value) {\n    date.setHours(value, 0, 0, 0);\n    return date;\n  }\n\n  incompatibleTokens = [\"a\", \"b\", \"h\", \"K\", \"k\", \"t\", \"T\"];\n}\n","import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseNDigits, parseNumericPattern } from \"../utils.js\";\n\nexport class Hour0To11Parser extends Parser {\n  priority = 70;\n\n  parse(dateString, token, match) {\n    switch (token) {\n      case \"K\":\n        return parseNumericPattern(numericPatterns.hour11h, dateString);\n      case \"Ko\":\n        return match.ordinalNumber(dateString, { unit: \"hour\" });\n      default:\n        return parseNDigits(token.length, dateString);\n    }\n  }\n\n  validate(_date, value) {\n    return value >= 0 && value <= 11;\n  }\n\n  set(date, _flags, value) {\n    const isPM = date.getHours() >= 12;\n    if (isPM && value < 12) {\n      date.setHours(value + 12, 0, 0, 0);\n    } else {\n      date.setHours(value, 0, 0, 0);\n    }\n    return date;\n  }\n\n  incompatibleTokens = [\"h\", \"H\", \"k\", \"t\", \"T\"];\n}\n","import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseNDigits, parseNumericPattern } from \"../utils.js\";\n\nexport class Hour1To24Parser extends Parser {\n  priority = 70;\n\n  parse(dateString, token, match) {\n    switch (token) {\n      case \"k\":\n        return parseNumericPattern(numericPatterns.hour24h, dateString);\n      case \"ko\":\n        return match.ordinalNumber(dateString, { unit: \"hour\" });\n      default:\n        return parseNDigits(token.length, dateString);\n    }\n  }\n\n  validate(_date, value) {\n    return value >= 1 && value <= 24;\n  }\n\n  set(date, _flags, value) {\n    const hours = value <= 24 ? value % 24 : value;\n    date.setHours(hours, 0, 0, 0);\n    return date;\n  }\n\n  incompatibleTokens = [\"a\", \"b\", \"h\", \"H\", \"K\", \"t\", \"T\"];\n}\n","import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseNDigits, parseNumericPattern } from \"../utils.js\";\n\nexport class MinuteParser extends Parser {\n  priority = 60;\n\n  parse(dateString, token, match) {\n    switch (token) {\n      case \"m\":\n        return parseNumericPattern(numericPatterns.minute, dateString);\n      case \"mo\":\n        return match.ordinalNumber(dateString, { unit: \"minute\" });\n      default:\n        return parseNDigits(token.length, dateString);\n    }\n  }\n\n  validate(_date, value) {\n    return value >= 0 && value <= 59;\n  }\n\n  set(date, _flags, value) {\n    date.setMinutes(value, 0, 0);\n    return date;\n  }\n\n  incompatibleTokens = [\"t\", \"T\"];\n}\n","import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseNDigits, parseNumericPattern } from \"../utils.js\";\n\nexport class SecondParser extends Parser {\n  priority = 50;\n\n  parse(dateString, token, match) {\n    switch (token) {\n      case \"s\":\n        return parseNumericPattern(numericPatterns.second, dateString);\n      case \"so\":\n        return match.ordinalNumber(dateString, { unit: \"second\" });\n      default:\n        return parseNDigits(token.length, dateString);\n    }\n  }\n\n  validate(_date, value) {\n    return value >= 0 && value <= 59;\n  }\n\n  set(date, _flags, value) {\n    date.setSeconds(value, 0);\n    return date;\n  }\n\n  incompatibleTokens = [\"t\", \"T\"];\n}\n","import { Parser } from \"../Parser.js\";\n\nimport { mapValue, parseNDigits } from \"../utils.js\";\n\nexport class FractionOfSecondParser extends Parser {\n  priority = 30;\n\n  parse(dateString, token) {\n    const valueCallback = (value) =>\n      Math.trunc(value * Math.pow(10, -token.length + 3));\n    return mapValue(parseNDigits(token.length, dateString), valueCallback);\n  }\n\n  set(date, _flags, value) {\n    date.setMilliseconds(value);\n    return date;\n  }\n\n  incompatibleTokens = [\"t\", \"T\"];\n}\n","import { constructFrom } from \"../../../constructFrom.js\";\nimport { getTimezoneOffsetInMilliseconds } from \"../../../_lib/getTimezoneOffsetInMilliseconds.js\";\nimport { timezonePatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseTimezonePattern } from \"../utils.js\";\n\n// Timezone (ISO-8601. +00:00 is `'Z'`)\nexport class ISOTimezoneWithZParser extends Parser {\n  priority = 10;\n\n  parse(dateString, token) {\n    switch (token) {\n      case \"X\":\n        return parseTimezonePattern(\n          timezonePatterns.basicOptionalMinutes,\n          dateString,\n        );\n      case \"XX\":\n        return parseTimezonePattern(timezonePatterns.basic, dateString);\n      case \"XXXX\":\n        return parseTimezonePattern(\n          timezonePatterns.basicOptionalSeconds,\n          dateString,\n        );\n      case \"XXXXX\":\n        return parseTimezonePattern(\n          timezonePatterns.extendedOptionalSeconds,\n          dateString,\n        );\n      case \"XXX\":\n      default:\n        return parseTimezonePattern(timezonePatterns.extended, dateString);\n    }\n  }\n\n  set(date, flags, value) {\n    if (flags.timestampIsSet) return date;\n    return constructFrom(\n      date,\n      date.getTime() - getTimezoneOffsetInMilliseconds(date) - value,\n    );\n  }\n\n  incompatibleTokens = [\"t\", \"T\", \"x\"];\n}\n","import { constructFrom } from \"../../../constructFrom.js\";\nimport { getTimezoneOffsetInMilliseconds } from \"../../../_lib/getTimezoneOffsetInMilliseconds.js\";\nimport { timezonePatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseTimezonePattern } from \"../utils.js\";\n\n// Timezone (ISO-8601)\nexport class ISOTimezoneParser extends Parser {\n  priority = 10;\n\n  parse(dateString, token) {\n    switch (token) {\n      case \"x\":\n        return parseTimezonePattern(\n          timezonePatterns.basicOptionalMinutes,\n          dateString,\n        );\n      case \"xx\":\n        return parseTimezonePattern(timezonePatterns.basic, dateString);\n      case \"xxxx\":\n        return parseTimezonePattern(\n          timezonePatterns.basicOptionalSeconds,\n          dateString,\n        );\n      case \"xxxxx\":\n        return parseTimezonePattern(\n          timezonePatterns.extendedOptionalSeconds,\n          dateString,\n        );\n      case \"xxx\":\n      default:\n        return parseTimezonePattern(timezonePatterns.extended, dateString);\n    }\n  }\n\n  set(date, flags, value) {\n    if (flags.timestampIsSet) return date;\n    return constructFrom(\n      date,\n      date.getTime() - getTimezoneOffsetInMilliseconds(date) - value,\n    );\n  }\n\n  incompatibleTokens = [\"t\", \"T\", \"X\"];\n}\n","import { constructFrom } from \"../../../constructFrom.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseAnyDigitsSigned } from \"../utils.js\";\n\nexport class TimestampSecondsParser extends Parser {\n  priority = 40;\n\n  parse(dateString) {\n    return parseAnyDigitsSigned(dateString);\n  }\n\n  set(date, _flags, value) {\n    return [constructFrom(date, value * 1000), { timestampIsSet: true }];\n  }\n\n  incompatibleTokens = \"*\";\n}\n","import { constructFrom } from \"../../../constructFrom.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseAnyDigitsSigned } from \"../utils.js\";\n\nexport class TimestampMillisecondsParser extends Parser {\n  priority = 20;\n\n  parse(dateString) {\n    return parseAnyDigitsSigned(dateString);\n  }\n\n  set(date, _flags, value) {\n    return [constructFrom(date, value), { timestampIsSet: true }];\n  }\n\n  incompatibleTokens = \"*\";\n}\n","import { EraParser } from \"./parsers/EraParser.js\";\nimport { YearParser } from \"./parsers/YearParser.js\";\nimport { LocalWeekYearParser } from \"./parsers/LocalWeekYearParser.js\";\nimport { ISOWeekYearParser } from \"./parsers/ISOWeekYearParser.js\";\nimport { ExtendedYearParser } from \"./parsers/ExtendedYearParser.js\";\nimport { QuarterParser } from \"./parsers/QuarterParser.js\";\nimport { StandAloneQuarterParser } from \"./parsers/StandAloneQuarterParser.js\";\nimport { MonthParser } from \"./parsers/MonthParser.js\";\nimport { StandAloneMonthParser } from \"./parsers/StandAloneMonthParser.js\";\nimport { LocalWeekParser } from \"./parsers/LocalWeekParser.js\";\nimport { ISOWeekParser } from \"./parsers/ISOWeekParser.js\";\nimport { DateParser } from \"./parsers/DateParser.js\";\nimport { DayOfYearParser } from \"./parsers/DayOfYearParser.js\";\nimport { DayParser } from \"./parsers/DayParser.js\";\nimport { LocalDayParser } from \"./parsers/LocalDayParser.js\";\nimport { StandAloneLocalDayParser } from \"./parsers/StandAloneLocalDayParser.js\";\nimport { ISODayParser } from \"./parsers/ISODayParser.js\";\nimport { AMPMParser } from \"./parsers/AMPMParser.js\";\nimport { AMPMMidnightParser } from \"./parsers/AMPMMidnightParser.js\";\nimport { DayPeriodParser } from \"./parsers/DayPeriodParser.js\";\nimport { Hour1to12Parser } from \"./parsers/Hour1to12Parser.js\";\nimport { Hour0to23Parser } from \"./parsers/Hour0to23Parser.js\";\nimport { Hour0To11Parser } from \"./parsers/Hour0To11Parser.js\";\nimport { Hour1To24Parser } from \"./parsers/Hour1To24Parser.js\";\nimport { MinuteParser } from \"./parsers/MinuteParser.js\";\nimport { SecondParser } from \"./parsers/SecondParser.js\";\nimport { FractionOfSecondParser } from \"./parsers/FractionOfSecondParser.js\";\nimport { ISOTimezoneWithZParser } from \"./parsers/ISOTimezoneWithZParser.js\";\nimport { ISOTimezoneParser } from \"./parsers/ISOTimezoneParser.js\";\nimport { TimestampSecondsParser } from \"./parsers/TimestampSecondsParser.js\";\nimport { TimestampMillisecondsParser } from \"./parsers/TimestampMillisecondsParser.js\";\n\n/*\n * |     | Unit                           |     | Unit                           |\n * |-----|--------------------------------|-----|--------------------------------|\n * |  a  | AM, PM                         |  A* | Milliseconds in day            |\n * |  b  | AM, PM, noon, midnight         |  B  | Flexible day period            |\n * |  c  | Stand-alone local day of week  |  C* | Localized hour w/ day period   |\n * |  d  | Day of month                   |  D  | Day of year                    |\n * |  e  | Local day of week              |  E  | Day of week                    |\n * |  f  |                                |  F* | Day of week in month           |\n * |  g* | Modified Julian day            |  G  | Era                            |\n * |  h  | Hour [1-12]                    |  H  | Hour [0-23]                    |\n * |  i! | ISO day of week                |  I! | ISO week of year               |\n * |  j* | Localized hour w/ day period   |  J* | Localized hour w/o day period  |\n * |  k  | Hour [1-24]                    |  K  | Hour [0-11]                    |\n * |  l* | (deprecated)                   |  L  | Stand-alone month              |\n * |  m  | Minute                         |  M  | Month                          |\n * |  n  |                                |  N  |                                |\n * |  o! | Ordinal number modifier        |  O* | Timezone (GMT)                 |\n * |  p  |                                |  P  |                                |\n * |  q  | Stand-alone quarter            |  Q  | Quarter                        |\n * |  r* | Related Gregorian year         |  R! | ISO week-numbering year        |\n * |  s  | Second                         |  S  | Fraction of second             |\n * |  t! | Seconds timestamp              |  T! | Milliseconds timestamp         |\n * |  u  | Extended year                  |  U* | Cyclic year                    |\n * |  v* | Timezone (generic non-locat.)  |  V* | Timezone (location)            |\n * |  w  | Local week of year             |  W* | Week of month                  |\n * |  x  | Timezone (ISO-8601 w/o Z)      |  X  | Timezone (ISO-8601)            |\n * |  y  | Year (abs)                     |  Y  | Local week-numbering year      |\n * |  z* | Timezone (specific non-locat.) |  Z* | Timezone (aliases)             |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `parse` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n *   i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n *   `R` is supposed to be used in conjunction with `I` and `i`\n *   for universal ISO week-numbering date, whereas\n *   `Y` is supposed to be used in conjunction with `w` and `e`\n *   for week-numbering date specific to the locale.\n */\nexport const parsers = {\n  G: new EraParser(),\n  y: new YearParser(),\n  Y: new LocalWeekYearParser(),\n  R: new ISOWeekYearParser(),\n  u: new ExtendedYearParser(),\n  Q: new QuarterParser(),\n  q: new StandAloneQuarterParser(),\n  M: new MonthParser(),\n  L: new StandAloneMonthParser(),\n  w: new LocalWeekParser(),\n  I: new ISOWeekParser(),\n  d: new DateParser(),\n  D: new DayOfYearParser(),\n  E: new DayParser(),\n  e: new LocalDayParser(),\n  c: new StandAloneLocalDayParser(),\n  i: new ISODayParser(),\n  a: new AMPMParser(),\n  b: new AMPMMidnightParser(),\n  B: new DayPeriodParser(),\n  h: new Hour1to12Parser(),\n  H: new Hour0to23Parser(),\n  K: new Hour0To11Parser(),\n  k: new Hour1To24Parser(),\n  m: new MinuteParser(),\n  s: new SecondParser(),\n  S: new FractionOfSecondParser(),\n  X: new ISOTimezoneWithZParser(),\n  x: new ISOTimezoneParser(),\n  t: new TimestampSecondsParser(),\n  T: new TimestampMillisecondsParser(),\n};\n","import { defaultLocale } from \"./_lib/defaultLocale.js\";\nimport { longFormatters } from \"./_lib/format/longFormatters.js\";\nimport {\n  isProtectedDayOfYearToken,\n  isProtectedWeekYearToken,\n  warnOrThrowProtectedError,\n} from \"./_lib/protectedTokens.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { getDefaultOptions } from \"./getDefaultOptions.js\";\nimport { toDate } from \"./toDate.js\";\n\nimport { DateTimezoneSetter } from \"./parse/_lib/Setter.js\";\nimport { parsers } from \"./parse/_lib/parsers.js\";\n\n// Rexports of internal for libraries to use.\n// See: https://github.com/date-fns/date-fns/issues/3638#issuecomment-1877082874\nexport { longFormatters, parsers };\n\n/**\n * The {@link parse} function options.\n */\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n//   (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n//   except a single quote symbol, which ends the sequence.\n//   Two quote characters do not end the sequence.\n//   If there is no matching single quote\n//   then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nconst formattingTokensRegExp =\n  /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nconst longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\n\nconst escapedStringRegExp = /^'([^]*?)'?$/;\nconst doubleQuoteRegExp = /''/g;\n\nconst notWhitespaceRegExp = /\\S/;\nconst unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name parse\n * @category Common Helpers\n * @summary Parse the date.\n *\n * @description\n * Return the date parsed from string using the given format string.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Not all tokens are compatible. Combinations that don't make sense or could lead to bugs are prohibited\n * and will throw `RangeError`. For example usage of 24-hour format token with AM/PM token will throw an exception:\n *\n * ```javascript\n * parse('23 AM', 'HH a', new Date())\n * //=> RangeError: The format string mustn't contain `HH` and `a` at the same time\n * ```\n *\n * See the compatibility table: https://docs.google.com/spreadsheets/d/e/2PACX-1vQOPU3xUhplll6dyoMmVUXHKl_8CRDs6_ueLmex3SoqwhuolkuN3O05l4rqx5h1dKX8eb46Ul-CCSrq/pubhtml?gid=0&single=true\n *\n * Accepted format string patterns:\n * | Unit                            |Prior| Pattern | Result examples                   | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era                             | 140 | G..GGG  | AD, BC                            |       |\n * |                                 |     | GGGG    | Anno Domini, Before Christ        | 2     |\n * |                                 |     | GGGGG   | A, B                              |       |\n * | Calendar year                   | 130 | y       | 44, 1, 1900, 2017, 9999           | 4     |\n * |                                 |     | yo      | 44th, 1st, 1900th, 9999999th      | 4,5   |\n * |                                 |     | yy      | 44, 01, 00, 17                    | 4     |\n * |                                 |     | yyy     | 044, 001, 123, 999                | 4     |\n * |                                 |     | yyyy    | 0044, 0001, 1900, 2017            | 4     |\n * |                                 |     | yyyyy   | ...                               | 2,4   |\n * | Local week-numbering year       | 130 | Y       | 44, 1, 1900, 2017, 9000           | 4     |\n * |                                 |     | Yo      | 44th, 1st, 1900th, 9999999th      | 4,5   |\n * |                                 |     | YY      | 44, 01, 00, 17                    | 4,6   |\n * |                                 |     | YYY     | 044, 001, 123, 999                | 4     |\n * |                                 |     | YYYY    | 0044, 0001, 1900, 2017            | 4,6   |\n * |                                 |     | YYYYY   | ...                               | 2,4   |\n * | ISO week-numbering year         | 130 | R       | -43, 1, 1900, 2017, 9999, -9999   | 4,5   |\n * |                                 |     | RR      | -43, 01, 00, 17                   | 4,5   |\n * |                                 |     | RRR     | -043, 001, 123, 999, -999         | 4,5   |\n * |                                 |     | RRRR    | -0043, 0001, 2017, 9999, -9999    | 4,5   |\n * |                                 |     | RRRRR   | ...                               | 2,4,5 |\n * | Extended year                   | 130 | u       | -43, 1, 1900, 2017, 9999, -999    | 4     |\n * |                                 |     | uu      | -43, 01, 99, -99                  | 4     |\n * |                                 |     | uuu     | -043, 001, 123, 999, -999         | 4     |\n * |                                 |     | uuuu    | -0043, 0001, 2017, 9999, -9999    | 4     |\n * |                                 |     | uuuuu   | ...                               | 2,4   |\n * | Quarter (formatting)            | 120 | Q       | 1, 2, 3, 4                        |       |\n * |                                 |     | Qo      | 1st, 2nd, 3rd, 4th                | 5     |\n * |                                 |     | QQ      | 01, 02, 03, 04                    |       |\n * |                                 |     | QQQ     | Q1, Q2, Q3, Q4                    |       |\n * |                                 |     | QQQQ    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 |     | QQQQQ   | 1, 2, 3, 4                        | 4     |\n * | Quarter (stand-alone)           | 120 | q       | 1, 2, 3, 4                        |       |\n * |                                 |     | qo      | 1st, 2nd, 3rd, 4th                | 5     |\n * |                                 |     | qq      | 01, 02, 03, 04                    |       |\n * |                                 |     | qqq     | Q1, Q2, Q3, Q4                    |       |\n * |                                 |     | qqqq    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 |     | qqqqq   | 1, 2, 3, 4                        | 3     |\n * | Month (formatting)              | 110 | M       | 1, 2, ..., 12                     |       |\n * |                                 |     | Mo      | 1st, 2nd, ..., 12th               | 5     |\n * |                                 |     | MM      | 01, 02, ..., 12                   |       |\n * |                                 |     | MMM     | Jan, Feb, ..., Dec                |       |\n * |                                 |     | MMMM    | January, February, ..., December  | 2     |\n * |                                 |     | MMMMM   | J, F, ..., D                      |       |\n * | Month (stand-alone)             | 110 | L       | 1, 2, ..., 12                     |       |\n * |                                 |     | Lo      | 1st, 2nd, ..., 12th               | 5     |\n * |                                 |     | LL      | 01, 02, ..., 12                   |       |\n * |                                 |     | LLL     | Jan, Feb, ..., Dec                |       |\n * |                                 |     | LLLL    | January, February, ..., December  | 2     |\n * |                                 |     | LLLLL   | J, F, ..., D                      |       |\n * | Local week of year              | 100 | w       | 1, 2, ..., 53                     |       |\n * |                                 |     | wo      | 1st, 2nd, ..., 53th               | 5     |\n * |                                 |     | ww      | 01, 02, ..., 53                   |       |\n * | ISO week of year                | 100 | I       | 1, 2, ..., 53                     | 5     |\n * |                                 |     | Io      | 1st, 2nd, ..., 53th               | 5     |\n * |                                 |     | II      | 01, 02, ..., 53                   | 5     |\n * | Day of month                    |  90 | d       | 1, 2, ..., 31                     |       |\n * |                                 |     | do      | 1st, 2nd, ..., 31st               | 5     |\n * |                                 |     | dd      | 01, 02, ..., 31                   |       |\n * | Day of year                     |  90 | D       | 1, 2, ..., 365, 366               | 7     |\n * |                                 |     | Do      | 1st, 2nd, ..., 365th, 366th       | 5     |\n * |                                 |     | DD      | 01, 02, ..., 365, 366             | 7     |\n * |                                 |     | DDD     | 001, 002, ..., 365, 366           |       |\n * |                                 |     | DDDD    | ...                               | 2     |\n * | Day of week (formatting)        |  90 | E..EEE  | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 |     | EEEE    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 |     | EEEEE   | M, T, W, T, F, S, S               |       |\n * |                                 |     | EEEEEE  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | ISO day of week (formatting)    |  90 | i       | 1, 2, 3, ..., 7                   | 5     |\n * |                                 |     | io      | 1st, 2nd, ..., 7th                | 5     |\n * |                                 |     | ii      | 01, 02, ..., 07                   | 5     |\n * |                                 |     | iii     | Mon, Tue, Wed, ..., Sun           | 5     |\n * |                                 |     | iiii    | Monday, Tuesday, ..., Sunday      | 2,5   |\n * |                                 |     | iiiii   | M, T, W, T, F, S, S               | 5     |\n * |                                 |     | iiiiii  | Mo, Tu, We, Th, Fr, Sa, Su        | 5     |\n * | Local day of week (formatting)  |  90 | e       | 2, 3, 4, ..., 1                   |       |\n * |                                 |     | eo      | 2nd, 3rd, ..., 1st                | 5     |\n * |                                 |     | ee      | 02, 03, ..., 01                   |       |\n * |                                 |     | eee     | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 |     | eeee    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 |     | eeeee   | M, T, W, T, F, S, S               |       |\n * |                                 |     | eeeeee  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | Local day of week (stand-alone) |  90 | c       | 2, 3, 4, ..., 1                   |       |\n * |                                 |     | co      | 2nd, 3rd, ..., 1st                | 5     |\n * |                                 |     | cc      | 02, 03, ..., 01                   |       |\n * |                                 |     | ccc     | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 |     | cccc    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 |     | ccccc   | M, T, W, T, F, S, S               |       |\n * |                                 |     | cccccc  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | AM, PM                          |  80 | a..aaa  | AM, PM                            |       |\n * |                                 |     | aaaa    | a.m., p.m.                        | 2     |\n * |                                 |     | aaaaa   | a, p                              |       |\n * | AM, PM, noon, midnight          |  80 | b..bbb  | AM, PM, noon, midnight            |       |\n * |                                 |     | bbbb    | a.m., p.m., noon, midnight        | 2     |\n * |                                 |     | bbbbb   | a, p, n, mi                       |       |\n * | Flexible day period             |  80 | B..BBB  | at night, in the morning, ...     |       |\n * |                                 |     | BBBB    | at night, in the morning, ...     | 2     |\n * |                                 |     | BBBBB   | at night, in the morning, ...     |       |\n * | Hour [1-12]                     |  70 | h       | 1, 2, ..., 11, 12                 |       |\n * |                                 |     | ho      | 1st, 2nd, ..., 11th, 12th         | 5     |\n * |                                 |     | hh      | 01, 02, ..., 11, 12               |       |\n * | Hour [0-23]                     |  70 | H       | 0, 1, 2, ..., 23                  |       |\n * |                                 |     | Ho      | 0th, 1st, 2nd, ..., 23rd          | 5     |\n * |                                 |     | HH      | 00, 01, 02, ..., 23               |       |\n * | Hour [0-11]                     |  70 | K       | 1, 2, ..., 11, 0                  |       |\n * |                                 |     | Ko      | 1st, 2nd, ..., 11th, 0th          | 5     |\n * |                                 |     | KK      | 01, 02, ..., 11, 00               |       |\n * | Hour [1-24]                     |  70 | k       | 24, 1, 2, ..., 23                 |       |\n * |                                 |     | ko      | 24th, 1st, 2nd, ..., 23rd         | 5     |\n * |                                 |     | kk      | 24, 01, 02, ..., 23               |       |\n * | Minute                          |  60 | m       | 0, 1, ..., 59                     |       |\n * |                                 |     | mo      | 0th, 1st, ..., 59th               | 5     |\n * |                                 |     | mm      | 00, 01, ..., 59                   |       |\n * | Second                          |  50 | s       | 0, 1, ..., 59                     |       |\n * |                                 |     | so      | 0th, 1st, ..., 59th               | 5     |\n * |                                 |     | ss      | 00, 01, ..., 59                   |       |\n * | Seconds timestamp               |  40 | t       | 512969520                         |       |\n * |                                 |     | tt      | ...                               | 2     |\n * | Fraction of second              |  30 | S       | 0, 1, ..., 9                      |       |\n * |                                 |     | SS      | 00, 01, ..., 99                   |       |\n * |                                 |     | SSS     | 000, 001, ..., 999                |       |\n * |                                 |     | SSSS    | ...                               | 2     |\n * | Milliseconds timestamp          |  20 | T       | 512969520900                      |       |\n * |                                 |     | TT      | ...                               | 2     |\n * | Timezone (ISO-8601 w/ Z)        |  10 | X       | -08, +0530, Z                     |       |\n * |                                 |     | XX      | -0800, +0530, Z                   |       |\n * |                                 |     | XXX     | -08:00, +05:30, Z                 |       |\n * |                                 |     | XXXX    | -0800, +0530, Z, +123456          | 2     |\n * |                                 |     | XXXXX   | -08:00, +05:30, Z, +12:34:56      |       |\n * | Timezone (ISO-8601 w/o Z)       |  10 | x       | -08, +0530, +00                   |       |\n * |                                 |     | xx      | -0800, +0530, +0000               |       |\n * |                                 |     | xxx     | -08:00, +05:30, +00:00            | 2     |\n * |                                 |     | xxxx    | -0800, +0530, +0000, +123456      |       |\n * |                                 |     | xxxxx   | -08:00, +05:30, +00:00, +12:34:56 |       |\n * | Long localized date             |  NA | P       | 05/29/1453                        | 5,8   |\n * |                                 |     | PP      | May 29, 1453                      |       |\n * |                                 |     | PPP     | May 29th, 1453                    |       |\n * |                                 |     | PPPP    | Sunday, May 29th, 1453            | 2,5,8 |\n * | Long localized time             |  NA | p       | 12:00 AM                          | 5,8   |\n * |                                 |     | pp      | 12:00:00 AM                       |       |\n * | Combination of date and time    |  NA | Pp      | 05/29/1453, 12:00 AM              |       |\n * |                                 |     | PPpp    | May 29, 1453, 12:00:00 AM         |       |\n * |                                 |     | PPPpp   | May 29th, 1453 at ...             |       |\n * |                                 |     | PPPPpp  | Sunday, May 29th, 1453 at ...     | 2,5,8 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n *    are the same as \"stand-alone\" units, but are different in some languages.\n *    \"Formatting\" units are declined according to the rules of the language\n *    in the context of a date. \"Stand-alone\" units are always nominative singular.\n *    In `format` function, they will produce different result:\n *\n *    `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n *    `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n *    `parse` will try to match both formatting and stand-alone units interchangeably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n *    the single quote characters (see below).\n *    If the sequence is longer than listed in table:\n *    - for numerical units (`yyyyyyyy`) `parse` will try to match a number\n *      as wide as the sequence\n *    - for text units (`MMMMMMMM`) `parse` will try to match the widest variation of the unit.\n *      These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n *    These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n *    | Year | `y` | `u` |\n *    |------|-----|-----|\n *    | AC 1 |   1 |   1 |\n *    | BC 1 |   1 |   0 |\n *    | BC 2 |   2 |  -1 |\n *\n *    Also `yy` will try to guess the century of two digit year by proximity with `referenceDate`:\n *\n *    `parse('50', 'yy', new Date(2018, 0, 1)) //=> Sat Jan 01 2050 00:00:00`\n *\n *    `parse('75', 'yy', new Date(2018, 0, 1)) //=> Wed Jan 01 1975 00:00:00`\n *\n *    while `uu` will just assign the year as is:\n *\n *    `parse('50', 'uu', new Date(2018, 0, 1)) //=> Sat Jan 01 0050 00:00:00`\n *\n *    `parse('75', 'uu', new Date(2018, 0, 1)) //=> Tue Jan 01 0075 00:00:00`\n *\n *    The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n *    except local week-numbering years are dependent on `options.weekStartsOn`\n *    and `options.firstWeekContainsDate` (compare [setISOWeekYear](https://date-fns.org/docs/setISOWeekYear)\n *    and [setWeekYear](https://date-fns.org/docs/setWeekYear)).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n *    - `i`: ISO day of week\n *    - `I`: ISO week of year\n *    - `R`: ISO week-numbering year\n *    - `o`: ordinal number modifier\n *    - `P`: long localized date\n *    - `p`: long localized time\n *\n * 6. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n *    You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 7. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n *    You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 8. `P+` tokens do not have a defined priority since they are merely aliases to other tokens based\n *    on the given locale.\n *\n *    using `en-US` locale: `P` => `MM/dd/yyyy`\n *    using `en-US` locale: `p` => `hh:mm a`\n *    using `pt-BR` locale: `P` => `dd/MM/yyyy`\n *    using `pt-BR` locale: `p` => `HH:mm`\n *\n * Values will be assigned to the date in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are parsed (e.g. when parsing string 'January 1st' without a year),\n * the values will be taken from 3rd argument `referenceDate` which works as a context of parsing.\n *\n * `referenceDate` must be passed for correct work of the function.\n * If you're not sure which `referenceDate` to supply, create a new instance of Date:\n * `parse('02/11/2014', 'MM/dd/yyyy', new Date())`\n * In this case parsing will be done in the context of the current date.\n * If `referenceDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `referenceDate` will be returned.\n *\n * If parsing failed, `Invalid Date` will be returned.\n * Invalid Date is a Date, whose time value is NaN.\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param dateStr - The string to parse\n * @param formatStr - The string of tokens\n * @param referenceDate - defines values missing from the parsed dateString\n * @param options - An object with options.\n *   see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *   see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @returns The parsed date\n *\n * @throws `options.locale` must contain `match` property\n * @throws use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws format string contains an unescaped latin alphabet character\n *\n * @example\n * // Parse 11 February 2014 from middle-endian format:\n * var result = parse('02/11/2014', 'MM/dd/yyyy', new Date())\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = parse('28-a de februaro', \"do 'de' MMMM\", new Date(2010, 0, 1), {\n *   locale: eo\n * })\n * //=> Sun Feb 28 2010 00:00:00\n */\nexport function parse(dateStr, formatStr, referenceDate, options) {\n  const invalidDate = () => constructFrom(options?.in || referenceDate, NaN);\n  const defaultOptions = getDefaultOptions();\n  const locale = options?.locale ?? defaultOptions.locale ?? defaultLocale;\n\n  const firstWeekContainsDate =\n    options?.firstWeekContainsDate ??\n    options?.locale?.options?.firstWeekContainsDate ??\n    defaultOptions.firstWeekContainsDate ??\n    defaultOptions.locale?.options?.firstWeekContainsDate ??\n    1;\n\n  const weekStartsOn =\n    options?.weekStartsOn ??\n    options?.locale?.options?.weekStartsOn ??\n    defaultOptions.weekStartsOn ??\n    defaultOptions.locale?.options?.weekStartsOn ??\n    0;\n\n  if (!formatStr)\n    return dateStr ? invalidDate() : toDate(referenceDate, options?.in);\n\n  const subFnOptions = {\n    firstWeekContainsDate,\n    weekStartsOn,\n    locale,\n  };\n\n  // If timezone isn't specified, it will try to use the context or\n  // the reference date and fallback to the system time zone.\n  const setters = [new DateTimezoneSetter(options?.in, referenceDate)];\n\n  const tokens = formatStr\n    .match(longFormattingTokensRegExp)\n    .map((substring) => {\n      const firstCharacter = substring[0];\n      if (firstCharacter in longFormatters) {\n        const longFormatter = longFormatters[firstCharacter];\n        return longFormatter(substring, locale.formatLong);\n      }\n      return substring;\n    })\n    .join(\"\")\n    .match(formattingTokensRegExp);\n\n  const usedTokens = [];\n\n  for (let token of tokens) {\n    if (\n      !options?.useAdditionalWeekYearTokens &&\n      isProtectedWeekYearToken(token)\n    ) {\n      warnOrThrowProtectedError(token, formatStr, dateStr);\n    }\n    if (\n      !options?.useAdditionalDayOfYearTokens &&\n      isProtectedDayOfYearToken(token)\n    ) {\n      warnOrThrowProtectedError(token, formatStr, dateStr);\n    }\n\n    const firstCharacter = token[0];\n    const parser = parsers[firstCharacter];\n    if (parser) {\n      const { incompatibleTokens } = parser;\n      if (Array.isArray(incompatibleTokens)) {\n        const incompatibleToken = usedTokens.find(\n          (usedToken) =>\n            incompatibleTokens.includes(usedToken.token) ||\n            usedToken.token === firstCharacter,\n        );\n        if (incompatibleToken) {\n          throw new RangeError(\n            `The format string mustn't contain \\`${incompatibleToken.fullToken}\\` and \\`${token}\\` at the same time`,\n          );\n        }\n      } else if (parser.incompatibleTokens === \"*\" && usedTokens.length > 0) {\n        throw new RangeError(\n          `The format string mustn't contain \\`${token}\\` and any other token at the same time`,\n        );\n      }\n\n      usedTokens.push({ token: firstCharacter, fullToken: token });\n\n      const parseResult = parser.run(\n        dateStr,\n        token,\n        locale.match,\n        subFnOptions,\n      );\n\n      if (!parseResult) {\n        return invalidDate();\n      }\n\n      setters.push(parseResult.setter);\n\n      dateStr = parseResult.rest;\n    } else {\n      if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n        throw new RangeError(\n          \"Format string contains an unescaped latin alphabet character `\" +\n            firstCharacter +\n            \"`\",\n        );\n      }\n\n      // Replace two single quote characters with one single quote character\n      if (token === \"''\") {\n        token = \"'\";\n      } else if (firstCharacter === \"'\") {\n        token = cleanEscapedString(token);\n      }\n\n      // Cut token from string, or, if string doesn't match the token, return Invalid Date\n      if (dateStr.indexOf(token) === 0) {\n        dateStr = dateStr.slice(token.length);\n      } else {\n        return invalidDate();\n      }\n    }\n  }\n\n  // Check if the remaining input contains something other than whitespace\n  if (dateStr.length > 0 && notWhitespaceRegExp.test(dateStr)) {\n    return invalidDate();\n  }\n\n  const uniquePrioritySetters = setters\n    .map((setter) => setter.priority)\n    .sort((a, b) => b - a)\n    .filter((priority, index, array) => array.indexOf(priority) === index)\n    .map((priority) =>\n      setters\n        .filter((setter) => setter.priority === priority)\n        .sort((a, b) => b.subPriority - a.subPriority),\n    )\n    .map((setterArray) => setterArray[0]);\n\n  let date = toDate(referenceDate, options?.in);\n\n  if (isNaN(+date)) return invalidDate();\n\n  const flags = {};\n  for (const setter of uniquePrioritySetters) {\n    if (!setter.validate(date, subFnOptions)) {\n      return invalidDate();\n    }\n\n    const result = setter.set(date, flags, subFnOptions);\n    // Result is tuple (date, flags)\n    if (Array.isArray(result)) {\n      date = result[0];\n      Object.assign(flags, result[1]);\n      // Result is date\n    } else {\n      date = result;\n    }\n  }\n\n  return date;\n}\n\nfunction cleanEscapedString(input) {\n  return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}\n\n// Fallback for modularized imports:\nexport default parse;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\n\n/**\n * The {@link isSameMonth} function options.\n */\n\n/**\n * @name isSameMonth\n * @category Month Helpers\n * @summary Are the given dates in the same month (and year)?\n *\n * @description\n * Are the given dates in the same month (and year)?\n *\n * @param laterDate - The first date to check\n * @param earlierDate - The second date to check\n * @param options - An object with options\n *\n * @returns The dates are in the same month (and year)\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same month?\n * const result = isSameMonth(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n *\n * @example\n * // Are 2 September 2014 and 25 September 2015 in the same month?\n * const result = isSameMonth(new Date(2014, 8, 2), new Date(2015, 8, 25))\n * //=> false\n */\nexport function isSameMonth(laterDate, earlierDate, options) {\n  const [laterDate_, earlierDate_] = normalizeDates(\n    options?.in,\n    laterDate,\n    earlierDate,\n  );\n  return (\n    laterDate_.getFullYear() === earlierDate_.getFullYear() &&\n    laterDate_.getMonth() === earlierDate_.getMonth()\n  );\n}\n\n// Fallback for modularized imports:\nexport default isSameMonth;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { startOfQuarter } from \"./startOfQuarter.js\";\n\n/**\n * The {@link isSameQuarter} function options.\n */\n\n/**\n * @name isSameQuarter\n * @category Quarter Helpers\n * @summary Are the given dates in the same quarter (and year)?\n *\n * @description\n * Are the given dates in the same quarter (and year)?\n *\n * @param laterDate - The first date to check\n * @param earlierDate - The second date to check\n * @param options - An object with options\n *\n * @returns The dates are in the same quarter (and year)\n *\n * @example\n * // Are 1 January 2014 and 8 March 2014 in the same quarter?\n * const result = isSameQuarter(new Date(2014, 0, 1), new Date(2014, 2, 8))\n * //=> true\n *\n * @example\n * // Are 1 January 2014 and 1 January 2015 in the same quarter?\n * const result = isSameQuarter(new Date(2014, 0, 1), new Date(2015, 0, 1))\n * //=> false\n */\nexport function isSameQuarter(laterDate, earlierDate, options) {\n  const [dateLeft_, dateRight_] = normalizeDates(\n    options?.in,\n    laterDate,\n    earlierDate,\n  );\n  return +startOfQuarter(dateLeft_) === +startOfQuarter(dateRight_);\n}\n\n// Fallback for modularized imports:\nexport default isSameQuarter;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\n\n/**\n * The {@link isSameYear} function options.\n */\n\n/**\n * @name isSameYear\n * @category Year Helpers\n * @summary Are the given dates in the same year?\n *\n * @description\n * Are the given dates in the same year?\n *\n * @param laterDate - The first date to check\n * @param earlierDate - The second date to check\n * @param options - An object with options\n *\n * @returns The dates are in the same year\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same year?\n * const result = isSameYear(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n */\nexport function isSameYear(laterDate, earlierDate, options) {\n  const [laterDate_, earlierDate_] = normalizeDates(\n    options?.in,\n    laterDate,\n    earlierDate,\n  );\n  return laterDate_.getFullYear() === earlierDate_.getFullYear();\n}\n\n// Fallback for modularized imports:\nexport default isSameYear;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link isWithinInterval} function options.\n */\n\n/**\n * @name isWithinInterval\n * @category Interval Helpers\n * @summary Is the given date within the interval?\n *\n * @description\n * Is the given date within the interval? (Including start and end.)\n *\n * @param date - The date to check\n * @param interval - The interval to check\n * @param options - An object with options\n *\n * @returns The date is within the interval\n *\n * @example\n * // For the date within the interval:\n * isWithinInterval(new Date(2014, 0, 3), {\n *   start: new Date(2014, 0, 1),\n *   end: new Date(2014, 0, 7)\n * })\n * // => true\n *\n * @example\n * // For the date outside of the interval:\n * isWithinInterval(new Date(2014, 0, 10), {\n *   start: new Date(2014, 0, 1),\n *   end: new Date(2014, 0, 7)\n * })\n * // => false\n *\n * @example\n * // For date equal to the interval start:\n * isWithinInterval(date, { start, end: date })\n * // => true\n *\n * @example\n * // For date equal to the interval end:\n * isWithinInterval(date, { start: date, end })\n * // => true\n */\nexport function isWithinInterval(date, interval, options) {\n  const time = +toDate(date, options?.in);\n  const [startTime, endTime] = [\n    +toDate(interval.start, options?.in),\n    +toDate(interval.end, options?.in),\n  ].sort((a, b) => a - b);\n\n  return time >= startTime && time <= endTime;\n}\n\n// Fallback for modularized imports:\nexport default isWithinInterval;\n","import { addDays } from \"./addDays.js\";\n\n/**\n * The {@link subDays} function options.\n */\n\n/**\n * @name subDays\n * @category Day Helpers\n * @summary Subtract the specified number of days from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of days to be subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the days subtracted\n *\n * @example\n * // Subtract 10 days from 1 September 2014:\n * const result = subDays(new Date(2014, 8, 1), 10)\n * //=> Fri Aug 22 2014 00:00:00\n */\nexport function subDays(date, amount, options) {\n  return addDays(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subDays;\n","import {\n  millisecondsInHour,\n  millisecondsInMinute,\n} from \"./constants.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link parseISO} function options.\n */\n\n/**\n * @name parseISO\n * @category Common Helpers\n * @summary Parse ISO string\n *\n * @description\n * Parse the given string in ISO 8601 format and return an instance of Date.\n *\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If the argument isn't a string, the function cannot parse the string or\n * the values are invalid, it returns Invalid Date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param argument - The value to convert\n * @param options - An object with options\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * const result = parseISO('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * const result = parseISO('+02014101', { additionalDigits: 1 })\n * //=> Fri Apr 11 2014 00:00:00\n */\nexport function parseISO(argument, options) {\n  const invalidDate = () => constructFrom(options?.in, NaN);\n\n  const additionalDigits = options?.additionalDigits ?? 2;\n  const dateStrings = splitDateString(argument);\n\n  let date;\n  if (dateStrings.date) {\n    const parseYearResult = parseYear(dateStrings.date, additionalDigits);\n    date = parseDate(parseYearResult.restDateString, parseYearResult.year);\n  }\n\n  if (!date || isNaN(+date)) return invalidDate();\n\n  const timestamp = +date;\n  let time = 0;\n  let offset;\n\n  if (dateStrings.time) {\n    time = parseTime(dateStrings.time);\n    if (isNaN(time)) return invalidDate();\n  }\n\n  if (dateStrings.timezone) {\n    offset = parseTimezone(dateStrings.timezone);\n    if (isNaN(offset)) return invalidDate();\n  } else {\n    const tmpDate = new Date(timestamp + time);\n    const result = toDate(0, options?.in);\n    result.setFullYear(\n      tmpDate.getUTCFullYear(),\n      tmpDate.getUTCMonth(),\n      tmpDate.getUTCDate(),\n    );\n    result.setHours(\n      tmpDate.getUTCHours(),\n      tmpDate.getUTCMinutes(),\n      tmpDate.getUTCSeconds(),\n      tmpDate.getUTCMilliseconds(),\n    );\n    return result;\n  }\n\n  return toDate(timestamp + time + offset, options?.in);\n}\n\nconst patterns = {\n  dateTimeDelimiter: /[T ]/,\n  timeZoneDelimiter: /[Z ]/i,\n  timezone: /([Z+-].*)$/,\n};\n\nconst dateRegex =\n  /^-?(?:(\\d{3})|(\\d{2})(?:-?(\\d{2}))?|W(\\d{2})(?:-?(\\d{1}))?|)$/;\nconst timeRegex =\n  /^(\\d{2}(?:[.,]\\d*)?)(?::?(\\d{2}(?:[.,]\\d*)?))?(?::?(\\d{2}(?:[.,]\\d*)?))?$/;\nconst timezoneRegex = /^([+-])(\\d{2})(?::?(\\d{2}))?$/;\n\nfunction splitDateString(dateString) {\n  const dateStrings = {};\n  const array = dateString.split(patterns.dateTimeDelimiter);\n  let timeString;\n\n  // The regex match should only return at maximum two array elements.\n  // [date], [time], or [date, time].\n  if (array.length > 2) {\n    return dateStrings;\n  }\n\n  if (/:/.test(array[0])) {\n    timeString = array[0];\n  } else {\n    dateStrings.date = array[0];\n    timeString = array[1];\n    if (patterns.timeZoneDelimiter.test(dateStrings.date)) {\n      dateStrings.date = dateString.split(patterns.timeZoneDelimiter)[0];\n      timeString = dateString.substr(\n        dateStrings.date.length,\n        dateString.length,\n      );\n    }\n  }\n\n  if (timeString) {\n    const token = patterns.timezone.exec(timeString);\n    if (token) {\n      dateStrings.time = timeString.replace(token[1], \"\");\n      dateStrings.timezone = token[1];\n    } else {\n      dateStrings.time = timeString;\n    }\n  }\n\n  return dateStrings;\n}\n\nfunction parseYear(dateString, additionalDigits) {\n  const regex = new RegExp(\n    \"^(?:(\\\\d{4}|[+-]\\\\d{\" +\n      (4 + additionalDigits) +\n      \"})|(\\\\d{2}|[+-]\\\\d{\" +\n      (2 + additionalDigits) +\n      \"})$)\",\n  );\n\n  const captures = dateString.match(regex);\n  // Invalid ISO-formatted year\n  if (!captures) return { year: NaN, restDateString: \"\" };\n\n  const year = captures[1] ? parseInt(captures[1]) : null;\n  const century = captures[2] ? parseInt(captures[2]) : null;\n\n  // either year or century is null, not both\n  return {\n    year: century === null ? year : century * 100,\n    restDateString: dateString.slice((captures[1] || captures[2]).length),\n  };\n}\n\nfunction parseDate(dateString, year) {\n  // Invalid ISO-formatted year\n  if (year === null) return new Date(NaN);\n\n  const captures = dateString.match(dateRegex);\n  // Invalid ISO-formatted string\n  if (!captures) return new Date(NaN);\n\n  const isWeekDate = !!captures[4];\n  const dayOfYear = parseDateUnit(captures[1]);\n  const month = parseDateUnit(captures[2]) - 1;\n  const day = parseDateUnit(captures[3]);\n  const week = parseDateUnit(captures[4]);\n  const dayOfWeek = parseDateUnit(captures[5]) - 1;\n\n  if (isWeekDate) {\n    if (!validateWeekDate(year, week, dayOfWeek)) {\n      return new Date(NaN);\n    }\n    return dayOfISOWeekYear(year, week, dayOfWeek);\n  } else {\n    const date = new Date(0);\n    if (\n      !validateDate(year, month, day) ||\n      !validateDayOfYearDate(year, dayOfYear)\n    ) {\n      return new Date(NaN);\n    }\n    date.setUTCFullYear(year, month, Math.max(dayOfYear, day));\n    return date;\n  }\n}\n\nfunction parseDateUnit(value) {\n  return value ? parseInt(value) : 1;\n}\n\nfunction parseTime(timeString) {\n  const captures = timeString.match(timeRegex);\n  if (!captures) return NaN; // Invalid ISO-formatted time\n\n  const hours = parseTimeUnit(captures[1]);\n  const minutes = parseTimeUnit(captures[2]);\n  const seconds = parseTimeUnit(captures[3]);\n\n  if (!validateTime(hours, minutes, seconds)) {\n    return NaN;\n  }\n\n  return (\n    hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * 1000\n  );\n}\n\nfunction parseTimeUnit(value) {\n  return (value && parseFloat(value.replace(\",\", \".\"))) || 0;\n}\n\nfunction parseTimezone(timezoneString) {\n  if (timezoneString === \"Z\") return 0;\n\n  const captures = timezoneString.match(timezoneRegex);\n  if (!captures) return 0;\n\n  const sign = captures[1] === \"+\" ? -1 : 1;\n  const hours = parseInt(captures[2]);\n  const minutes = (captures[3] && parseInt(captures[3])) || 0;\n\n  if (!validateTimezone(hours, minutes)) {\n    return NaN;\n  }\n\n  return sign * (hours * millisecondsInHour + minutes * millisecondsInMinute);\n}\n\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n  const date = new Date(0);\n  date.setUTCFullYear(isoWeekYear, 0, 4);\n  const fourthOfJanuaryDay = date.getUTCDay() || 7;\n  const diff = (week - 1) * 7 + day + 1 - fourthOfJanuaryDay;\n  date.setUTCDate(date.getUTCDate() + diff);\n  return date;\n}\n\n// Validation functions\n\n// February is null to handle the leap year (using ||)\nconst daysInMonths = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\nfunction isLeapYearIndex(year) {\n  return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0);\n}\n\nfunction validateDate(year, month, date) {\n  return (\n    month >= 0 &&\n    month <= 11 &&\n    date >= 1 &&\n    date <= (daysInMonths[month] || (isLeapYearIndex(year) ? 29 : 28))\n  );\n}\n\nfunction validateDayOfYearDate(year, dayOfYear) {\n  return dayOfYear >= 1 && dayOfYear <= (isLeapYearIndex(year) ? 366 : 365);\n}\n\nfunction validateWeekDate(_year, week, day) {\n  return week >= 1 && week <= 53 && day >= 0 && day <= 6;\n}\n\nfunction validateTime(hours, minutes, seconds) {\n  if (hours === 24) {\n    return minutes === 0 && seconds === 0;\n  }\n\n  return (\n    seconds >= 0 &&\n    seconds < 60 &&\n    minutes >= 0 &&\n    minutes < 60 &&\n    hours >= 0 &&\n    hours < 25\n  );\n}\n\nfunction validateTimezone(_hours, minutes) {\n  return minutes >= 0 && minutes <= 59;\n}\n\n// Fallback for modularized imports:\nexport default parseISO;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { getDaysInMonth } from \"./getDaysInMonth.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link setMonth} function options.\n */\n\n/**\n * @name setMonth\n * @category Month Helpers\n * @summary Set the month to the given date.\n *\n * @description\n * Set the month to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param month - The month index to set (0-11)\n * @param options - The options\n *\n * @returns The new date with the month set\n *\n * @example\n * // Set February to 1 September 2014:\n * const result = setMonth(new Date(2014, 8, 1), 1)\n * //=> Sat Feb 01 2014 00:00:00\n */\nexport function setMonth(date, month, options) {\n  const _date = toDate(date, options?.in);\n  const year = _date.getFullYear();\n  const day = _date.getDate();\n\n  const midMonth = constructFrom(options?.in || date, 0);\n  midMonth.setFullYear(year, month, 15);\n  midMonth.setHours(0, 0, 0, 0);\n  const daysInMonth = getDaysInMonth(midMonth);\n\n  // Set the earlier date, allows to wrap Jan 31 to Feb 28\n  _date.setMonth(month, Math.min(day, daysInMonth));\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default setMonth;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link setHours} function options.\n */\n\n/**\n * @name setHours\n * @category Hour Helpers\n * @summary Set the hours to the given date.\n *\n * @description\n * Set the hours to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param hours - The hours of the new date\n * @param options - An object with options\n *\n * @returns The new date with the hours set\n *\n * @example\n * // Set 4 hours to 1 September 2014 11:30:00:\n * const result = setHours(new Date(2014, 8, 1, 11, 30), 4)\n * //=> Mon Sep 01 2014 04:30:00\n */\nexport function setHours(date, hours, options) {\n  const _date = toDate(date, options?.in);\n  _date.setHours(hours);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default setHours;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link setMinutes} function options.\n */\n\n/**\n * @name setMinutes\n * @category Minute Helpers\n * @summary Set the minutes to the given date.\n *\n * @description\n * Set the minutes to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows using extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, returned from the context function, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param minutes - The minutes of the new date\n * @param options - An object with options\n *\n * @returns The new date with the minutes set\n *\n * @example\n * // Set 45 minutes to 1 September 2014 11:30:40:\n * const result = setMinutes(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:45:40\n */\nexport function setMinutes(date, minutes, options) {\n  const date_ = toDate(date, options?.in);\n  date_.setMinutes(minutes);\n  return date_;\n}\n\n// Fallback for modularized imports:\nexport default setMinutes;\n","import { setMonth } from \"./setMonth.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link setQuarter} function options.\n */\n\n/**\n * @name setQuarter\n * @category Quarter Helpers\n * @summary Set the year quarter to the given date.\n *\n * @description\n * Set the year quarter to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param quarter - The quarter of the new date\n * @param options - The options\n *\n * @returns The new date with the quarter set\n *\n * @example\n * // Set the 2nd quarter to 2 July 2014:\n * const result = setQuarter(new Date(2014, 6, 2), 2)\n * //=> Wed Apr 02 2014 00:00:00\n */\nexport function setQuarter(date, quarter, options) {\n  const date_ = toDate(date, options?.in);\n  const oldQuarter = Math.trunc(date_.getMonth() / 3) + 1;\n  const diff = quarter - oldQuarter;\n  return setMonth(date_, date_.getMonth() + diff * 3);\n}\n\n// Fallback for modularized imports:\nexport default setQuarter;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link setSeconds} function options.\n */\n\n/**\n * @name setSeconds\n * @category Second Helpers\n * @summary Set the seconds to the given date, with context support.\n *\n * @description\n * Set the seconds to the given date, with an optional context for time zone specification.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param seconds - The seconds of the new date\n * @param options - An object with options\n *\n * @returns The new date with the seconds set\n *\n * @example\n * // Set 45 seconds to 1 September 2014 11:30:40:\n * const result = setSeconds(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:30:45\n */\nexport function setSeconds(date, seconds, options) {\n  const _date = toDate(date, options?.in);\n  _date.setSeconds(seconds);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default setSeconds;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link setYear} function options.\n */\n\n/**\n * @name setYear\n * @category Year Helpers\n * @summary Set the year to the given date.\n *\n * @description\n * Set the year to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param year - The year of the new date\n * @param options - An object with options.\n *\n * @returns The new date with the year set\n *\n * @example\n * // Set year 2013 to 1 September 2014:\n * const result = setYear(new Date(2014, 8, 1), 2013)\n * //=> Sun Sep 01 2013 00:00:00\n */\nexport function setYear(date, year, options) {\n  const date_ = toDate(date, options?.in);\n\n  // Check if date is Invalid Date because Date.prototype.setFullYear ignores the value of Invalid Date\n  if (isNaN(+date_)) return constructFrom(options?.in || date, NaN);\n\n  date_.setFullYear(year);\n  return date_;\n}\n\n// Fallback for modularized imports:\nexport default setYear;\n","import { addMonths } from \"./addMonths.js\";\n\n/**\n * The subMonths function options.\n */\n\n/**\n * @name subMonths\n * @category Month Helpers\n * @summary Subtract the specified number of months from the given date.\n *\n * @description\n * Subtract the specified number of months from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of months to be subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the months subtracted\n *\n * @example\n * // Subtract 5 months from 1 February 2015:\n * const result = subMonths(new Date(2015, 1, 1), 5)\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function subMonths(date, amount, options) {\n  return addMonths(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subMonths;\n","import { addQuarters } from \"./addQuarters.js\";\n\n/**\n * The {@link subQuarters} function options.\n */\n\n/**\n * @name subQuarters\n * @category Quarter Helpers\n * @summary Subtract the specified number of year quarters from the given date.\n *\n * @description\n * Subtract the specified number of year quarters from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of quarters to be subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the quarters subtracted\n *\n * @example\n * // Subtract 3 quarters from 1 September 2014:\n * const result = subQuarters(new Date(2014, 8, 1), 3)\n * //=> Sun Dec 01 2013 00:00:00\n */\nexport function subQuarters(date, amount, options) {\n  return addQuarters(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subQuarters;\n","import { addWeeks } from \"./addWeeks.js\";\n\n/**\n * The {@link subWeeks} function options.\n */\n\n/**\n * @name subWeeks\n * @category Week Helpers\n * @summary Subtract the specified number of weeks from the given date.\n *\n * @description\n * Subtract the specified number of weeks from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of weeks to be subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the weeks subtracted\n *\n * @example\n * // Subtract 4 weeks from 1 September 2014:\n * const result = subWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Aug 04 2014 00:00:00\n */\nexport function subWeeks(date, amount, options) {\n  return addWeeks(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subWeeks;\n","import { addYears } from \"./addYears.js\";\n\n/**\n * The {@link subYears} function options.\n */\n\n/**\n * @name subYears\n * @category Year Helpers\n * @summary Subtract the specified number of years from the given date.\n *\n * @description\n * Subtract the specified number of years from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of years to be subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the years subtracted\n *\n * @example\n * // Subtract 5 years from 1 September 2014:\n * const result = subYears(new Date(2014, 8, 1), 5)\n * //=> Tue Sep 01 2009 00:00:00\n */\nexport function subYears(date, amount, options) {\n  return addYears(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subYears;\n","function hasWindow() {\n  return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n  if (isNode(node)) {\n    return (node.nodeName || '').toLowerCase();\n  }\n  // Mocked nodes in testing environments may not be instances of Node. By\n  // returning `#document` an infinite loop won't occur.\n  // https://github.com/floating-ui/floating-ui/issues/2317\n  return '#document';\n}\nfunction getWindow(node) {\n  var _node$ownerDocument;\n  return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n  var _ref;\n  return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n  if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n  return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nconst invalidOverflowDisplayValues = /*#__PURE__*/new Set(['inline', 'contents']);\nfunction isOverflowElement(element) {\n  const {\n    overflow,\n    overflowX,\n    overflowY,\n    display\n  } = getComputedStyle(element);\n  return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !invalidOverflowDisplayValues.has(display);\n}\nconst tableElements = /*#__PURE__*/new Set(['table', 'td', 'th']);\nfunction isTableElement(element) {\n  return tableElements.has(getNodeName(element));\n}\nconst topLayerSelectors = [':popover-open', ':modal'];\nfunction isTopLayer(element) {\n  return topLayerSelectors.some(selector => {\n    try {\n      return element.matches(selector);\n    } catch (_e) {\n      return false;\n    }\n  });\n}\nconst transformProperties = ['transform', 'translate', 'scale', 'rotate', 'perspective'];\nconst willChangeValues = ['transform', 'translate', 'scale', 'rotate', 'perspective', 'filter'];\nconst containValues = ['paint', 'layout', 'strict', 'content'];\nfunction isContainingBlock(elementOrCss) {\n  const webkit = isWebKit();\n  const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n  return transformProperties.some(value => css[value] ? css[value] !== 'none' : false) || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || willChangeValues.some(value => (css.willChange || '').includes(value)) || containValues.some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n  let currentNode = getParentNode(element);\n  while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    if (isContainingBlock(currentNode)) {\n      return currentNode;\n    } else if (isTopLayer(currentNode)) {\n      return null;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  return null;\n}\nfunction isWebKit() {\n  if (typeof CSS === 'undefined' || !CSS.supports) return false;\n  return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nconst lastTraversableNodeNames = /*#__PURE__*/new Set(['html', 'body', '#document']);\nfunction isLastTraversableNode(node) {\n  return lastTraversableNodeNames.has(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n  if (isElement(element)) {\n    return {\n      scrollLeft: element.scrollLeft,\n      scrollTop: element.scrollTop\n    };\n  }\n  return {\n    scrollLeft: element.scrollX,\n    scrollTop: element.scrollY\n  };\n}\nfunction getParentNode(node) {\n  if (getNodeName(node) === 'html') {\n    return node;\n  }\n  const result =\n  // Step into the shadow DOM of the parent of a slotted node.\n  node.assignedSlot ||\n  // DOM Element detected.\n  node.parentNode ||\n  // ShadowRoot detected.\n  isShadowRoot(node) && node.host ||\n  // Fallback.\n  getDocumentElement(node);\n  return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n  const parentNode = getParentNode(node);\n  if (isLastTraversableNode(parentNode)) {\n    return node.ownerDocument ? node.ownerDocument.body : node.body;\n  }\n  if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n    return parentNode;\n  }\n  return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n  var _node$ownerDocument2;\n  if (list === void 0) {\n    list = [];\n  }\n  if (traverseIframes === void 0) {\n    traverseIframes = true;\n  }\n  const scrollableAncestor = getNearestOverflowAncestor(node);\n  const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n  const win = getWindow(scrollableAncestor);\n  if (isBody) {\n    const frameElement = getFrameElement(win);\n    return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n  }\n  return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\nfunction getFrameElement(win) {\n  return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n  x: v,\n  y: v\n});\nconst oppositeSideMap = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n  start: 'end',\n  end: 'start'\n};\nfunction clamp(start, value, end) {\n  return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n  return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n  return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n  return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n  return axis === 'y' ? 'height' : 'width';\n}\nconst yAxisSides = /*#__PURE__*/new Set(['top', 'bottom']);\nfunction getSideAxis(placement) {\n  return yAxisSides.has(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n  return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n  if (rtl === void 0) {\n    rtl = false;\n  }\n  const alignment = getAlignment(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const length = getAxisLength(alignmentAxis);\n  let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n  if (rects.reference[length] > rects.floating[length]) {\n    mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n  }\n  return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n  const oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n  return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nconst lrPlacement = ['left', 'right'];\nconst rlPlacement = ['right', 'left'];\nconst tbPlacement = ['top', 'bottom'];\nconst btPlacement = ['bottom', 'top'];\nfunction getSideList(side, isStart, rtl) {\n  switch (side) {\n    case 'top':\n    case 'bottom':\n      if (rtl) return isStart ? rlPlacement : lrPlacement;\n      return isStart ? lrPlacement : rlPlacement;\n    case 'left':\n    case 'right':\n      return isStart ? tbPlacement : btPlacement;\n    default:\n      return [];\n  }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n  const alignment = getAlignment(placement);\n  let list = getSideList(getSide(placement), direction === 'start', rtl);\n  if (alignment) {\n    list = list.map(side => side + \"-\" + alignment);\n    if (flipAlignment) {\n      list = list.concat(list.map(getOppositeAlignmentPlacement));\n    }\n  }\n  return list;\n}\nfunction getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0,\n    ...padding\n  };\n}\nfunction getPaddingObject(padding) {\n  return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n    top: padding,\n    right: padding,\n    bottom: padding,\n    left: padding\n  };\n}\nfunction rectToClientRect(rect) {\n  const {\n    x,\n    y,\n    width,\n    height\n  } = rect;\n  return {\n    width,\n    height,\n    top: y,\n    left: x,\n    right: x + width,\n    bottom: y + height,\n    x,\n    y\n  };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { isShadowRoot, isHTMLElement } from '@floating-ui/utils/dom';\nimport * as React from 'react';\nimport { useLayoutEffect } from 'react';\nimport { floor } from '@floating-ui/utils';\nimport { tabbable } from 'tabbable';\n\n// Avoid Chrome DevTools blue warning.\nfunction getPlatform() {\n  const uaData = navigator.userAgentData;\n  if (uaData != null && uaData.platform) {\n    return uaData.platform;\n  }\n  return navigator.platform;\n}\nfunction getUserAgent() {\n  const uaData = navigator.userAgentData;\n  if (uaData && Array.isArray(uaData.brands)) {\n    return uaData.brands.map(_ref => {\n      let {\n        brand,\n        version\n      } = _ref;\n      return brand + \"/\" + version;\n    }).join(' ');\n  }\n  return navigator.userAgent;\n}\nfunction isSafari() {\n  // Chrome DevTools does not complain about navigator.vendor\n  return /apple/i.test(navigator.vendor);\n}\nfunction isAndroid() {\n  const re = /android/i;\n  return re.test(getPlatform()) || re.test(getUserAgent());\n}\nfunction isMac() {\n  return getPlatform().toLowerCase().startsWith('mac') && !navigator.maxTouchPoints;\n}\nfunction isJSDOM() {\n  return getUserAgent().includes('jsdom/');\n}\n\nconst FOCUSABLE_ATTRIBUTE = 'data-floating-ui-focusable';\nconst TYPEABLE_SELECTOR = \"input:not([type='hidden']):not([disabled]),\" + \"[contenteditable]:not([contenteditable='false']),textarea:not([disabled])\";\nconst ARROW_LEFT = 'ArrowLeft';\nconst ARROW_RIGHT = 'ArrowRight';\nconst ARROW_UP = 'ArrowUp';\nconst ARROW_DOWN = 'ArrowDown';\n\nfunction activeElement(doc) {\n  let activeElement = doc.activeElement;\n  while (((_activeElement = activeElement) == null || (_activeElement = _activeElement.shadowRoot) == null ? void 0 : _activeElement.activeElement) != null) {\n    var _activeElement;\n    activeElement = activeElement.shadowRoot.activeElement;\n  }\n  return activeElement;\n}\nfunction contains(parent, child) {\n  if (!parent || !child) {\n    return false;\n  }\n  const rootNode = child.getRootNode == null ? void 0 : child.getRootNode();\n\n  // First, attempt with faster native method\n  if (parent.contains(child)) {\n    return true;\n  }\n\n  // then fallback to custom implementation with Shadow DOM support\n  if (rootNode && isShadowRoot(rootNode)) {\n    let next = child;\n    while (next) {\n      if (parent === next) {\n        return true;\n      }\n      // @ts-ignore\n      next = next.parentNode || next.host;\n    }\n  }\n\n  // Give up, the result is false\n  return false;\n}\nfunction getTarget(event) {\n  if ('composedPath' in event) {\n    return event.composedPath()[0];\n  }\n\n  // TS thinks `event` is of type never as it assumes all browsers support\n  // `composedPath()`, but browsers without shadow DOM don't.\n  return event.target;\n}\nfunction isEventTargetWithin(event, node) {\n  if (node == null) {\n    return false;\n  }\n  if ('composedPath' in event) {\n    return event.composedPath().includes(node);\n  }\n\n  // TS thinks `event` is of type never as it assumes all browsers support composedPath, but browsers without shadow dom don't\n  const e = event;\n  return e.target != null && node.contains(e.target);\n}\nfunction isRootElement(element) {\n  return element.matches('html,body');\n}\nfunction getDocument(node) {\n  return (node == null ? void 0 : node.ownerDocument) || document;\n}\nfunction isTypeableElement(element) {\n  return isHTMLElement(element) && element.matches(TYPEABLE_SELECTOR);\n}\nfunction isTypeableCombobox(element) {\n  if (!element) return false;\n  return element.getAttribute('role') === 'combobox' && isTypeableElement(element);\n}\nfunction matchesFocusVisible(element) {\n  // We don't want to block focus from working with `visibleOnly`\n  // (JSDOM doesn't match `:focus-visible` when the element has `:focus`)\n  if (!element || isJSDOM()) return true;\n  try {\n    return element.matches(':focus-visible');\n  } catch (_e) {\n    return true;\n  }\n}\nfunction getFloatingFocusElement(floatingElement) {\n  if (!floatingElement) {\n    return null;\n  }\n  // Try to find the element that has `{...getFloatingProps()}` spread on it.\n  // This indicates the floating element is acting as a positioning wrapper, and\n  // so focus should be managed on the child element with the event handlers and\n  // aria props.\n  return floatingElement.hasAttribute(FOCUSABLE_ATTRIBUTE) ? floatingElement : floatingElement.querySelector(\"[\" + FOCUSABLE_ATTRIBUTE + \"]\") || floatingElement;\n}\n\nfunction getNodeChildren(nodes, id, onlyOpenChildren) {\n  if (onlyOpenChildren === void 0) {\n    onlyOpenChildren = true;\n  }\n  const directChildren = nodes.filter(node => {\n    var _node$context;\n    return node.parentId === id && (!onlyOpenChildren || ((_node$context = node.context) == null ? void 0 : _node$context.open));\n  });\n  return directChildren.flatMap(child => [child, ...getNodeChildren(nodes, child.id, onlyOpenChildren)]);\n}\nfunction getDeepestNode(nodes, id) {\n  let deepestNodeId;\n  let maxDepth = -1;\n  function findDeepest(nodeId, depth) {\n    if (depth > maxDepth) {\n      deepestNodeId = nodeId;\n      maxDepth = depth;\n    }\n    const children = getNodeChildren(nodes, nodeId);\n    children.forEach(child => {\n      findDeepest(child.id, depth + 1);\n    });\n  }\n  findDeepest(id, 0);\n  return nodes.find(node => node.id === deepestNodeId);\n}\nfunction getNodeAncestors(nodes, id) {\n  var _nodes$find;\n  let allAncestors = [];\n  let currentParentId = (_nodes$find = nodes.find(node => node.id === id)) == null ? void 0 : _nodes$find.parentId;\n  while (currentParentId) {\n    const currentNode = nodes.find(node => node.id === currentParentId);\n    currentParentId = currentNode == null ? void 0 : currentNode.parentId;\n    if (currentNode) {\n      allAncestors = allAncestors.concat(currentNode);\n    }\n  }\n  return allAncestors;\n}\n\nfunction stopEvent(event) {\n  event.preventDefault();\n  event.stopPropagation();\n}\nfunction isReactEvent(event) {\n  return 'nativeEvent' in event;\n}\n\n// License: https://github.com/adobe/react-spectrum/blob/b35d5c02fe900badccd0cf1a8f23bb593419f238/packages/@react-aria/utils/src/isVirtualEvent.ts\nfunction isVirtualClick(event) {\n  // FIXME: Firefox is now emitting a deprecation warning for `mozInputSource`.\n  // Try to find a workaround for this. `react-aria` source still has the check.\n  if (event.mozInputSource === 0 && event.isTrusted) {\n    return true;\n  }\n  if (isAndroid() && event.pointerType) {\n    return event.type === 'click' && event.buttons === 1;\n  }\n  return event.detail === 0 && !event.pointerType;\n}\nfunction isVirtualPointerEvent(event) {\n  if (isJSDOM()) return false;\n  return !isAndroid() && event.width === 0 && event.height === 0 || isAndroid() && event.width === 1 && event.height === 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === 'mouse' ||\n  // iOS VoiceOver returns 0.333• for width/height.\n  event.width < 1 && event.height < 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === 'touch';\n}\nfunction isMouseLikePointerType(pointerType, strict) {\n  // On some Linux machines with Chromium, mouse inputs return a `pointerType`\n  // of \"pen\": https://github.com/floating-ui/floating-ui/issues/2015\n  const values = ['mouse', 'pen'];\n  if (!strict) {\n    values.push('', undefined);\n  }\n  return values.includes(pointerType);\n}\n\nvar isClient = typeof document !== 'undefined';\n\nvar noop = function noop() {};\nvar index = isClient ? useLayoutEffect : noop;\n\n// https://github.com/mui/material-ui/issues/41190#issuecomment-2040873379\nconst SafeReact = {\n  ...React\n};\n\nfunction useLatestRef(value) {\n  const ref = React.useRef(value);\n  index(() => {\n    ref.current = value;\n  });\n  return ref;\n}\nconst useInsertionEffect = SafeReact.useInsertionEffect;\nconst useSafeInsertionEffect = useInsertionEffect || (fn => fn());\nfunction useEffectEvent(callback) {\n  const ref = React.useRef(() => {\n    if (process.env.NODE_ENV !== \"production\") {\n      throw new Error('Cannot call an event handler while rendering.');\n    }\n  });\n  useSafeInsertionEffect(() => {\n    ref.current = callback;\n  });\n  return React.useCallback(function () {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    return ref.current == null ? void 0 : ref.current(...args);\n  }, []);\n}\n\nfunction isDifferentGridRow(index, cols, prevRow) {\n  return Math.floor(index / cols) !== prevRow;\n}\nfunction isIndexOutOfListBounds(listRef, index) {\n  return index < 0 || index >= listRef.current.length;\n}\nfunction getMinListIndex(listRef, disabledIndices) {\n  return findNonDisabledListIndex(listRef, {\n    disabledIndices\n  });\n}\nfunction getMaxListIndex(listRef, disabledIndices) {\n  return findNonDisabledListIndex(listRef, {\n    decrement: true,\n    startingIndex: listRef.current.length,\n    disabledIndices\n  });\n}\nfunction findNonDisabledListIndex(listRef, _temp) {\n  let {\n    startingIndex = -1,\n    decrement = false,\n    disabledIndices,\n    amount = 1\n  } = _temp === void 0 ? {} : _temp;\n  let index = startingIndex;\n  do {\n    index += decrement ? -amount : amount;\n  } while (index >= 0 && index <= listRef.current.length - 1 && isListIndexDisabled(listRef, index, disabledIndices));\n  return index;\n}\nfunction getGridNavigatedIndex(listRef, _ref) {\n  let {\n    event,\n    orientation,\n    loop,\n    rtl,\n    cols,\n    disabledIndices,\n    minIndex,\n    maxIndex,\n    prevIndex,\n    stopEvent: stop = false\n  } = _ref;\n  let nextIndex = prevIndex;\n  if (event.key === ARROW_UP) {\n    stop && stopEvent(event);\n    if (prevIndex === -1) {\n      nextIndex = maxIndex;\n    } else {\n      nextIndex = findNonDisabledListIndex(listRef, {\n        startingIndex: nextIndex,\n        amount: cols,\n        decrement: true,\n        disabledIndices\n      });\n      if (loop && (prevIndex - cols < minIndex || nextIndex < 0)) {\n        const col = prevIndex % cols;\n        const maxCol = maxIndex % cols;\n        const offset = maxIndex - (maxCol - col);\n        if (maxCol === col) {\n          nextIndex = maxIndex;\n        } else {\n          nextIndex = maxCol > col ? offset : offset - cols;\n        }\n      }\n    }\n    if (isIndexOutOfListBounds(listRef, nextIndex)) {\n      nextIndex = prevIndex;\n    }\n  }\n  if (event.key === ARROW_DOWN) {\n    stop && stopEvent(event);\n    if (prevIndex === -1) {\n      nextIndex = minIndex;\n    } else {\n      nextIndex = findNonDisabledListIndex(listRef, {\n        startingIndex: prevIndex,\n        amount: cols,\n        disabledIndices\n      });\n      if (loop && prevIndex + cols > maxIndex) {\n        nextIndex = findNonDisabledListIndex(listRef, {\n          startingIndex: prevIndex % cols - cols,\n          amount: cols,\n          disabledIndices\n        });\n      }\n    }\n    if (isIndexOutOfListBounds(listRef, nextIndex)) {\n      nextIndex = prevIndex;\n    }\n  }\n\n  // Remains on the same row/column.\n  if (orientation === 'both') {\n    const prevRow = floor(prevIndex / cols);\n    if (event.key === (rtl ? ARROW_LEFT : ARROW_RIGHT)) {\n      stop && stopEvent(event);\n      if (prevIndex % cols !== cols - 1) {\n        nextIndex = findNonDisabledListIndex(listRef, {\n          startingIndex: prevIndex,\n          disabledIndices\n        });\n        if (loop && isDifferentGridRow(nextIndex, cols, prevRow)) {\n          nextIndex = findNonDisabledListIndex(listRef, {\n            startingIndex: prevIndex - prevIndex % cols - 1,\n            disabledIndices\n          });\n        }\n      } else if (loop) {\n        nextIndex = findNonDisabledListIndex(listRef, {\n          startingIndex: prevIndex - prevIndex % cols - 1,\n          disabledIndices\n        });\n      }\n      if (isDifferentGridRow(nextIndex, cols, prevRow)) {\n        nextIndex = prevIndex;\n      }\n    }\n    if (event.key === (rtl ? ARROW_RIGHT : ARROW_LEFT)) {\n      stop && stopEvent(event);\n      if (prevIndex % cols !== 0) {\n        nextIndex = findNonDisabledListIndex(listRef, {\n          startingIndex: prevIndex,\n          decrement: true,\n          disabledIndices\n        });\n        if (loop && isDifferentGridRow(nextIndex, cols, prevRow)) {\n          nextIndex = findNonDisabledListIndex(listRef, {\n            startingIndex: prevIndex + (cols - prevIndex % cols),\n            decrement: true,\n            disabledIndices\n          });\n        }\n      } else if (loop) {\n        nextIndex = findNonDisabledListIndex(listRef, {\n          startingIndex: prevIndex + (cols - prevIndex % cols),\n          decrement: true,\n          disabledIndices\n        });\n      }\n      if (isDifferentGridRow(nextIndex, cols, prevRow)) {\n        nextIndex = prevIndex;\n      }\n    }\n    const lastRow = floor(maxIndex / cols) === prevRow;\n    if (isIndexOutOfListBounds(listRef, nextIndex)) {\n      if (loop && lastRow) {\n        nextIndex = event.key === (rtl ? ARROW_RIGHT : ARROW_LEFT) ? maxIndex : findNonDisabledListIndex(listRef, {\n          startingIndex: prevIndex - prevIndex % cols - 1,\n          disabledIndices\n        });\n      } else {\n        nextIndex = prevIndex;\n      }\n    }\n  }\n  return nextIndex;\n}\n\n/** For each cell index, gets the item index that occupies that cell */\nfunction createGridCellMap(sizes, cols, dense) {\n  const cellMap = [];\n  let startIndex = 0;\n  sizes.forEach((_ref2, index) => {\n    let {\n      width,\n      height\n    } = _ref2;\n    if (width > cols) {\n      if (process.env.NODE_ENV !== \"production\") {\n        throw new Error(\"[Floating UI]: Invalid grid - item width at index \" + index + \" is greater than grid columns\");\n      }\n    }\n    let itemPlaced = false;\n    if (dense) {\n      startIndex = 0;\n    }\n    while (!itemPlaced) {\n      const targetCells = [];\n      for (let i = 0; i < width; i++) {\n        for (let j = 0; j < height; j++) {\n          targetCells.push(startIndex + i + j * cols);\n        }\n      }\n      if (startIndex % cols + width <= cols && targetCells.every(cell => cellMap[cell] == null)) {\n        targetCells.forEach(cell => {\n          cellMap[cell] = index;\n        });\n        itemPlaced = true;\n      } else {\n        startIndex++;\n      }\n    }\n  });\n\n  // convert into a non-sparse array\n  return [...cellMap];\n}\n\n/** Gets cell index of an item's corner or -1 when index is -1. */\nfunction getGridCellIndexOfCorner(index, sizes, cellMap, cols, corner) {\n  if (index === -1) return -1;\n  const firstCellIndex = cellMap.indexOf(index);\n  const sizeItem = sizes[index];\n  switch (corner) {\n    case 'tl':\n      return firstCellIndex;\n    case 'tr':\n      if (!sizeItem) {\n        return firstCellIndex;\n      }\n      return firstCellIndex + sizeItem.width - 1;\n    case 'bl':\n      if (!sizeItem) {\n        return firstCellIndex;\n      }\n      return firstCellIndex + (sizeItem.height - 1) * cols;\n    case 'br':\n      return cellMap.lastIndexOf(index);\n  }\n}\n\n/** Gets all cell indices that correspond to the specified indices */\nfunction getGridCellIndices(indices, cellMap) {\n  return cellMap.flatMap((index, cellIndex) => indices.includes(index) ? [cellIndex] : []);\n}\nfunction isListIndexDisabled(listRef, index, disabledIndices) {\n  if (typeof disabledIndices === 'function') {\n    return disabledIndices(index);\n  } else if (disabledIndices) {\n    return disabledIndices.includes(index);\n  }\n  const element = listRef.current[index];\n  return element == null || element.hasAttribute('disabled') || element.getAttribute('aria-disabled') === 'true';\n}\n\nconst getTabbableOptions = () => ({\n  getShadowRoot: true,\n  displayCheck:\n  // JSDOM does not support the `tabbable` library. To solve this we can\n  // check if `ResizeObserver` is a real function (not polyfilled), which\n  // determines if the current environment is JSDOM-like.\n  typeof ResizeObserver === 'function' && ResizeObserver.toString().includes('[native code]') ? 'full' : 'none'\n});\nfunction getTabbableIn(container, dir) {\n  const list = tabbable(container, getTabbableOptions());\n  const len = list.length;\n  if (len === 0) return;\n  const active = activeElement(getDocument(container));\n  const index = list.indexOf(active);\n  const nextIndex = index === -1 ? dir === 1 ? 0 : len - 1 : index + dir;\n  return list[nextIndex];\n}\nfunction getNextTabbable(referenceElement) {\n  return getTabbableIn(getDocument(referenceElement).body, 1) || referenceElement;\n}\nfunction getPreviousTabbable(referenceElement) {\n  return getTabbableIn(getDocument(referenceElement).body, -1) || referenceElement;\n}\nfunction isOutsideEvent(event, container) {\n  const containerElement = container || event.currentTarget;\n  const relatedTarget = event.relatedTarget;\n  return !relatedTarget || !contains(containerElement, relatedTarget);\n}\nfunction disableFocusInside(container) {\n  const tabbableElements = tabbable(container, getTabbableOptions());\n  tabbableElements.forEach(element => {\n    element.dataset.tabindex = element.getAttribute('tabindex') || '';\n    element.setAttribute('tabindex', '-1');\n  });\n}\nfunction enableFocusInside(container) {\n  const elements = container.querySelectorAll('[data-tabindex]');\n  elements.forEach(element => {\n    const tabindex = element.dataset.tabindex;\n    delete element.dataset.tabindex;\n    if (tabindex) {\n      element.setAttribute('tabindex', tabindex);\n    } else {\n      element.removeAttribute('tabindex');\n    }\n  });\n}\n\nexport { activeElement, contains, createGridCellMap, disableFocusInside, enableFocusInside, findNonDisabledListIndex, getDeepestNode, getDocument, getFloatingFocusElement, getGridCellIndexOfCorner, getGridCellIndices, getGridNavigatedIndex, getMaxListIndex, getMinListIndex, getNextTabbable, getNodeAncestors, getNodeChildren, getPlatform, getPreviousTabbable, getTabbableOptions, getTarget, getUserAgent, isAndroid, isDifferentGridRow, isEventTargetWithin, isIndexOutOfListBounds, isJSDOM, isListIndexDisabled, isMac, isMouseLikePointerType, isOutsideEvent, isReactEvent, isRootElement, isSafari, isTypeableCombobox, isTypeableElement, isVirtualClick, isVirtualPointerEvent, matchesFocusVisible, stopEvent, useEffectEvent, useLatestRef, index as useModernLayoutEffect };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n  let {\n    reference,\n    floating\n  } = _ref;\n  const sideAxis = getSideAxis(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const alignLength = getAxisLength(alignmentAxis);\n  const side = getSide(placement);\n  const isVertical = sideAxis === 'y';\n  const commonX = reference.x + reference.width / 2 - floating.width / 2;\n  const commonY = reference.y + reference.height / 2 - floating.height / 2;\n  const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n  let coords;\n  switch (side) {\n    case 'top':\n      coords = {\n        x: commonX,\n        y: reference.y - floating.height\n      };\n      break;\n    case 'bottom':\n      coords = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n    case 'right':\n      coords = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n    case 'left':\n      coords = {\n        x: reference.x - floating.width,\n        y: commonY\n      };\n      break;\n    default:\n      coords = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n  switch (getAlignment(placement)) {\n    case 'start':\n      coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n    case 'end':\n      coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n  }\n  return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n  const {\n    placement = 'bottom',\n    strategy = 'absolute',\n    middleware = [],\n    platform\n  } = config;\n  const validMiddleware = middleware.filter(Boolean);\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n  let rects = await platform.getElementRects({\n    reference,\n    floating,\n    strategy\n  });\n  let {\n    x,\n    y\n  } = computeCoordsFromPlacement(rects, placement, rtl);\n  let statefulPlacement = placement;\n  let middlewareData = {};\n  let resetCount = 0;\n  for (let i = 0; i < validMiddleware.length; i++) {\n    const {\n      name,\n      fn\n    } = validMiddleware[i];\n    const {\n      x: nextX,\n      y: nextY,\n      data,\n      reset\n    } = await fn({\n      x,\n      y,\n      initialPlacement: placement,\n      placement: statefulPlacement,\n      strategy,\n      middlewareData,\n      rects,\n      platform,\n      elements: {\n        reference,\n        floating\n      }\n    });\n    x = nextX != null ? nextX : x;\n    y = nextY != null ? nextY : y;\n    middlewareData = {\n      ...middlewareData,\n      [name]: {\n        ...middlewareData[name],\n        ...data\n      }\n    };\n    if (reset && resetCount <= 50) {\n      resetCount++;\n      if (typeof reset === 'object') {\n        if (reset.placement) {\n          statefulPlacement = reset.placement;\n        }\n        if (reset.rects) {\n          rects = reset.rects === true ? await platform.getElementRects({\n            reference,\n            floating,\n            strategy\n          }) : reset.rects;\n        }\n        ({\n          x,\n          y\n        } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n      }\n      i = -1;\n    }\n  }\n  return {\n    x,\n    y,\n    placement: statefulPlacement,\n    strategy,\n    middlewareData\n  };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n  var _await$platform$isEle;\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    x,\n    y,\n    platform,\n    rects,\n    elements,\n    strategy\n  } = state;\n  const {\n    boundary = 'clippingAncestors',\n    rootBoundary = 'viewport',\n    elementContext = 'floating',\n    altBoundary = false,\n    padding = 0\n  } = evaluate(options, state);\n  const paddingObject = getPaddingObject(padding);\n  const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n  const element = elements[altBoundary ? altContext : elementContext];\n  const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n    element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n    boundary,\n    rootBoundary,\n    strategy\n  }));\n  const rect = elementContext === 'floating' ? {\n    x,\n    y,\n    width: rects.floating.width,\n    height: rects.floating.height\n  } : rects.reference;\n  const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n  const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n    x: 1,\n    y: 1\n  } : {\n    x: 1,\n    y: 1\n  };\n  const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  }) : rect);\n  return {\n    top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n    bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n    left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n    right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n  };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n  name: 'arrow',\n  options,\n  async fn(state) {\n    const {\n      x,\n      y,\n      placement,\n      rects,\n      platform,\n      elements,\n      middlewareData\n    } = state;\n    // Since `element` is required, we don't Partial<> the type.\n    const {\n      element,\n      padding = 0\n    } = evaluate(options, state) || {};\n    if (element == null) {\n      return {};\n    }\n    const paddingObject = getPaddingObject(padding);\n    const coords = {\n      x,\n      y\n    };\n    const axis = getAlignmentAxis(placement);\n    const length = getAxisLength(axis);\n    const arrowDimensions = await platform.getDimensions(element);\n    const isYAxis = axis === 'y';\n    const minProp = isYAxis ? 'top' : 'left';\n    const maxProp = isYAxis ? 'bottom' : 'right';\n    const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n    const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n    const startDiff = coords[axis] - rects.reference[axis];\n    const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n    let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n    // DOM platform can return `window` as the `offsetParent`.\n    if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n      clientSize = elements.floating[clientProp] || rects.floating[length];\n    }\n    const centerToReference = endDiff / 2 - startDiff / 2;\n\n    // If the padding is large enough that it causes the arrow to no longer be\n    // centered, modify the padding so that it is centered.\n    const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n    const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n    const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n    // Make sure the arrow doesn't overflow the floating element if the center\n    // point is outside the floating element's bounds.\n    const min$1 = minPadding;\n    const max = clientSize - arrowDimensions[length] - maxPadding;\n    const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n    const offset = clamp(min$1, center, max);\n\n    // If the reference is small enough that the arrow's padding causes it to\n    // to point to nothing for an aligned placement, adjust the offset of the\n    // floating element itself. To ensure `shift()` continues to take action,\n    // a single reset is performed when this is true.\n    const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n    const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n    return {\n      [axis]: coords[axis] + alignmentOffset,\n      data: {\n        [axis]: offset,\n        centerOffset: center - offset - alignmentOffset,\n        ...(shouldAddOffset && {\n          alignmentOffset\n        })\n      },\n      reset: shouldAddOffset\n    };\n  }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n  const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n  return allowedPlacementsSortedByAlignment.filter(placement => {\n    if (alignment) {\n      return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n    }\n    return true;\n  });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'autoPlacement',\n    options,\n    async fn(state) {\n      var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n      const {\n        rects,\n        middlewareData,\n        placement,\n        platform,\n        elements\n      } = state;\n      const {\n        crossAxis = false,\n        alignment,\n        allowedPlacements = placements,\n        autoAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n      const currentPlacement = placements$1[currentIndex];\n      if (currentPlacement == null) {\n        return {};\n      }\n      const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n      // Make `computeCoords` start from the right place.\n      if (placement !== currentPlacement) {\n        return {\n          reset: {\n            placement: placements$1[0]\n          }\n        };\n      }\n      const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n      const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n        placement: currentPlacement,\n        overflows: currentOverflows\n      }];\n      const nextPlacement = placements$1[currentIndex + 1];\n\n      // There are more placements to check.\n      if (nextPlacement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: nextPlacement\n          }\n        };\n      }\n      const placementsSortedByMostSpace = allOverflows.map(d => {\n        const alignment = getAlignment(d.placement);\n        return [d.placement, alignment && crossAxis ?\n        // Check along the mainAxis and main crossAxis side.\n        d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n        // Check only the mainAxis.\n        d.overflows[0], d.overflows];\n      }).sort((a, b) => a[1] - b[1]);\n      const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n      // Aligned placements should not check their opposite crossAxis\n      // side.\n      getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n      const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n      if (resetPlacement !== placement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: resetPlacement\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'flip',\n    options,\n    async fn(state) {\n      var _middlewareData$arrow, _middlewareData$flip;\n      const {\n        placement,\n        middlewareData,\n        rects,\n        initialPlacement,\n        platform,\n        elements\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true,\n        fallbackPlacements: specifiedFallbackPlacements,\n        fallbackStrategy = 'bestFit',\n        fallbackAxisSideDirection = 'none',\n        flipAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n\n      // If a reset by the arrow was caused due to an alignment offset being\n      // added, we should skip any logic now since `flip()` has already done its\n      // work.\n      // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n      if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      const side = getSide(placement);\n      const initialSideAxis = getSideAxis(initialPlacement);\n      const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n      const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n      const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n      const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n      if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n        fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n      }\n      const placements = [initialPlacement, ...fallbackPlacements];\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const overflows = [];\n      let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n      if (checkMainAxis) {\n        overflows.push(overflow[side]);\n      }\n      if (checkCrossAxis) {\n        const sides = getAlignmentSides(placement, rects, rtl);\n        overflows.push(overflow[sides[0]], overflow[sides[1]]);\n      }\n      overflowsData = [...overflowsData, {\n        placement,\n        overflows\n      }];\n\n      // One or more sides is overflowing.\n      if (!overflows.every(side => side <= 0)) {\n        var _middlewareData$flip2, _overflowsData$filter;\n        const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n        const nextPlacement = placements[nextIndex];\n        if (nextPlacement) {\n          const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;\n          if (!ignoreCrossAxisOverflow ||\n          // We leave the current main axis only if every placement on that axis\n          // overflows the main axis.\n          overflowsData.every(d => d.overflows[0] > 0 && getSideAxis(d.placement) === initialSideAxis)) {\n            // Try next placement and re-run the lifecycle.\n            return {\n              data: {\n                index: nextIndex,\n                overflows: overflowsData\n              },\n              reset: {\n                placement: nextPlacement\n              }\n            };\n          }\n        }\n\n        // First, find the candidates that fit on the mainAxis side of overflow,\n        // then find the placement that fits the best on the main crossAxis side.\n        let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n        // Otherwise fallback.\n        if (!resetPlacement) {\n          switch (fallbackStrategy) {\n            case 'bestFit':\n              {\n                var _overflowsData$filter2;\n                const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n                  if (hasFallbackAxisSideDirection) {\n                    const currentSideAxis = getSideAxis(d.placement);\n                    return currentSideAxis === initialSideAxis ||\n                    // Create a bias to the `y` side axis due to horizontal\n                    // reading directions favoring greater width.\n                    currentSideAxis === 'y';\n                  }\n                  return true;\n                }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n                if (placement) {\n                  resetPlacement = placement;\n                }\n                break;\n              }\n            case 'initialPlacement':\n              resetPlacement = initialPlacement;\n              break;\n          }\n        }\n        if (placement !== resetPlacement) {\n          return {\n            reset: {\n              placement: resetPlacement\n            }\n          };\n        }\n      }\n      return {};\n    }\n  };\n};\n\nfunction getSideOffsets(overflow, rect) {\n  return {\n    top: overflow.top - rect.height,\n    right: overflow.right - rect.width,\n    bottom: overflow.bottom - rect.height,\n    left: overflow.left - rect.width\n  };\n}\nfunction isAnySideFullyClipped(overflow) {\n  return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'hide',\n    options,\n    async fn(state) {\n      const {\n        rects\n      } = state;\n      const {\n        strategy = 'referenceHidden',\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      switch (strategy) {\n        case 'referenceHidden':\n          {\n            const overflow = await detectOverflow(state, {\n              ...detectOverflowOptions,\n              elementContext: 'reference'\n            });\n            const offsets = getSideOffsets(overflow, rects.reference);\n            return {\n              data: {\n                referenceHiddenOffsets: offsets,\n                referenceHidden: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        case 'escaped':\n          {\n            const overflow = await detectOverflow(state, {\n              ...detectOverflowOptions,\n              altBoundary: true\n            });\n            const offsets = getSideOffsets(overflow, rects.floating);\n            return {\n              data: {\n                escapedOffsets: offsets,\n                escaped: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        default:\n          {\n            return {};\n          }\n      }\n    }\n  };\n};\n\nfunction getBoundingRect(rects) {\n  const minX = min(...rects.map(rect => rect.left));\n  const minY = min(...rects.map(rect => rect.top));\n  const maxX = max(...rects.map(rect => rect.right));\n  const maxY = max(...rects.map(rect => rect.bottom));\n  return {\n    x: minX,\n    y: minY,\n    width: maxX - minX,\n    height: maxY - minY\n  };\n}\nfunction getRectsByLine(rects) {\n  const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n  const groups = [];\n  let prevRect = null;\n  for (let i = 0; i < sortedRects.length; i++) {\n    const rect = sortedRects[i];\n    if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n      groups.push([rect]);\n    } else {\n      groups[groups.length - 1].push(rect);\n    }\n    prevRect = rect;\n  }\n  return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'inline',\n    options,\n    async fn(state) {\n      const {\n        placement,\n        elements,\n        rects,\n        platform,\n        strategy\n      } = state;\n      // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n      // ClientRect's bounds, despite the event listener being triggered. A\n      // padding of 2 seems to handle this issue.\n      const {\n        padding = 2,\n        x,\n        y\n      } = evaluate(options, state);\n      const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n      const clientRects = getRectsByLine(nativeClientRects);\n      const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n      const paddingObject = getPaddingObject(padding);\n      function getBoundingClientRect() {\n        // There are two rects and they are disjoined.\n        if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n          // Find the first rect in which the point is fully inside.\n          return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n        }\n\n        // There are 2 or more connected rects.\n        if (clientRects.length >= 2) {\n          if (getSideAxis(placement) === 'y') {\n            const firstRect = clientRects[0];\n            const lastRect = clientRects[clientRects.length - 1];\n            const isTop = getSide(placement) === 'top';\n            const top = firstRect.top;\n            const bottom = lastRect.bottom;\n            const left = isTop ? firstRect.left : lastRect.left;\n            const right = isTop ? firstRect.right : lastRect.right;\n            const width = right - left;\n            const height = bottom - top;\n            return {\n              top,\n              bottom,\n              left,\n              right,\n              width,\n              height,\n              x: left,\n              y: top\n            };\n          }\n          const isLeftSide = getSide(placement) === 'left';\n          const maxRight = max(...clientRects.map(rect => rect.right));\n          const minLeft = min(...clientRects.map(rect => rect.left));\n          const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n          const top = measureRects[0].top;\n          const bottom = measureRects[measureRects.length - 1].bottom;\n          const left = minLeft;\n          const right = maxRight;\n          const width = right - left;\n          const height = bottom - top;\n          return {\n            top,\n            bottom,\n            left,\n            right,\n            width,\n            height,\n            x: left,\n            y: top\n          };\n        }\n        return fallback;\n      }\n      const resetRects = await platform.getElementRects({\n        reference: {\n          getBoundingClientRect\n        },\n        floating: elements.floating,\n        strategy\n      });\n      if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n        return {\n          reset: {\n            rects: resetRects\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\nconst originSides = /*#__PURE__*/new Set(['left', 'top']);\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n  const {\n    placement,\n    platform,\n    elements\n  } = state;\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n  const side = getSide(placement);\n  const alignment = getAlignment(placement);\n  const isVertical = getSideAxis(placement) === 'y';\n  const mainAxisMulti = originSides.has(side) ? -1 : 1;\n  const crossAxisMulti = rtl && isVertical ? -1 : 1;\n  const rawValue = evaluate(options, state);\n\n  // eslint-disable-next-line prefer-const\n  let {\n    mainAxis,\n    crossAxis,\n    alignmentAxis\n  } = typeof rawValue === 'number' ? {\n    mainAxis: rawValue,\n    crossAxis: 0,\n    alignmentAxis: null\n  } : {\n    mainAxis: rawValue.mainAxis || 0,\n    crossAxis: rawValue.crossAxis || 0,\n    alignmentAxis: rawValue.alignmentAxis\n  };\n  if (alignment && typeof alignmentAxis === 'number') {\n    crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n  }\n  return isVertical ? {\n    x: crossAxis * crossAxisMulti,\n    y: mainAxis * mainAxisMulti\n  } : {\n    x: mainAxis * mainAxisMulti,\n    y: crossAxis * crossAxisMulti\n  };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n  if (options === void 0) {\n    options = 0;\n  }\n  return {\n    name: 'offset',\n    options,\n    async fn(state) {\n      var _middlewareData$offse, _middlewareData$arrow;\n      const {\n        x,\n        y,\n        placement,\n        middlewareData\n      } = state;\n      const diffCoords = await convertValueToCoords(state, options);\n\n      // If the placement is the same and the arrow caused an alignment offset\n      // then we don't need to change the positioning coordinates.\n      if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      return {\n        x: x + diffCoords.x,\n        y: y + diffCoords.y,\n        data: {\n          ...diffCoords,\n          placement\n        }\n      };\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'shift',\n    options,\n    async fn(state) {\n      const {\n        x,\n        y,\n        placement\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = false,\n        limiter = {\n          fn: _ref => {\n            let {\n              x,\n              y\n            } = _ref;\n            return {\n              x,\n              y\n            };\n          }\n        },\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const crossAxis = getSideAxis(getSide(placement));\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      if (checkMainAxis) {\n        const minSide = mainAxis === 'y' ? 'top' : 'left';\n        const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n        const min = mainAxisCoord + overflow[minSide];\n        const max = mainAxisCoord - overflow[maxSide];\n        mainAxisCoord = clamp(min, mainAxisCoord, max);\n      }\n      if (checkCrossAxis) {\n        const minSide = crossAxis === 'y' ? 'top' : 'left';\n        const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n        const min = crossAxisCoord + overflow[minSide];\n        const max = crossAxisCoord - overflow[maxSide];\n        crossAxisCoord = clamp(min, crossAxisCoord, max);\n      }\n      const limitedCoords = limiter.fn({\n        ...state,\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      });\n      return {\n        ...limitedCoords,\n        data: {\n          x: limitedCoords.x - x,\n          y: limitedCoords.y - y,\n          enabled: {\n            [mainAxis]: checkMainAxis,\n            [crossAxis]: checkCrossAxis\n          }\n        }\n      };\n    }\n  };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    options,\n    fn(state) {\n      const {\n        x,\n        y,\n        placement,\n        rects,\n        middlewareData\n      } = state;\n      const {\n        offset = 0,\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const crossAxis = getSideAxis(placement);\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      const rawOffset = evaluate(offset, state);\n      const computedOffset = typeof rawOffset === 'number' ? {\n        mainAxis: rawOffset,\n        crossAxis: 0\n      } : {\n        mainAxis: 0,\n        crossAxis: 0,\n        ...rawOffset\n      };\n      if (checkMainAxis) {\n        const len = mainAxis === 'y' ? 'height' : 'width';\n        const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n        const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n        if (mainAxisCoord < limitMin) {\n          mainAxisCoord = limitMin;\n        } else if (mainAxisCoord > limitMax) {\n          mainAxisCoord = limitMax;\n        }\n      }\n      if (checkCrossAxis) {\n        var _middlewareData$offse, _middlewareData$offse2;\n        const len = mainAxis === 'y' ? 'width' : 'height';\n        const isOriginSide = originSides.has(getSide(placement));\n        const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n        const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n        if (crossAxisCoord < limitMin) {\n          crossAxisCoord = limitMin;\n        } else if (crossAxisCoord > limitMax) {\n          crossAxisCoord = limitMax;\n        }\n      }\n      return {\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      };\n    }\n  };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'size',\n    options,\n    async fn(state) {\n      var _state$middlewareData, _state$middlewareData2;\n      const {\n        placement,\n        rects,\n        platform,\n        elements\n      } = state;\n      const {\n        apply = () => {},\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const side = getSide(placement);\n      const alignment = getAlignment(placement);\n      const isYAxis = getSideAxis(placement) === 'y';\n      const {\n        width,\n        height\n      } = rects.floating;\n      let heightSide;\n      let widthSide;\n      if (side === 'top' || side === 'bottom') {\n        heightSide = side;\n        widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n      } else {\n        widthSide = side;\n        heightSide = alignment === 'end' ? 'top' : 'bottom';\n      }\n      const maximumClippingHeight = height - overflow.top - overflow.bottom;\n      const maximumClippingWidth = width - overflow.left - overflow.right;\n      const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n      const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n      const noShift = !state.middlewareData.shift;\n      let availableHeight = overflowAvailableHeight;\n      let availableWidth = overflowAvailableWidth;\n      if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n        availableWidth = maximumClippingWidth;\n      }\n      if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n        availableHeight = maximumClippingHeight;\n      }\n      if (noShift && !alignment) {\n        const xMin = max(overflow.left, 0);\n        const xMax = max(overflow.right, 0);\n        const yMin = max(overflow.top, 0);\n        const yMax = max(overflow.bottom, 0);\n        if (isYAxis) {\n          availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n        } else {\n          availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n        }\n      }\n      await apply({\n        ...state,\n        availableWidth,\n        availableHeight\n      });\n      const nextDimensions = await platform.getDimensions(elements.floating);\n      if (width !== nextDimensions.width || height !== nextDimensions.height) {\n        return {\n          reset: {\n            rects: true\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","import { rectToClientRect, arrow as arrow$1, autoPlacement as autoPlacement$1, detectOverflow as detectOverflow$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n  const css = getComputedStyle(element);\n  // In testing environments, the `width` and `height` properties are empty\n  // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n  let width = parseFloat(css.width) || 0;\n  let height = parseFloat(css.height) || 0;\n  const hasOffset = isHTMLElement(element);\n  const offsetWidth = hasOffset ? element.offsetWidth : width;\n  const offsetHeight = hasOffset ? element.offsetHeight : height;\n  const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n  if (shouldFallback) {\n    width = offsetWidth;\n    height = offsetHeight;\n  }\n  return {\n    width,\n    height,\n    $: shouldFallback\n  };\n}\n\nfunction unwrapElement(element) {\n  return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n  const domElement = unwrapElement(element);\n  if (!isHTMLElement(domElement)) {\n    return createCoords(1);\n  }\n  const rect = domElement.getBoundingClientRect();\n  const {\n    width,\n    height,\n    $\n  } = getCssDimensions(domElement);\n  let x = ($ ? round(rect.width) : rect.width) / width;\n  let y = ($ ? round(rect.height) : rect.height) / height;\n\n  // 0, NaN, or Infinity should always fallback to 1.\n\n  if (!x || !Number.isFinite(x)) {\n    x = 1;\n  }\n  if (!y || !Number.isFinite(y)) {\n    y = 1;\n  }\n  return {\n    x,\n    y\n  };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n  const win = getWindow(element);\n  if (!isWebKit() || !win.visualViewport) {\n    return noOffsets;\n  }\n  return {\n    x: win.visualViewport.offsetLeft,\n    y: win.visualViewport.offsetTop\n  };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n  if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n    return false;\n  }\n  return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n  if (isFixedStrategy === void 0) {\n    isFixedStrategy = false;\n  }\n  const clientRect = element.getBoundingClientRect();\n  const domElement = unwrapElement(element);\n  let scale = createCoords(1);\n  if (includeScale) {\n    if (offsetParent) {\n      if (isElement(offsetParent)) {\n        scale = getScale(offsetParent);\n      }\n    } else {\n      scale = getScale(element);\n    }\n  }\n  const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n  let x = (clientRect.left + visualOffsets.x) / scale.x;\n  let y = (clientRect.top + visualOffsets.y) / scale.y;\n  let width = clientRect.width / scale.x;\n  let height = clientRect.height / scale.y;\n  if (domElement) {\n    const win = getWindow(domElement);\n    const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n    let currentWin = win;\n    let currentIFrame = getFrameElement(currentWin);\n    while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n      const iframeScale = getScale(currentIFrame);\n      const iframeRect = currentIFrame.getBoundingClientRect();\n      const css = getComputedStyle(currentIFrame);\n      const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n      const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n      x *= iframeScale.x;\n      y *= iframeScale.y;\n      width *= iframeScale.x;\n      height *= iframeScale.y;\n      x += left;\n      y += top;\n      currentWin = getWindow(currentIFrame);\n      currentIFrame = getFrameElement(currentWin);\n    }\n  }\n  return rectToClientRect({\n    width,\n    height,\n    x,\n    y\n  });\n}\n\n// If <html> has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n  const leftScroll = getNodeScroll(element).scrollLeft;\n  if (!rect) {\n    return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n  }\n  return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll, ignoreScrollbarX) {\n  if (ignoreScrollbarX === void 0) {\n    ignoreScrollbarX = false;\n  }\n  const htmlRect = documentElement.getBoundingClientRect();\n  const x = htmlRect.left + scroll.scrollLeft - (ignoreScrollbarX ? 0 :\n  // RTL <body> scrollbar.\n  getWindowScrollBarX(documentElement, htmlRect));\n  const y = htmlRect.top + scroll.scrollTop;\n  return {\n    x,\n    y\n  };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n  let {\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  } = _ref;\n  const isFixed = strategy === 'fixed';\n  const documentElement = getDocumentElement(offsetParent);\n  const topLayer = elements ? isTopLayer(elements.floating) : false;\n  if (offsetParent === documentElement || topLayer && isFixed) {\n    return rect;\n  }\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  let scale = createCoords(1);\n  const offsets = createCoords(0);\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isHTMLElement(offsetParent)) {\n      const offsetRect = getBoundingClientRect(offsetParent);\n      scale = getScale(offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    }\n  }\n  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll, true) : createCoords(0);\n  return {\n    width: rect.width * scale.x,\n    height: rect.height * scale.y,\n    x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n    y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n  };\n}\n\nfunction getClientRects(element) {\n  return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n  const html = getDocumentElement(element);\n  const scroll = getNodeScroll(element);\n  const body = element.ownerDocument.body;\n  const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n  const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n  let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n  const y = -scroll.scrollTop;\n  if (getComputedStyle(body).direction === 'rtl') {\n    x += max(html.clientWidth, body.clientWidth) - width;\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\nfunction getViewportRect(element, strategy) {\n  const win = getWindow(element);\n  const html = getDocumentElement(element);\n  const visualViewport = win.visualViewport;\n  let width = html.clientWidth;\n  let height = html.clientHeight;\n  let x = 0;\n  let y = 0;\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height;\n    const visualViewportBased = isWebKit();\n    if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\nconst absoluteOrFixed = /*#__PURE__*/new Set(['absolute', 'fixed']);\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n  const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n  const top = clientRect.top + element.clientTop;\n  const left = clientRect.left + element.clientLeft;\n  const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n  const width = element.clientWidth * scale.x;\n  const height = element.clientHeight * scale.y;\n  const x = left * scale.x;\n  const y = top * scale.y;\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n  let rect;\n  if (clippingAncestor === 'viewport') {\n    rect = getViewportRect(element, strategy);\n  } else if (clippingAncestor === 'document') {\n    rect = getDocumentRect(getDocumentElement(element));\n  } else if (isElement(clippingAncestor)) {\n    rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n  } else {\n    const visualOffsets = getVisualOffsets(element);\n    rect = {\n      x: clippingAncestor.x - visualOffsets.x,\n      y: clippingAncestor.y - visualOffsets.y,\n      width: clippingAncestor.width,\n      height: clippingAncestor.height\n    };\n  }\n  return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n  const parentNode = getParentNode(element);\n  if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n    return false;\n  }\n  return getComputedStyle(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n  const cachedResult = cache.get(element);\n  if (cachedResult) {\n    return cachedResult;\n  }\n  let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n  let currentContainingBlockComputedStyle = null;\n  const elementIsFixed = getComputedStyle(element).position === 'fixed';\n  let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    const computedStyle = getComputedStyle(currentNode);\n    const currentNodeIsContaining = isContainingBlock(currentNode);\n    if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n      currentContainingBlockComputedStyle = null;\n    }\n    const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && absoluteOrFixed.has(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n    if (shouldDropCurrentNode) {\n      // Drop non-containing blocks.\n      result = result.filter(ancestor => ancestor !== currentNode);\n    } else {\n      // Record last containing block for next iteration.\n      currentContainingBlockComputedStyle = computedStyle;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  cache.set(element, result);\n  return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n  let {\n    element,\n    boundary,\n    rootBoundary,\n    strategy\n  } = _ref;\n  const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n  const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n  const firstClippingAncestor = clippingAncestors[0];\n  const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n    const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n    accRect.top = max(rect.top, accRect.top);\n    accRect.right = min(rect.right, accRect.right);\n    accRect.bottom = min(rect.bottom, accRect.bottom);\n    accRect.left = max(rect.left, accRect.left);\n    return accRect;\n  }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n  return {\n    width: clippingRect.right - clippingRect.left,\n    height: clippingRect.bottom - clippingRect.top,\n    x: clippingRect.left,\n    y: clippingRect.top\n  };\n}\n\nfunction getDimensions(element) {\n  const {\n    width,\n    height\n  } = getCssDimensions(element);\n  return {\n    width,\n    height\n  };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  const documentElement = getDocumentElement(offsetParent);\n  const isFixed = strategy === 'fixed';\n  const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  const offsets = createCoords(0);\n\n  // If the <body> scrollbar appears on the left (e.g. RTL systems). Use\n  // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n  function setLeftRTLScrollbarOffset() {\n    offsets.x = getWindowScrollBarX(documentElement);\n  }\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isOffsetParentAnElement) {\n      const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    } else if (documentElement) {\n      setLeftRTLScrollbarOffset();\n    }\n  }\n  if (isFixed && !isOffsetParentAnElement && documentElement) {\n    setLeftRTLScrollbarOffset();\n  }\n  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n  const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n  const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n  return {\n    x,\n    y,\n    width: rect.width,\n    height: rect.height\n  };\n}\n\nfunction isStaticPositioned(element) {\n  return getComputedStyle(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n  if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n    return null;\n  }\n  if (polyfill) {\n    return polyfill(element);\n  }\n  let rawOffsetParent = element.offsetParent;\n\n  // Firefox returns the <html> element as the offsetParent if it's non-static,\n  // while Chrome and Safari return the <body> element. The <body> element must\n  // be used to perform the correct calculations even if the <html> element is\n  // non-static.\n  if (getDocumentElement(element) === rawOffsetParent) {\n    rawOffsetParent = rawOffsetParent.ownerDocument.body;\n  }\n  return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n  const win = getWindow(element);\n  if (isTopLayer(element)) {\n    return win;\n  }\n  if (!isHTMLElement(element)) {\n    let svgOffsetParent = getParentNode(element);\n    while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n      if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n        return svgOffsetParent;\n      }\n      svgOffsetParent = getParentNode(svgOffsetParent);\n    }\n    return win;\n  }\n  let offsetParent = getTrueOffsetParent(element, polyfill);\n  while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n    offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n  }\n  if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n    return win;\n  }\n  return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n  const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n  const getDimensionsFn = this.getDimensions;\n  const floatingDimensions = await getDimensionsFn(data.floating);\n  return {\n    reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n    floating: {\n      x: 0,\n      y: 0,\n      width: floatingDimensions.width,\n      height: floatingDimensions.height\n    }\n  };\n};\n\nfunction isRTL(element) {\n  return getComputedStyle(element).direction === 'rtl';\n}\n\nconst platform = {\n  convertOffsetParentRelativeRectToViewportRelativeRect,\n  getDocumentElement,\n  getClippingRect,\n  getOffsetParent,\n  getElementRects,\n  getClientRects,\n  getDimensions,\n  getScale,\n  isElement,\n  isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n  return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n  let io = null;\n  let timeoutId;\n  const root = getDocumentElement(element);\n  function cleanup() {\n    var _io;\n    clearTimeout(timeoutId);\n    (_io = io) == null || _io.disconnect();\n    io = null;\n  }\n  function refresh(skip, threshold) {\n    if (skip === void 0) {\n      skip = false;\n    }\n    if (threshold === void 0) {\n      threshold = 1;\n    }\n    cleanup();\n    const elementRectForRootMargin = element.getBoundingClientRect();\n    const {\n      left,\n      top,\n      width,\n      height\n    } = elementRectForRootMargin;\n    if (!skip) {\n      onMove();\n    }\n    if (!width || !height) {\n      return;\n    }\n    const insetTop = floor(top);\n    const insetRight = floor(root.clientWidth - (left + width));\n    const insetBottom = floor(root.clientHeight - (top + height));\n    const insetLeft = floor(left);\n    const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n    const options = {\n      rootMargin,\n      threshold: max(0, min(1, threshold)) || 1\n    };\n    let isFirstUpdate = true;\n    function handleObserve(entries) {\n      const ratio = entries[0].intersectionRatio;\n      if (ratio !== threshold) {\n        if (!isFirstUpdate) {\n          return refresh();\n        }\n        if (!ratio) {\n          // If the reference is clipped, the ratio is 0. Throttle the refresh\n          // to prevent an infinite loop of updates.\n          timeoutId = setTimeout(() => {\n            refresh(false, 1e-7);\n          }, 1000);\n        } else {\n          refresh(false, ratio);\n        }\n      }\n      if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n        // It's possible that even though the ratio is reported as 1, the\n        // element is not actually fully within the IntersectionObserver's root\n        // area anymore. This can happen under performance constraints. This may\n        // be a bug in the browser's IntersectionObserver implementation. To\n        // work around this, we compare the element's bounding rect now with\n        // what it was at the time we created the IntersectionObserver. If they\n        // are not equal then the element moved, so we refresh.\n        refresh();\n      }\n      isFirstUpdate = false;\n    }\n\n    // Older browsers don't support a `document` as the root and will throw an\n    // error.\n    try {\n      io = new IntersectionObserver(handleObserve, {\n        ...options,\n        // Handle <iframe>s\n        root: root.ownerDocument\n      });\n    } catch (_e) {\n      io = new IntersectionObserver(handleObserve, options);\n    }\n    io.observe(element);\n  }\n  refresh(true);\n  return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    ancestorScroll = true,\n    ancestorResize = true,\n    elementResize = typeof ResizeObserver === 'function',\n    layoutShift = typeof IntersectionObserver === 'function',\n    animationFrame = false\n  } = options;\n  const referenceEl = unwrapElement(reference);\n  const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];\n  ancestors.forEach(ancestor => {\n    ancestorScroll && ancestor.addEventListener('scroll', update, {\n      passive: true\n    });\n    ancestorResize && ancestor.addEventListener('resize', update);\n  });\n  const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n  let reobserveFrame = -1;\n  let resizeObserver = null;\n  if (elementResize) {\n    resizeObserver = new ResizeObserver(_ref => {\n      let [firstEntry] = _ref;\n      if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {\n        // Prevent update loops when using the `size` middleware.\n        // https://github.com/floating-ui/floating-ui/issues/1740\n        resizeObserver.unobserve(floating);\n        cancelAnimationFrame(reobserveFrame);\n        reobserveFrame = requestAnimationFrame(() => {\n          var _resizeObserver;\n          (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n        });\n      }\n      update();\n    });\n    if (referenceEl && !animationFrame) {\n      resizeObserver.observe(referenceEl);\n    }\n    resizeObserver.observe(floating);\n  }\n  let frameId;\n  let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n  if (animationFrame) {\n    frameLoop();\n  }\n  function frameLoop() {\n    const nextRefRect = getBoundingClientRect(reference);\n    if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {\n      update();\n    }\n    prevRefRect = nextRefRect;\n    frameId = requestAnimationFrame(frameLoop);\n  }\n  update();\n  return () => {\n    var _resizeObserver2;\n    ancestors.forEach(ancestor => {\n      ancestorScroll && ancestor.removeEventListener('scroll', update);\n      ancestorResize && ancestor.removeEventListener('resize', update);\n    });\n    cleanupIo == null || cleanupIo();\n    (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n    resizeObserver = null;\n    if (animationFrame) {\n      cancelAnimationFrame(frameId);\n    }\n  };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nconst detectOverflow = detectOverflow$1;\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = offset$1;\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n  // This caches the expensive `getClippingElementAncestors` function so that\n  // multiple lifecycle resets re-use the same result. It only lives for a\n  // single call. If other functions become expensive, we can add them as well.\n  const cache = new Map();\n  const mergedOptions = {\n    platform,\n    ...options\n  };\n  const platformWithCache = {\n    ...mergedOptions.platform,\n    _c: cache\n  };\n  return computePosition$1(reference, floating, {\n    ...mergedOptions,\n    platform: platformWithCache\n  });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n","import { computePosition, arrow as arrow$2, autoPlacement as autoPlacement$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1 } from '@floating-ui/dom';\nexport { autoUpdate, computePosition, detectOverflow, getOverflowAncestors, platform } from '@floating-ui/dom';\nimport * as React from 'react';\nimport { useLayoutEffect } from 'react';\nimport * as ReactDOM from 'react-dom';\n\nvar isClient = typeof document !== 'undefined';\n\nvar noop = function noop() {};\nvar index = isClient ? useLayoutEffect : noop;\n\n// Fork of `fast-deep-equal` that only does the comparisons we need and compares\n// functions\nfunction deepEqual(a, b) {\n  if (a === b) {\n    return true;\n  }\n  if (typeof a !== typeof b) {\n    return false;\n  }\n  if (typeof a === 'function' && a.toString() === b.toString()) {\n    return true;\n  }\n  let length;\n  let i;\n  let keys;\n  if (a && b && typeof a === 'object') {\n    if (Array.isArray(a)) {\n      length = a.length;\n      if (length !== b.length) return false;\n      for (i = length; i-- !== 0;) {\n        if (!deepEqual(a[i], b[i])) {\n          return false;\n        }\n      }\n      return true;\n    }\n    keys = Object.keys(a);\n    length = keys.length;\n    if (length !== Object.keys(b).length) {\n      return false;\n    }\n    for (i = length; i-- !== 0;) {\n      if (!{}.hasOwnProperty.call(b, keys[i])) {\n        return false;\n      }\n    }\n    for (i = length; i-- !== 0;) {\n      const key = keys[i];\n      if (key === '_owner' && a.$$typeof) {\n        continue;\n      }\n      if (!deepEqual(a[key], b[key])) {\n        return false;\n      }\n    }\n    return true;\n  }\n  return a !== a && b !== b;\n}\n\nfunction getDPR(element) {\n  if (typeof window === 'undefined') {\n    return 1;\n  }\n  const win = element.ownerDocument.defaultView || window;\n  return win.devicePixelRatio || 1;\n}\n\nfunction roundByDPR(element, value) {\n  const dpr = getDPR(element);\n  return Math.round(value * dpr) / dpr;\n}\n\nfunction useLatestRef(value) {\n  const ref = React.useRef(value);\n  index(() => {\n    ref.current = value;\n  });\n  return ref;\n}\n\n/**\n * Provides data to position a floating element.\n * @see https://floating-ui.com/docs/useFloating\n */\nfunction useFloating(options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    placement = 'bottom',\n    strategy = 'absolute',\n    middleware = [],\n    platform,\n    elements: {\n      reference: externalReference,\n      floating: externalFloating\n    } = {},\n    transform = true,\n    whileElementsMounted,\n    open\n  } = options;\n  const [data, setData] = React.useState({\n    x: 0,\n    y: 0,\n    strategy,\n    placement,\n    middlewareData: {},\n    isPositioned: false\n  });\n  const [latestMiddleware, setLatestMiddleware] = React.useState(middleware);\n  if (!deepEqual(latestMiddleware, middleware)) {\n    setLatestMiddleware(middleware);\n  }\n  const [_reference, _setReference] = React.useState(null);\n  const [_floating, _setFloating] = React.useState(null);\n  const setReference = React.useCallback(node => {\n    if (node !== referenceRef.current) {\n      referenceRef.current = node;\n      _setReference(node);\n    }\n  }, []);\n  const setFloating = React.useCallback(node => {\n    if (node !== floatingRef.current) {\n      floatingRef.current = node;\n      _setFloating(node);\n    }\n  }, []);\n  const referenceEl = externalReference || _reference;\n  const floatingEl = externalFloating || _floating;\n  const referenceRef = React.useRef(null);\n  const floatingRef = React.useRef(null);\n  const dataRef = React.useRef(data);\n  const hasWhileElementsMounted = whileElementsMounted != null;\n  const whileElementsMountedRef = useLatestRef(whileElementsMounted);\n  const platformRef = useLatestRef(platform);\n  const openRef = useLatestRef(open);\n  const update = React.useCallback(() => {\n    if (!referenceRef.current || !floatingRef.current) {\n      return;\n    }\n    const config = {\n      placement,\n      strategy,\n      middleware: latestMiddleware\n    };\n    if (platformRef.current) {\n      config.platform = platformRef.current;\n    }\n    computePosition(referenceRef.current, floatingRef.current, config).then(data => {\n      const fullData = {\n        ...data,\n        // The floating element's position may be recomputed while it's closed\n        // but still mounted (such as when transitioning out). To ensure\n        // `isPositioned` will be `false` initially on the next open, avoid\n        // setting it to `true` when `open === false` (must be specified).\n        isPositioned: openRef.current !== false\n      };\n      if (isMountedRef.current && !deepEqual(dataRef.current, fullData)) {\n        dataRef.current = fullData;\n        ReactDOM.flushSync(() => {\n          setData(fullData);\n        });\n      }\n    });\n  }, [latestMiddleware, placement, strategy, platformRef, openRef]);\n  index(() => {\n    if (open === false && dataRef.current.isPositioned) {\n      dataRef.current.isPositioned = false;\n      setData(data => ({\n        ...data,\n        isPositioned: false\n      }));\n    }\n  }, [open]);\n  const isMountedRef = React.useRef(false);\n  index(() => {\n    isMountedRef.current = true;\n    return () => {\n      isMountedRef.current = false;\n    };\n  }, []);\n  index(() => {\n    if (referenceEl) referenceRef.current = referenceEl;\n    if (floatingEl) floatingRef.current = floatingEl;\n    if (referenceEl && floatingEl) {\n      if (whileElementsMountedRef.current) {\n        return whileElementsMountedRef.current(referenceEl, floatingEl, update);\n      }\n      update();\n    }\n  }, [referenceEl, floatingEl, update, whileElementsMountedRef, hasWhileElementsMounted]);\n  const refs = React.useMemo(() => ({\n    reference: referenceRef,\n    floating: floatingRef,\n    setReference,\n    setFloating\n  }), [setReference, setFloating]);\n  const elements = React.useMemo(() => ({\n    reference: referenceEl,\n    floating: floatingEl\n  }), [referenceEl, floatingEl]);\n  const floatingStyles = React.useMemo(() => {\n    const initialStyles = {\n      position: strategy,\n      left: 0,\n      top: 0\n    };\n    if (!elements.floating) {\n      return initialStyles;\n    }\n    const x = roundByDPR(elements.floating, data.x);\n    const y = roundByDPR(elements.floating, data.y);\n    if (transform) {\n      return {\n        ...initialStyles,\n        transform: \"translate(\" + x + \"px, \" + y + \"px)\",\n        ...(getDPR(elements.floating) >= 1.5 && {\n          willChange: 'transform'\n        })\n      };\n    }\n    return {\n      position: strategy,\n      left: x,\n      top: y\n    };\n  }, [strategy, transform, elements.floating, data.x, data.y]);\n  return React.useMemo(() => ({\n    ...data,\n    update,\n    refs,\n    elements,\n    floatingStyles\n  }), [data, update, refs, elements, floatingStyles]);\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow$1 = options => {\n  function isRef(value) {\n    return {}.hasOwnProperty.call(value, 'current');\n  }\n  return {\n    name: 'arrow',\n    options,\n    fn(state) {\n      const {\n        element,\n        padding\n      } = typeof options === 'function' ? options(state) : options;\n      if (element && isRef(element)) {\n        if (element.current != null) {\n          return arrow$2({\n            element: element.current,\n            padding\n          }).fn(state);\n        }\n        return {};\n      }\n      if (element) {\n        return arrow$2({\n          element,\n          padding\n        }).fn(state);\n      }\n      return {};\n    }\n  };\n};\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = (options, deps) => ({\n  ...offset$1(options),\n  options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = (options, deps) => ({\n  ...shift$1(options),\n  options: [options, deps]\n});\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = (options, deps) => ({\n  ...limitShift$1(options),\n  options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = (options, deps) => ({\n  ...flip$1(options),\n  options: [options, deps]\n});\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = (options, deps) => ({\n  ...size$1(options),\n  options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = (options, deps) => ({\n  ...autoPlacement$1(options),\n  options: [options, deps]\n});\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = (options, deps) => ({\n  ...hide$1(options),\n  options: [options, deps]\n});\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = (options, deps) => ({\n  ...inline$1(options),\n  options: [options, deps]\n});\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = (options, deps) => ({\n  ...arrow$1(options),\n  options: [options, deps]\n});\n\nexport { arrow, autoPlacement, flip, hide, inline, limitShift, offset, shift, size, useFloating };\n","import * as React from 'react';\nimport { useModernLayoutEffect, useEffectEvent, getMinListIndex, getMaxListIndex, createGridCellMap, isListIndexDisabled, getGridNavigatedIndex, getGridCellIndexOfCorner, getGridCellIndices, findNonDisabledListIndex, isIndexOutOfListBounds, useLatestRef, getDocument as getDocument$1, isMouseLikePointerType, contains as contains$1, isSafari, enableFocusInside, isOutsideEvent, getPreviousTabbable, getNextTabbable, disableFocusInside, isTypeableCombobox, getFloatingFocusElement, getTabbableOptions, getNodeAncestors, activeElement, getNodeChildren as getNodeChildren$1, stopEvent, getTarget as getTarget$1, isVirtualClick, isVirtualPointerEvent, getPlatform, isTypeableElement, isReactEvent, isRootElement, isEventTargetWithin, matchesFocusVisible, isMac, getDeepestNode, getUserAgent } from '@floating-ui/react/utils';\nimport { jsx, jsxs, Fragment } from 'react/jsx-runtime';\nimport { getComputedStyle, isElement, isShadowRoot, getNodeName, isHTMLElement, getWindow, isLastTraversableNode, getParentNode, isWebKit } from '@floating-ui/utils/dom';\nimport { tabbable, isTabbable, focusable } from 'tabbable';\nimport * as ReactDOM from 'react-dom';\nimport { getOverflowAncestors, useFloating as useFloating$1, offset, detectOverflow } from '@floating-ui/react-dom';\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, getOverflowAncestors, hide, inline, limitShift, offset, platform, shift, size } from '@floating-ui/react-dom';\nimport { evaluate, max, round, min } from '@floating-ui/utils';\n\n/**\n * Merges an array of refs into a single memoized callback ref or `null`.\n * @see https://floating-ui.com/docs/react-utils#usemergerefs\n */\nfunction useMergeRefs(refs) {\n  const cleanupRef = React.useRef(undefined);\n  const refEffect = React.useCallback(instance => {\n    const cleanups = refs.map(ref => {\n      if (ref == null) {\n        return;\n      }\n      if (typeof ref === 'function') {\n        const refCallback = ref;\n        const refCleanup = refCallback(instance);\n        return typeof refCleanup === 'function' ? refCleanup : () => {\n          refCallback(null);\n        };\n      }\n      ref.current = instance;\n      return () => {\n        ref.current = null;\n      };\n    });\n    return () => {\n      cleanups.forEach(refCleanup => refCleanup == null ? void 0 : refCleanup());\n    };\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, refs);\n  return React.useMemo(() => {\n    if (refs.every(ref => ref == null)) {\n      return null;\n    }\n    return value => {\n      if (cleanupRef.current) {\n        cleanupRef.current();\n        cleanupRef.current = undefined;\n      }\n      if (value != null) {\n        cleanupRef.current = refEffect(value);\n      }\n    };\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, refs);\n}\n\nfunction sortByDocumentPosition(a, b) {\n  const position = a.compareDocumentPosition(b);\n  if (position & Node.DOCUMENT_POSITION_FOLLOWING || position & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n    return -1;\n  }\n  if (position & Node.DOCUMENT_POSITION_PRECEDING || position & Node.DOCUMENT_POSITION_CONTAINS) {\n    return 1;\n  }\n  return 0;\n}\nconst FloatingListContext = /*#__PURE__*/React.createContext({\n  register: () => {},\n  unregister: () => {},\n  map: /*#__PURE__*/new Map(),\n  elementsRef: {\n    current: []\n  }\n});\n/**\n * Provides context for a list of items within the floating element.\n * @see https://floating-ui.com/docs/FloatingList\n */\nfunction FloatingList(props) {\n  const {\n    children,\n    elementsRef,\n    labelsRef\n  } = props;\n  const [nodes, setNodes] = React.useState(() => new Set());\n  const register = React.useCallback(node => {\n    setNodes(prevSet => new Set(prevSet).add(node));\n  }, []);\n  const unregister = React.useCallback(node => {\n    setNodes(prevSet => {\n      const set = new Set(prevSet);\n      set.delete(node);\n      return set;\n    });\n  }, []);\n  const map = React.useMemo(() => {\n    const newMap = new Map();\n    const sortedNodes = Array.from(nodes.keys()).sort(sortByDocumentPosition);\n    sortedNodes.forEach((node, index) => {\n      newMap.set(node, index);\n    });\n    return newMap;\n  }, [nodes]);\n  return /*#__PURE__*/jsx(FloatingListContext.Provider, {\n    value: React.useMemo(() => ({\n      register,\n      unregister,\n      map,\n      elementsRef,\n      labelsRef\n    }), [register, unregister, map, elementsRef, labelsRef]),\n    children: children\n  });\n}\n/**\n * Used to register a list item and its index (DOM position) in the\n * `FloatingList`.\n * @see https://floating-ui.com/docs/FloatingList#uselistitem\n */\nfunction useListItem(props) {\n  if (props === void 0) {\n    props = {};\n  }\n  const {\n    label\n  } = props;\n  const {\n    register,\n    unregister,\n    map,\n    elementsRef,\n    labelsRef\n  } = React.useContext(FloatingListContext);\n  const [index, setIndex] = React.useState(null);\n  const componentRef = React.useRef(null);\n  const ref = React.useCallback(node => {\n    componentRef.current = node;\n    if (index !== null) {\n      elementsRef.current[index] = node;\n      if (labelsRef) {\n        var _node$textContent;\n        const isLabelDefined = label !== undefined;\n        labelsRef.current[index] = isLabelDefined ? label : (_node$textContent = node == null ? void 0 : node.textContent) != null ? _node$textContent : null;\n      }\n    }\n  }, [index, elementsRef, labelsRef, label]);\n  useModernLayoutEffect(() => {\n    const node = componentRef.current;\n    if (node) {\n      register(node);\n      return () => {\n        unregister(node);\n      };\n    }\n  }, [register, unregister]);\n  useModernLayoutEffect(() => {\n    const index = componentRef.current ? map.get(componentRef.current) : null;\n    if (index != null) {\n      setIndex(index);\n    }\n  }, [map]);\n  return React.useMemo(() => ({\n    ref,\n    index: index == null ? -1 : index\n  }), [index, ref]);\n}\n\nconst FOCUSABLE_ATTRIBUTE = 'data-floating-ui-focusable';\nconst ACTIVE_KEY = 'active';\nconst SELECTED_KEY = 'selected';\nconst ARROW_LEFT = 'ArrowLeft';\nconst ARROW_RIGHT = 'ArrowRight';\nconst ARROW_UP = 'ArrowUp';\nconst ARROW_DOWN = 'ArrowDown';\n\nfunction renderJsx(render, computedProps) {\n  if (typeof render === 'function') {\n    return render(computedProps);\n  }\n  if (render) {\n    return /*#__PURE__*/React.cloneElement(render, computedProps);\n  }\n  return /*#__PURE__*/jsx(\"div\", {\n    ...computedProps\n  });\n}\nconst CompositeContext = /*#__PURE__*/React.createContext({\n  activeIndex: 0,\n  onNavigate: () => {}\n});\nconst horizontalKeys = [ARROW_LEFT, ARROW_RIGHT];\nconst verticalKeys = [ARROW_UP, ARROW_DOWN];\nconst allKeys = [...horizontalKeys, ...verticalKeys];\n\n/**\n * Creates a single tab stop whose items are navigated by arrow keys, which\n * provides list navigation outside of floating element contexts.\n *\n * This is useful to enable navigation of a list of items that aren’t part of a\n * floating element. A menubar is an example of a composite, with each reference\n * element being an item.\n * @see https://floating-ui.com/docs/Composite\n */\nconst Composite = /*#__PURE__*/React.forwardRef(function Composite(props, forwardedRef) {\n  const {\n    render,\n    orientation = 'both',\n    loop = true,\n    rtl = false,\n    cols = 1,\n    disabledIndices,\n    activeIndex: externalActiveIndex,\n    onNavigate: externalSetActiveIndex,\n    itemSizes,\n    dense = false,\n    ...domProps\n  } = props;\n  const [internalActiveIndex, internalSetActiveIndex] = React.useState(0);\n  const activeIndex = externalActiveIndex != null ? externalActiveIndex : internalActiveIndex;\n  const onNavigate = useEffectEvent(externalSetActiveIndex != null ? externalSetActiveIndex : internalSetActiveIndex);\n  const elementsRef = React.useRef([]);\n  const renderElementProps = render && typeof render !== 'function' ? render.props : {};\n  const contextValue = React.useMemo(() => ({\n    activeIndex,\n    onNavigate\n  }), [activeIndex, onNavigate]);\n  const isGrid = cols > 1;\n  function handleKeyDown(event) {\n    if (!allKeys.includes(event.key)) return;\n    let nextIndex = activeIndex;\n    const minIndex = getMinListIndex(elementsRef, disabledIndices);\n    const maxIndex = getMaxListIndex(elementsRef, disabledIndices);\n    const horizontalEndKey = rtl ? ARROW_LEFT : ARROW_RIGHT;\n    const horizontalStartKey = rtl ? ARROW_RIGHT : ARROW_LEFT;\n    if (isGrid) {\n      const sizes = itemSizes || Array.from({\n        length: elementsRef.current.length\n      }, () => ({\n        width: 1,\n        height: 1\n      }));\n      // To calculate movements on the grid, we use hypothetical cell indices\n      // as if every item was 1x1, then convert back to real indices.\n      const cellMap = createGridCellMap(sizes, cols, dense);\n      const minGridIndex = cellMap.findIndex(index => index != null && !isListIndexDisabled(elementsRef, index, disabledIndices));\n      // last enabled index\n      const maxGridIndex = cellMap.reduce((foundIndex, index, cellIndex) => index != null && !isListIndexDisabled(elementsRef, index, disabledIndices) ? cellIndex : foundIndex, -1);\n      const maybeNextIndex = cellMap[getGridNavigatedIndex({\n        current: cellMap.map(itemIndex => itemIndex ? elementsRef.current[itemIndex] : null)\n      }, {\n        event,\n        orientation,\n        loop,\n        rtl,\n        cols,\n        // treat undefined (empty grid spaces) as disabled indices so we\n        // don't end up in them\n        disabledIndices: getGridCellIndices([...((typeof disabledIndices !== 'function' ? disabledIndices : null) || elementsRef.current.map((_, index) => isListIndexDisabled(elementsRef, index, disabledIndices) ? index : undefined)), undefined], cellMap),\n        minIndex: minGridIndex,\n        maxIndex: maxGridIndex,\n        prevIndex: getGridCellIndexOfCorner(activeIndex > maxIndex ? minIndex : activeIndex, sizes, cellMap, cols,\n        // use a corner matching the edge closest to the direction we're\n        // moving in so we don't end up in the same item. Prefer\n        // top/left over bottom/right.\n        event.key === ARROW_DOWN ? 'bl' : event.key === horizontalEndKey ? 'tr' : 'tl')\n      })];\n      if (maybeNextIndex != null) {\n        nextIndex = maybeNextIndex;\n      }\n    }\n    const toEndKeys = {\n      horizontal: [horizontalEndKey],\n      vertical: [ARROW_DOWN],\n      both: [horizontalEndKey, ARROW_DOWN]\n    }[orientation];\n    const toStartKeys = {\n      horizontal: [horizontalStartKey],\n      vertical: [ARROW_UP],\n      both: [horizontalStartKey, ARROW_UP]\n    }[orientation];\n    const preventedKeys = isGrid ? allKeys : {\n      horizontal: horizontalKeys,\n      vertical: verticalKeys,\n      both: allKeys\n    }[orientation];\n    if (nextIndex === activeIndex && [...toEndKeys, ...toStartKeys].includes(event.key)) {\n      if (loop && nextIndex === maxIndex && toEndKeys.includes(event.key)) {\n        nextIndex = minIndex;\n      } else if (loop && nextIndex === minIndex && toStartKeys.includes(event.key)) {\n        nextIndex = maxIndex;\n      } else {\n        nextIndex = findNonDisabledListIndex(elementsRef, {\n          startingIndex: nextIndex,\n          decrement: toStartKeys.includes(event.key),\n          disabledIndices\n        });\n      }\n    }\n    if (nextIndex !== activeIndex && !isIndexOutOfListBounds(elementsRef, nextIndex)) {\n      var _elementsRef$current$;\n      event.stopPropagation();\n      if (preventedKeys.includes(event.key)) {\n        event.preventDefault();\n      }\n      onNavigate(nextIndex);\n      (_elementsRef$current$ = elementsRef.current[nextIndex]) == null || _elementsRef$current$.focus();\n    }\n  }\n  const computedProps = {\n    ...domProps,\n    ...renderElementProps,\n    ref: forwardedRef,\n    'aria-orientation': orientation === 'both' ? undefined : orientation,\n    onKeyDown(e) {\n      domProps.onKeyDown == null || domProps.onKeyDown(e);\n      renderElementProps.onKeyDown == null || renderElementProps.onKeyDown(e);\n      handleKeyDown(e);\n    }\n  };\n  return /*#__PURE__*/jsx(CompositeContext.Provider, {\n    value: contextValue,\n    children: /*#__PURE__*/jsx(FloatingList, {\n      elementsRef: elementsRef,\n      children: renderJsx(render, computedProps)\n    })\n  });\n});\n/**\n * @see https://floating-ui.com/docs/Composite\n */\nconst CompositeItem = /*#__PURE__*/React.forwardRef(function CompositeItem(props, forwardedRef) {\n  const {\n    render,\n    ...domProps\n  } = props;\n  const renderElementProps = render && typeof render !== 'function' ? render.props : {};\n  const {\n    activeIndex,\n    onNavigate\n  } = React.useContext(CompositeContext);\n  const {\n    ref,\n    index\n  } = useListItem();\n  const mergedRef = useMergeRefs([ref, forwardedRef, renderElementProps.ref]);\n  const isActive = activeIndex === index;\n  const computedProps = {\n    ...domProps,\n    ...renderElementProps,\n    ref: mergedRef,\n    tabIndex: isActive ? 0 : -1,\n    'data-active': isActive ? '' : undefined,\n    onFocus(e) {\n      domProps.onFocus == null || domProps.onFocus(e);\n      renderElementProps.onFocus == null || renderElementProps.onFocus(e);\n      onNavigate(index);\n    }\n  };\n  return renderJsx(render, computedProps);\n});\n\n// https://github.com/mui/material-ui/issues/41190#issuecomment-2040873379\nconst SafeReact = {\n  ...React\n};\n\nlet serverHandoffComplete = false;\nlet count = 0;\nconst genId = () => // Ensure the id is unique with multiple independent versions of Floating UI\n// on <React 18\n\"floating-ui-\" + Math.random().toString(36).slice(2, 6) + count++;\nfunction useFloatingId() {\n  const [id, setId] = React.useState(() => serverHandoffComplete ? genId() : undefined);\n  useModernLayoutEffect(() => {\n    if (id == null) {\n      setId(genId());\n    }\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n  React.useEffect(() => {\n    serverHandoffComplete = true;\n  }, []);\n  return id;\n}\nconst useReactId = SafeReact.useId;\n\n/**\n * Uses React 18's built-in `useId()` when available, or falls back to a\n * slightly less performant (requiring a double render) implementation for\n * earlier React versions.\n * @see https://floating-ui.com/docs/react-utils#useid\n */\nconst useId = useReactId || useFloatingId;\n\nlet devMessageSet;\nif (process.env.NODE_ENV !== \"production\") {\n  devMessageSet = /*#__PURE__*/new Set();\n}\nfunction warn() {\n  var _devMessageSet;\n  for (var _len = arguments.length, messages = new Array(_len), _key = 0; _key < _len; _key++) {\n    messages[_key] = arguments[_key];\n  }\n  const message = \"Floating UI: \" + messages.join(' ');\n  if (!((_devMessageSet = devMessageSet) != null && _devMessageSet.has(message))) {\n    var _devMessageSet2;\n    (_devMessageSet2 = devMessageSet) == null || _devMessageSet2.add(message);\n    console.warn(message);\n  }\n}\nfunction error() {\n  var _devMessageSet3;\n  for (var _len2 = arguments.length, messages = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n    messages[_key2] = arguments[_key2];\n  }\n  const message = \"Floating UI: \" + messages.join(' ');\n  if (!((_devMessageSet3 = devMessageSet) != null && _devMessageSet3.has(message))) {\n    var _devMessageSet4;\n    (_devMessageSet4 = devMessageSet) == null || _devMessageSet4.add(message);\n    console.error(message);\n  }\n}\n\n/**\n * Renders a pointing arrow triangle.\n * @see https://floating-ui.com/docs/FloatingArrow\n */\nconst FloatingArrow = /*#__PURE__*/React.forwardRef(function FloatingArrow(props, ref) {\n  const {\n    context: {\n      placement,\n      elements: {\n        floating\n      },\n      middlewareData: {\n        arrow,\n        shift\n      }\n    },\n    width = 14,\n    height = 7,\n    tipRadius = 0,\n    strokeWidth = 0,\n    staticOffset,\n    stroke,\n    d,\n    style: {\n      transform,\n      ...restStyle\n    } = {},\n    ...rest\n  } = props;\n  if (process.env.NODE_ENV !== \"production\") {\n    if (!ref) {\n      warn('The `ref` prop is required for `FloatingArrow`.');\n    }\n  }\n  const clipPathId = useId();\n  const [isRTL, setIsRTL] = React.useState(false);\n\n  // https://github.com/floating-ui/floating-ui/issues/2932\n  useModernLayoutEffect(() => {\n    if (!floating) return;\n    const isRTL = getComputedStyle(floating).direction === 'rtl';\n    if (isRTL) {\n      setIsRTL(true);\n    }\n  }, [floating]);\n  if (!floating) {\n    return null;\n  }\n  const [side, alignment] = placement.split('-');\n  const isVerticalSide = side === 'top' || side === 'bottom';\n  let computedStaticOffset = staticOffset;\n  if (isVerticalSide && shift != null && shift.x || !isVerticalSide && shift != null && shift.y) {\n    computedStaticOffset = null;\n  }\n\n  // Strokes must be double the border width, this ensures the stroke's width\n  // works as you'd expect.\n  const computedStrokeWidth = strokeWidth * 2;\n  const halfStrokeWidth = computedStrokeWidth / 2;\n  const svgX = width / 2 * (tipRadius / -8 + 1);\n  const svgY = height / 2 * tipRadius / 4;\n  const isCustomShape = !!d;\n  const yOffsetProp = computedStaticOffset && alignment === 'end' ? 'bottom' : 'top';\n  let xOffsetProp = computedStaticOffset && alignment === 'end' ? 'right' : 'left';\n  if (computedStaticOffset && isRTL) {\n    xOffsetProp = alignment === 'end' ? 'left' : 'right';\n  }\n  const arrowX = (arrow == null ? void 0 : arrow.x) != null ? computedStaticOffset || arrow.x : '';\n  const arrowY = (arrow == null ? void 0 : arrow.y) != null ? computedStaticOffset || arrow.y : '';\n  const dValue = d || 'M0,0' + (\" H\" + width) + (\" L\" + (width - svgX) + \",\" + (height - svgY)) + (\" Q\" + width / 2 + \",\" + height + \" \" + svgX + \",\" + (height - svgY)) + ' Z';\n  const rotation = {\n    top: isCustomShape ? 'rotate(180deg)' : '',\n    left: isCustomShape ? 'rotate(90deg)' : 'rotate(-90deg)',\n    bottom: isCustomShape ? '' : 'rotate(180deg)',\n    right: isCustomShape ? 'rotate(-90deg)' : 'rotate(90deg)'\n  }[side];\n  return /*#__PURE__*/jsxs(\"svg\", {\n    ...rest,\n    \"aria-hidden\": true,\n    ref: ref,\n    width: isCustomShape ? width : width + computedStrokeWidth,\n    height: width,\n    viewBox: \"0 0 \" + width + \" \" + (height > width ? height : width),\n    style: {\n      position: 'absolute',\n      pointerEvents: 'none',\n      [xOffsetProp]: arrowX,\n      [yOffsetProp]: arrowY,\n      [side]: isVerticalSide || isCustomShape ? '100%' : \"calc(100% - \" + computedStrokeWidth / 2 + \"px)\",\n      transform: [rotation, transform].filter(t => !!t).join(' '),\n      ...restStyle\n    },\n    children: [computedStrokeWidth > 0 && /*#__PURE__*/jsx(\"path\", {\n      clipPath: \"url(#\" + clipPathId + \")\",\n      fill: \"none\",\n      stroke: stroke\n      // Account for the stroke on the fill path rendered below.\n      ,\n      strokeWidth: computedStrokeWidth + (d ? 0 : 1),\n      d: dValue\n    }), /*#__PURE__*/jsx(\"path\", {\n      stroke: computedStrokeWidth && !d ? rest.fill : 'none',\n      d: dValue\n    }), /*#__PURE__*/jsx(\"clipPath\", {\n      id: clipPathId,\n      children: /*#__PURE__*/jsx(\"rect\", {\n        x: -halfStrokeWidth,\n        y: halfStrokeWidth * (isCustomShape ? -1 : 1),\n        width: width + computedStrokeWidth,\n        height: width\n      })\n    })]\n  });\n});\n\nfunction createEventEmitter() {\n  const map = new Map();\n  return {\n    emit(event, data) {\n      var _map$get;\n      (_map$get = map.get(event)) == null || _map$get.forEach(listener => listener(data));\n    },\n    on(event, listener) {\n      if (!map.has(event)) {\n        map.set(event, new Set());\n      }\n      map.get(event).add(listener);\n    },\n    off(event, listener) {\n      var _map$get2;\n      (_map$get2 = map.get(event)) == null || _map$get2.delete(listener);\n    }\n  };\n}\n\nconst FloatingNodeContext = /*#__PURE__*/React.createContext(null);\nconst FloatingTreeContext = /*#__PURE__*/React.createContext(null);\n\n/**\n * Returns the parent node id for nested floating elements, if available.\n * Returns `null` for top-level floating elements.\n */\nconst useFloatingParentNodeId = () => {\n  var _React$useContext;\n  return ((_React$useContext = React.useContext(FloatingNodeContext)) == null ? void 0 : _React$useContext.id) || null;\n};\n\n/**\n * Returns the nearest floating tree context, if available.\n */\nconst useFloatingTree = () => React.useContext(FloatingTreeContext);\n\n/**\n * Registers a node into the `FloatingTree`, returning its id.\n * @see https://floating-ui.com/docs/FloatingTree\n */\nfunction useFloatingNodeId(customParentId) {\n  const id = useId();\n  const tree = useFloatingTree();\n  const reactParentId = useFloatingParentNodeId();\n  const parentId = customParentId || reactParentId;\n  useModernLayoutEffect(() => {\n    if (!id) return;\n    const node = {\n      id,\n      parentId\n    };\n    tree == null || tree.addNode(node);\n    return () => {\n      tree == null || tree.removeNode(node);\n    };\n  }, [tree, id, parentId]);\n  return id;\n}\n/**\n * Provides parent node context for nested floating elements.\n * @see https://floating-ui.com/docs/FloatingTree\n */\nfunction FloatingNode(props) {\n  const {\n    children,\n    id\n  } = props;\n  const parentId = useFloatingParentNodeId();\n  return /*#__PURE__*/jsx(FloatingNodeContext.Provider, {\n    value: React.useMemo(() => ({\n      id,\n      parentId\n    }), [id, parentId]),\n    children: children\n  });\n}\n/**\n * Provides context for nested floating elements when they are not children of\n * each other on the DOM.\n * This is not necessary in all cases, except when there must be explicit communication between parent and child floating elements. It is necessary for:\n * - The `bubbles` option in the `useDismiss()` Hook\n * - Nested virtual list navigation\n * - Nested floating elements that each open on hover\n * - Custom communication between parent and child floating elements\n * @see https://floating-ui.com/docs/FloatingTree\n */\nfunction FloatingTree(props) {\n  const {\n    children\n  } = props;\n  const nodesRef = React.useRef([]);\n  const addNode = React.useCallback(node => {\n    nodesRef.current = [...nodesRef.current, node];\n  }, []);\n  const removeNode = React.useCallback(node => {\n    nodesRef.current = nodesRef.current.filter(n => n !== node);\n  }, []);\n  const [events] = React.useState(() => createEventEmitter());\n  return /*#__PURE__*/jsx(FloatingTreeContext.Provider, {\n    value: React.useMemo(() => ({\n      nodesRef,\n      addNode,\n      removeNode,\n      events\n    }), [addNode, removeNode, events]),\n    children: children\n  });\n}\n\nfunction createAttribute(name) {\n  return \"data-floating-ui-\" + name;\n}\n\nfunction clearTimeoutIfSet(timeoutRef) {\n  if (timeoutRef.current !== -1) {\n    clearTimeout(timeoutRef.current);\n    timeoutRef.current = -1;\n  }\n}\n\nconst safePolygonIdentifier = /*#__PURE__*/createAttribute('safe-polygon');\nfunction getDelay(value, prop, pointerType) {\n  if (pointerType && !isMouseLikePointerType(pointerType)) {\n    return 0;\n  }\n  if (typeof value === 'number') {\n    return value;\n  }\n  if (typeof value === 'function') {\n    const result = value();\n    if (typeof result === 'number') {\n      return result;\n    }\n    return result == null ? void 0 : result[prop];\n  }\n  return value == null ? void 0 : value[prop];\n}\nfunction getRestMs(value) {\n  if (typeof value === 'function') {\n    return value();\n  }\n  return value;\n}\n/**\n * Opens the floating element while hovering over the reference element, like\n * CSS `:hover`.\n * @see https://floating-ui.com/docs/useHover\n */\nfunction useHover(context, props) {\n  if (props === void 0) {\n    props = {};\n  }\n  const {\n    open,\n    onOpenChange,\n    dataRef,\n    events,\n    elements\n  } = context;\n  const {\n    enabled = true,\n    delay = 0,\n    handleClose = null,\n    mouseOnly = false,\n    restMs = 0,\n    move = true\n  } = props;\n  const tree = useFloatingTree();\n  const parentId = useFloatingParentNodeId();\n  const handleCloseRef = useLatestRef(handleClose);\n  const delayRef = useLatestRef(delay);\n  const openRef = useLatestRef(open);\n  const restMsRef = useLatestRef(restMs);\n  const pointerTypeRef = React.useRef();\n  const timeoutRef = React.useRef(-1);\n  const handlerRef = React.useRef();\n  const restTimeoutRef = React.useRef(-1);\n  const blockMouseMoveRef = React.useRef(true);\n  const performedPointerEventsMutationRef = React.useRef(false);\n  const unbindMouseMoveRef = React.useRef(() => {});\n  const restTimeoutPendingRef = React.useRef(false);\n  const isHoverOpen = useEffectEvent(() => {\n    var _dataRef$current$open;\n    const type = (_dataRef$current$open = dataRef.current.openEvent) == null ? void 0 : _dataRef$current$open.type;\n    return (type == null ? void 0 : type.includes('mouse')) && type !== 'mousedown';\n  });\n\n  // When closing before opening, clear the delay timeouts to cancel it\n  // from showing.\n  React.useEffect(() => {\n    if (!enabled) return;\n    function onOpenChange(_ref) {\n      let {\n        open\n      } = _ref;\n      if (!open) {\n        clearTimeoutIfSet(timeoutRef);\n        clearTimeoutIfSet(restTimeoutRef);\n        blockMouseMoveRef.current = true;\n        restTimeoutPendingRef.current = false;\n      }\n    }\n    events.on('openchange', onOpenChange);\n    return () => {\n      events.off('openchange', onOpenChange);\n    };\n  }, [enabled, events]);\n  React.useEffect(() => {\n    if (!enabled) return;\n    if (!handleCloseRef.current) return;\n    if (!open) return;\n    function onLeave(event) {\n      if (isHoverOpen()) {\n        onOpenChange(false, event, 'hover');\n      }\n    }\n    const html = getDocument$1(elements.floating).documentElement;\n    html.addEventListener('mouseleave', onLeave);\n    return () => {\n      html.removeEventListener('mouseleave', onLeave);\n    };\n  }, [elements.floating, open, onOpenChange, enabled, handleCloseRef, isHoverOpen]);\n  const closeWithDelay = React.useCallback(function (event, runElseBranch, reason) {\n    if (runElseBranch === void 0) {\n      runElseBranch = true;\n    }\n    if (reason === void 0) {\n      reason = 'hover';\n    }\n    const closeDelay = getDelay(delayRef.current, 'close', pointerTypeRef.current);\n    if (closeDelay && !handlerRef.current) {\n      clearTimeoutIfSet(timeoutRef);\n      timeoutRef.current = window.setTimeout(() => onOpenChange(false, event, reason), closeDelay);\n    } else if (runElseBranch) {\n      clearTimeoutIfSet(timeoutRef);\n      onOpenChange(false, event, reason);\n    }\n  }, [delayRef, onOpenChange]);\n  const cleanupMouseMoveHandler = useEffectEvent(() => {\n    unbindMouseMoveRef.current();\n    handlerRef.current = undefined;\n  });\n  const clearPointerEvents = useEffectEvent(() => {\n    if (performedPointerEventsMutationRef.current) {\n      const body = getDocument$1(elements.floating).body;\n      body.style.pointerEvents = '';\n      body.removeAttribute(safePolygonIdentifier);\n      performedPointerEventsMutationRef.current = false;\n    }\n  });\n  const isClickLikeOpenEvent = useEffectEvent(() => {\n    return dataRef.current.openEvent ? ['click', 'mousedown'].includes(dataRef.current.openEvent.type) : false;\n  });\n\n  // Registering the mouse events on the reference directly to bypass React's\n  // delegation system. If the cursor was on a disabled element and then entered\n  // the reference (no gap), `mouseenter` doesn't fire in the delegation system.\n  React.useEffect(() => {\n    if (!enabled) return;\n    function onReferenceMouseEnter(event) {\n      clearTimeoutIfSet(timeoutRef);\n      blockMouseMoveRef.current = false;\n      if (mouseOnly && !isMouseLikePointerType(pointerTypeRef.current) || getRestMs(restMsRef.current) > 0 && !getDelay(delayRef.current, 'open')) {\n        return;\n      }\n      const openDelay = getDelay(delayRef.current, 'open', pointerTypeRef.current);\n      if (openDelay) {\n        timeoutRef.current = window.setTimeout(() => {\n          if (!openRef.current) {\n            onOpenChange(true, event, 'hover');\n          }\n        }, openDelay);\n      } else if (!open) {\n        onOpenChange(true, event, 'hover');\n      }\n    }\n    function onReferenceMouseLeave(event) {\n      if (isClickLikeOpenEvent()) {\n        clearPointerEvents();\n        return;\n      }\n      unbindMouseMoveRef.current();\n      const doc = getDocument$1(elements.floating);\n      clearTimeoutIfSet(restTimeoutRef);\n      restTimeoutPendingRef.current = false;\n      if (handleCloseRef.current && dataRef.current.floatingContext) {\n        // Prevent clearing `onScrollMouseLeave` timeout.\n        if (!open) {\n          clearTimeoutIfSet(timeoutRef);\n        }\n        handlerRef.current = handleCloseRef.current({\n          ...dataRef.current.floatingContext,\n          tree,\n          x: event.clientX,\n          y: event.clientY,\n          onClose() {\n            clearPointerEvents();\n            cleanupMouseMoveHandler();\n            if (!isClickLikeOpenEvent()) {\n              closeWithDelay(event, true, 'safe-polygon');\n            }\n          }\n        });\n        const handler = handlerRef.current;\n        doc.addEventListener('mousemove', handler);\n        unbindMouseMoveRef.current = () => {\n          doc.removeEventListener('mousemove', handler);\n        };\n        return;\n      }\n\n      // Allow interactivity without `safePolygon` on touch devices. With a\n      // pointer, a short close delay is an alternative, so it should work\n      // consistently.\n      const shouldClose = pointerTypeRef.current === 'touch' ? !contains$1(elements.floating, event.relatedTarget) : true;\n      if (shouldClose) {\n        closeWithDelay(event);\n      }\n    }\n\n    // Ensure the floating element closes after scrolling even if the pointer\n    // did not move.\n    // https://github.com/floating-ui/floating-ui/discussions/1692\n    function onScrollMouseLeave(event) {\n      if (isClickLikeOpenEvent()) return;\n      if (!dataRef.current.floatingContext) return;\n      handleCloseRef.current == null || handleCloseRef.current({\n        ...dataRef.current.floatingContext,\n        tree,\n        x: event.clientX,\n        y: event.clientY,\n        onClose() {\n          clearPointerEvents();\n          cleanupMouseMoveHandler();\n          if (!isClickLikeOpenEvent()) {\n            closeWithDelay(event);\n          }\n        }\n      })(event);\n    }\n    function onFloatingMouseEnter() {\n      clearTimeoutIfSet(timeoutRef);\n    }\n    function onFloatingMouseLeave(event) {\n      if (!isClickLikeOpenEvent()) {\n        closeWithDelay(event, false);\n      }\n    }\n    if (isElement(elements.domReference)) {\n      const reference = elements.domReference;\n      const floating = elements.floating;\n      if (open) {\n        reference.addEventListener('mouseleave', onScrollMouseLeave);\n      }\n      if (move) {\n        reference.addEventListener('mousemove', onReferenceMouseEnter, {\n          once: true\n        });\n      }\n      reference.addEventListener('mouseenter', onReferenceMouseEnter);\n      reference.addEventListener('mouseleave', onReferenceMouseLeave);\n      if (floating) {\n        floating.addEventListener('mouseleave', onScrollMouseLeave);\n        floating.addEventListener('mouseenter', onFloatingMouseEnter);\n        floating.addEventListener('mouseleave', onFloatingMouseLeave);\n      }\n      return () => {\n        if (open) {\n          reference.removeEventListener('mouseleave', onScrollMouseLeave);\n        }\n        if (move) {\n          reference.removeEventListener('mousemove', onReferenceMouseEnter);\n        }\n        reference.removeEventListener('mouseenter', onReferenceMouseEnter);\n        reference.removeEventListener('mouseleave', onReferenceMouseLeave);\n        if (floating) {\n          floating.removeEventListener('mouseleave', onScrollMouseLeave);\n          floating.removeEventListener('mouseenter', onFloatingMouseEnter);\n          floating.removeEventListener('mouseleave', onFloatingMouseLeave);\n        }\n      };\n    }\n  }, [elements, enabled, context, mouseOnly, move, closeWithDelay, cleanupMouseMoveHandler, clearPointerEvents, onOpenChange, open, openRef, tree, delayRef, handleCloseRef, dataRef, isClickLikeOpenEvent, restMsRef]);\n\n  // Block pointer-events of every element other than the reference and floating\n  // while the floating element is open and has a `handleClose` handler. Also\n  // handles nested floating elements.\n  // https://github.com/floating-ui/floating-ui/issues/1722\n  useModernLayoutEffect(() => {\n    var _handleCloseRef$curre;\n    if (!enabled) return;\n    if (open && (_handleCloseRef$curre = handleCloseRef.current) != null && (_handleCloseRef$curre = _handleCloseRef$curre.__options) != null && _handleCloseRef$curre.blockPointerEvents && isHoverOpen()) {\n      performedPointerEventsMutationRef.current = true;\n      const floatingEl = elements.floating;\n      if (isElement(elements.domReference) && floatingEl) {\n        var _tree$nodesRef$curren;\n        const body = getDocument$1(elements.floating).body;\n        body.setAttribute(safePolygonIdentifier, '');\n        const ref = elements.domReference;\n        const parentFloating = tree == null || (_tree$nodesRef$curren = tree.nodesRef.current.find(node => node.id === parentId)) == null || (_tree$nodesRef$curren = _tree$nodesRef$curren.context) == null ? void 0 : _tree$nodesRef$curren.elements.floating;\n        if (parentFloating) {\n          parentFloating.style.pointerEvents = '';\n        }\n        body.style.pointerEvents = 'none';\n        ref.style.pointerEvents = 'auto';\n        floatingEl.style.pointerEvents = 'auto';\n        return () => {\n          body.style.pointerEvents = '';\n          ref.style.pointerEvents = '';\n          floatingEl.style.pointerEvents = '';\n        };\n      }\n    }\n  }, [enabled, open, parentId, elements, tree, handleCloseRef, isHoverOpen]);\n  useModernLayoutEffect(() => {\n    if (!open) {\n      pointerTypeRef.current = undefined;\n      restTimeoutPendingRef.current = false;\n      cleanupMouseMoveHandler();\n      clearPointerEvents();\n    }\n  }, [open, cleanupMouseMoveHandler, clearPointerEvents]);\n  React.useEffect(() => {\n    return () => {\n      cleanupMouseMoveHandler();\n      clearTimeoutIfSet(timeoutRef);\n      clearTimeoutIfSet(restTimeoutRef);\n      clearPointerEvents();\n    };\n  }, [enabled, elements.domReference, cleanupMouseMoveHandler, clearPointerEvents]);\n  const reference = React.useMemo(() => {\n    function setPointerRef(event) {\n      pointerTypeRef.current = event.pointerType;\n    }\n    return {\n      onPointerDown: setPointerRef,\n      onPointerEnter: setPointerRef,\n      onMouseMove(event) {\n        const {\n          nativeEvent\n        } = event;\n        function handleMouseMove() {\n          if (!blockMouseMoveRef.current && !openRef.current) {\n            onOpenChange(true, nativeEvent, 'hover');\n          }\n        }\n        if (mouseOnly && !isMouseLikePointerType(pointerTypeRef.current)) {\n          return;\n        }\n        if (open || getRestMs(restMsRef.current) === 0) {\n          return;\n        }\n\n        // Ignore insignificant movements to account for tremors.\n        if (restTimeoutPendingRef.current && event.movementX ** 2 + event.movementY ** 2 < 2) {\n          return;\n        }\n        clearTimeoutIfSet(restTimeoutRef);\n        if (pointerTypeRef.current === 'touch') {\n          handleMouseMove();\n        } else {\n          restTimeoutPendingRef.current = true;\n          restTimeoutRef.current = window.setTimeout(handleMouseMove, getRestMs(restMsRef.current));\n        }\n      }\n    };\n  }, [mouseOnly, onOpenChange, open, openRef, restMsRef]);\n  return React.useMemo(() => enabled ? {\n    reference\n  } : {}, [enabled, reference]);\n}\n\nconst NOOP = () => {};\nconst FloatingDelayGroupContext = /*#__PURE__*/React.createContext({\n  delay: 0,\n  initialDelay: 0,\n  timeoutMs: 0,\n  currentId: null,\n  setCurrentId: NOOP,\n  setState: NOOP,\n  isInstantPhase: false\n});\n\n/**\n * @deprecated\n * Use the return value of `useDelayGroup()` instead.\n */\nconst useDelayGroupContext = () => React.useContext(FloatingDelayGroupContext);\n/**\n * Provides context for a group of floating elements that should share a\n * `delay`.\n * @see https://floating-ui.com/docs/FloatingDelayGroup\n */\nfunction FloatingDelayGroup(props) {\n  const {\n    children,\n    delay,\n    timeoutMs = 0\n  } = props;\n  const [state, setState] = React.useReducer((prev, next) => ({\n    ...prev,\n    ...next\n  }), {\n    delay,\n    timeoutMs,\n    initialDelay: delay,\n    currentId: null,\n    isInstantPhase: false\n  });\n  const initialCurrentIdRef = React.useRef(null);\n  const setCurrentId = React.useCallback(currentId => {\n    setState({\n      currentId\n    });\n  }, []);\n  useModernLayoutEffect(() => {\n    if (state.currentId) {\n      if (initialCurrentIdRef.current === null) {\n        initialCurrentIdRef.current = state.currentId;\n      } else if (!state.isInstantPhase) {\n        setState({\n          isInstantPhase: true\n        });\n      }\n    } else {\n      if (state.isInstantPhase) {\n        setState({\n          isInstantPhase: false\n        });\n      }\n      initialCurrentIdRef.current = null;\n    }\n  }, [state.currentId, state.isInstantPhase]);\n  return /*#__PURE__*/jsx(FloatingDelayGroupContext.Provider, {\n    value: React.useMemo(() => ({\n      ...state,\n      setState,\n      setCurrentId\n    }), [state, setCurrentId]),\n    children: children\n  });\n}\n/**\n * Enables grouping when called inside a component that's a child of a\n * `FloatingDelayGroup`.\n * @see https://floating-ui.com/docs/FloatingDelayGroup\n */\nfunction useDelayGroup(context, options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    open,\n    onOpenChange,\n    floatingId\n  } = context;\n  const {\n    id: optionId,\n    enabled = true\n  } = options;\n  const id = optionId != null ? optionId : floatingId;\n  const groupContext = useDelayGroupContext();\n  const {\n    currentId,\n    setCurrentId,\n    initialDelay,\n    setState,\n    timeoutMs\n  } = groupContext;\n  useModernLayoutEffect(() => {\n    if (!enabled) return;\n    if (!currentId) return;\n    setState({\n      delay: {\n        open: 1,\n        close: getDelay(initialDelay, 'close')\n      }\n    });\n    if (currentId !== id) {\n      onOpenChange(false);\n    }\n  }, [enabled, id, onOpenChange, setState, currentId, initialDelay]);\n  useModernLayoutEffect(() => {\n    function unset() {\n      onOpenChange(false);\n      setState({\n        delay: initialDelay,\n        currentId: null\n      });\n    }\n    if (!enabled) return;\n    if (!currentId) return;\n    if (!open && currentId === id) {\n      if (timeoutMs) {\n        const timeout = window.setTimeout(unset, timeoutMs);\n        return () => {\n          clearTimeout(timeout);\n        };\n      }\n      unset();\n    }\n  }, [enabled, open, setState, currentId, id, onOpenChange, initialDelay, timeoutMs]);\n  useModernLayoutEffect(() => {\n    if (!enabled) return;\n    if (setCurrentId === NOOP || !open) return;\n    setCurrentId(id);\n  }, [enabled, open, setCurrentId, id]);\n  return groupContext;\n}\n\nconst NextFloatingDelayGroupContext = /*#__PURE__*/React.createContext({\n  hasProvider: false,\n  timeoutMs: 0,\n  delayRef: {\n    current: 0\n  },\n  initialDelayRef: {\n    current: 0\n  },\n  timeoutIdRef: {\n    current: -1\n  },\n  currentIdRef: {\n    current: null\n  },\n  currentContextRef: {\n    current: null\n  }\n});\n/**\n * Experimental next version of `FloatingDelayGroup` to become the default\n * in the future. This component is not yet stable.\n * Provides context for a group of floating elements that should share a\n * `delay`. Unlike `FloatingDelayGroup`, `useNextDelayGroup` with this\n * component does not cause a re-render of unrelated consumers of the\n * context when the delay changes.\n * @see https://floating-ui.com/docs/FloatingDelayGroup\n */\nfunction NextFloatingDelayGroup(props) {\n  const {\n    children,\n    delay,\n    timeoutMs = 0\n  } = props;\n  const delayRef = React.useRef(delay);\n  const initialDelayRef = React.useRef(delay);\n  const currentIdRef = React.useRef(null);\n  const currentContextRef = React.useRef(null);\n  const timeoutIdRef = React.useRef(-1);\n  return /*#__PURE__*/jsx(NextFloatingDelayGroupContext.Provider, {\n    value: React.useMemo(() => ({\n      hasProvider: true,\n      delayRef,\n      initialDelayRef,\n      currentIdRef,\n      timeoutMs,\n      currentContextRef,\n      timeoutIdRef\n    }), [timeoutMs]),\n    children: children\n  });\n}\n/**\n * Enables grouping when called inside a component that's a child of a\n * `NextFloatingDelayGroup`.\n * @see https://floating-ui.com/docs/FloatingDelayGroup\n */\nfunction useNextDelayGroup(context, options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    open,\n    onOpenChange,\n    floatingId\n  } = context;\n  const {\n    enabled = true\n  } = options;\n  const groupContext = React.useContext(NextFloatingDelayGroupContext);\n  const {\n    currentIdRef,\n    delayRef,\n    timeoutMs,\n    initialDelayRef,\n    currentContextRef,\n    hasProvider,\n    timeoutIdRef\n  } = groupContext;\n  const [isInstantPhase, setIsInstantPhase] = React.useState(false);\n  useModernLayoutEffect(() => {\n    function unset() {\n      var _currentContextRef$cu;\n      setIsInstantPhase(false);\n      (_currentContextRef$cu = currentContextRef.current) == null || _currentContextRef$cu.setIsInstantPhase(false);\n      currentIdRef.current = null;\n      currentContextRef.current = null;\n      delayRef.current = initialDelayRef.current;\n    }\n    if (!enabled) return;\n    if (!currentIdRef.current) return;\n    if (!open && currentIdRef.current === floatingId) {\n      setIsInstantPhase(false);\n      if (timeoutMs) {\n        timeoutIdRef.current = window.setTimeout(unset, timeoutMs);\n        return () => {\n          clearTimeout(timeoutIdRef.current);\n        };\n      }\n      unset();\n    }\n  }, [enabled, open, floatingId, currentIdRef, delayRef, timeoutMs, initialDelayRef, currentContextRef, timeoutIdRef]);\n  useModernLayoutEffect(() => {\n    if (!enabled) return;\n    if (!open) return;\n    const prevContext = currentContextRef.current;\n    const prevId = currentIdRef.current;\n    currentContextRef.current = {\n      onOpenChange,\n      setIsInstantPhase\n    };\n    currentIdRef.current = floatingId;\n    delayRef.current = {\n      open: 0,\n      close: getDelay(initialDelayRef.current, 'close')\n    };\n    if (prevId !== null && prevId !== floatingId) {\n      clearTimeoutIfSet(timeoutIdRef);\n      setIsInstantPhase(true);\n      prevContext == null || prevContext.setIsInstantPhase(true);\n      prevContext == null || prevContext.onOpenChange(false);\n    } else {\n      setIsInstantPhase(false);\n      prevContext == null || prevContext.setIsInstantPhase(false);\n    }\n  }, [enabled, open, floatingId, onOpenChange, currentIdRef, delayRef, timeoutMs, initialDelayRef, currentContextRef, timeoutIdRef]);\n  useModernLayoutEffect(() => {\n    return () => {\n      currentContextRef.current = null;\n    };\n  }, [currentContextRef]);\n  return React.useMemo(() => ({\n    hasProvider,\n    delayRef,\n    isInstantPhase\n  }), [hasProvider, delayRef, isInstantPhase]);\n}\n\nlet rafId = 0;\nfunction enqueueFocus(el, options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    preventScroll = false,\n    cancelPrevious = true,\n    sync = false\n  } = options;\n  cancelPrevious && cancelAnimationFrame(rafId);\n  const exec = () => el == null ? void 0 : el.focus({\n    preventScroll\n  });\n  if (sync) {\n    exec();\n  } else {\n    rafId = requestAnimationFrame(exec);\n  }\n}\n\nfunction contains(parent, child) {\n  if (!parent || !child) {\n    return false;\n  }\n  const rootNode = child.getRootNode == null ? void 0 : child.getRootNode();\n\n  // First, attempt with faster native method\n  if (parent.contains(child)) {\n    return true;\n  }\n\n  // then fallback to custom implementation with Shadow DOM support\n  if (rootNode && isShadowRoot(rootNode)) {\n    let next = child;\n    while (next) {\n      if (parent === next) {\n        return true;\n      }\n      // @ts-ignore\n      next = next.parentNode || next.host;\n    }\n  }\n\n  // Give up, the result is false\n  return false;\n}\nfunction getTarget(event) {\n  if ('composedPath' in event) {\n    return event.composedPath()[0];\n  }\n\n  // TS thinks `event` is of type never as it assumes all browsers support\n  // `composedPath()`, but browsers without shadow DOM don't.\n  return event.target;\n}\nfunction getDocument(node) {\n  return (node == null ? void 0 : node.ownerDocument) || document;\n}\n\n// Modified to add conditional `aria-hidden` support:\n// https://github.com/theKashey/aria-hidden/blob/9220c8f4a4fd35f63bee5510a9f41a37264382d4/src/index.ts\nconst counters = {\n  inert: /*#__PURE__*/new WeakMap(),\n  'aria-hidden': /*#__PURE__*/new WeakMap(),\n  none: /*#__PURE__*/new WeakMap()\n};\nfunction getCounterMap(control) {\n  if (control === 'inert') return counters.inert;\n  if (control === 'aria-hidden') return counters['aria-hidden'];\n  return counters.none;\n}\nlet uncontrolledElementsSet = /*#__PURE__*/new WeakSet();\nlet markerMap = {};\nlet lockCount$1 = 0;\nconst supportsInert = () => typeof HTMLElement !== 'undefined' && 'inert' in HTMLElement.prototype;\nconst unwrapHost = node => node && (node.host || unwrapHost(node.parentNode));\nconst correctElements = (parent, targets) => targets.map(target => {\n  if (parent.contains(target)) {\n    return target;\n  }\n  const correctedTarget = unwrapHost(target);\n  if (parent.contains(correctedTarget)) {\n    return correctedTarget;\n  }\n  return null;\n}).filter(x => x != null);\nfunction applyAttributeToOthers(uncorrectedAvoidElements, body, ariaHidden, inert) {\n  const markerName = 'data-floating-ui-inert';\n  const controlAttribute = inert ? 'inert' : ariaHidden ? 'aria-hidden' : null;\n  const avoidElements = correctElements(body, uncorrectedAvoidElements);\n  const elementsToKeep = new Set();\n  const elementsToStop = new Set(avoidElements);\n  const hiddenElements = [];\n  if (!markerMap[markerName]) {\n    markerMap[markerName] = new WeakMap();\n  }\n  const markerCounter = markerMap[markerName];\n  avoidElements.forEach(keep);\n  deep(body);\n  elementsToKeep.clear();\n  function keep(el) {\n    if (!el || elementsToKeep.has(el)) {\n      return;\n    }\n    elementsToKeep.add(el);\n    el.parentNode && keep(el.parentNode);\n  }\n  function deep(parent) {\n    if (!parent || elementsToStop.has(parent)) {\n      return;\n    }\n    [].forEach.call(parent.children, node => {\n      if (getNodeName(node) === 'script') return;\n      if (elementsToKeep.has(node)) {\n        deep(node);\n      } else {\n        const attr = controlAttribute ? node.getAttribute(controlAttribute) : null;\n        const alreadyHidden = attr !== null && attr !== 'false';\n        const counterMap = getCounterMap(controlAttribute);\n        const counterValue = (counterMap.get(node) || 0) + 1;\n        const markerValue = (markerCounter.get(node) || 0) + 1;\n        counterMap.set(node, counterValue);\n        markerCounter.set(node, markerValue);\n        hiddenElements.push(node);\n        if (counterValue === 1 && alreadyHidden) {\n          uncontrolledElementsSet.add(node);\n        }\n        if (markerValue === 1) {\n          node.setAttribute(markerName, '');\n        }\n        if (!alreadyHidden && controlAttribute) {\n          node.setAttribute(controlAttribute, controlAttribute === 'inert' ? '' : 'true');\n        }\n      }\n    });\n  }\n  lockCount$1++;\n  return () => {\n    hiddenElements.forEach(element => {\n      const counterMap = getCounterMap(controlAttribute);\n      const currentCounterValue = counterMap.get(element) || 0;\n      const counterValue = currentCounterValue - 1;\n      const markerValue = (markerCounter.get(element) || 0) - 1;\n      counterMap.set(element, counterValue);\n      markerCounter.set(element, markerValue);\n      if (!counterValue) {\n        if (!uncontrolledElementsSet.has(element) && controlAttribute) {\n          element.removeAttribute(controlAttribute);\n        }\n        uncontrolledElementsSet.delete(element);\n      }\n      if (!markerValue) {\n        element.removeAttribute(markerName);\n      }\n    });\n    lockCount$1--;\n    if (!lockCount$1) {\n      counters.inert = new WeakMap();\n      counters['aria-hidden'] = new WeakMap();\n      counters.none = new WeakMap();\n      uncontrolledElementsSet = new WeakSet();\n      markerMap = {};\n    }\n  };\n}\nfunction markOthers(avoidElements, ariaHidden, inert) {\n  if (ariaHidden === void 0) {\n    ariaHidden = false;\n  }\n  if (inert === void 0) {\n    inert = false;\n  }\n  const body = getDocument(avoidElements[0]).body;\n  return applyAttributeToOthers(avoidElements.concat(Array.from(body.querySelectorAll('[aria-live],[role=\"status\"],output'))), body, ariaHidden, inert);\n}\n\nconst HIDDEN_STYLES = {\n  border: 0,\n  clip: 'rect(0 0 0 0)',\n  height: '1px',\n  margin: '-1px',\n  overflow: 'hidden',\n  padding: 0,\n  position: 'fixed',\n  whiteSpace: 'nowrap',\n  width: '1px',\n  top: 0,\n  left: 0\n};\nconst FocusGuard = /*#__PURE__*/React.forwardRef(function FocusGuard(props, ref) {\n  const [role, setRole] = React.useState();\n  useModernLayoutEffect(() => {\n    if (isSafari()) {\n      // Unlike other screen readers such as NVDA and JAWS, the virtual cursor\n      // on VoiceOver does trigger the onFocus event, so we can use the focus\n      // trap element. On Safari, only buttons trigger the onFocus event.\n      // NB: \"group\" role in the Sandbox no longer appears to work, must be a\n      // button role.\n      setRole('button');\n    }\n  }, []);\n  const restProps = {\n    ref,\n    tabIndex: 0,\n    // Role is only for VoiceOver\n    role,\n    'aria-hidden': role ? undefined : true,\n    [createAttribute('focus-guard')]: '',\n    style: HIDDEN_STYLES\n  };\n  return /*#__PURE__*/jsx(\"span\", {\n    ...props,\n    ...restProps\n  });\n});\n\nconst PortalContext = /*#__PURE__*/React.createContext(null);\nconst attr = /*#__PURE__*/createAttribute('portal');\n/**\n * @see https://floating-ui.com/docs/FloatingPortal#usefloatingportalnode\n */\nfunction useFloatingPortalNode(props) {\n  if (props === void 0) {\n    props = {};\n  }\n  const {\n    id,\n    root\n  } = props;\n  const uniqueId = useId();\n  const portalContext = usePortalContext();\n  const [portalNode, setPortalNode] = React.useState(null);\n  const portalNodeRef = React.useRef(null);\n  useModernLayoutEffect(() => {\n    return () => {\n      portalNode == null || portalNode.remove();\n      // Allow the subsequent layout effects to create a new node on updates.\n      // The portal node will still be cleaned up on unmount.\n      // https://github.com/floating-ui/floating-ui/issues/2454\n      queueMicrotask(() => {\n        portalNodeRef.current = null;\n      });\n    };\n  }, [portalNode]);\n  useModernLayoutEffect(() => {\n    // Wait for the uniqueId to be generated before creating the portal node in\n    // React <18 (using `useFloatingId` instead of the native `useId`).\n    // https://github.com/floating-ui/floating-ui/issues/2778\n    if (!uniqueId) return;\n    if (portalNodeRef.current) return;\n    const existingIdRoot = id ? document.getElementById(id) : null;\n    if (!existingIdRoot) return;\n    const subRoot = document.createElement('div');\n    subRoot.id = uniqueId;\n    subRoot.setAttribute(attr, '');\n    existingIdRoot.appendChild(subRoot);\n    portalNodeRef.current = subRoot;\n    setPortalNode(subRoot);\n  }, [id, uniqueId]);\n  useModernLayoutEffect(() => {\n    // Wait for the root to exist before creating the portal node. The root must\n    // be stored in state, not a ref, for this to work reactively.\n    if (root === null) return;\n    if (!uniqueId) return;\n    if (portalNodeRef.current) return;\n    let container = root || (portalContext == null ? void 0 : portalContext.portalNode);\n    if (container && !isElement(container)) container = container.current;\n    container = container || document.body;\n    let idWrapper = null;\n    if (id) {\n      idWrapper = document.createElement('div');\n      idWrapper.id = id;\n      container.appendChild(idWrapper);\n    }\n    const subRoot = document.createElement('div');\n    subRoot.id = uniqueId;\n    subRoot.setAttribute(attr, '');\n    container = idWrapper || container;\n    container.appendChild(subRoot);\n    portalNodeRef.current = subRoot;\n    setPortalNode(subRoot);\n  }, [id, root, uniqueId, portalContext]);\n  return portalNode;\n}\n/**\n * Portals the floating element into a given container element — by default,\n * outside of the app root and into the body.\n * This is necessary to ensure the floating element can appear outside any\n * potential parent containers that cause clipping (such as `overflow: hidden`),\n * while retaining its location in the React tree.\n * @see https://floating-ui.com/docs/FloatingPortal\n */\nfunction FloatingPortal(props) {\n  const {\n    children,\n    id,\n    root,\n    preserveTabOrder = true\n  } = props;\n  const portalNode = useFloatingPortalNode({\n    id,\n    root\n  });\n  const [focusManagerState, setFocusManagerState] = React.useState(null);\n  const beforeOutsideRef = React.useRef(null);\n  const afterOutsideRef = React.useRef(null);\n  const beforeInsideRef = React.useRef(null);\n  const afterInsideRef = React.useRef(null);\n  const modal = focusManagerState == null ? void 0 : focusManagerState.modal;\n  const open = focusManagerState == null ? void 0 : focusManagerState.open;\n  const shouldRenderGuards =\n  // The FocusManager and therefore floating element are currently open/\n  // rendered.\n  !!focusManagerState &&\n  // Guards are only for non-modal focus management.\n  !focusManagerState.modal &&\n  // Don't render if unmount is transitioning.\n  focusManagerState.open && preserveTabOrder && !!(root || portalNode);\n\n  // https://codesandbox.io/s/tabbable-portal-f4tng?file=/src/TabbablePortal.tsx\n  React.useEffect(() => {\n    if (!portalNode || !preserveTabOrder || modal) {\n      return;\n    }\n\n    // Make sure elements inside the portal element are tabbable only when the\n    // portal has already been focused, either by tabbing into a focus trap\n    // element outside or using the mouse.\n    function onFocus(event) {\n      if (portalNode && isOutsideEvent(event)) {\n        const focusing = event.type === 'focusin';\n        const manageFocus = focusing ? enableFocusInside : disableFocusInside;\n        manageFocus(portalNode);\n      }\n    }\n    // Listen to the event on the capture phase so they run before the focus\n    // trap elements onFocus prop is called.\n    portalNode.addEventListener('focusin', onFocus, true);\n    portalNode.addEventListener('focusout', onFocus, true);\n    return () => {\n      portalNode.removeEventListener('focusin', onFocus, true);\n      portalNode.removeEventListener('focusout', onFocus, true);\n    };\n  }, [portalNode, preserveTabOrder, modal]);\n  React.useEffect(() => {\n    if (!portalNode) return;\n    if (open) return;\n    enableFocusInside(portalNode);\n  }, [open, portalNode]);\n  return /*#__PURE__*/jsxs(PortalContext.Provider, {\n    value: React.useMemo(() => ({\n      preserveTabOrder,\n      beforeOutsideRef,\n      afterOutsideRef,\n      beforeInsideRef,\n      afterInsideRef,\n      portalNode,\n      setFocusManagerState\n    }), [preserveTabOrder, portalNode]),\n    children: [shouldRenderGuards && portalNode && /*#__PURE__*/jsx(FocusGuard, {\n      \"data-type\": \"outside\",\n      ref: beforeOutsideRef,\n      onFocus: event => {\n        if (isOutsideEvent(event, portalNode)) {\n          var _beforeInsideRef$curr;\n          (_beforeInsideRef$curr = beforeInsideRef.current) == null || _beforeInsideRef$curr.focus();\n        } else {\n          const domReference = focusManagerState ? focusManagerState.domReference : null;\n          const prevTabbable = getPreviousTabbable(domReference);\n          prevTabbable == null || prevTabbable.focus();\n        }\n      }\n    }), shouldRenderGuards && portalNode && /*#__PURE__*/jsx(\"span\", {\n      \"aria-owns\": portalNode.id,\n      style: HIDDEN_STYLES\n    }), portalNode && /*#__PURE__*/ReactDOM.createPortal(children, portalNode), shouldRenderGuards && portalNode && /*#__PURE__*/jsx(FocusGuard, {\n      \"data-type\": \"outside\",\n      ref: afterOutsideRef,\n      onFocus: event => {\n        if (isOutsideEvent(event, portalNode)) {\n          var _afterInsideRef$curre;\n          (_afterInsideRef$curre = afterInsideRef.current) == null || _afterInsideRef$curre.focus();\n        } else {\n          const domReference = focusManagerState ? focusManagerState.domReference : null;\n          const nextTabbable = getNextTabbable(domReference);\n          nextTabbable == null || nextTabbable.focus();\n          (focusManagerState == null ? void 0 : focusManagerState.closeOnFocusOut) && (focusManagerState == null ? void 0 : focusManagerState.onOpenChange(false, event.nativeEvent, 'focus-out'));\n        }\n      }\n    })]\n  });\n}\nconst usePortalContext = () => React.useContext(PortalContext);\n\nfunction useLiteMergeRefs(refs) {\n  return React.useMemo(() => {\n    return value => {\n      refs.forEach(ref => {\n        if (ref) {\n          ref.current = value;\n        }\n      });\n    };\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, refs);\n}\n\nconst LIST_LIMIT = 20;\nlet previouslyFocusedElements = [];\nfunction addPreviouslyFocusedElement(element) {\n  previouslyFocusedElements = previouslyFocusedElements.filter(el => el.isConnected);\n  if (element && getNodeName(element) !== 'body') {\n    previouslyFocusedElements.push(element);\n    if (previouslyFocusedElements.length > LIST_LIMIT) {\n      previouslyFocusedElements = previouslyFocusedElements.slice(-20);\n    }\n  }\n}\nfunction getPreviouslyFocusedElement() {\n  return previouslyFocusedElements.slice().reverse().find(el => el.isConnected);\n}\nfunction getFirstTabbableElement(container) {\n  const tabbableOptions = getTabbableOptions();\n  if (isTabbable(container, tabbableOptions)) {\n    return container;\n  }\n  return tabbable(container, tabbableOptions)[0] || container;\n}\nfunction handleTabIndex(floatingFocusElement, orderRef) {\n  var _floatingFocusElement;\n  if (!orderRef.current.includes('floating') && !((_floatingFocusElement = floatingFocusElement.getAttribute('role')) != null && _floatingFocusElement.includes('dialog'))) {\n    return;\n  }\n  const options = getTabbableOptions();\n  const focusableElements = focusable(floatingFocusElement, options);\n  const tabbableContent = focusableElements.filter(element => {\n    const dataTabIndex = element.getAttribute('data-tabindex') || '';\n    return isTabbable(element, options) || element.hasAttribute('data-tabindex') && !dataTabIndex.startsWith('-');\n  });\n  const tabIndex = floatingFocusElement.getAttribute('tabindex');\n  if (orderRef.current.includes('floating') || tabbableContent.length === 0) {\n    if (tabIndex !== '0') {\n      floatingFocusElement.setAttribute('tabindex', '0');\n    }\n  } else if (tabIndex !== '-1' || floatingFocusElement.hasAttribute('data-tabindex') && floatingFocusElement.getAttribute('data-tabindex') !== '-1') {\n    floatingFocusElement.setAttribute('tabindex', '-1');\n    floatingFocusElement.setAttribute('data-tabindex', '-1');\n  }\n}\nconst VisuallyHiddenDismiss = /*#__PURE__*/React.forwardRef(function VisuallyHiddenDismiss(props, ref) {\n  return /*#__PURE__*/jsx(\"button\", {\n    ...props,\n    type: \"button\",\n    ref: ref,\n    tabIndex: -1,\n    style: HIDDEN_STYLES\n  });\n});\n/**\n * Provides focus management for the floating element.\n * @see https://floating-ui.com/docs/FloatingFocusManager\n */\nfunction FloatingFocusManager(props) {\n  const {\n    context,\n    children,\n    disabled = false,\n    order = ['content'],\n    guards: _guards = true,\n    initialFocus = 0,\n    returnFocus = true,\n    restoreFocus = false,\n    modal = true,\n    visuallyHiddenDismiss = false,\n    closeOnFocusOut = true,\n    outsideElementsInert = false,\n    getInsideElements: _getInsideElements = () => []\n  } = props;\n  const {\n    open,\n    onOpenChange,\n    events,\n    dataRef,\n    elements: {\n      domReference,\n      floating\n    }\n  } = context;\n  const getNodeId = useEffectEvent(() => {\n    var _dataRef$current$floa;\n    return (_dataRef$current$floa = dataRef.current.floatingContext) == null ? void 0 : _dataRef$current$floa.nodeId;\n  });\n  const getInsideElements = useEffectEvent(_getInsideElements);\n  const ignoreInitialFocus = typeof initialFocus === 'number' && initialFocus < 0;\n  // If the reference is a combobox and is typeable (e.g. input/textarea),\n  // there are different focus semantics. The guards should not be rendered, but\n  // aria-hidden should be applied to all nodes still. Further, the visually\n  // hidden dismiss button should only appear at the end of the list, not the\n  // start.\n  const isUntrappedTypeableCombobox = isTypeableCombobox(domReference) && ignoreInitialFocus;\n\n  // Force the guards to be rendered if the `inert` attribute is not supported.\n  const inertSupported = supportsInert();\n  const guards = inertSupported ? _guards : true;\n  const useInert = !guards || inertSupported && outsideElementsInert;\n  const orderRef = useLatestRef(order);\n  const initialFocusRef = useLatestRef(initialFocus);\n  const returnFocusRef = useLatestRef(returnFocus);\n  const tree = useFloatingTree();\n  const portalContext = usePortalContext();\n  const startDismissButtonRef = React.useRef(null);\n  const endDismissButtonRef = React.useRef(null);\n  const preventReturnFocusRef = React.useRef(false);\n  const isPointerDownRef = React.useRef(false);\n  const tabbableIndexRef = React.useRef(-1);\n  const isInsidePortal = portalContext != null;\n  const floatingFocusElement = getFloatingFocusElement(floating);\n  const getTabbableContent = useEffectEvent(function (container) {\n    if (container === void 0) {\n      container = floatingFocusElement;\n    }\n    return container ? tabbable(container, getTabbableOptions()) : [];\n  });\n  const getTabbableElements = useEffectEvent(container => {\n    const content = getTabbableContent(container);\n    return orderRef.current.map(type => {\n      if (domReference && type === 'reference') {\n        return domReference;\n      }\n      if (floatingFocusElement && type === 'floating') {\n        return floatingFocusElement;\n      }\n      return content;\n    }).filter(Boolean).flat();\n  });\n  React.useEffect(() => {\n    if (disabled) return;\n    if (!modal) return;\n    function onKeyDown(event) {\n      if (event.key === 'Tab') {\n        // The focus guards have nothing to focus, so we need to stop the event.\n        if (contains$1(floatingFocusElement, activeElement(getDocument$1(floatingFocusElement))) && getTabbableContent().length === 0 && !isUntrappedTypeableCombobox) {\n          stopEvent(event);\n        }\n        const els = getTabbableElements();\n        const target = getTarget$1(event);\n        if (orderRef.current[0] === 'reference' && target === domReference) {\n          stopEvent(event);\n          if (event.shiftKey) {\n            enqueueFocus(els[els.length - 1]);\n          } else {\n            enqueueFocus(els[1]);\n          }\n        }\n        if (orderRef.current[1] === 'floating' && target === floatingFocusElement && event.shiftKey) {\n          stopEvent(event);\n          enqueueFocus(els[0]);\n        }\n      }\n    }\n    const doc = getDocument$1(floatingFocusElement);\n    doc.addEventListener('keydown', onKeyDown);\n    return () => {\n      doc.removeEventListener('keydown', onKeyDown);\n    };\n  }, [disabled, domReference, floatingFocusElement, modal, orderRef, isUntrappedTypeableCombobox, getTabbableContent, getTabbableElements]);\n  React.useEffect(() => {\n    if (disabled) return;\n    if (!floating) return;\n    function handleFocusIn(event) {\n      const target = getTarget$1(event);\n      const tabbableContent = getTabbableContent();\n      const tabbableIndex = tabbableContent.indexOf(target);\n      if (tabbableIndex !== -1) {\n        tabbableIndexRef.current = tabbableIndex;\n      }\n    }\n    floating.addEventListener('focusin', handleFocusIn);\n    return () => {\n      floating.removeEventListener('focusin', handleFocusIn);\n    };\n  }, [disabled, floating, getTabbableContent]);\n  React.useEffect(() => {\n    if (disabled) return;\n    if (!closeOnFocusOut) return;\n\n    // In Safari, buttons lose focus when pressing them.\n    function handlePointerDown() {\n      isPointerDownRef.current = true;\n      setTimeout(() => {\n        isPointerDownRef.current = false;\n      });\n    }\n    function handleFocusOutside(event) {\n      const relatedTarget = event.relatedTarget;\n      const currentTarget = event.currentTarget;\n      const target = getTarget$1(event);\n      queueMicrotask(() => {\n        const nodeId = getNodeId();\n        const movedToUnrelatedNode = !(contains$1(domReference, relatedTarget) || contains$1(floating, relatedTarget) || contains$1(relatedTarget, floating) || contains$1(portalContext == null ? void 0 : portalContext.portalNode, relatedTarget) || relatedTarget != null && relatedTarget.hasAttribute(createAttribute('focus-guard')) || tree && (getNodeChildren$1(tree.nodesRef.current, nodeId).find(node => {\n          var _node$context, _node$context2;\n          return contains$1((_node$context = node.context) == null ? void 0 : _node$context.elements.floating, relatedTarget) || contains$1((_node$context2 = node.context) == null ? void 0 : _node$context2.elements.domReference, relatedTarget);\n        }) || getNodeAncestors(tree.nodesRef.current, nodeId).find(node => {\n          var _node$context3, _node$context4, _node$context5;\n          return [(_node$context3 = node.context) == null ? void 0 : _node$context3.elements.floating, getFloatingFocusElement((_node$context4 = node.context) == null ? void 0 : _node$context4.elements.floating)].includes(relatedTarget) || ((_node$context5 = node.context) == null ? void 0 : _node$context5.elements.domReference) === relatedTarget;\n        })));\n        if (currentTarget === domReference && floatingFocusElement) {\n          handleTabIndex(floatingFocusElement, orderRef);\n        }\n\n        // Restore focus to the previous tabbable element index to prevent\n        // focus from being lost outside the floating tree.\n        if (restoreFocus && currentTarget !== domReference && !(target != null && target.isConnected) && activeElement(getDocument$1(floatingFocusElement)) === getDocument$1(floatingFocusElement).body) {\n          // Let `FloatingPortal` effect knows that focus is still inside the\n          // floating tree.\n          if (isHTMLElement(floatingFocusElement)) {\n            floatingFocusElement.focus();\n          }\n          const prevTabbableIndex = tabbableIndexRef.current;\n          const tabbableContent = getTabbableContent();\n          const nodeToFocus = tabbableContent[prevTabbableIndex] || tabbableContent[tabbableContent.length - 1] || floatingFocusElement;\n          if (isHTMLElement(nodeToFocus)) {\n            nodeToFocus.focus();\n          }\n        }\n\n        // https://github.com/floating-ui/floating-ui/issues/3060\n        if (dataRef.current.insideReactTree) {\n          dataRef.current.insideReactTree = false;\n          return;\n        }\n\n        // Focus did not move inside the floating tree, and there are no tabbable\n        // portal guards to handle closing.\n        if ((isUntrappedTypeableCombobox ? true : !modal) && relatedTarget && movedToUnrelatedNode && !isPointerDownRef.current &&\n        // Fix React 18 Strict Mode returnFocus due to double rendering.\n        relatedTarget !== getPreviouslyFocusedElement()) {\n          preventReturnFocusRef.current = true;\n          onOpenChange(false, event, 'focus-out');\n        }\n      });\n    }\n    if (floating && isHTMLElement(domReference)) {\n      domReference.addEventListener('focusout', handleFocusOutside);\n      domReference.addEventListener('pointerdown', handlePointerDown);\n      floating.addEventListener('focusout', handleFocusOutside);\n      return () => {\n        domReference.removeEventListener('focusout', handleFocusOutside);\n        domReference.removeEventListener('pointerdown', handlePointerDown);\n        floating.removeEventListener('focusout', handleFocusOutside);\n      };\n    }\n  }, [disabled, domReference, floating, floatingFocusElement, modal, tree, portalContext, onOpenChange, closeOnFocusOut, restoreFocus, getTabbableContent, isUntrappedTypeableCombobox, getNodeId, orderRef, dataRef]);\n  const beforeGuardRef = React.useRef(null);\n  const afterGuardRef = React.useRef(null);\n  const mergedBeforeGuardRef = useLiteMergeRefs([beforeGuardRef, portalContext == null ? void 0 : portalContext.beforeInsideRef]);\n  const mergedAfterGuardRef = useLiteMergeRefs([afterGuardRef, portalContext == null ? void 0 : portalContext.afterInsideRef]);\n  React.useEffect(() => {\n    var _portalContext$portal, _ancestors$find;\n    if (disabled) return;\n    if (!floating) return;\n\n    // Don't hide portals nested within the parent portal.\n    const portalNodes = Array.from((portalContext == null || (_portalContext$portal = portalContext.portalNode) == null ? void 0 : _portalContext$portal.querySelectorAll(\"[\" + createAttribute('portal') + \"]\")) || []);\n    const ancestors = tree ? getNodeAncestors(tree.nodesRef.current, getNodeId()) : [];\n    const ancestorFloatingNodes = tree && !modal ? ancestors.map(node => {\n      var _node$context6;\n      return (_node$context6 = node.context) == null ? void 0 : _node$context6.elements.floating;\n    }) : [];\n    const rootAncestorComboboxDomReference = (_ancestors$find = ancestors.find(node => {\n      var _node$context7;\n      return isTypeableCombobox(((_node$context7 = node.context) == null ? void 0 : _node$context7.elements.domReference) || null);\n    })) == null || (_ancestors$find = _ancestors$find.context) == null ? void 0 : _ancestors$find.elements.domReference;\n    const insideElements = [floating, rootAncestorComboboxDomReference, ...portalNodes, ...ancestorFloatingNodes, ...getInsideElements(), startDismissButtonRef.current, endDismissButtonRef.current, beforeGuardRef.current, afterGuardRef.current, portalContext == null ? void 0 : portalContext.beforeOutsideRef.current, portalContext == null ? void 0 : portalContext.afterOutsideRef.current, orderRef.current.includes('reference') || isUntrappedTypeableCombobox ? domReference : null].filter(x => x != null);\n    const cleanup = modal || isUntrappedTypeableCombobox ? markOthers(insideElements, !useInert, useInert) : markOthers(insideElements);\n    return () => {\n      cleanup();\n    };\n  }, [disabled, domReference, floating, modal, orderRef, portalContext, isUntrappedTypeableCombobox, guards, useInert, tree, getNodeId, getInsideElements]);\n  useModernLayoutEffect(() => {\n    if (disabled || !isHTMLElement(floatingFocusElement)) return;\n    const doc = getDocument$1(floatingFocusElement);\n    const previouslyFocusedElement = activeElement(doc);\n\n    // Wait for any layout effect state setters to execute to set `tabIndex`.\n    queueMicrotask(() => {\n      const focusableElements = getTabbableElements(floatingFocusElement);\n      const initialFocusValue = initialFocusRef.current;\n      const elToFocus = (typeof initialFocusValue === 'number' ? focusableElements[initialFocusValue] : initialFocusValue.current) || floatingFocusElement;\n      const focusAlreadyInsideFloatingEl = contains$1(floatingFocusElement, previouslyFocusedElement);\n      if (!ignoreInitialFocus && !focusAlreadyInsideFloatingEl && open) {\n        enqueueFocus(elToFocus, {\n          preventScroll: elToFocus === floatingFocusElement\n        });\n      }\n    });\n  }, [disabled, open, floatingFocusElement, ignoreInitialFocus, getTabbableElements, initialFocusRef]);\n  useModernLayoutEffect(() => {\n    if (disabled || !floatingFocusElement) return;\n    const doc = getDocument$1(floatingFocusElement);\n    const previouslyFocusedElement = activeElement(doc);\n    addPreviouslyFocusedElement(previouslyFocusedElement);\n\n    // Dismissing via outside press should always ignore `returnFocus` to\n    // prevent unwanted scrolling.\n    function onOpenChange(_ref) {\n      let {\n        reason,\n        event,\n        nested\n      } = _ref;\n      if (['hover', 'safe-polygon'].includes(reason) && event.type === 'mouseleave') {\n        preventReturnFocusRef.current = true;\n      }\n      if (reason !== 'outside-press') return;\n      if (nested) {\n        preventReturnFocusRef.current = false;\n      } else if (isVirtualClick(event) || isVirtualPointerEvent(event)) {\n        preventReturnFocusRef.current = false;\n      } else {\n        let isPreventScrollSupported = false;\n        document.createElement('div').focus({\n          get preventScroll() {\n            isPreventScrollSupported = true;\n            return false;\n          }\n        });\n        if (isPreventScrollSupported) {\n          preventReturnFocusRef.current = false;\n        } else {\n          preventReturnFocusRef.current = true;\n        }\n      }\n    }\n    events.on('openchange', onOpenChange);\n    const fallbackEl = doc.createElement('span');\n    fallbackEl.setAttribute('tabindex', '-1');\n    fallbackEl.setAttribute('aria-hidden', 'true');\n    Object.assign(fallbackEl.style, HIDDEN_STYLES);\n    if (isInsidePortal && domReference) {\n      domReference.insertAdjacentElement('afterend', fallbackEl);\n    }\n    function getReturnElement() {\n      if (typeof returnFocusRef.current === 'boolean') {\n        const el = domReference || getPreviouslyFocusedElement();\n        return el && el.isConnected ? el : fallbackEl;\n      }\n      return returnFocusRef.current.current || fallbackEl;\n    }\n    return () => {\n      events.off('openchange', onOpenChange);\n      const activeEl = activeElement(doc);\n      const isFocusInsideFloatingTree = contains$1(floating, activeEl) || tree && getNodeChildren$1(tree.nodesRef.current, getNodeId(), false).some(node => {\n        var _node$context8;\n        return contains$1((_node$context8 = node.context) == null ? void 0 : _node$context8.elements.floating, activeEl);\n      });\n      const returnElement = getReturnElement();\n      queueMicrotask(() => {\n        // This is `returnElement`, if it's tabbable, or its first tabbable child.\n        const tabbableReturnElement = getFirstTabbableElement(returnElement);\n        if (\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n        returnFocusRef.current && !preventReturnFocusRef.current && isHTMLElement(tabbableReturnElement) && (\n        // If the focus moved somewhere else after mount, avoid returning focus\n        // since it likely entered a different element which should be\n        // respected: https://github.com/floating-ui/floating-ui/issues/2607\n        tabbableReturnElement !== activeEl && activeEl !== doc.body ? isFocusInsideFloatingTree : true)) {\n          tabbableReturnElement.focus({\n            preventScroll: true\n          });\n        }\n        fallbackEl.remove();\n      });\n    };\n  }, [disabled, floating, floatingFocusElement, returnFocusRef, dataRef, events, tree, isInsidePortal, domReference, getNodeId]);\n  React.useEffect(() => {\n    // The `returnFocus` cleanup behavior is inside a microtask; ensure we\n    // wait for it to complete before resetting the flag.\n    queueMicrotask(() => {\n      preventReturnFocusRef.current = false;\n    });\n  }, [disabled]);\n\n  // Synchronize the `context` & `modal` value to the FloatingPortal context.\n  // It will decide whether or not it needs to render its own guards.\n  useModernLayoutEffect(() => {\n    if (disabled) return;\n    if (!portalContext) return;\n    portalContext.setFocusManagerState({\n      modal,\n      closeOnFocusOut,\n      open,\n      onOpenChange,\n      domReference\n    });\n    return () => {\n      portalContext.setFocusManagerState(null);\n    };\n  }, [disabled, portalContext, modal, open, onOpenChange, closeOnFocusOut, domReference]);\n  useModernLayoutEffect(() => {\n    if (disabled) return;\n    if (!floatingFocusElement) return;\n    handleTabIndex(floatingFocusElement, orderRef);\n  }, [disabled, floatingFocusElement, orderRef]);\n  function renderDismissButton(location) {\n    if (disabled || !visuallyHiddenDismiss || !modal) {\n      return null;\n    }\n    return /*#__PURE__*/jsx(VisuallyHiddenDismiss, {\n      ref: location === 'start' ? startDismissButtonRef : endDismissButtonRef,\n      onClick: event => onOpenChange(false, event.nativeEvent),\n      children: typeof visuallyHiddenDismiss === 'string' ? visuallyHiddenDismiss : 'Dismiss'\n    });\n  }\n  const shouldRenderGuards = !disabled && guards && (modal ? !isUntrappedTypeableCombobox : true) && (isInsidePortal || modal);\n  return /*#__PURE__*/jsxs(Fragment, {\n    children: [shouldRenderGuards && /*#__PURE__*/jsx(FocusGuard, {\n      \"data-type\": \"inside\",\n      ref: mergedBeforeGuardRef,\n      onFocus: event => {\n        if (modal) {\n          const els = getTabbableElements();\n          enqueueFocus(order[0] === 'reference' ? els[0] : els[els.length - 1]);\n        } else if (portalContext != null && portalContext.preserveTabOrder && portalContext.portalNode) {\n          preventReturnFocusRef.current = false;\n          if (isOutsideEvent(event, portalContext.portalNode)) {\n            const nextTabbable = getNextTabbable(domReference);\n            nextTabbable == null || nextTabbable.focus();\n          } else {\n            var _portalContext$before;\n            (_portalContext$before = portalContext.beforeOutsideRef.current) == null || _portalContext$before.focus();\n          }\n        }\n      }\n    }), !isUntrappedTypeableCombobox && renderDismissButton('start'), children, renderDismissButton('end'), shouldRenderGuards && /*#__PURE__*/jsx(FocusGuard, {\n      \"data-type\": \"inside\",\n      ref: mergedAfterGuardRef,\n      onFocus: event => {\n        if (modal) {\n          enqueueFocus(getTabbableElements()[0]);\n        } else if (portalContext != null && portalContext.preserveTabOrder && portalContext.portalNode) {\n          if (closeOnFocusOut) {\n            preventReturnFocusRef.current = true;\n          }\n          if (isOutsideEvent(event, portalContext.portalNode)) {\n            const prevTabbable = getPreviousTabbable(domReference);\n            prevTabbable == null || prevTabbable.focus();\n          } else {\n            var _portalContext$afterO;\n            (_portalContext$afterO = portalContext.afterOutsideRef.current) == null || _portalContext$afterO.focus();\n          }\n        }\n      }\n    })]\n  });\n}\n\nlet lockCount = 0;\nconst scrollbarProperty = '--floating-ui-scrollbar-width';\nfunction enableScrollLock() {\n  const platform = getPlatform();\n  const isIOS = /iP(hone|ad|od)|iOS/.test(platform) ||\n  // iPads can claim to be MacIntel\n  platform === 'MacIntel' && navigator.maxTouchPoints > 1;\n  const bodyStyle = document.body.style;\n  // RTL <body> scrollbar\n  const scrollbarX = Math.round(document.documentElement.getBoundingClientRect().left) + document.documentElement.scrollLeft;\n  const paddingProp = scrollbarX ? 'paddingLeft' : 'paddingRight';\n  const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth;\n  const scrollX = bodyStyle.left ? parseFloat(bodyStyle.left) : window.scrollX;\n  const scrollY = bodyStyle.top ? parseFloat(bodyStyle.top) : window.scrollY;\n  bodyStyle.overflow = 'hidden';\n  bodyStyle.setProperty(scrollbarProperty, scrollbarWidth + \"px\");\n  if (scrollbarWidth) {\n    bodyStyle[paddingProp] = scrollbarWidth + \"px\";\n  }\n\n  // Only iOS doesn't respect `overflow: hidden` on document.body, and this\n  // technique has fewer side effects.\n  if (isIOS) {\n    var _window$visualViewpor, _window$visualViewpor2;\n    // iOS 12 does not support `visualViewport`.\n    const offsetLeft = ((_window$visualViewpor = window.visualViewport) == null ? void 0 : _window$visualViewpor.offsetLeft) || 0;\n    const offsetTop = ((_window$visualViewpor2 = window.visualViewport) == null ? void 0 : _window$visualViewpor2.offsetTop) || 0;\n    Object.assign(bodyStyle, {\n      position: 'fixed',\n      top: -(scrollY - Math.floor(offsetTop)) + \"px\",\n      left: -(scrollX - Math.floor(offsetLeft)) + \"px\",\n      right: '0'\n    });\n  }\n  return () => {\n    Object.assign(bodyStyle, {\n      overflow: '',\n      [paddingProp]: ''\n    });\n    bodyStyle.removeProperty(scrollbarProperty);\n    if (isIOS) {\n      Object.assign(bodyStyle, {\n        position: '',\n        top: '',\n        left: '',\n        right: ''\n      });\n      window.scrollTo(scrollX, scrollY);\n    }\n  };\n}\nlet cleanup = () => {};\n\n/**\n * Provides base styling for a fixed overlay element to dim content or block\n * pointer events behind a floating element.\n * It's a regular `<div>`, so it can be styled via any CSS solution you prefer.\n * @see https://floating-ui.com/docs/FloatingOverlay\n */\nconst FloatingOverlay = /*#__PURE__*/React.forwardRef(function FloatingOverlay(props, ref) {\n  const {\n    lockScroll = false,\n    ...rest\n  } = props;\n  useModernLayoutEffect(() => {\n    if (!lockScroll) return;\n    lockCount++;\n    if (lockCount === 1) {\n      cleanup = enableScrollLock();\n    }\n    return () => {\n      lockCount--;\n      if (lockCount === 0) {\n        cleanup();\n      }\n    };\n  }, [lockScroll]);\n  return /*#__PURE__*/jsx(\"div\", {\n    ref: ref,\n    ...rest,\n    style: {\n      position: 'fixed',\n      overflow: 'auto',\n      top: 0,\n      right: 0,\n      bottom: 0,\n      left: 0,\n      ...rest.style\n    }\n  });\n});\n\nfunction isButtonTarget(event) {\n  return isHTMLElement(event.target) && event.target.tagName === 'BUTTON';\n}\nfunction isAnchorTarget(event) {\n  return isHTMLElement(event.target) && event.target.tagName === 'A';\n}\nfunction isSpaceIgnored(element) {\n  return isTypeableElement(element);\n}\n/**\n * Opens or closes the floating element when clicking the reference element.\n * @see https://floating-ui.com/docs/useClick\n */\nfunction useClick(context, props) {\n  if (props === void 0) {\n    props = {};\n  }\n  const {\n    open,\n    onOpenChange,\n    dataRef,\n    elements: {\n      domReference\n    }\n  } = context;\n  const {\n    enabled = true,\n    event: eventOption = 'click',\n    toggle = true,\n    ignoreMouse = false,\n    keyboardHandlers = true,\n    stickIfOpen = true\n  } = props;\n  const pointerTypeRef = React.useRef();\n  const didKeyDownRef = React.useRef(false);\n  const reference = React.useMemo(() => ({\n    onPointerDown(event) {\n      pointerTypeRef.current = event.pointerType;\n    },\n    onMouseDown(event) {\n      const pointerType = pointerTypeRef.current;\n\n      // Ignore all buttons except for the \"main\" button.\n      // https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button\n      if (event.button !== 0) return;\n      if (eventOption === 'click') return;\n      if (isMouseLikePointerType(pointerType, true) && ignoreMouse) return;\n      if (open && toggle && (dataRef.current.openEvent && stickIfOpen ? dataRef.current.openEvent.type === 'mousedown' : true)) {\n        onOpenChange(false, event.nativeEvent, 'click');\n      } else {\n        // Prevent stealing focus from the floating element\n        event.preventDefault();\n        onOpenChange(true, event.nativeEvent, 'click');\n      }\n    },\n    onClick(event) {\n      const pointerType = pointerTypeRef.current;\n      if (eventOption === 'mousedown' && pointerTypeRef.current) {\n        pointerTypeRef.current = undefined;\n        return;\n      }\n      if (isMouseLikePointerType(pointerType, true) && ignoreMouse) return;\n      if (open && toggle && (dataRef.current.openEvent && stickIfOpen ? dataRef.current.openEvent.type === 'click' : true)) {\n        onOpenChange(false, event.nativeEvent, 'click');\n      } else {\n        onOpenChange(true, event.nativeEvent, 'click');\n      }\n    },\n    onKeyDown(event) {\n      pointerTypeRef.current = undefined;\n      if (event.defaultPrevented || !keyboardHandlers || isButtonTarget(event)) {\n        return;\n      }\n      if (event.key === ' ' && !isSpaceIgnored(domReference)) {\n        // Prevent scrolling\n        event.preventDefault();\n        didKeyDownRef.current = true;\n      }\n      if (isAnchorTarget(event)) {\n        return;\n      }\n      if (event.key === 'Enter') {\n        if (open && toggle) {\n          onOpenChange(false, event.nativeEvent, 'click');\n        } else {\n          onOpenChange(true, event.nativeEvent, 'click');\n        }\n      }\n    },\n    onKeyUp(event) {\n      if (event.defaultPrevented || !keyboardHandlers || isButtonTarget(event) || isSpaceIgnored(domReference)) {\n        return;\n      }\n      if (event.key === ' ' && didKeyDownRef.current) {\n        didKeyDownRef.current = false;\n        if (open && toggle) {\n          onOpenChange(false, event.nativeEvent, 'click');\n        } else {\n          onOpenChange(true, event.nativeEvent, 'click');\n        }\n      }\n    }\n  }), [dataRef, domReference, eventOption, ignoreMouse, keyboardHandlers, onOpenChange, open, stickIfOpen, toggle]);\n  return React.useMemo(() => enabled ? {\n    reference\n  } : {}, [enabled, reference]);\n}\n\nfunction createVirtualElement(domElement, data) {\n  let offsetX = null;\n  let offsetY = null;\n  let isAutoUpdateEvent = false;\n  return {\n    contextElement: domElement || undefined,\n    getBoundingClientRect() {\n      var _data$dataRef$current;\n      const domRect = (domElement == null ? void 0 : domElement.getBoundingClientRect()) || {\n        width: 0,\n        height: 0,\n        x: 0,\n        y: 0\n      };\n      const isXAxis = data.axis === 'x' || data.axis === 'both';\n      const isYAxis = data.axis === 'y' || data.axis === 'both';\n      const canTrackCursorOnAutoUpdate = ['mouseenter', 'mousemove'].includes(((_data$dataRef$current = data.dataRef.current.openEvent) == null ? void 0 : _data$dataRef$current.type) || '') && data.pointerType !== 'touch';\n      let width = domRect.width;\n      let height = domRect.height;\n      let x = domRect.x;\n      let y = domRect.y;\n      if (offsetX == null && data.x && isXAxis) {\n        offsetX = domRect.x - data.x;\n      }\n      if (offsetY == null && data.y && isYAxis) {\n        offsetY = domRect.y - data.y;\n      }\n      x -= offsetX || 0;\n      y -= offsetY || 0;\n      width = 0;\n      height = 0;\n      if (!isAutoUpdateEvent || canTrackCursorOnAutoUpdate) {\n        width = data.axis === 'y' ? domRect.width : 0;\n        height = data.axis === 'x' ? domRect.height : 0;\n        x = isXAxis && data.x != null ? data.x : x;\n        y = isYAxis && data.y != null ? data.y : y;\n      } else if (isAutoUpdateEvent && !canTrackCursorOnAutoUpdate) {\n        height = data.axis === 'x' ? domRect.height : height;\n        width = data.axis === 'y' ? domRect.width : width;\n      }\n      isAutoUpdateEvent = true;\n      return {\n        width,\n        height,\n        x,\n        y,\n        top: y,\n        right: x + width,\n        bottom: y + height,\n        left: x\n      };\n    }\n  };\n}\nfunction isMouseBasedEvent(event) {\n  return event != null && event.clientX != null;\n}\n/**\n * Positions the floating element relative to a client point (in the viewport),\n * such as the mouse position. By default, it follows the mouse cursor.\n * @see https://floating-ui.com/docs/useClientPoint\n */\nfunction useClientPoint(context, props) {\n  if (props === void 0) {\n    props = {};\n  }\n  const {\n    open,\n    dataRef,\n    elements: {\n      floating,\n      domReference\n    },\n    refs\n  } = context;\n  const {\n    enabled = true,\n    axis = 'both',\n    x = null,\n    y = null\n  } = props;\n  const initialRef = React.useRef(false);\n  const cleanupListenerRef = React.useRef(null);\n  const [pointerType, setPointerType] = React.useState();\n  const [reactive, setReactive] = React.useState([]);\n  const setReference = useEffectEvent((x, y) => {\n    if (initialRef.current) return;\n\n    // Prevent setting if the open event was not a mouse-like one\n    // (e.g. focus to open, then hover over the reference element).\n    // Only apply if the event exists.\n    if (dataRef.current.openEvent && !isMouseBasedEvent(dataRef.current.openEvent)) {\n      return;\n    }\n    refs.setPositionReference(createVirtualElement(domReference, {\n      x,\n      y,\n      axis,\n      dataRef,\n      pointerType\n    }));\n  });\n  const handleReferenceEnterOrMove = useEffectEvent(event => {\n    if (x != null || y != null) return;\n    if (!open) {\n      setReference(event.clientX, event.clientY);\n    } else if (!cleanupListenerRef.current) {\n      // If there's no cleanup, there's no listener, but we want to ensure\n      // we add the listener if the cursor landed on the floating element and\n      // then back on the reference (i.e. it's interactive).\n      setReactive([]);\n    }\n  });\n\n  // If the pointer is a mouse-like pointer, we want to continue following the\n  // mouse even if the floating element is transitioning out. On touch\n  // devices, this is undesirable because the floating element will move to\n  // the dismissal touch point.\n  const openCheck = isMouseLikePointerType(pointerType) ? floating : open;\n  const addListener = React.useCallback(() => {\n    // Explicitly specified `x`/`y` coordinates shouldn't add a listener.\n    if (!openCheck || !enabled || x != null || y != null) return;\n    const win = getWindow(floating);\n    function handleMouseMove(event) {\n      const target = getTarget$1(event);\n      if (!contains$1(floating, target)) {\n        setReference(event.clientX, event.clientY);\n      } else {\n        win.removeEventListener('mousemove', handleMouseMove);\n        cleanupListenerRef.current = null;\n      }\n    }\n    if (!dataRef.current.openEvent || isMouseBasedEvent(dataRef.current.openEvent)) {\n      win.addEventListener('mousemove', handleMouseMove);\n      const cleanup = () => {\n        win.removeEventListener('mousemove', handleMouseMove);\n        cleanupListenerRef.current = null;\n      };\n      cleanupListenerRef.current = cleanup;\n      return cleanup;\n    }\n    refs.setPositionReference(domReference);\n  }, [openCheck, enabled, x, y, floating, dataRef, refs, domReference, setReference]);\n  React.useEffect(() => {\n    return addListener();\n  }, [addListener, reactive]);\n  React.useEffect(() => {\n    if (enabled && !floating) {\n      initialRef.current = false;\n    }\n  }, [enabled, floating]);\n  React.useEffect(() => {\n    if (!enabled && open) {\n      initialRef.current = true;\n    }\n  }, [enabled, open]);\n  useModernLayoutEffect(() => {\n    if (enabled && (x != null || y != null)) {\n      initialRef.current = false;\n      setReference(x, y);\n    }\n  }, [enabled, x, y, setReference]);\n  const reference = React.useMemo(() => {\n    function setPointerTypeRef(_ref) {\n      let {\n        pointerType\n      } = _ref;\n      setPointerType(pointerType);\n    }\n    return {\n      onPointerDown: setPointerTypeRef,\n      onPointerEnter: setPointerTypeRef,\n      onMouseMove: handleReferenceEnterOrMove,\n      onMouseEnter: handleReferenceEnterOrMove\n    };\n  }, [handleReferenceEnterOrMove]);\n  return React.useMemo(() => enabled ? {\n    reference\n  } : {}, [enabled, reference]);\n}\n\nconst bubbleHandlerKeys = {\n  pointerdown: 'onPointerDown',\n  mousedown: 'onMouseDown',\n  click: 'onClick'\n};\nconst captureHandlerKeys = {\n  pointerdown: 'onPointerDownCapture',\n  mousedown: 'onMouseDownCapture',\n  click: 'onClickCapture'\n};\nconst normalizeProp = normalizable => {\n  var _normalizable$escapeK, _normalizable$outside;\n  return {\n    escapeKey: typeof normalizable === 'boolean' ? normalizable : (_normalizable$escapeK = normalizable == null ? void 0 : normalizable.escapeKey) != null ? _normalizable$escapeK : false,\n    outsidePress: typeof normalizable === 'boolean' ? normalizable : (_normalizable$outside = normalizable == null ? void 0 : normalizable.outsidePress) != null ? _normalizable$outside : true\n  };\n};\n/**\n * Closes the floating element when a dismissal is requested — by default, when\n * the user presses the `escape` key or outside of the floating element.\n * @see https://floating-ui.com/docs/useDismiss\n */\nfunction useDismiss(context, props) {\n  if (props === void 0) {\n    props = {};\n  }\n  const {\n    open,\n    onOpenChange,\n    elements,\n    dataRef\n  } = context;\n  const {\n    enabled = true,\n    escapeKey = true,\n    outsidePress: unstable_outsidePress = true,\n    outsidePressEvent = 'pointerdown',\n    referencePress = false,\n    referencePressEvent = 'pointerdown',\n    ancestorScroll = false,\n    bubbles,\n    capture\n  } = props;\n  const tree = useFloatingTree();\n  const outsidePressFn = useEffectEvent(typeof unstable_outsidePress === 'function' ? unstable_outsidePress : () => false);\n  const outsidePress = typeof unstable_outsidePress === 'function' ? outsidePressFn : unstable_outsidePress;\n  const endedOrStartedInsideRef = React.useRef(false);\n  const {\n    escapeKey: escapeKeyBubbles,\n    outsidePress: outsidePressBubbles\n  } = normalizeProp(bubbles);\n  const {\n    escapeKey: escapeKeyCapture,\n    outsidePress: outsidePressCapture\n  } = normalizeProp(capture);\n  const isComposingRef = React.useRef(false);\n  const blurTimeoutRef = React.useRef(-1);\n  const closeOnEscapeKeyDown = useEffectEvent(event => {\n    var _dataRef$current$floa;\n    if (!open || !enabled || !escapeKey || event.key !== 'Escape') {\n      return;\n    }\n\n    // Wait until IME is settled. Pressing `Escape` while composing should\n    // close the compose menu, but not the floating element.\n    if (isComposingRef.current) {\n      return;\n    }\n    const nodeId = (_dataRef$current$floa = dataRef.current.floatingContext) == null ? void 0 : _dataRef$current$floa.nodeId;\n    const children = tree ? getNodeChildren$1(tree.nodesRef.current, nodeId) : [];\n    if (!escapeKeyBubbles) {\n      event.stopPropagation();\n      if (children.length > 0) {\n        let shouldDismiss = true;\n        children.forEach(child => {\n          var _child$context;\n          if ((_child$context = child.context) != null && _child$context.open && !child.context.dataRef.current.__escapeKeyBubbles) {\n            shouldDismiss = false;\n            return;\n          }\n        });\n        if (!shouldDismiss) {\n          return;\n        }\n      }\n    }\n    onOpenChange(false, isReactEvent(event) ? event.nativeEvent : event, 'escape-key');\n  });\n  const closeOnEscapeKeyDownCapture = useEffectEvent(event => {\n    var _getTarget2;\n    const callback = () => {\n      var _getTarget;\n      closeOnEscapeKeyDown(event);\n      (_getTarget = getTarget$1(event)) == null || _getTarget.removeEventListener('keydown', callback);\n    };\n    (_getTarget2 = getTarget$1(event)) == null || _getTarget2.addEventListener('keydown', callback);\n  });\n  const closeOnPressOutside = useEffectEvent(event => {\n    var _dataRef$current$floa2;\n    // Given developers can stop the propagation of the synthetic event,\n    // we can only be confident with a positive value.\n    const insideReactTree = dataRef.current.insideReactTree;\n    dataRef.current.insideReactTree = false;\n\n    // When click outside is lazy (`click` event), handle dragging.\n    // Don't close if:\n    // - The click started inside the floating element.\n    // - The click ended inside the floating element.\n    const endedOrStartedInside = endedOrStartedInsideRef.current;\n    endedOrStartedInsideRef.current = false;\n    if (outsidePressEvent === 'click' && endedOrStartedInside) {\n      return;\n    }\n    if (insideReactTree) {\n      return;\n    }\n    if (typeof outsidePress === 'function' && !outsidePress(event)) {\n      return;\n    }\n    const target = getTarget$1(event);\n    const inertSelector = \"[\" + createAttribute('inert') + \"]\";\n    const markers = getDocument$1(elements.floating).querySelectorAll(inertSelector);\n    let targetRootAncestor = isElement(target) ? target : null;\n    while (targetRootAncestor && !isLastTraversableNode(targetRootAncestor)) {\n      const nextParent = getParentNode(targetRootAncestor);\n      if (isLastTraversableNode(nextParent) || !isElement(nextParent)) {\n        break;\n      }\n      targetRootAncestor = nextParent;\n    }\n\n    // Check if the click occurred on a third-party element injected after the\n    // floating element rendered.\n    if (markers.length && isElement(target) && !isRootElement(target) &&\n    // Clicked on a direct ancestor (e.g. FloatingOverlay).\n    !contains$1(target, elements.floating) &&\n    // If the target root element contains none of the markers, then the\n    // element was injected after the floating element rendered.\n    Array.from(markers).every(marker => !contains$1(targetRootAncestor, marker))) {\n      return;\n    }\n\n    // Check if the click occurred on the scrollbar\n    if (isHTMLElement(target) && floating) {\n      const lastTraversableNode = isLastTraversableNode(target);\n      const style = getComputedStyle(target);\n      const scrollRe = /auto|scroll/;\n      const isScrollableX = lastTraversableNode || scrollRe.test(style.overflowX);\n      const isScrollableY = lastTraversableNode || scrollRe.test(style.overflowY);\n      const canScrollX = isScrollableX && target.clientWidth > 0 && target.scrollWidth > target.clientWidth;\n      const canScrollY = isScrollableY && target.clientHeight > 0 && target.scrollHeight > target.clientHeight;\n      const isRTL = style.direction === 'rtl';\n\n      // Check click position relative to scrollbar.\n      // In some browsers it is possible to change the <body> (or window)\n      // scrollbar to the left side, but is very rare and is difficult to\n      // check for. Plus, for modal dialogs with backdrops, it is more\n      // important that the backdrop is checked but not so much the window.\n      const pressedVerticalScrollbar = canScrollY && (isRTL ? event.offsetX <= target.offsetWidth - target.clientWidth : event.offsetX > target.clientWidth);\n      const pressedHorizontalScrollbar = canScrollX && event.offsetY > target.clientHeight;\n      if (pressedVerticalScrollbar || pressedHorizontalScrollbar) {\n        return;\n      }\n    }\n    const nodeId = (_dataRef$current$floa2 = dataRef.current.floatingContext) == null ? void 0 : _dataRef$current$floa2.nodeId;\n    const targetIsInsideChildren = tree && getNodeChildren$1(tree.nodesRef.current, nodeId).some(node => {\n      var _node$context;\n      return isEventTargetWithin(event, (_node$context = node.context) == null ? void 0 : _node$context.elements.floating);\n    });\n    if (isEventTargetWithin(event, elements.floating) || isEventTargetWithin(event, elements.domReference) || targetIsInsideChildren) {\n      return;\n    }\n    const children = tree ? getNodeChildren$1(tree.nodesRef.current, nodeId) : [];\n    if (children.length > 0) {\n      let shouldDismiss = true;\n      children.forEach(child => {\n        var _child$context2;\n        if ((_child$context2 = child.context) != null && _child$context2.open && !child.context.dataRef.current.__outsidePressBubbles) {\n          shouldDismiss = false;\n          return;\n        }\n      });\n      if (!shouldDismiss) {\n        return;\n      }\n    }\n    onOpenChange(false, event, 'outside-press');\n  });\n  const closeOnPressOutsideCapture = useEffectEvent(event => {\n    var _getTarget4;\n    const callback = () => {\n      var _getTarget3;\n      closeOnPressOutside(event);\n      (_getTarget3 = getTarget$1(event)) == null || _getTarget3.removeEventListener(outsidePressEvent, callback);\n    };\n    (_getTarget4 = getTarget$1(event)) == null || _getTarget4.addEventListener(outsidePressEvent, callback);\n  });\n  React.useEffect(() => {\n    if (!open || !enabled) {\n      return;\n    }\n    dataRef.current.__escapeKeyBubbles = escapeKeyBubbles;\n    dataRef.current.__outsidePressBubbles = outsidePressBubbles;\n    let compositionTimeout = -1;\n    function onScroll(event) {\n      onOpenChange(false, event, 'ancestor-scroll');\n    }\n    function handleCompositionStart() {\n      window.clearTimeout(compositionTimeout);\n      isComposingRef.current = true;\n    }\n    function handleCompositionEnd() {\n      // Safari fires `compositionend` before `keydown`, so we need to wait\n      // until the next tick to set `isComposing` to `false`.\n      // https://bugs.webkit.org/show_bug.cgi?id=165004\n      compositionTimeout = window.setTimeout(() => {\n        isComposingRef.current = false;\n      },\n      // 0ms or 1ms don't work in Safari. 5ms appears to consistently work.\n      // Only apply to WebKit for the test to remain 0ms.\n      isWebKit() ? 5 : 0);\n    }\n    const doc = getDocument$1(elements.floating);\n    if (escapeKey) {\n      doc.addEventListener('keydown', escapeKeyCapture ? closeOnEscapeKeyDownCapture : closeOnEscapeKeyDown, escapeKeyCapture);\n      doc.addEventListener('compositionstart', handleCompositionStart);\n      doc.addEventListener('compositionend', handleCompositionEnd);\n    }\n    outsidePress && doc.addEventListener(outsidePressEvent, outsidePressCapture ? closeOnPressOutsideCapture : closeOnPressOutside, outsidePressCapture);\n    let ancestors = [];\n    if (ancestorScroll) {\n      if (isElement(elements.domReference)) {\n        ancestors = getOverflowAncestors(elements.domReference);\n      }\n      if (isElement(elements.floating)) {\n        ancestors = ancestors.concat(getOverflowAncestors(elements.floating));\n      }\n      if (!isElement(elements.reference) && elements.reference && elements.reference.contextElement) {\n        ancestors = ancestors.concat(getOverflowAncestors(elements.reference.contextElement));\n      }\n    }\n\n    // Ignore the visual viewport for scrolling dismissal (allow pinch-zoom)\n    ancestors = ancestors.filter(ancestor => {\n      var _doc$defaultView;\n      return ancestor !== ((_doc$defaultView = doc.defaultView) == null ? void 0 : _doc$defaultView.visualViewport);\n    });\n    ancestors.forEach(ancestor => {\n      ancestor.addEventListener('scroll', onScroll, {\n        passive: true\n      });\n    });\n    return () => {\n      if (escapeKey) {\n        doc.removeEventListener('keydown', escapeKeyCapture ? closeOnEscapeKeyDownCapture : closeOnEscapeKeyDown, escapeKeyCapture);\n        doc.removeEventListener('compositionstart', handleCompositionStart);\n        doc.removeEventListener('compositionend', handleCompositionEnd);\n      }\n      outsidePress && doc.removeEventListener(outsidePressEvent, outsidePressCapture ? closeOnPressOutsideCapture : closeOnPressOutside, outsidePressCapture);\n      ancestors.forEach(ancestor => {\n        ancestor.removeEventListener('scroll', onScroll);\n      });\n      window.clearTimeout(compositionTimeout);\n    };\n  }, [dataRef, elements, escapeKey, outsidePress, outsidePressEvent, open, onOpenChange, ancestorScroll, enabled, escapeKeyBubbles, outsidePressBubbles, closeOnEscapeKeyDown, escapeKeyCapture, closeOnEscapeKeyDownCapture, closeOnPressOutside, outsidePressCapture, closeOnPressOutsideCapture]);\n  React.useEffect(() => {\n    dataRef.current.insideReactTree = false;\n  }, [dataRef, outsidePress, outsidePressEvent]);\n  const reference = React.useMemo(() => ({\n    onKeyDown: closeOnEscapeKeyDown,\n    ...(referencePress && {\n      [bubbleHandlerKeys[referencePressEvent]]: event => {\n        onOpenChange(false, event.nativeEvent, 'reference-press');\n      },\n      ...(referencePressEvent !== 'click' && {\n        onClick(event) {\n          onOpenChange(false, event.nativeEvent, 'reference-press');\n        }\n      })\n    })\n  }), [closeOnEscapeKeyDown, onOpenChange, referencePress, referencePressEvent]);\n  const floating = React.useMemo(() => ({\n    onKeyDown: closeOnEscapeKeyDown,\n    onMouseDown() {\n      endedOrStartedInsideRef.current = true;\n    },\n    onMouseUp() {\n      endedOrStartedInsideRef.current = true;\n    },\n    [captureHandlerKeys[outsidePressEvent]]: () => {\n      dataRef.current.insideReactTree = true;\n    },\n    onBlurCapture() {\n      if (tree) return;\n      clearTimeoutIfSet(blurTimeoutRef);\n      dataRef.current.insideReactTree = true;\n      blurTimeoutRef.current = window.setTimeout(() => {\n        dataRef.current.insideReactTree = false;\n      });\n    }\n  }), [closeOnEscapeKeyDown, outsidePressEvent, dataRef, tree]);\n  return React.useMemo(() => enabled ? {\n    reference,\n    floating\n  } : {}, [enabled, reference, floating]);\n}\n\nfunction useFloatingRootContext(options) {\n  const {\n    open = false,\n    onOpenChange: onOpenChangeProp,\n    elements: elementsProp\n  } = options;\n  const floatingId = useId();\n  const dataRef = React.useRef({});\n  const [events] = React.useState(() => createEventEmitter());\n  const nested = useFloatingParentNodeId() != null;\n  if (process.env.NODE_ENV !== \"production\") {\n    const optionDomReference = elementsProp.reference;\n    if (optionDomReference && !isElement(optionDomReference)) {\n      error('Cannot pass a virtual element to the `elements.reference` option,', 'as it must be a real DOM element. Use `refs.setPositionReference()`', 'instead.');\n    }\n  }\n  const [positionReference, setPositionReference] = React.useState(elementsProp.reference);\n  const onOpenChange = useEffectEvent((open, event, reason) => {\n    dataRef.current.openEvent = open ? event : undefined;\n    events.emit('openchange', {\n      open,\n      event,\n      reason,\n      nested\n    });\n    onOpenChangeProp == null || onOpenChangeProp(open, event, reason);\n  });\n  const refs = React.useMemo(() => ({\n    setPositionReference\n  }), []);\n  const elements = React.useMemo(() => ({\n    reference: positionReference || elementsProp.reference || null,\n    floating: elementsProp.floating || null,\n    domReference: elementsProp.reference\n  }), [positionReference, elementsProp.reference, elementsProp.floating]);\n  return React.useMemo(() => ({\n    dataRef,\n    open,\n    onOpenChange,\n    elements,\n    events,\n    floatingId,\n    refs\n  }), [open, onOpenChange, elements, events, floatingId, refs]);\n}\n\n/**\n * Provides data to position a floating element and context to add interactions.\n * @see https://floating-ui.com/docs/useFloating\n */\nfunction useFloating(options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    nodeId\n  } = options;\n  const internalRootContext = useFloatingRootContext({\n    ...options,\n    elements: {\n      reference: null,\n      floating: null,\n      ...options.elements\n    }\n  });\n  const rootContext = options.rootContext || internalRootContext;\n  const computedElements = rootContext.elements;\n  const [_domReference, setDomReference] = React.useState(null);\n  const [positionReference, _setPositionReference] = React.useState(null);\n  const optionDomReference = computedElements == null ? void 0 : computedElements.domReference;\n  const domReference = optionDomReference || _domReference;\n  const domReferenceRef = React.useRef(null);\n  const tree = useFloatingTree();\n  useModernLayoutEffect(() => {\n    if (domReference) {\n      domReferenceRef.current = domReference;\n    }\n  }, [domReference]);\n  const position = useFloating$1({\n    ...options,\n    elements: {\n      ...computedElements,\n      ...(positionReference && {\n        reference: positionReference\n      })\n    }\n  });\n  const setPositionReference = React.useCallback(node => {\n    const computedPositionReference = isElement(node) ? {\n      getBoundingClientRect: () => node.getBoundingClientRect(),\n      getClientRects: () => node.getClientRects(),\n      contextElement: node\n    } : node;\n    // Store the positionReference in state if the DOM reference is specified externally via the\n    // `elements.reference` option. This ensures that it won't be overridden on future renders.\n    _setPositionReference(computedPositionReference);\n    position.refs.setReference(computedPositionReference);\n  }, [position.refs]);\n  const setReference = React.useCallback(node => {\n    if (isElement(node) || node === null) {\n      domReferenceRef.current = node;\n      setDomReference(node);\n    }\n\n    // Backwards-compatibility for passing a virtual element to `reference`\n    // after it has set the DOM reference.\n    if (isElement(position.refs.reference.current) || position.refs.reference.current === null ||\n    // Don't allow setting virtual elements using the old technique back to\n    // `null` to support `positionReference` + an unstable `reference`\n    // callback ref.\n    node !== null && !isElement(node)) {\n      position.refs.setReference(node);\n    }\n  }, [position.refs]);\n  const refs = React.useMemo(() => ({\n    ...position.refs,\n    setReference,\n    setPositionReference,\n    domReference: domReferenceRef\n  }), [position.refs, setReference, setPositionReference]);\n  const elements = React.useMemo(() => ({\n    ...position.elements,\n    domReference: domReference\n  }), [position.elements, domReference]);\n  const context = React.useMemo(() => ({\n    ...position,\n    ...rootContext,\n    refs,\n    elements,\n    nodeId\n  }), [position, refs, elements, nodeId, rootContext]);\n  useModernLayoutEffect(() => {\n    rootContext.dataRef.current.floatingContext = context;\n    const node = tree == null ? void 0 : tree.nodesRef.current.find(node => node.id === nodeId);\n    if (node) {\n      node.context = context;\n    }\n  });\n  return React.useMemo(() => ({\n    ...position,\n    context,\n    refs,\n    elements\n  }), [position, refs, elements, context]);\n}\n\nfunction isMacSafari() {\n  return isMac() && isSafari();\n}\n/**\n * Opens the floating element while the reference element has focus, like CSS\n * `:focus`.\n * @see https://floating-ui.com/docs/useFocus\n */\nfunction useFocus(context, props) {\n  if (props === void 0) {\n    props = {};\n  }\n  const {\n    open,\n    onOpenChange,\n    events,\n    dataRef,\n    elements\n  } = context;\n  const {\n    enabled = true,\n    visibleOnly = true\n  } = props;\n  const blockFocusRef = React.useRef(false);\n  const timeoutRef = React.useRef(-1);\n  const keyboardModalityRef = React.useRef(true);\n  React.useEffect(() => {\n    if (!enabled) return;\n    const win = getWindow(elements.domReference);\n\n    // If the reference was focused and the user left the tab/window, and the\n    // floating element was not open, the focus should be blocked when they\n    // return to the tab/window.\n    function onBlur() {\n      if (!open && isHTMLElement(elements.domReference) && elements.domReference === activeElement(getDocument$1(elements.domReference))) {\n        blockFocusRef.current = true;\n      }\n    }\n    function onKeyDown() {\n      keyboardModalityRef.current = true;\n    }\n    function onPointerDown() {\n      keyboardModalityRef.current = false;\n    }\n    win.addEventListener('blur', onBlur);\n    if (isMacSafari()) {\n      win.addEventListener('keydown', onKeyDown, true);\n      win.addEventListener('pointerdown', onPointerDown, true);\n    }\n    return () => {\n      win.removeEventListener('blur', onBlur);\n      if (isMacSafari()) {\n        win.removeEventListener('keydown', onKeyDown, true);\n        win.removeEventListener('pointerdown', onPointerDown, true);\n      }\n    };\n  }, [elements.domReference, open, enabled]);\n  React.useEffect(() => {\n    if (!enabled) return;\n    function onOpenChange(_ref) {\n      let {\n        reason\n      } = _ref;\n      if (reason === 'reference-press' || reason === 'escape-key') {\n        blockFocusRef.current = true;\n      }\n    }\n    events.on('openchange', onOpenChange);\n    return () => {\n      events.off('openchange', onOpenChange);\n    };\n  }, [events, enabled]);\n  React.useEffect(() => {\n    return () => {\n      clearTimeoutIfSet(timeoutRef);\n    };\n  }, []);\n  const reference = React.useMemo(() => ({\n    onMouseLeave() {\n      blockFocusRef.current = false;\n    },\n    onFocus(event) {\n      if (blockFocusRef.current) return;\n      const target = getTarget$1(event.nativeEvent);\n      if (visibleOnly && isElement(target)) {\n        // Safari fails to match `:focus-visible` if focus was initially\n        // outside the document.\n        if (isMacSafari() && !event.relatedTarget) {\n          if (!keyboardModalityRef.current && !isTypeableElement(target)) {\n            return;\n          }\n        } else if (!matchesFocusVisible(target)) {\n          return;\n        }\n      }\n      onOpenChange(true, event.nativeEvent, 'focus');\n    },\n    onBlur(event) {\n      blockFocusRef.current = false;\n      const relatedTarget = event.relatedTarget;\n      const nativeEvent = event.nativeEvent;\n\n      // Hit the non-modal focus management portal guard. Focus will be\n      // moved into the floating element immediately after.\n      const movedToFocusGuard = isElement(relatedTarget) && relatedTarget.hasAttribute(createAttribute('focus-guard')) && relatedTarget.getAttribute('data-type') === 'outside';\n\n      // Wait for the window blur listener to fire.\n      timeoutRef.current = window.setTimeout(() => {\n        var _dataRef$current$floa;\n        const activeEl = activeElement(elements.domReference ? elements.domReference.ownerDocument : document);\n\n        // Focus left the page, keep it open.\n        if (!relatedTarget && activeEl === elements.domReference) return;\n\n        // When focusing the reference element (e.g. regular click), then\n        // clicking into the floating element, prevent it from hiding.\n        // Note: it must be focusable, e.g. `tabindex=\"-1\"`.\n        // We can not rely on relatedTarget to point to the correct element\n        // as it will only point to the shadow host of the newly focused element\n        // and not the element that actually has received focus if it is located\n        // inside a shadow root.\n        if (contains$1((_dataRef$current$floa = dataRef.current.floatingContext) == null ? void 0 : _dataRef$current$floa.refs.floating.current, activeEl) || contains$1(elements.domReference, activeEl) || movedToFocusGuard) {\n          return;\n        }\n        onOpenChange(false, nativeEvent, 'focus');\n      });\n    }\n  }), [dataRef, elements.domReference, onOpenChange, visibleOnly]);\n  return React.useMemo(() => enabled ? {\n    reference\n  } : {}, [enabled, reference]);\n}\n\nfunction mergeProps(userProps, propsList, elementKey) {\n  const map = new Map();\n  const isItem = elementKey === 'item';\n  let domUserProps = userProps;\n  if (isItem && userProps) {\n    const {\n      [ACTIVE_KEY]: _,\n      [SELECTED_KEY]: __,\n      ...validProps\n    } = userProps;\n    domUserProps = validProps;\n  }\n  return {\n    ...(elementKey === 'floating' && {\n      tabIndex: -1,\n      [FOCUSABLE_ATTRIBUTE]: ''\n    }),\n    ...domUserProps,\n    ...propsList.map(value => {\n      const propsOrGetProps = value ? value[elementKey] : null;\n      if (typeof propsOrGetProps === 'function') {\n        return userProps ? propsOrGetProps(userProps) : null;\n      }\n      return propsOrGetProps;\n    }).concat(userProps).reduce((acc, props) => {\n      if (!props) {\n        return acc;\n      }\n      Object.entries(props).forEach(_ref => {\n        let [key, value] = _ref;\n        if (isItem && [ACTIVE_KEY, SELECTED_KEY].includes(key)) {\n          return;\n        }\n        if (key.indexOf('on') === 0) {\n          if (!map.has(key)) {\n            map.set(key, []);\n          }\n          if (typeof value === 'function') {\n            var _map$get;\n            (_map$get = map.get(key)) == null || _map$get.push(value);\n            acc[key] = function () {\n              var _map$get2;\n              for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n                args[_key] = arguments[_key];\n              }\n              return (_map$get2 = map.get(key)) == null ? void 0 : _map$get2.map(fn => fn(...args)).find(val => val !== undefined);\n            };\n          }\n        } else {\n          acc[key] = value;\n        }\n      });\n      return acc;\n    }, {})\n  };\n}\n/**\n * Merges an array of interaction hooks' props into prop getters, allowing\n * event handler functions to be composed together without overwriting one\n * another.\n * @see https://floating-ui.com/docs/useInteractions\n */\nfunction useInteractions(propsList) {\n  if (propsList === void 0) {\n    propsList = [];\n  }\n  const referenceDeps = propsList.map(key => key == null ? void 0 : key.reference);\n  const floatingDeps = propsList.map(key => key == null ? void 0 : key.floating);\n  const itemDeps = propsList.map(key => key == null ? void 0 : key.item);\n  const getReferenceProps = React.useCallback(userProps => mergeProps(userProps, propsList, 'reference'),\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  referenceDeps);\n  const getFloatingProps = React.useCallback(userProps => mergeProps(userProps, propsList, 'floating'),\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  floatingDeps);\n  const getItemProps = React.useCallback(userProps => mergeProps(userProps, propsList, 'item'),\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  itemDeps);\n  return React.useMemo(() => ({\n    getReferenceProps,\n    getFloatingProps,\n    getItemProps\n  }), [getReferenceProps, getFloatingProps, getItemProps]);\n}\n\nconst ESCAPE = 'Escape';\nfunction doSwitch(orientation, vertical, horizontal) {\n  switch (orientation) {\n    case 'vertical':\n      return vertical;\n    case 'horizontal':\n      return horizontal;\n    default:\n      return vertical || horizontal;\n  }\n}\nfunction isMainOrientationKey(key, orientation) {\n  const vertical = key === ARROW_UP || key === ARROW_DOWN;\n  const horizontal = key === ARROW_LEFT || key === ARROW_RIGHT;\n  return doSwitch(orientation, vertical, horizontal);\n}\nfunction isMainOrientationToEndKey(key, orientation, rtl) {\n  const vertical = key === ARROW_DOWN;\n  const horizontal = rtl ? key === ARROW_LEFT : key === ARROW_RIGHT;\n  return doSwitch(orientation, vertical, horizontal) || key === 'Enter' || key === ' ' || key === '';\n}\nfunction isCrossOrientationOpenKey(key, orientation, rtl) {\n  const vertical = rtl ? key === ARROW_LEFT : key === ARROW_RIGHT;\n  const horizontal = key === ARROW_DOWN;\n  return doSwitch(orientation, vertical, horizontal);\n}\nfunction isCrossOrientationCloseKey(key, orientation, rtl, cols) {\n  const vertical = rtl ? key === ARROW_RIGHT : key === ARROW_LEFT;\n  const horizontal = key === ARROW_UP;\n  if (orientation === 'both' || orientation === 'horizontal' && cols && cols > 1) {\n    return key === ESCAPE;\n  }\n  return doSwitch(orientation, vertical, horizontal);\n}\n/**\n * Adds arrow key-based navigation of a list of items, either using real DOM\n * focus or virtual focus.\n * @see https://floating-ui.com/docs/useListNavigation\n */\nfunction useListNavigation(context, props) {\n  const {\n    open,\n    onOpenChange,\n    elements,\n    floatingId\n  } = context;\n  const {\n    listRef,\n    activeIndex,\n    onNavigate: unstable_onNavigate = () => {},\n    enabled = true,\n    selectedIndex = null,\n    allowEscape = false,\n    loop = false,\n    nested = false,\n    rtl = false,\n    virtual = false,\n    focusItemOnOpen = 'auto',\n    focusItemOnHover = true,\n    openOnArrowKeyDown = true,\n    disabledIndices = undefined,\n    orientation = 'vertical',\n    parentOrientation,\n    cols = 1,\n    scrollItemIntoView = true,\n    virtualItemRef,\n    itemSizes,\n    dense = false\n  } = props;\n  if (process.env.NODE_ENV !== \"production\") {\n    if (allowEscape) {\n      if (!loop) {\n        warn('`useListNavigation` looping must be enabled to allow escaping.');\n      }\n      if (!virtual) {\n        warn('`useListNavigation` must be virtual to allow escaping.');\n      }\n    }\n    if (orientation === 'vertical' && cols > 1) {\n      warn('In grid list navigation mode (`cols` > 1), the `orientation` should', 'be either \"horizontal\" or \"both\".');\n    }\n  }\n  const floatingFocusElement = getFloatingFocusElement(elements.floating);\n  const floatingFocusElementRef = useLatestRef(floatingFocusElement);\n  const parentId = useFloatingParentNodeId();\n  const tree = useFloatingTree();\n  useModernLayoutEffect(() => {\n    context.dataRef.current.orientation = orientation;\n  }, [context, orientation]);\n  const onNavigate = useEffectEvent(() => {\n    unstable_onNavigate(indexRef.current === -1 ? null : indexRef.current);\n  });\n  const typeableComboboxReference = isTypeableCombobox(elements.domReference);\n  const focusItemOnOpenRef = React.useRef(focusItemOnOpen);\n  const indexRef = React.useRef(selectedIndex != null ? selectedIndex : -1);\n  const keyRef = React.useRef(null);\n  const isPointerModalityRef = React.useRef(true);\n  const previousOnNavigateRef = React.useRef(onNavigate);\n  const previousMountedRef = React.useRef(!!elements.floating);\n  const previousOpenRef = React.useRef(open);\n  const forceSyncFocusRef = React.useRef(false);\n  const forceScrollIntoViewRef = React.useRef(false);\n  const disabledIndicesRef = useLatestRef(disabledIndices);\n  const latestOpenRef = useLatestRef(open);\n  const scrollItemIntoViewRef = useLatestRef(scrollItemIntoView);\n  const selectedIndexRef = useLatestRef(selectedIndex);\n  const [activeId, setActiveId] = React.useState();\n  const [virtualId, setVirtualId] = React.useState();\n  const focusItem = useEffectEvent(() => {\n    function runFocus(item) {\n      if (virtual) {\n        var _item$id;\n        if ((_item$id = item.id) != null && _item$id.endsWith('-fui-option')) {\n          item.id = floatingId + \"-\" + Math.random().toString(16).slice(2, 10);\n        }\n        setActiveId(item.id);\n        tree == null || tree.events.emit('virtualfocus', item);\n        if (virtualItemRef) {\n          virtualItemRef.current = item;\n        }\n      } else {\n        enqueueFocus(item, {\n          sync: forceSyncFocusRef.current,\n          preventScroll: true\n        });\n      }\n    }\n    const initialItem = listRef.current[indexRef.current];\n    const forceScrollIntoView = forceScrollIntoViewRef.current;\n    if (initialItem) {\n      runFocus(initialItem);\n    }\n    const scheduler = forceSyncFocusRef.current ? v => v() : requestAnimationFrame;\n    scheduler(() => {\n      const waitedItem = listRef.current[indexRef.current] || initialItem;\n      if (!waitedItem) return;\n      if (!initialItem) {\n        runFocus(waitedItem);\n      }\n      const scrollIntoViewOptions = scrollItemIntoViewRef.current;\n      const shouldScrollIntoView = scrollIntoViewOptions && item && (forceScrollIntoView || !isPointerModalityRef.current);\n      if (shouldScrollIntoView) {\n        // JSDOM doesn't support `.scrollIntoView()` but it's widely supported\n        // by all browsers.\n        waitedItem.scrollIntoView == null || waitedItem.scrollIntoView(typeof scrollIntoViewOptions === 'boolean' ? {\n          block: 'nearest',\n          inline: 'nearest'\n        } : scrollIntoViewOptions);\n      }\n    });\n  });\n\n  // Sync `selectedIndex` to be the `activeIndex` upon opening the floating\n  // element. Also, reset `activeIndex` upon closing the floating element.\n  useModernLayoutEffect(() => {\n    if (!enabled) return;\n    if (open && elements.floating) {\n      if (focusItemOnOpenRef.current && selectedIndex != null) {\n        // Regardless of the pointer modality, we want to ensure the selected\n        // item comes into view when the floating element is opened.\n        forceScrollIntoViewRef.current = true;\n        indexRef.current = selectedIndex;\n        onNavigate();\n      }\n    } else if (previousMountedRef.current) {\n      // Since the user can specify `onNavigate` conditionally\n      // (onNavigate: open ? setActiveIndex : setSelectedIndex),\n      // we store and call the previous function.\n      indexRef.current = -1;\n      previousOnNavigateRef.current();\n    }\n  }, [enabled, open, elements.floating, selectedIndex, onNavigate]);\n\n  // Sync `activeIndex` to be the focused item while the floating element is\n  // open.\n  useModernLayoutEffect(() => {\n    if (!enabled) return;\n    if (!open) return;\n    if (!elements.floating) return;\n    if (activeIndex == null) {\n      forceSyncFocusRef.current = false;\n      if (selectedIndexRef.current != null) {\n        return;\n      }\n\n      // Reset while the floating element was open (e.g. the list changed).\n      if (previousMountedRef.current) {\n        indexRef.current = -1;\n        focusItem();\n      }\n\n      // Initial sync.\n      if ((!previousOpenRef.current || !previousMountedRef.current) && focusItemOnOpenRef.current && (keyRef.current != null || focusItemOnOpenRef.current === true && keyRef.current == null)) {\n        let runs = 0;\n        const waitForListPopulated = () => {\n          if (listRef.current[0] == null) {\n            // Avoid letting the browser paint if possible on the first try,\n            // otherwise use rAF. Don't try more than twice, since something\n            // is wrong otherwise.\n            if (runs < 2) {\n              const scheduler = runs ? requestAnimationFrame : queueMicrotask;\n              scheduler(waitForListPopulated);\n            }\n            runs++;\n          } else {\n            indexRef.current = keyRef.current == null || isMainOrientationToEndKey(keyRef.current, orientation, rtl) || nested ? getMinListIndex(listRef, disabledIndicesRef.current) : getMaxListIndex(listRef, disabledIndicesRef.current);\n            keyRef.current = null;\n            onNavigate();\n          }\n        };\n        waitForListPopulated();\n      }\n    } else if (!isIndexOutOfListBounds(listRef, activeIndex)) {\n      indexRef.current = activeIndex;\n      focusItem();\n      forceScrollIntoViewRef.current = false;\n    }\n  }, [enabled, open, elements.floating, activeIndex, selectedIndexRef, nested, listRef, orientation, rtl, onNavigate, focusItem, disabledIndicesRef]);\n\n  // Ensure the parent floating element has focus when a nested child closes\n  // to allow arrow key navigation to work after the pointer leaves the child.\n  useModernLayoutEffect(() => {\n    var _nodes$find;\n    if (!enabled || elements.floating || !tree || virtual || !previousMountedRef.current) {\n      return;\n    }\n    const nodes = tree.nodesRef.current;\n    const parent = (_nodes$find = nodes.find(node => node.id === parentId)) == null || (_nodes$find = _nodes$find.context) == null ? void 0 : _nodes$find.elements.floating;\n    const activeEl = activeElement(getDocument$1(elements.floating));\n    const treeContainsActiveEl = nodes.some(node => node.context && contains$1(node.context.elements.floating, activeEl));\n    if (parent && !treeContainsActiveEl && isPointerModalityRef.current) {\n      parent.focus({\n        preventScroll: true\n      });\n    }\n  }, [enabled, elements.floating, tree, parentId, virtual]);\n  useModernLayoutEffect(() => {\n    if (!enabled) return;\n    if (!tree) return;\n    if (!virtual) return;\n    if (parentId) return;\n    function handleVirtualFocus(item) {\n      setVirtualId(item.id);\n      if (virtualItemRef) {\n        virtualItemRef.current = item;\n      }\n    }\n    tree.events.on('virtualfocus', handleVirtualFocus);\n    return () => {\n      tree.events.off('virtualfocus', handleVirtualFocus);\n    };\n  }, [enabled, tree, virtual, parentId, virtualItemRef]);\n  useModernLayoutEffect(() => {\n    previousOnNavigateRef.current = onNavigate;\n    previousOpenRef.current = open;\n    previousMountedRef.current = !!elements.floating;\n  });\n  useModernLayoutEffect(() => {\n    if (!open) {\n      keyRef.current = null;\n      focusItemOnOpenRef.current = focusItemOnOpen;\n    }\n  }, [open, focusItemOnOpen]);\n  const hasActiveIndex = activeIndex != null;\n  const item = React.useMemo(() => {\n    function syncCurrentTarget(currentTarget) {\n      if (!latestOpenRef.current) return;\n      const index = listRef.current.indexOf(currentTarget);\n      if (index !== -1 && indexRef.current !== index) {\n        indexRef.current = index;\n        onNavigate();\n      }\n    }\n    const props = {\n      onFocus(_ref) {\n        let {\n          currentTarget\n        } = _ref;\n        forceSyncFocusRef.current = true;\n        syncCurrentTarget(currentTarget);\n      },\n      onClick: _ref2 => {\n        let {\n          currentTarget\n        } = _ref2;\n        return currentTarget.focus({\n          preventScroll: true\n        });\n      },\n      // Safari\n      ...(focusItemOnHover && {\n        onMouseMove(_ref3) {\n          let {\n            currentTarget\n          } = _ref3;\n          forceSyncFocusRef.current = true;\n          forceScrollIntoViewRef.current = false;\n          syncCurrentTarget(currentTarget);\n        },\n        onPointerLeave(_ref4) {\n          let {\n            pointerType\n          } = _ref4;\n          if (!isPointerModalityRef.current || pointerType === 'touch') {\n            return;\n          }\n          forceSyncFocusRef.current = true;\n          indexRef.current = -1;\n          onNavigate();\n          if (!virtual) {\n            var _floatingFocusElement;\n            (_floatingFocusElement = floatingFocusElementRef.current) == null || _floatingFocusElement.focus({\n              preventScroll: true\n            });\n          }\n        }\n      })\n    };\n    return props;\n  }, [latestOpenRef, floatingFocusElementRef, focusItemOnHover, listRef, onNavigate, virtual]);\n  const getParentOrientation = React.useCallback(() => {\n    var _tree$nodesRef$curren;\n    return parentOrientation != null ? parentOrientation : tree == null || (_tree$nodesRef$curren = tree.nodesRef.current.find(node => node.id === parentId)) == null || (_tree$nodesRef$curren = _tree$nodesRef$curren.context) == null || (_tree$nodesRef$curren = _tree$nodesRef$curren.dataRef) == null ? void 0 : _tree$nodesRef$curren.current.orientation;\n  }, [parentId, tree, parentOrientation]);\n  const commonOnKeyDown = useEffectEvent(event => {\n    isPointerModalityRef.current = false;\n    forceSyncFocusRef.current = true;\n\n    // When composing a character, Chrome fires ArrowDown twice. Firefox/Safari\n    // don't appear to suffer from this. `event.isComposing` is avoided due to\n    // Safari not supporting it properly (although it's not needed in the first\n    // place for Safari, just avoiding any possible issues).\n    if (event.which === 229) {\n      return;\n    }\n\n    // If the floating element is animating out, ignore navigation. Otherwise,\n    // the `activeIndex` gets set to 0 despite not being open so the next time\n    // the user ArrowDowns, the first item won't be focused.\n    if (!latestOpenRef.current && event.currentTarget === floatingFocusElementRef.current) {\n      return;\n    }\n    if (nested && isCrossOrientationCloseKey(event.key, orientation, rtl, cols)) {\n      // If the nested list's close key is also the parent navigation key,\n      // let the parent navigate. Otherwise, stop propagating the event.\n      if (!isMainOrientationKey(event.key, getParentOrientation())) {\n        stopEvent(event);\n      }\n      onOpenChange(false, event.nativeEvent, 'list-navigation');\n      if (isHTMLElement(elements.domReference)) {\n        if (virtual) {\n          tree == null || tree.events.emit('virtualfocus', elements.domReference);\n        } else {\n          elements.domReference.focus();\n        }\n      }\n      return;\n    }\n    const currentIndex = indexRef.current;\n    const minIndex = getMinListIndex(listRef, disabledIndices);\n    const maxIndex = getMaxListIndex(listRef, disabledIndices);\n    if (!typeableComboboxReference) {\n      if (event.key === 'Home') {\n        stopEvent(event);\n        indexRef.current = minIndex;\n        onNavigate();\n      }\n      if (event.key === 'End') {\n        stopEvent(event);\n        indexRef.current = maxIndex;\n        onNavigate();\n      }\n    }\n\n    // Grid navigation.\n    if (cols > 1) {\n      const sizes = itemSizes || Array.from({\n        length: listRef.current.length\n      }, () => ({\n        width: 1,\n        height: 1\n      }));\n      // To calculate movements on the grid, we use hypothetical cell indices\n      // as if every item was 1x1, then convert back to real indices.\n      const cellMap = createGridCellMap(sizes, cols, dense);\n      const minGridIndex = cellMap.findIndex(index => index != null && !isListIndexDisabled(listRef, index, disabledIndices));\n      // last enabled index\n      const maxGridIndex = cellMap.reduce((foundIndex, index, cellIndex) => index != null && !isListIndexDisabled(listRef, index, disabledIndices) ? cellIndex : foundIndex, -1);\n      const index = cellMap[getGridNavigatedIndex({\n        current: cellMap.map(itemIndex => itemIndex != null ? listRef.current[itemIndex] : null)\n      }, {\n        event,\n        orientation,\n        loop,\n        rtl,\n        cols,\n        // treat undefined (empty grid spaces) as disabled indices so we\n        // don't end up in them\n        disabledIndices: getGridCellIndices([...((typeof disabledIndices !== 'function' ? disabledIndices : null) || listRef.current.map((_, index) => isListIndexDisabled(listRef, index, disabledIndices) ? index : undefined)), undefined], cellMap),\n        minIndex: minGridIndex,\n        maxIndex: maxGridIndex,\n        prevIndex: getGridCellIndexOfCorner(indexRef.current > maxIndex ? minIndex : indexRef.current, sizes, cellMap, cols,\n        // use a corner matching the edge closest to the direction\n        // we're moving in so we don't end up in the same item. Prefer\n        // top/left over bottom/right.\n        event.key === ARROW_DOWN ? 'bl' : event.key === (rtl ? ARROW_LEFT : ARROW_RIGHT) ? 'tr' : 'tl'),\n        stopEvent: true\n      })];\n      if (index != null) {\n        indexRef.current = index;\n        onNavigate();\n      }\n      if (orientation === 'both') {\n        return;\n      }\n    }\n    if (isMainOrientationKey(event.key, orientation)) {\n      stopEvent(event);\n\n      // Reset the index if no item is focused.\n      if (open && !virtual && activeElement(event.currentTarget.ownerDocument) === event.currentTarget) {\n        indexRef.current = isMainOrientationToEndKey(event.key, orientation, rtl) ? minIndex : maxIndex;\n        onNavigate();\n        return;\n      }\n      if (isMainOrientationToEndKey(event.key, orientation, rtl)) {\n        if (loop) {\n          indexRef.current = currentIndex >= maxIndex ? allowEscape && currentIndex !== listRef.current.length ? -1 : minIndex : findNonDisabledListIndex(listRef, {\n            startingIndex: currentIndex,\n            disabledIndices\n          });\n        } else {\n          indexRef.current = Math.min(maxIndex, findNonDisabledListIndex(listRef, {\n            startingIndex: currentIndex,\n            disabledIndices\n          }));\n        }\n      } else {\n        if (loop) {\n          indexRef.current = currentIndex <= minIndex ? allowEscape && currentIndex !== -1 ? listRef.current.length : maxIndex : findNonDisabledListIndex(listRef, {\n            startingIndex: currentIndex,\n            decrement: true,\n            disabledIndices\n          });\n        } else {\n          indexRef.current = Math.max(minIndex, findNonDisabledListIndex(listRef, {\n            startingIndex: currentIndex,\n            decrement: true,\n            disabledIndices\n          }));\n        }\n      }\n      if (isIndexOutOfListBounds(listRef, indexRef.current)) {\n        indexRef.current = -1;\n      }\n      onNavigate();\n    }\n  });\n  const ariaActiveDescendantProp = React.useMemo(() => {\n    return virtual && open && hasActiveIndex && {\n      'aria-activedescendant': virtualId || activeId\n    };\n  }, [virtual, open, hasActiveIndex, virtualId, activeId]);\n  const floating = React.useMemo(() => {\n    return {\n      'aria-orientation': orientation === 'both' ? undefined : orientation,\n      ...(!typeableComboboxReference ? ariaActiveDescendantProp : {}),\n      onKeyDown: commonOnKeyDown,\n      onPointerMove() {\n        isPointerModalityRef.current = true;\n      }\n    };\n  }, [ariaActiveDescendantProp, commonOnKeyDown, orientation, typeableComboboxReference]);\n  const reference = React.useMemo(() => {\n    function checkVirtualMouse(event) {\n      if (focusItemOnOpen === 'auto' && isVirtualClick(event.nativeEvent)) {\n        focusItemOnOpenRef.current = true;\n      }\n    }\n    function checkVirtualPointer(event) {\n      // `pointerdown` fires first, reset the state then perform the checks.\n      focusItemOnOpenRef.current = focusItemOnOpen;\n      if (focusItemOnOpen === 'auto' && isVirtualPointerEvent(event.nativeEvent)) {\n        focusItemOnOpenRef.current = true;\n      }\n    }\n    return {\n      ...ariaActiveDescendantProp,\n      onKeyDown(event) {\n        isPointerModalityRef.current = false;\n        const isArrowKey = event.key.startsWith('Arrow');\n        const isHomeOrEndKey = ['Home', 'End'].includes(event.key);\n        const isMoveKey = isArrowKey || isHomeOrEndKey;\n        const isCrossOpenKey = isCrossOrientationOpenKey(event.key, orientation, rtl);\n        const isCrossCloseKey = isCrossOrientationCloseKey(event.key, orientation, rtl, cols);\n        const isParentCrossOpenKey = isCrossOrientationOpenKey(event.key, getParentOrientation(), rtl);\n        const isMainKey = isMainOrientationKey(event.key, orientation);\n        const isNavigationKey = (nested ? isParentCrossOpenKey : isMainKey) || event.key === 'Enter' || event.key.trim() === '';\n        if (virtual && open) {\n          const rootNode = tree == null ? void 0 : tree.nodesRef.current.find(node => node.parentId == null);\n          const deepestNode = tree && rootNode ? getDeepestNode(tree.nodesRef.current, rootNode.id) : null;\n          if (isMoveKey && deepestNode && virtualItemRef) {\n            const eventObject = new KeyboardEvent('keydown', {\n              key: event.key,\n              bubbles: true\n            });\n            if (isCrossOpenKey || isCrossCloseKey) {\n              var _deepestNode$context, _deepestNode$context2;\n              const isCurrentTarget = ((_deepestNode$context = deepestNode.context) == null ? void 0 : _deepestNode$context.elements.domReference) === event.currentTarget;\n              const dispatchItem = isCrossCloseKey && !isCurrentTarget ? (_deepestNode$context2 = deepestNode.context) == null ? void 0 : _deepestNode$context2.elements.domReference : isCrossOpenKey ? listRef.current.find(item => (item == null ? void 0 : item.id) === activeId) : null;\n              if (dispatchItem) {\n                stopEvent(event);\n                dispatchItem.dispatchEvent(eventObject);\n                setVirtualId(undefined);\n              }\n            }\n            if ((isMainKey || isHomeOrEndKey) && deepestNode.context) {\n              if (deepestNode.context.open && deepestNode.parentId && event.currentTarget !== deepestNode.context.elements.domReference) {\n                var _deepestNode$context$;\n                stopEvent(event);\n                (_deepestNode$context$ = deepestNode.context.elements.domReference) == null || _deepestNode$context$.dispatchEvent(eventObject);\n                return;\n              }\n            }\n          }\n          return commonOnKeyDown(event);\n        }\n        // If a floating element should not open on arrow key down, avoid\n        // setting `activeIndex` while it's closed.\n        if (!open && !openOnArrowKeyDown && isArrowKey) {\n          return;\n        }\n        if (isNavigationKey) {\n          const isParentMainKey = isMainOrientationKey(event.key, getParentOrientation());\n          keyRef.current = nested && isParentMainKey ? null : event.key;\n        }\n        if (nested) {\n          if (isParentCrossOpenKey) {\n            stopEvent(event);\n            if (open) {\n              indexRef.current = getMinListIndex(listRef, disabledIndicesRef.current);\n              onNavigate();\n            } else {\n              onOpenChange(true, event.nativeEvent, 'list-navigation');\n            }\n          }\n          return;\n        }\n        if (isMainKey) {\n          if (selectedIndex != null) {\n            indexRef.current = selectedIndex;\n          }\n          stopEvent(event);\n          if (!open && openOnArrowKeyDown) {\n            onOpenChange(true, event.nativeEvent, 'list-navigation');\n          } else {\n            commonOnKeyDown(event);\n          }\n          if (open) {\n            onNavigate();\n          }\n        }\n      },\n      onFocus() {\n        if (open && !virtual) {\n          indexRef.current = -1;\n          onNavigate();\n        }\n      },\n      onPointerDown: checkVirtualPointer,\n      onPointerEnter: checkVirtualPointer,\n      onMouseDown: checkVirtualMouse,\n      onClick: checkVirtualMouse\n    };\n  }, [activeId, ariaActiveDescendantProp, cols, commonOnKeyDown, disabledIndicesRef, focusItemOnOpen, listRef, nested, onNavigate, onOpenChange, open, openOnArrowKeyDown, orientation, getParentOrientation, rtl, selectedIndex, tree, virtual, virtualItemRef]);\n  return React.useMemo(() => enabled ? {\n    reference,\n    floating,\n    item\n  } : {}, [enabled, reference, floating, item]);\n}\n\nconst componentRoleToAriaRoleMap = /*#__PURE__*/new Map([['select', 'listbox'], ['combobox', 'listbox'], ['label', false]]);\n\n/**\n * Adds base screen reader props to the reference and floating elements for a\n * given floating element `role`.\n * @see https://floating-ui.com/docs/useRole\n */\nfunction useRole(context, props) {\n  var _elements$domReferenc, _componentRoleToAriaR;\n  if (props === void 0) {\n    props = {};\n  }\n  const {\n    open,\n    elements,\n    floatingId: defaultFloatingId\n  } = context;\n  const {\n    enabled = true,\n    role = 'dialog'\n  } = props;\n  const defaultReferenceId = useId();\n  const referenceId = ((_elements$domReferenc = elements.domReference) == null ? void 0 : _elements$domReferenc.id) || defaultReferenceId;\n  const floatingId = React.useMemo(() => {\n    var _getFloatingFocusElem;\n    return ((_getFloatingFocusElem = getFloatingFocusElement(elements.floating)) == null ? void 0 : _getFloatingFocusElem.id) || defaultFloatingId;\n  }, [elements.floating, defaultFloatingId]);\n  const ariaRole = (_componentRoleToAriaR = componentRoleToAriaRoleMap.get(role)) != null ? _componentRoleToAriaR : role;\n  const parentId = useFloatingParentNodeId();\n  const isNested = parentId != null;\n  const reference = React.useMemo(() => {\n    if (ariaRole === 'tooltip' || role === 'label') {\n      return {\n        [\"aria-\" + (role === 'label' ? 'labelledby' : 'describedby')]: open ? floatingId : undefined\n      };\n    }\n    return {\n      'aria-expanded': open ? 'true' : 'false',\n      'aria-haspopup': ariaRole === 'alertdialog' ? 'dialog' : ariaRole,\n      'aria-controls': open ? floatingId : undefined,\n      ...(ariaRole === 'listbox' && {\n        role: 'combobox'\n      }),\n      ...(ariaRole === 'menu' && {\n        id: referenceId\n      }),\n      ...(ariaRole === 'menu' && isNested && {\n        role: 'menuitem'\n      }),\n      ...(role === 'select' && {\n        'aria-autocomplete': 'none'\n      }),\n      ...(role === 'combobox' && {\n        'aria-autocomplete': 'list'\n      })\n    };\n  }, [ariaRole, floatingId, isNested, open, referenceId, role]);\n  const floating = React.useMemo(() => {\n    const floatingProps = {\n      id: floatingId,\n      ...(ariaRole && {\n        role: ariaRole\n      })\n    };\n    if (ariaRole === 'tooltip' || role === 'label') {\n      return floatingProps;\n    }\n    return {\n      ...floatingProps,\n      ...(ariaRole === 'menu' && {\n        'aria-labelledby': referenceId\n      })\n    };\n  }, [ariaRole, floatingId, referenceId, role]);\n  const item = React.useCallback(_ref => {\n    let {\n      active,\n      selected\n    } = _ref;\n    const commonProps = {\n      role: 'option',\n      ...(active && {\n        id: floatingId + \"-fui-option\"\n      })\n    };\n\n    // For `menu`, we are unable to tell if the item is a `menuitemradio`\n    // or `menuitemcheckbox`. For backwards-compatibility reasons, also\n    // avoid defaulting to `menuitem` as it may overwrite custom role props.\n    switch (role) {\n      case 'select':\n        return {\n          ...commonProps,\n          'aria-selected': active && selected\n        };\n      case 'combobox':\n        {\n          return {\n            ...commonProps,\n            'aria-selected': selected\n          };\n        }\n    }\n    return {};\n  }, [floatingId, role]);\n  return React.useMemo(() => enabled ? {\n    reference,\n    floating,\n    item\n  } : {}, [enabled, reference, floating, item]);\n}\n\n// Converts a JS style key like `backgroundColor` to a CSS transition-property\n// like `background-color`.\nconst camelCaseToKebabCase = str => str.replace(/[A-Z]+(?![a-z])|[A-Z]/g, ($, ofs) => (ofs ? '-' : '') + $.toLowerCase());\nfunction execWithArgsOrReturn(valueOrFn, args) {\n  return typeof valueOrFn === 'function' ? valueOrFn(args) : valueOrFn;\n}\nfunction useDelayUnmount(open, durationMs) {\n  const [isMounted, setIsMounted] = React.useState(open);\n  if (open && !isMounted) {\n    setIsMounted(true);\n  }\n  React.useEffect(() => {\n    if (!open && isMounted) {\n      const timeout = setTimeout(() => setIsMounted(false), durationMs);\n      return () => clearTimeout(timeout);\n    }\n  }, [open, isMounted, durationMs]);\n  return isMounted;\n}\n/**\n * Provides a status string to apply CSS transitions to a floating element,\n * correctly handling placement-aware transitions.\n * @see https://floating-ui.com/docs/useTransition#usetransitionstatus\n */\nfunction useTransitionStatus(context, props) {\n  if (props === void 0) {\n    props = {};\n  }\n  const {\n    open,\n    elements: {\n      floating\n    }\n  } = context;\n  const {\n    duration = 250\n  } = props;\n  const isNumberDuration = typeof duration === 'number';\n  const closeDuration = (isNumberDuration ? duration : duration.close) || 0;\n  const [status, setStatus] = React.useState('unmounted');\n  const isMounted = useDelayUnmount(open, closeDuration);\n  if (!isMounted && status === 'close') {\n    setStatus('unmounted');\n  }\n  useModernLayoutEffect(() => {\n    if (!floating) return;\n    if (open) {\n      setStatus('initial');\n      const frame = requestAnimationFrame(() => {\n        // Ensure it opens before paint. With `FloatingDelayGroup`,\n        // this avoids a flicker when moving between floating elements\n        // to ensure one is always open with no missing frames.\n        ReactDOM.flushSync(() => {\n          setStatus('open');\n        });\n      });\n      return () => {\n        cancelAnimationFrame(frame);\n      };\n    }\n    setStatus('close');\n  }, [open, floating]);\n  return {\n    isMounted,\n    status\n  };\n}\n/**\n * Provides styles to apply CSS transitions to a floating element, correctly\n * handling placement-aware transitions. Wrapper around `useTransitionStatus`.\n * @see https://floating-ui.com/docs/useTransition#usetransitionstyles\n */\nfunction useTransitionStyles(context, props) {\n  if (props === void 0) {\n    props = {};\n  }\n  const {\n    initial: unstable_initial = {\n      opacity: 0\n    },\n    open: unstable_open,\n    close: unstable_close,\n    common: unstable_common,\n    duration = 250\n  } = props;\n  const placement = context.placement;\n  const side = placement.split('-')[0];\n  const fnArgs = React.useMemo(() => ({\n    side,\n    placement\n  }), [side, placement]);\n  const isNumberDuration = typeof duration === 'number';\n  const openDuration = (isNumberDuration ? duration : duration.open) || 0;\n  const closeDuration = (isNumberDuration ? duration : duration.close) || 0;\n  const [styles, setStyles] = React.useState(() => ({\n    ...execWithArgsOrReturn(unstable_common, fnArgs),\n    ...execWithArgsOrReturn(unstable_initial, fnArgs)\n  }));\n  const {\n    isMounted,\n    status\n  } = useTransitionStatus(context, {\n    duration\n  });\n  const initialRef = useLatestRef(unstable_initial);\n  const openRef = useLatestRef(unstable_open);\n  const closeRef = useLatestRef(unstable_close);\n  const commonRef = useLatestRef(unstable_common);\n  useModernLayoutEffect(() => {\n    const initialStyles = execWithArgsOrReturn(initialRef.current, fnArgs);\n    const closeStyles = execWithArgsOrReturn(closeRef.current, fnArgs);\n    const commonStyles = execWithArgsOrReturn(commonRef.current, fnArgs);\n    const openStyles = execWithArgsOrReturn(openRef.current, fnArgs) || Object.keys(initialStyles).reduce((acc, key) => {\n      acc[key] = '';\n      return acc;\n    }, {});\n    if (status === 'initial') {\n      setStyles(styles => ({\n        transitionProperty: styles.transitionProperty,\n        ...commonStyles,\n        ...initialStyles\n      }));\n    }\n    if (status === 'open') {\n      setStyles({\n        transitionProperty: Object.keys(openStyles).map(camelCaseToKebabCase).join(','),\n        transitionDuration: openDuration + \"ms\",\n        ...commonStyles,\n        ...openStyles\n      });\n    }\n    if (status === 'close') {\n      const styles = closeStyles || initialStyles;\n      setStyles({\n        transitionProperty: Object.keys(styles).map(camelCaseToKebabCase).join(','),\n        transitionDuration: closeDuration + \"ms\",\n        ...commonStyles,\n        ...styles\n      });\n    }\n  }, [closeDuration, closeRef, initialRef, openRef, commonRef, openDuration, status, fnArgs]);\n  return {\n    isMounted,\n    styles\n  };\n}\n\n/**\n * Provides a matching callback that can be used to focus an item as the user\n * types, often used in tandem with `useListNavigation()`.\n * @see https://floating-ui.com/docs/useTypeahead\n */\nfunction useTypeahead(context, props) {\n  var _ref;\n  const {\n    open,\n    dataRef\n  } = context;\n  const {\n    listRef,\n    activeIndex,\n    onMatch: unstable_onMatch,\n    onTypingChange: unstable_onTypingChange,\n    enabled = true,\n    findMatch = null,\n    resetMs = 750,\n    ignoreKeys = [],\n    selectedIndex = null\n  } = props;\n  const timeoutIdRef = React.useRef(-1);\n  const stringRef = React.useRef('');\n  const prevIndexRef = React.useRef((_ref = selectedIndex != null ? selectedIndex : activeIndex) != null ? _ref : -1);\n  const matchIndexRef = React.useRef(null);\n  const onMatch = useEffectEvent(unstable_onMatch);\n  const onTypingChange = useEffectEvent(unstable_onTypingChange);\n  const findMatchRef = useLatestRef(findMatch);\n  const ignoreKeysRef = useLatestRef(ignoreKeys);\n  useModernLayoutEffect(() => {\n    if (open) {\n      clearTimeoutIfSet(timeoutIdRef);\n      matchIndexRef.current = null;\n      stringRef.current = '';\n    }\n  }, [open]);\n  useModernLayoutEffect(() => {\n    // Sync arrow key navigation but not typeahead navigation.\n    if (open && stringRef.current === '') {\n      var _ref2;\n      prevIndexRef.current = (_ref2 = selectedIndex != null ? selectedIndex : activeIndex) != null ? _ref2 : -1;\n    }\n  }, [open, selectedIndex, activeIndex]);\n  const setTypingChange = useEffectEvent(value => {\n    if (value) {\n      if (!dataRef.current.typing) {\n        dataRef.current.typing = value;\n        onTypingChange(value);\n      }\n    } else {\n      if (dataRef.current.typing) {\n        dataRef.current.typing = value;\n        onTypingChange(value);\n      }\n    }\n  });\n  const onKeyDown = useEffectEvent(event => {\n    function getMatchingIndex(list, orderedList, string) {\n      const str = findMatchRef.current ? findMatchRef.current(orderedList, string) : orderedList.find(text => (text == null ? void 0 : text.toLocaleLowerCase().indexOf(string.toLocaleLowerCase())) === 0);\n      return str ? list.indexOf(str) : -1;\n    }\n    const listContent = listRef.current;\n    if (stringRef.current.length > 0 && stringRef.current[0] !== ' ') {\n      if (getMatchingIndex(listContent, listContent, stringRef.current) === -1) {\n        setTypingChange(false);\n      } else if (event.key === ' ') {\n        stopEvent(event);\n      }\n    }\n    if (listContent == null || ignoreKeysRef.current.includes(event.key) ||\n    // Character key.\n    event.key.length !== 1 ||\n    // Modifier key.\n    event.ctrlKey || event.metaKey || event.altKey) {\n      return;\n    }\n    if (open && event.key !== ' ') {\n      stopEvent(event);\n      setTypingChange(true);\n    }\n\n    // Bail out if the list contains a word like \"llama\" or \"aaron\". TODO:\n    // allow it in this case, too.\n    const allowRapidSuccessionOfFirstLetter = listContent.every(text => {\n      var _text$, _text$2;\n      return text ? ((_text$ = text[0]) == null ? void 0 : _text$.toLocaleLowerCase()) !== ((_text$2 = text[1]) == null ? void 0 : _text$2.toLocaleLowerCase()) : true;\n    });\n\n    // Allows the user to cycle through items that start with the same letter\n    // in rapid succession.\n    if (allowRapidSuccessionOfFirstLetter && stringRef.current === event.key) {\n      stringRef.current = '';\n      prevIndexRef.current = matchIndexRef.current;\n    }\n    stringRef.current += event.key;\n    clearTimeoutIfSet(timeoutIdRef);\n    timeoutIdRef.current = window.setTimeout(() => {\n      stringRef.current = '';\n      prevIndexRef.current = matchIndexRef.current;\n      setTypingChange(false);\n    }, resetMs);\n    const prevIndex = prevIndexRef.current;\n    const index = getMatchingIndex(listContent, [...listContent.slice((prevIndex || 0) + 1), ...listContent.slice(0, (prevIndex || 0) + 1)], stringRef.current);\n    if (index !== -1) {\n      onMatch(index);\n      matchIndexRef.current = index;\n    } else if (event.key !== ' ') {\n      stringRef.current = '';\n      setTypingChange(false);\n    }\n  });\n  const reference = React.useMemo(() => ({\n    onKeyDown\n  }), [onKeyDown]);\n  const floating = React.useMemo(() => {\n    return {\n      onKeyDown,\n      onKeyUp(event) {\n        if (event.key === ' ') {\n          setTypingChange(false);\n        }\n      }\n    };\n  }, [onKeyDown, setTypingChange]);\n  return React.useMemo(() => enabled ? {\n    reference,\n    floating\n  } : {}, [enabled, reference, floating]);\n}\n\nfunction getArgsWithCustomFloatingHeight(state, height) {\n  return {\n    ...state,\n    rects: {\n      ...state.rects,\n      floating: {\n        ...state.rects.floating,\n        height\n      }\n    }\n  };\n}\n/**\n * Positions the floating element such that an inner element inside of it is\n * anchored to the reference element.\n * @see https://floating-ui.com/docs/inner\n * @deprecated\n */\nconst inner = props => ({\n  name: 'inner',\n  options: props,\n  async fn(state) {\n    const {\n      listRef,\n      overflowRef,\n      onFallbackChange,\n      offset: innerOffset = 0,\n      index = 0,\n      minItemsVisible = 4,\n      referenceOverflowThreshold = 0,\n      scrollRef,\n      ...detectOverflowOptions\n    } = evaluate(props, state);\n    const {\n      rects,\n      elements: {\n        floating\n      }\n    } = state;\n    const item = listRef.current[index];\n    const scrollEl = (scrollRef == null ? void 0 : scrollRef.current) || floating;\n\n    // Valid combinations:\n    // 1. Floating element is the scrollRef and has a border (default)\n    // 2. Floating element is not the scrollRef, floating element has a border\n    // 3. Floating element is not the scrollRef, scrollRef has a border\n    // Floating > {...getFloatingProps()} wrapper > scrollRef > items is not\n    // allowed as VoiceOver doesn't work.\n    const clientTop = floating.clientTop || scrollEl.clientTop;\n    const floatingIsBordered = floating.clientTop !== 0;\n    const scrollElIsBordered = scrollEl.clientTop !== 0;\n    const floatingIsScrollEl = floating === scrollEl;\n    if (process.env.NODE_ENV !== \"production\") {\n      if (!state.placement.startsWith('bottom')) {\n        warn('`placement` side must be \"bottom\" when using the `inner`', 'middleware.');\n      }\n    }\n    if (!item) {\n      return {};\n    }\n    const nextArgs = {\n      ...state,\n      ...(await offset(-item.offsetTop - floating.clientTop - rects.reference.height / 2 - item.offsetHeight / 2 - innerOffset).fn(state))\n    };\n    const overflow = await detectOverflow(getArgsWithCustomFloatingHeight(nextArgs, scrollEl.scrollHeight + clientTop + floating.clientTop), detectOverflowOptions);\n    const refOverflow = await detectOverflow(nextArgs, {\n      ...detectOverflowOptions,\n      elementContext: 'reference'\n    });\n    const diffY = max(0, overflow.top);\n    const nextY = nextArgs.y + diffY;\n    const isScrollable = scrollEl.scrollHeight > scrollEl.clientHeight;\n    const rounder = isScrollable ? v => v : round;\n    const maxHeight = rounder(max(0, scrollEl.scrollHeight + (floatingIsBordered && floatingIsScrollEl || scrollElIsBordered ? clientTop * 2 : 0) - diffY - max(0, overflow.bottom)));\n    scrollEl.style.maxHeight = maxHeight + \"px\";\n    scrollEl.scrollTop = diffY;\n\n    // There is not enough space, fallback to standard anchored positioning\n    if (onFallbackChange) {\n      const shouldFallback = scrollEl.offsetHeight < item.offsetHeight * min(minItemsVisible, listRef.current.length) - 1 || refOverflow.top >= -referenceOverflowThreshold || refOverflow.bottom >= -referenceOverflowThreshold;\n      ReactDOM.flushSync(() => onFallbackChange(shouldFallback));\n    }\n    if (overflowRef) {\n      overflowRef.current = await detectOverflow(getArgsWithCustomFloatingHeight({\n        ...nextArgs,\n        y: nextY\n      }, scrollEl.offsetHeight + clientTop + floating.clientTop), detectOverflowOptions);\n    }\n    return {\n      y: nextY\n    };\n  }\n});\n/**\n * Changes the `inner` middleware's `offset` upon a `wheel` event to\n * expand the floating element's height, revealing more list items.\n * @see https://floating-ui.com/docs/inner\n * @deprecated\n */\nfunction useInnerOffset(context, props) {\n  const {\n    open,\n    elements\n  } = context;\n  const {\n    enabled = true,\n    overflowRef,\n    scrollRef,\n    onChange: unstable_onChange\n  } = props;\n  const onChange = useEffectEvent(unstable_onChange);\n  const controlledScrollingRef = React.useRef(false);\n  const prevScrollTopRef = React.useRef(null);\n  const initialOverflowRef = React.useRef(null);\n  React.useEffect(() => {\n    if (!enabled) return;\n    function onWheel(e) {\n      if (e.ctrlKey || !el || overflowRef.current == null) {\n        return;\n      }\n      const dY = e.deltaY;\n      const isAtTop = overflowRef.current.top >= -0.5;\n      const isAtBottom = overflowRef.current.bottom >= -0.5;\n      const remainingScroll = el.scrollHeight - el.clientHeight;\n      const sign = dY < 0 ? -1 : 1;\n      const method = dY < 0 ? 'max' : 'min';\n      if (el.scrollHeight <= el.clientHeight) {\n        return;\n      }\n      if (!isAtTop && dY > 0 || !isAtBottom && dY < 0) {\n        e.preventDefault();\n        ReactDOM.flushSync(() => {\n          onChange(d => d + Math[method](dY, remainingScroll * sign));\n        });\n      } else if (/firefox/i.test(getUserAgent())) {\n        // Needed to propagate scrolling during momentum scrolling phase once\n        // it gets limited by the boundary. UX improvement, not critical.\n        el.scrollTop += dY;\n      }\n    }\n    const el = (scrollRef == null ? void 0 : scrollRef.current) || elements.floating;\n    if (open && el) {\n      el.addEventListener('wheel', onWheel);\n\n      // Wait for the position to be ready.\n      requestAnimationFrame(() => {\n        prevScrollTopRef.current = el.scrollTop;\n        if (overflowRef.current != null) {\n          initialOverflowRef.current = {\n            ...overflowRef.current\n          };\n        }\n      });\n      return () => {\n        prevScrollTopRef.current = null;\n        initialOverflowRef.current = null;\n        el.removeEventListener('wheel', onWheel);\n      };\n    }\n  }, [enabled, open, elements.floating, overflowRef, scrollRef, onChange]);\n  const floating = React.useMemo(() => ({\n    onKeyDown() {\n      controlledScrollingRef.current = true;\n    },\n    onWheel() {\n      controlledScrollingRef.current = false;\n    },\n    onPointerMove() {\n      controlledScrollingRef.current = false;\n    },\n    onScroll() {\n      const el = (scrollRef == null ? void 0 : scrollRef.current) || elements.floating;\n      if (!overflowRef.current || !el || !controlledScrollingRef.current) {\n        return;\n      }\n      if (prevScrollTopRef.current !== null) {\n        const scrollDiff = el.scrollTop - prevScrollTopRef.current;\n        if (overflowRef.current.bottom < -0.5 && scrollDiff < -1 || overflowRef.current.top < -0.5 && scrollDiff > 1) {\n          ReactDOM.flushSync(() => onChange(d => d + scrollDiff));\n        }\n      }\n\n      // [Firefox] Wait for the height change to have been applied.\n      requestAnimationFrame(() => {\n        prevScrollTopRef.current = el.scrollTop;\n      });\n    }\n  }), [elements.floating, onChange, overflowRef, scrollRef]);\n  return React.useMemo(() => enabled ? {\n    floating\n  } : {}, [enabled, floating]);\n}\n\nfunction getNodeChildren(nodes, id, onlyOpenChildren) {\n  if (onlyOpenChildren === void 0) {\n    onlyOpenChildren = true;\n  }\n  const directChildren = nodes.filter(node => {\n    var _node$context;\n    return node.parentId === id && (!onlyOpenChildren || ((_node$context = node.context) == null ? void 0 : _node$context.open));\n  });\n  return directChildren.flatMap(child => [child, ...getNodeChildren(nodes, child.id, onlyOpenChildren)]);\n}\n\nfunction isPointInPolygon(point, polygon) {\n  const [x, y] = point;\n  let isInside = false;\n  const length = polygon.length;\n  for (let i = 0, j = length - 1; i < length; j = i++) {\n    const [xi, yi] = polygon[i] || [0, 0];\n    const [xj, yj] = polygon[j] || [0, 0];\n    const intersect = yi >= y !== yj >= y && x <= (xj - xi) * (y - yi) / (yj - yi) + xi;\n    if (intersect) {\n      isInside = !isInside;\n    }\n  }\n  return isInside;\n}\nfunction isInside(point, rect) {\n  return point[0] >= rect.x && point[0] <= rect.x + rect.width && point[1] >= rect.y && point[1] <= rect.y + rect.height;\n}\n/**\n * Generates a safe polygon area that the user can traverse without closing the\n * floating element once leaving the reference element.\n * @see https://floating-ui.com/docs/useHover#safepolygon\n */\nfunction safePolygon(options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    buffer = 0.5,\n    blockPointerEvents = false,\n    requireIntent = true\n  } = options;\n  const timeoutRef = {\n    current: -1\n  };\n  let hasLanded = false;\n  let lastX = null;\n  let lastY = null;\n  let lastCursorTime = performance.now();\n  function getCursorSpeed(x, y) {\n    const currentTime = performance.now();\n    const elapsedTime = currentTime - lastCursorTime;\n    if (lastX === null || lastY === null || elapsedTime === 0) {\n      lastX = x;\n      lastY = y;\n      lastCursorTime = currentTime;\n      return null;\n    }\n    const deltaX = x - lastX;\n    const deltaY = y - lastY;\n    const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n    const speed = distance / elapsedTime; // px / ms\n\n    lastX = x;\n    lastY = y;\n    lastCursorTime = currentTime;\n    return speed;\n  }\n  const fn = _ref => {\n    let {\n      x,\n      y,\n      placement,\n      elements,\n      onClose,\n      nodeId,\n      tree\n    } = _ref;\n    return function onMouseMove(event) {\n      function close() {\n        clearTimeoutIfSet(timeoutRef);\n        onClose();\n      }\n      clearTimeoutIfSet(timeoutRef);\n      if (!elements.domReference || !elements.floating || placement == null || x == null || y == null) {\n        return;\n      }\n      const {\n        clientX,\n        clientY\n      } = event;\n      const clientPoint = [clientX, clientY];\n      const target = getTarget(event);\n      const isLeave = event.type === 'mouseleave';\n      const isOverFloatingEl = contains(elements.floating, target);\n      const isOverReferenceEl = contains(elements.domReference, target);\n      const refRect = elements.domReference.getBoundingClientRect();\n      const rect = elements.floating.getBoundingClientRect();\n      const side = placement.split('-')[0];\n      const cursorLeaveFromRight = x > rect.right - rect.width / 2;\n      const cursorLeaveFromBottom = y > rect.bottom - rect.height / 2;\n      const isOverReferenceRect = isInside(clientPoint, refRect);\n      const isFloatingWider = rect.width > refRect.width;\n      const isFloatingTaller = rect.height > refRect.height;\n      const left = (isFloatingWider ? refRect : rect).left;\n      const right = (isFloatingWider ? refRect : rect).right;\n      const top = (isFloatingTaller ? refRect : rect).top;\n      const bottom = (isFloatingTaller ? refRect : rect).bottom;\n      if (isOverFloatingEl) {\n        hasLanded = true;\n        if (!isLeave) {\n          return;\n        }\n      }\n      if (isOverReferenceEl) {\n        hasLanded = false;\n      }\n      if (isOverReferenceEl && !isLeave) {\n        hasLanded = true;\n        return;\n      }\n\n      // Prevent overlapping floating element from being stuck in an open-close\n      // loop: https://github.com/floating-ui/floating-ui/issues/1910\n      if (isLeave && isElement(event.relatedTarget) && contains(elements.floating, event.relatedTarget)) {\n        return;\n      }\n\n      // If any nested child is open, abort.\n      if (tree && getNodeChildren(tree.nodesRef.current, nodeId).length) {\n        return;\n      }\n\n      // If the pointer is leaving from the opposite side, the \"buffer\" logic\n      // creates a point where the floating element remains open, but should be\n      // ignored.\n      // A constant of 1 handles floating point rounding errors.\n      if (side === 'top' && y >= refRect.bottom - 1 || side === 'bottom' && y <= refRect.top + 1 || side === 'left' && x >= refRect.right - 1 || side === 'right' && x <= refRect.left + 1) {\n        return close();\n      }\n\n      // Ignore when the cursor is within the rectangular trough between the\n      // two elements. Since the triangle is created from the cursor point,\n      // which can start beyond the ref element's edge, traversing back and\n      // forth from the ref to the floating element can cause it to close. This\n      // ensures it always remains open in that case.\n      let rectPoly = [];\n      switch (side) {\n        case 'top':\n          rectPoly = [[left, refRect.top + 1], [left, rect.bottom - 1], [right, rect.bottom - 1], [right, refRect.top + 1]];\n          break;\n        case 'bottom':\n          rectPoly = [[left, rect.top + 1], [left, refRect.bottom - 1], [right, refRect.bottom - 1], [right, rect.top + 1]];\n          break;\n        case 'left':\n          rectPoly = [[rect.right - 1, bottom], [rect.right - 1, top], [refRect.left + 1, top], [refRect.left + 1, bottom]];\n          break;\n        case 'right':\n          rectPoly = [[refRect.right - 1, bottom], [refRect.right - 1, top], [rect.left + 1, top], [rect.left + 1, bottom]];\n          break;\n      }\n      function getPolygon(_ref2) {\n        let [x, y] = _ref2;\n        switch (side) {\n          case 'top':\n            {\n              const cursorPointOne = [isFloatingWider ? x + buffer / 2 : cursorLeaveFromRight ? x + buffer * 4 : x - buffer * 4, y + buffer + 1];\n              const cursorPointTwo = [isFloatingWider ? x - buffer / 2 : cursorLeaveFromRight ? x + buffer * 4 : x - buffer * 4, y + buffer + 1];\n              const commonPoints = [[rect.left, cursorLeaveFromRight ? rect.bottom - buffer : isFloatingWider ? rect.bottom - buffer : rect.top], [rect.right, cursorLeaveFromRight ? isFloatingWider ? rect.bottom - buffer : rect.top : rect.bottom - buffer]];\n              return [cursorPointOne, cursorPointTwo, ...commonPoints];\n            }\n          case 'bottom':\n            {\n              const cursorPointOne = [isFloatingWider ? x + buffer / 2 : cursorLeaveFromRight ? x + buffer * 4 : x - buffer * 4, y - buffer];\n              const cursorPointTwo = [isFloatingWider ? x - buffer / 2 : cursorLeaveFromRight ? x + buffer * 4 : x - buffer * 4, y - buffer];\n              const commonPoints = [[rect.left, cursorLeaveFromRight ? rect.top + buffer : isFloatingWider ? rect.top + buffer : rect.bottom], [rect.right, cursorLeaveFromRight ? isFloatingWider ? rect.top + buffer : rect.bottom : rect.top + buffer]];\n              return [cursorPointOne, cursorPointTwo, ...commonPoints];\n            }\n          case 'left':\n            {\n              const cursorPointOne = [x + buffer + 1, isFloatingTaller ? y + buffer / 2 : cursorLeaveFromBottom ? y + buffer * 4 : y - buffer * 4];\n              const cursorPointTwo = [x + buffer + 1, isFloatingTaller ? y - buffer / 2 : cursorLeaveFromBottom ? y + buffer * 4 : y - buffer * 4];\n              const commonPoints = [[cursorLeaveFromBottom ? rect.right - buffer : isFloatingTaller ? rect.right - buffer : rect.left, rect.top], [cursorLeaveFromBottom ? isFloatingTaller ? rect.right - buffer : rect.left : rect.right - buffer, rect.bottom]];\n              return [...commonPoints, cursorPointOne, cursorPointTwo];\n            }\n          case 'right':\n            {\n              const cursorPointOne = [x - buffer, isFloatingTaller ? y + buffer / 2 : cursorLeaveFromBottom ? y + buffer * 4 : y - buffer * 4];\n              const cursorPointTwo = [x - buffer, isFloatingTaller ? y - buffer / 2 : cursorLeaveFromBottom ? y + buffer * 4 : y - buffer * 4];\n              const commonPoints = [[cursorLeaveFromBottom ? rect.left + buffer : isFloatingTaller ? rect.left + buffer : rect.right, rect.top], [cursorLeaveFromBottom ? isFloatingTaller ? rect.left + buffer : rect.right : rect.left + buffer, rect.bottom]];\n              return [cursorPointOne, cursorPointTwo, ...commonPoints];\n            }\n        }\n      }\n      if (isPointInPolygon([clientX, clientY], rectPoly)) {\n        return;\n      }\n      if (hasLanded && !isOverReferenceRect) {\n        return close();\n      }\n      if (!isLeave && requireIntent) {\n        const cursorSpeed = getCursorSpeed(event.clientX, event.clientY);\n        const cursorSpeedThreshold = 0.1;\n        if (cursorSpeed !== null && cursorSpeed < cursorSpeedThreshold) {\n          return close();\n        }\n      }\n      if (!isPointInPolygon([clientX, clientY], getPolygon([x, y]))) {\n        close();\n      } else if (!hasLanded && requireIntent) {\n        timeoutRef.current = window.setTimeout(close, 40);\n      }\n    };\n  };\n  fn.__options = {\n    blockPointerEvents\n  };\n  return fn;\n}\n\nexport { Composite, CompositeItem, FloatingArrow, FloatingDelayGroup, FloatingFocusManager, FloatingList, FloatingNode, FloatingOverlay, FloatingPortal, FloatingTree, NextFloatingDelayGroup, inner, safePolygon, useClick, useClientPoint, useDelayGroup, useDelayGroupContext, useDismiss, useFloating, useFloatingNodeId, useFloatingParentNodeId, useFloatingPortalNode, useFloatingRootContext, useFloatingTree, useFocus, useHover, useId, useInnerOffset, useInteractions, useListItem, useListNavigation, useMergeRefs, useNextDelayGroup, useRole, useTransitionStatus, useTransitionStyles, useTypeahead };\n","/*!\n  react-datepicker v8.4.0\n  https://github.com/Hacker0x01/react-datepicker\n  Released under the MIT License.\n*/\nimport { clsx } from 'clsx';\nimport React, { useRef, useCallback, useEffect, cloneElement, Component, createRef, createElement } from 'react';\nimport { isSameDay as isSameDay$1, isWithinInterval, startOfWeek, format, startOfDay, endOfDay, isEqual as isEqual$1, parseISO, toDate, differenceInCalendarDays, isValid as isValid$1, isBefore, getISOWeek, isSameMonth as isSameMonth$1, isSameQuarter as isSameQuarter$1, getYear, getMonth, getQuarter, startOfMonth, startOfQuarter, endOfMonth, setMonth, setQuarter, isSameYear as isSameYear$1, setHours, getHours, setMinutes, getMinutes, setSeconds, getSeconds, addHours, addMinutes, addSeconds, isAfter, startOfYear, endOfYear, min, max, subMonths, differenceInCalendarMonths, subQuarters, differenceInCalendarQuarters, subYears, differenceInCalendarYears, addMonths, addQuarters, addYears, isDate, parse, endOfWeek, getDay, getDate, addDays, addWeeks, getTime, setYear, differenceInDays, subWeeks, subDays } from 'date-fns';\nimport { useFloating, autoUpdate, flip, offset, arrow, FloatingArrow } from '@floating-ui/react';\nimport ReactDOM from 'react-dom';\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***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar _extendStatics = function extendStatics(d, b) {\n  _extendStatics = Object.setPrototypeOf || {\n    __proto__: []\n  } instanceof Array && function (d, b) {\n    d.__proto__ = b;\n  } || function (d, b) {\n    for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n  };\n  return _extendStatics(d, b);\n};\nfunction __extends(d, b) {\n  if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n  _extendStatics(d, b);\n  function __() {\n    this.constructor = d;\n  }\n  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\nvar _assign = function __assign() {\n  _assign = Object.assign || function __assign(t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n      s = arguments[i];\n      for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n    }\n    return t;\n  };\n  return _assign.apply(this, arguments);\n};\nfunction __spreadArray(to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n    if (ar || !(i in from)) {\n      if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n      ar[i] = from[i];\n    }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n}\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n  var e = new Error(message);\n  return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nvar CalendarContainer = function (_a) {\n    var _b = _a.showTimeSelectOnly, showTimeSelectOnly = _b === void 0 ? false : _b, _c = _a.showTime, showTime = _c === void 0 ? false : _c, className = _a.className, children = _a.children;\n    var ariaLabel = showTimeSelectOnly\n        ? \"Choose Time\"\n        : \"Choose Date\".concat(showTime ? \" and Time\" : \"\");\n    return (React.createElement(\"div\", { className: className, role: \"dialog\", \"aria-label\": ariaLabel, \"aria-modal\": \"true\" }, children));\n};\n\nvar useDetectClickOutside = function (onClickOutside, ignoreClass) {\n    var ref = useRef(null);\n    var onClickOutsideRef = useRef(onClickOutside);\n    onClickOutsideRef.current = onClickOutside;\n    var handleClickOutside = useCallback(function (event) {\n        var _a;\n        var target = (event.composed &&\n            event.composedPath &&\n            event\n                .composedPath()\n                .find(function (eventTarget) { return eventTarget instanceof Node; })) ||\n            event.target;\n        if (ref.current && !ref.current.contains(target)) {\n            if (!(ignoreClass &&\n                target instanceof HTMLElement &&\n                target.classList.contains(ignoreClass))) {\n                (_a = onClickOutsideRef.current) === null || _a === void 0 ? void 0 : _a.call(onClickOutsideRef, event);\n            }\n        }\n    }, [ignoreClass]);\n    useEffect(function () {\n        document.addEventListener(\"mousedown\", handleClickOutside);\n        return function () {\n            document.removeEventListener(\"mousedown\", handleClickOutside);\n        };\n    }, [handleClickOutside]);\n    return ref;\n};\nvar ClickOutsideWrapper = function (_a) {\n    var children = _a.children, onClickOutside = _a.onClickOutside, className = _a.className, containerRef = _a.containerRef, style = _a.style, ignoreClass = _a.ignoreClass;\n    var detectRef = useDetectClickOutside(onClickOutside, ignoreClass);\n    return (React.createElement(\"div\", { className: className, style: style, ref: function (node) {\n            detectRef.current = node;\n            if (containerRef) {\n                containerRef.current = node;\n            }\n        } }, children));\n};\n\nvar KeyType;\n(function (KeyType) {\n    KeyType[\"ArrowUp\"] = \"ArrowUp\";\n    KeyType[\"ArrowDown\"] = \"ArrowDown\";\n    KeyType[\"ArrowLeft\"] = \"ArrowLeft\";\n    KeyType[\"ArrowRight\"] = \"ArrowRight\";\n    KeyType[\"PageUp\"] = \"PageUp\";\n    KeyType[\"PageDown\"] = \"PageDown\";\n    KeyType[\"Home\"] = \"Home\";\n    KeyType[\"End\"] = \"End\";\n    KeyType[\"Enter\"] = \"Enter\";\n    KeyType[\"Space\"] = \" \";\n    KeyType[\"Tab\"] = \"Tab\";\n    KeyType[\"Escape\"] = \"Escape\";\n    KeyType[\"Backspace\"] = \"Backspace\";\n    KeyType[\"X\"] = \"x\";\n})(KeyType || (KeyType = {}));\nfunction getLocaleScope() {\n    // Use this cast to avoid messing with users globalThis (like window) and the rest of keys in the globalThis object we don't care about\n    var scope = (typeof window !== \"undefined\"\n        ? window\n        : globalThis);\n    return scope;\n}\nvar DEFAULT_YEAR_ITEM_NUMBER = 12;\n// ** Date Constructors **\nfunction newDate(value) {\n    if (value == null) {\n        return new Date();\n    }\n    var d = typeof value === \"string\" ? parseISO(value) : toDate(value);\n    return isValid(d) ? d : new Date();\n}\n/**\n * Parses a date.\n *\n * @param value - The string representing the Date in a parsable form, e.g., ISO 1861\n * @param dateFormat - The date format.\n * @param locale - The locale.\n * @param strictParsing - The strict parsing flag.\n * @param refDate - The base date to be passed to date-fns parse() function.\n * @returns - The parsed date or null.\n */\nfunction parseDate(value, dateFormat, locale, strictParsing, refDate) {\n    if (refDate === void 0) { refDate = newDate(); }\n    var localeObject = getLocaleObject(locale) || getLocaleObject(getDefaultLocale());\n    var formats = Array.isArray(dateFormat) ? dateFormat : [dateFormat];\n    for (var _i = 0, formats_1 = formats; _i < formats_1.length; _i++) {\n        var format_1 = formats_1[_i];\n        var parsedDate = parse(value, format_1, refDate, {\n            locale: localeObject,\n            useAdditionalWeekYearTokens: true,\n            useAdditionalDayOfYearTokens: true,\n        });\n        if (isValid(parsedDate) &&\n            (!strictParsing || value === formatDate(parsedDate, format_1, locale))) {\n            return parsedDate;\n        }\n    }\n    return null;\n}\n/**\n * Checks if a given date is valid and not before the minimum date.\n * @param date - The date to be checked.\n * @param minDate - The minimum date allowed. If not provided, defaults to \"1/1/1800\".\n * @returns A boolean value indicating whether the date is valid and not before the minimum date.\n */\nfunction isValid(date, minDate) {\n    /* the fallback date is essential to not break test case\n     * `should auto update calendar when the updated date text is after props.minDate`\n     * and backward compatibility respectfully\n     */\n    return isValid$1(date) && !isBefore(date, new Date(\"1/1/1800\"));\n}\n// ** Date Formatting **\n/**\n * Formats a date.\n *\n * @param date - The date.\n * @param formatStr - The format string.\n * @param locale - The locale.\n * @returns - The formatted date.\n */\nfunction formatDate(date, formatStr, locale) {\n    if (locale === \"en\") {\n        return format(date, formatStr, {\n            useAdditionalWeekYearTokens: true,\n            useAdditionalDayOfYearTokens: true,\n        });\n    }\n    var localeObj = locale ? getLocaleObject(locale) : undefined;\n    if (locale && !localeObj) {\n        console.warn(\"A locale object was not found for the provided string [\\\"\".concat(locale, \"\\\"].\"));\n    }\n    localeObj = localeObj || getLocaleObject(getDefaultLocale());\n    return format(date, formatStr, {\n        locale: localeObj,\n        useAdditionalWeekYearTokens: true,\n        useAdditionalDayOfYearTokens: true,\n    });\n}\n/**\n * Safely formats a date.\n *\n * @param date - The date.\n * @param options - An object containing the dateFormat and locale.\n * @returns - The formatted date or an empty string.\n */\nfunction safeDateFormat(date, _a) {\n    var dateFormat = _a.dateFormat, locale = _a.locale;\n    var formatStr = (Array.isArray(dateFormat) && dateFormat.length > 0\n        ? dateFormat[0]\n        : dateFormat); // Cast to string because it's impossible to get `string | string[] | undefined` here and typescript doesn't know that\n    return (date && formatDate(date, formatStr, locale)) || \"\";\n}\n/**\n * Used as a delimiter to separate two dates when formatting a date range\n */\nvar DATE_RANGE_SEPARATOR = \" - \";\n/**\n * Safely formats a date range.\n *\n * @param startDate - The start date.\n * @param endDate - The end date.\n * @param props - The props.\n * @returns - The formatted date range or an empty string.\n */\nfunction safeDateRangeFormat(startDate, endDate, props) {\n    if (!startDate) {\n        return \"\";\n    }\n    var formattedStartDate = safeDateFormat(startDate, props);\n    var formattedEndDate = endDate ? safeDateFormat(endDate, props) : \"\";\n    return \"\".concat(formattedStartDate).concat(DATE_RANGE_SEPARATOR).concat(formattedEndDate);\n}\n/**\n * Safely formats multiple dates.\n *\n * @param dates - The dates.\n * @param props - The props.\n * @returns - The formatted dates or an empty string.\n */\nfunction safeMultipleDatesFormat(dates, props) {\n    if (!(dates === null || dates === void 0 ? void 0 : dates.length)) {\n        return \"\";\n    }\n    var formattedFirstDate = dates[0] ? safeDateFormat(dates[0], props) : \"\";\n    if (dates.length === 1) {\n        return formattedFirstDate;\n    }\n    if (dates.length === 2 && dates[1]) {\n        var formattedSecondDate = safeDateFormat(dates[1], props);\n        return \"\".concat(formattedFirstDate, \", \").concat(formattedSecondDate);\n    }\n    var extraDatesCount = dates.length - 1;\n    return \"\".concat(formattedFirstDate, \" (+\").concat(extraDatesCount, \")\");\n}\n// ** Date Setters **\n/**\n * Sets the time for a given date.\n *\n * @param date - The date.\n * @param time - An object containing the hour, minute, and second.\n * @returns - The date with the time set.\n */\nfunction setTime(date, _a) {\n    var _b = _a.hour, hour = _b === void 0 ? 0 : _b, _c = _a.minute, minute = _c === void 0 ? 0 : _c, _d = _a.second, second = _d === void 0 ? 0 : _d;\n    return setHours(setMinutes(setSeconds(date, second), minute), hour);\n}\n/**\n * Gets the week of the year for a given date.\n *\n * @param date - The date.\n * @returns - The week of the year.\n */\nfunction getWeek(date) {\n    return getISOWeek(date);\n}\n/**\n * Gets the day of the week code for a given day.\n *\n * @param day - The day.\n * @param locale - The locale.\n * @returns - The day of the week code.\n */\nfunction getDayOfWeekCode(day, locale) {\n    return formatDate(day, \"ddd\", locale);\n}\n// *** Start of ***\n/**\n * Gets the start of the day for a given date.\n *\n * @param date - The date.\n * @returns - The start of the day.\n */\nfunction getStartOfDay(date) {\n    return startOfDay(date);\n}\n/**\n * Gets the start of the week for a given date.\n *\n * @param date - The date.\n * @param locale - The locale.\n * @param calendarStartDay - The day the calendar starts on.\n * @returns - The start of the week.\n */\nfunction getStartOfWeek(date, locale, calendarStartDay) {\n    var localeObj = locale\n        ? getLocaleObject(locale)\n        : getLocaleObject(getDefaultLocale());\n    return startOfWeek(date, {\n        locale: localeObj,\n        weekStartsOn: calendarStartDay,\n    });\n}\n/**\n * Gets the start of the month for a given date.\n *\n * @param date - The date.\n * @returns - The start of the month.\n */\nfunction getStartOfMonth(date) {\n    return startOfMonth(date);\n}\n/**\n * Gets the start of the year for a given date.\n *\n * @param date - The date.\n * @returns - The start of the year.\n */\nfunction getStartOfYear(date) {\n    return startOfYear(date);\n}\n/**\n * Gets the start of the quarter for a given date.\n *\n * @param date - The date.\n * @returns - The start of the quarter.\n */\nfunction getStartOfQuarter(date) {\n    return startOfQuarter(date);\n}\n/**\n * Gets the start of today.\n *\n * @returns - The start of today.\n */\nfunction getStartOfToday() {\n    return startOfDay(newDate());\n}\n// *** End of ***\n/**\n * Gets the end of the day for a given date.\n *\n * @param date - The date.\n * @returns - The end of the day.\n */\nfunction getEndOfDay(date) {\n    return endOfDay(date);\n}\n/**\n * Gets the end of the week for a given date.\n *\n * @param date - The date.\n * @returns - The end of the week.\n */\nfunction getEndOfWeek(date) {\n    return endOfWeek(date);\n}\n/**\n * Gets the end of the month for a given date.\n *\n * @param date - The date.\n * @returns - The end of the month.\n */\nfunction getEndOfMonth(date) {\n    return endOfMonth(date);\n}\n/**\n * Checks if two dates are in the same year.\n *\n * @param date1 - The first date.\n * @param date2 - The second date.\n * @returns - True if the dates are in the same year, false otherwise.\n */\nfunction isSameYear(date1, date2) {\n    if (date1 && date2) {\n        return isSameYear$1(date1, date2);\n    }\n    else {\n        return !date1 && !date2;\n    }\n}\n/**\n * Checks if two dates are in the same month.\n *\n * @param date1 - The first date.\n * @param date2 - The second date.\n * @returns - True if the dates are in the same month, false otherwise.\n */\nfunction isSameMonth(date1, date2) {\n    if (date1 && date2) {\n        return isSameMonth$1(date1, date2);\n    }\n    else {\n        return !date1 && !date2;\n    }\n}\n/**\n * Checks if two dates are in the same quarter.\n *\n * @param date1 - The first date.\n * @param date2 - The second date.\n * @returns - True if the dates are in the same quarter, false otherwise.\n */\nfunction isSameQuarter(date1, date2) {\n    if (date1 && date2) {\n        return isSameQuarter$1(date1, date2);\n    }\n    else {\n        return !date1 && !date2;\n    }\n}\n/**\n * Checks if two dates are on the same day.\n *\n * @param date1 - The first date.\n * @param date2 - The second date.\n * @returns - True if the dates are on the same day, false otherwise.\n */\nfunction isSameDay(date1, date2) {\n    if (date1 && date2) {\n        return isSameDay$1(date1, date2);\n    }\n    else {\n        return !date1 && !date2;\n    }\n}\n/**\n * Checks if two dates are equal.\n *\n * @param date1 - The first date.\n * @param date2 - The second date.\n * @returns - True if the dates are equal, false otherwise.\n */\nfunction isEqual(date1, date2) {\n    if (date1 && date2) {\n        return isEqual$1(date1, date2);\n    }\n    else {\n        return !date1 && !date2;\n    }\n}\n/**\n * Checks if a day is within a date range.\n *\n * @param day - The day to check.\n * @param startDate - The start date of the range.\n * @param endDate - The end date of the range.\n * @returns - True if the day is within the range, false otherwise.\n */\nfunction isDayInRange(day, startDate, endDate) {\n    var valid;\n    var start = startOfDay(startDate);\n    var end = endOfDay(endDate);\n    try {\n        valid = isWithinInterval(day, { start: start, end: end });\n    }\n    catch (err) {\n        valid = false;\n    }\n    return valid;\n}\n// ** Date Localization **\n/**\n * Registers a locale.\n *\n * @param localeName - The name of the locale.\n * @param localeData - The data of the locale.\n */\nfunction registerLocale(localeName, localeData) {\n    var scope = getLocaleScope();\n    if (!scope.__localeData__) {\n        scope.__localeData__ = {};\n    }\n    scope.__localeData__[localeName] = localeData;\n}\n/**\n * Sets the default locale.\n *\n * @param localeName - The name of the locale.\n */\nfunction setDefaultLocale(localeName) {\n    var scope = getLocaleScope();\n    scope.__localeId__ = localeName;\n}\n/**\n * Gets the default locale.\n *\n * @returns - The default locale.\n */\nfunction getDefaultLocale() {\n    var scope = getLocaleScope();\n    return scope.__localeId__;\n}\n/**\n * Gets the locale object.\n *\n * @param localeSpec - The locale specification.\n * @returns - The locale object.\n */\nfunction getLocaleObject(localeSpec) {\n    if (typeof localeSpec === \"string\") {\n        // Treat it as a locale name registered by registerLocale\n        var scope = getLocaleScope();\n        // Null was replaced with undefined to avoid type coercion\n        return scope.__localeData__ ? scope.__localeData__[localeSpec] : undefined;\n    }\n    else {\n        // Treat it as a raw date-fns locale object\n        return localeSpec;\n    }\n}\n/**\n * Formats the weekday in a given locale.\n *\n * @param date - The date to format.\n * @param formatFunc - The formatting function.\n * @param locale - The locale to use for formatting.\n * @returns - The formatted weekday.\n */\nfunction getFormattedWeekdayInLocale(date, formatFunc, locale) {\n    return formatFunc(formatDate(date, \"EEEE\", locale));\n}\n/**\n * Gets the minimum weekday in a given locale.\n *\n * @param date - The date to format.\n * @param locale - The locale to use for formatting.\n * @returns - The minimum weekday.\n */\nfunction getWeekdayMinInLocale(date, locale) {\n    return formatDate(date, \"EEEEEE\", locale);\n}\n/**\n * Gets the short weekday in a given locale.\n *\n * @param date - The date to format.\n * @param locale - The locale to use for formatting.\n * @returns - The short weekday.\n */\nfunction getWeekdayShortInLocale(date, locale) {\n    return formatDate(date, \"EEE\", locale);\n}\n/**\n * Gets the month in a given locale.\n *\n * @param month - The month to format.\n * @param locale - The locale to use for formatting.\n * @returns - The month.\n */\nfunction getMonthInLocale(month, locale) {\n    return formatDate(setMonth(newDate(), month), \"LLLL\", locale);\n}\n/**\n * Gets the short month in a given locale.\n *\n * @param month - The month to format.\n * @param locale - The locale to use for formatting.\n * @returns - The short month.\n */\nfunction getMonthShortInLocale(month, locale) {\n    return formatDate(setMonth(newDate(), month), \"LLL\", locale);\n}\n/**\n * Gets the short quarter in a given locale.\n *\n * @param quarter - The quarter to format.\n * @param locale - The locale to use for formatting.\n * @returns - The short quarter.\n */\nfunction getQuarterShortInLocale(quarter, locale) {\n    return formatDate(setQuarter(newDate(), quarter), \"QQQ\", locale);\n}\n/**\n * Checks if a day is disabled.\n *\n * @param day - The day to check.\n * @param options - The options to consider when checking.\n * @returns - Returns true if the day is disabled, false otherwise.\n */\nfunction isDayDisabled(day, _a) {\n    var _b = _a === void 0 ? {} : _a, minDate = _b.minDate, maxDate = _b.maxDate, excludeDates = _b.excludeDates, excludeDateIntervals = _b.excludeDateIntervals, includeDates = _b.includeDates, includeDateIntervals = _b.includeDateIntervals, filterDate = _b.filterDate;\n    return (isOutOfBounds(day, { minDate: minDate, maxDate: maxDate }) ||\n        (excludeDates &&\n            excludeDates.some(function (excludeDate) {\n                if (excludeDate instanceof Date) {\n                    return isSameDay(day, excludeDate);\n                }\n                else {\n                    return isSameDay(day, excludeDate.date);\n                }\n            })) ||\n        (excludeDateIntervals &&\n            excludeDateIntervals.some(function (_a) {\n                var start = _a.start, end = _a.end;\n                return isWithinInterval(day, { start: start, end: end });\n            })) ||\n        (includeDates &&\n            !includeDates.some(function (includeDate) { return isSameDay(day, includeDate); })) ||\n        (includeDateIntervals &&\n            !includeDateIntervals.some(function (_a) {\n                var start = _a.start, end = _a.end;\n                return isWithinInterval(day, { start: start, end: end });\n            })) ||\n        (filterDate && !filterDate(newDate(day))) ||\n        false);\n}\n/**\n * Checks if a day is excluded.\n *\n * @param day - The day to check.\n * @param options - The options to consider when checking.\n * @returns - Returns true if the day is excluded, false otherwise.\n */\nfunction isDayExcluded(day, _a) {\n    var _b = _a === void 0 ? {} : _a, excludeDates = _b.excludeDates, excludeDateIntervals = _b.excludeDateIntervals;\n    if (excludeDateIntervals && excludeDateIntervals.length > 0) {\n        return excludeDateIntervals.some(function (_a) {\n            var start = _a.start, end = _a.end;\n            return isWithinInterval(day, { start: start, end: end });\n        });\n    }\n    return ((excludeDates &&\n        excludeDates.some(function (excludeDate) {\n            var _a;\n            if (excludeDate instanceof Date) {\n                return isSameDay(day, excludeDate);\n            }\n            else {\n                return isSameDay(day, (_a = excludeDate.date) !== null && _a !== void 0 ? _a : new Date());\n            }\n        })) ||\n        false);\n}\nfunction isMonthDisabled(month, _a) {\n    var _b = _a === void 0 ? {} : _a, minDate = _b.minDate, maxDate = _b.maxDate, excludeDates = _b.excludeDates, includeDates = _b.includeDates, filterDate = _b.filterDate;\n    return (isOutOfBounds(month, {\n        minDate: minDate ? startOfMonth(minDate) : undefined,\n        maxDate: maxDate ? endOfMonth(maxDate) : undefined,\n    }) ||\n        (excludeDates === null || excludeDates === void 0 ? void 0 : excludeDates.some(function (excludeDate) {\n            return isSameMonth(month, excludeDate instanceof Date ? excludeDate : excludeDate.date);\n        })) ||\n        (includeDates &&\n            !includeDates.some(function (includeDate) { return isSameMonth(month, includeDate); })) ||\n        (filterDate && !filterDate(newDate(month))) ||\n        false);\n}\nfunction isMonthInRange(startDate, endDate, m, day) {\n    var startDateYear = getYear(startDate);\n    var startDateMonth = getMonth(startDate);\n    var endDateYear = getYear(endDate);\n    var endDateMonth = getMonth(endDate);\n    var dayYear = getYear(day);\n    if (startDateYear === endDateYear && startDateYear === dayYear) {\n        return startDateMonth <= m && m <= endDateMonth;\n    }\n    else if (startDateYear < endDateYear) {\n        return ((dayYear === startDateYear && startDateMonth <= m) ||\n            (dayYear === endDateYear && endDateMonth >= m) ||\n            (dayYear < endDateYear && dayYear > startDateYear));\n    }\n    return false;\n}\n/**\n * To check if a date's month and year are disabled/excluded\n * @param date Date to check\n * @returns {boolean} true if month and year are disabled/excluded, false otherwise\n */\nfunction isMonthYearDisabled(date, _a) {\n    var _b = _a === void 0 ? {} : _a, minDate = _b.minDate, maxDate = _b.maxDate, excludeDates = _b.excludeDates, includeDates = _b.includeDates;\n    return (isOutOfBounds(date, { minDate: minDate, maxDate: maxDate }) ||\n        (excludeDates &&\n            excludeDates.some(function (excludedDate) {\n                return isSameMonth(excludedDate instanceof Date ? excludedDate : excludedDate.date, date);\n            })) ||\n        (includeDates &&\n            !includeDates.some(function (includedDate) { return isSameMonth(includedDate, date); })) ||\n        false);\n}\nfunction isQuarterDisabled(quarter, _a) {\n    var _b = _a === void 0 ? {} : _a, minDate = _b.minDate, maxDate = _b.maxDate, excludeDates = _b.excludeDates, includeDates = _b.includeDates, filterDate = _b.filterDate;\n    return (isOutOfBounds(quarter, { minDate: minDate, maxDate: maxDate }) ||\n        (excludeDates === null || excludeDates === void 0 ? void 0 : excludeDates.some(function (excludeDate) {\n            return isSameQuarter(quarter, excludeDate instanceof Date ? excludeDate : excludeDate.date);\n        })) ||\n        (includeDates &&\n            !includeDates.some(function (includeDate) {\n                return isSameQuarter(quarter, includeDate);\n            })) ||\n        (filterDate && !filterDate(newDate(quarter))) ||\n        false);\n}\nfunction isYearInRange(year, start, end) {\n    if (!start || !end)\n        return false;\n    if (!isValid$1(start) || !isValid$1(end))\n        return false;\n    var startYear = getYear(start);\n    var endYear = getYear(end);\n    return startYear <= year && endYear >= year;\n}\nfunction isYearDisabled(year, _a) {\n    var _b = _a === void 0 ? {} : _a, minDate = _b.minDate, maxDate = _b.maxDate, excludeDates = _b.excludeDates, includeDates = _b.includeDates, filterDate = _b.filterDate;\n    var date = new Date(year, 0, 1);\n    return (isOutOfBounds(date, {\n        minDate: minDate ? startOfYear(minDate) : undefined,\n        maxDate: maxDate ? endOfYear(maxDate) : undefined,\n    }) ||\n        (excludeDates === null || excludeDates === void 0 ? void 0 : excludeDates.some(function (excludeDate) {\n            return isSameYear(date, excludeDate instanceof Date ? excludeDate : excludeDate.date);\n        })) ||\n        (includeDates &&\n            !includeDates.some(function (includeDate) { return isSameYear(date, includeDate); })) ||\n        (filterDate && !filterDate(newDate(date))) ||\n        false);\n}\nfunction isQuarterInRange(startDate, endDate, q, day) {\n    var startDateYear = getYear(startDate);\n    var startDateQuarter = getQuarter(startDate);\n    var endDateYear = getYear(endDate);\n    var endDateQuarter = getQuarter(endDate);\n    var dayYear = getYear(day);\n    if (startDateYear === endDateYear && startDateYear === dayYear) {\n        return startDateQuarter <= q && q <= endDateQuarter;\n    }\n    else if (startDateYear < endDateYear) {\n        return ((dayYear === startDateYear && startDateQuarter <= q) ||\n            (dayYear === endDateYear && endDateQuarter >= q) ||\n            (dayYear < endDateYear && dayYear > startDateYear));\n    }\n    return false;\n}\nfunction isOutOfBounds(day, _a) {\n    var _b;\n    var _c = _a === void 0 ? {} : _a, minDate = _c.minDate, maxDate = _c.maxDate;\n    return ((_b = ((minDate && differenceInCalendarDays(day, minDate) < 0) ||\n        (maxDate && differenceInCalendarDays(day, maxDate) > 0))) !== null && _b !== void 0 ? _b : false);\n}\nfunction isTimeInList(time, times) {\n    return times.some(function (listTime) {\n        return getHours(listTime) === getHours(time) &&\n            getMinutes(listTime) === getMinutes(time) &&\n            getSeconds(listTime) === getSeconds(time);\n    });\n}\nfunction isTimeDisabled(time, _a) {\n    var _b = _a === void 0 ? {} : _a, excludeTimes = _b.excludeTimes, includeTimes = _b.includeTimes, filterTime = _b.filterTime;\n    return ((excludeTimes && isTimeInList(time, excludeTimes)) ||\n        (includeTimes && !isTimeInList(time, includeTimes)) ||\n        (filterTime && !filterTime(time)) ||\n        false);\n}\nfunction isTimeInDisabledRange(time, _a) {\n    var minTime = _a.minTime, maxTime = _a.maxTime;\n    if (!minTime || !maxTime) {\n        throw new Error(\"Both minTime and maxTime props required\");\n    }\n    var baseTime = newDate();\n    baseTime = setHours(baseTime, getHours(time));\n    baseTime = setMinutes(baseTime, getMinutes(time));\n    baseTime = setSeconds(baseTime, getSeconds(time));\n    var min = newDate();\n    min = setHours(min, getHours(minTime));\n    min = setMinutes(min, getMinutes(minTime));\n    min = setSeconds(min, getSeconds(minTime));\n    var max = newDate();\n    max = setHours(max, getHours(maxTime));\n    max = setMinutes(max, getMinutes(maxTime));\n    max = setSeconds(max, getSeconds(maxTime));\n    var valid;\n    try {\n        valid = !isWithinInterval(baseTime, { start: min, end: max });\n    }\n    catch (err) {\n        valid = false;\n    }\n    return valid;\n}\nfunction monthDisabledBefore(day, _a) {\n    var _b = _a === void 0 ? {} : _a, minDate = _b.minDate, includeDates = _b.includeDates;\n    var previousMonth = subMonths(day, 1);\n    return ((minDate && differenceInCalendarMonths(minDate, previousMonth) > 0) ||\n        (includeDates &&\n            includeDates.every(function (includeDate) {\n                return differenceInCalendarMonths(includeDate, previousMonth) > 0;\n            })) ||\n        false);\n}\nfunction monthDisabledAfter(day, _a) {\n    var _b = _a === void 0 ? {} : _a, maxDate = _b.maxDate, includeDates = _b.includeDates;\n    var nextMonth = addMonths(day, 1);\n    return ((maxDate && differenceInCalendarMonths(nextMonth, maxDate) > 0) ||\n        (includeDates &&\n            includeDates.every(function (includeDate) { return differenceInCalendarMonths(nextMonth, includeDate) > 0; })) ||\n        false);\n}\nfunction quarterDisabledBefore(date, _a) {\n    var _b = _a === void 0 ? {} : _a, minDate = _b.minDate, includeDates = _b.includeDates;\n    var firstDateOfYear = startOfYear(date);\n    var previousQuarter = subQuarters(firstDateOfYear, 1);\n    return ((minDate && differenceInCalendarQuarters(minDate, previousQuarter) > 0) ||\n        (includeDates &&\n            includeDates.every(function (includeDate) {\n                return differenceInCalendarQuarters(includeDate, previousQuarter) > 0;\n            })) ||\n        false);\n}\nfunction quarterDisabledAfter(date, _a) {\n    var _b = _a === void 0 ? {} : _a, maxDate = _b.maxDate, includeDates = _b.includeDates;\n    var lastDateOfYear = endOfYear(date);\n    var nextQuarter = addQuarters(lastDateOfYear, 1);\n    return ((maxDate && differenceInCalendarQuarters(nextQuarter, maxDate) > 0) ||\n        (includeDates &&\n            includeDates.every(function (includeDate) {\n                return differenceInCalendarQuarters(nextQuarter, includeDate) > 0;\n            })) ||\n        false);\n}\nfunction yearDisabledBefore(day, _a) {\n    var _b = _a === void 0 ? {} : _a, minDate = _b.minDate, includeDates = _b.includeDates;\n    var previousYear = subYears(day, 1);\n    return ((minDate && differenceInCalendarYears(minDate, previousYear) > 0) ||\n        (includeDates &&\n            includeDates.every(function (includeDate) {\n                return differenceInCalendarYears(includeDate, previousYear) > 0;\n            })) ||\n        false);\n}\nfunction yearsDisabledBefore(day, _a) {\n    var _b = _a === void 0 ? {} : _a, minDate = _b.minDate, _c = _b.yearItemNumber, yearItemNumber = _c === void 0 ? DEFAULT_YEAR_ITEM_NUMBER : _c;\n    var previousYear = getStartOfYear(subYears(day, yearItemNumber));\n    var endPeriod = getYearsPeriod(previousYear, yearItemNumber).endPeriod;\n    var minDateYear = minDate && getYear(minDate);\n    return (minDateYear && minDateYear > endPeriod) || false;\n}\nfunction yearDisabledAfter(day, _a) {\n    var _b = _a === void 0 ? {} : _a, maxDate = _b.maxDate, includeDates = _b.includeDates;\n    var nextYear = addYears(day, 1);\n    return ((maxDate && differenceInCalendarYears(nextYear, maxDate) > 0) ||\n        (includeDates &&\n            includeDates.every(function (includeDate) { return differenceInCalendarYears(nextYear, includeDate) > 0; })) ||\n        false);\n}\nfunction yearsDisabledAfter(day, _a) {\n    var _b = _a === void 0 ? {} : _a, maxDate = _b.maxDate, _c = _b.yearItemNumber, yearItemNumber = _c === void 0 ? DEFAULT_YEAR_ITEM_NUMBER : _c;\n    var nextYear = addYears(day, yearItemNumber);\n    var startPeriod = getYearsPeriod(nextYear, yearItemNumber).startPeriod;\n    var maxDateYear = maxDate && getYear(maxDate);\n    return (maxDateYear && maxDateYear < startPeriod) || false;\n}\nfunction getEffectiveMinDate(_a) {\n    var minDate = _a.minDate, includeDates = _a.includeDates;\n    if (includeDates && minDate) {\n        var minDates = includeDates.filter(function (includeDate) { return differenceInCalendarDays(includeDate, minDate) >= 0; });\n        return min(minDates);\n    }\n    else if (includeDates) {\n        return min(includeDates);\n    }\n    else {\n        return minDate;\n    }\n}\nfunction getEffectiveMaxDate(_a) {\n    var maxDate = _a.maxDate, includeDates = _a.includeDates;\n    if (includeDates && maxDate) {\n        var maxDates = includeDates.filter(function (includeDate) { return differenceInCalendarDays(includeDate, maxDate) <= 0; });\n        return max(maxDates);\n    }\n    else if (includeDates) {\n        return max(includeDates);\n    }\n    else {\n        return maxDate;\n    }\n}\n/**\n * Get a map of highlighted dates with their corresponding classes.\n * @param highlightDates The dates to highlight.\n * @param defaultClassName The default class to use for highlighting.\n * @returns A map with dates as keys and arrays of class names as values.\n */\nfunction getHighLightDaysMap(highlightDates, defaultClassName) {\n    var _a;\n    if (highlightDates === void 0) { highlightDates = []; }\n    if (defaultClassName === void 0) { defaultClassName = \"react-datepicker__day--highlighted\"; }\n    var dateClasses = new Map();\n    for (var i = 0, len = highlightDates.length; i < len; i++) {\n        var obj = highlightDates[i];\n        if (isDate(obj)) {\n            var key = formatDate(obj, \"MM.dd.yyyy\");\n            var classNamesArr = dateClasses.get(key) || [];\n            if (!classNamesArr.includes(defaultClassName)) {\n                classNamesArr.push(defaultClassName);\n                dateClasses.set(key, classNamesArr);\n            }\n        }\n        else if (typeof obj === \"object\") {\n            var keys = Object.keys(obj);\n            var className = (_a = keys[0]) !== null && _a !== void 0 ? _a : \"\";\n            var arrOfDates = obj[className];\n            if (typeof className === \"string\" && Array.isArray(arrOfDates)) {\n                for (var k = 0, len_1 = arrOfDates.length; k < len_1; k++) {\n                    var dateK = arrOfDates[k];\n                    if (dateK) {\n                        var key = formatDate(dateK, \"MM.dd.yyyy\");\n                        var classNamesArr = dateClasses.get(key) || [];\n                        if (!classNamesArr.includes(className)) {\n                            classNamesArr.push(className);\n                            dateClasses.set(key, classNamesArr);\n                        }\n                    }\n                }\n            }\n        }\n    }\n    return dateClasses;\n}\n/**\n * Compare the two arrays\n * @param array1 The first array to compare.\n * @param array2 The second array to compare.\n * @returns true, if the passed arrays are equal, false otherwise.\n */\nfunction arraysAreEqual(array1, array2) {\n    if (array1.length !== array2.length) {\n        return false;\n    }\n    return array1.every(function (value, index) { return value === array2[index]; });\n}\n/**\n * Assign the custom class to each date\n * @param holidayDates array of object containing date and name of the holiday\n * @param defaultClassName className to be added.\n * @returns Map containing date as key and array of className and holiday name as value\n */\nfunction getHolidaysMap(holidayDates, defaultClassName) {\n    if (holidayDates === void 0) { holidayDates = []; }\n    if (defaultClassName === void 0) { defaultClassName = \"react-datepicker__day--holidays\"; }\n    var dateClasses = new Map();\n    holidayDates.forEach(function (holiday) {\n        var dateObj = holiday.date, holidayName = holiday.holidayName;\n        if (!isDate(dateObj)) {\n            return;\n        }\n        var key = formatDate(dateObj, \"MM.dd.yyyy\");\n        var classNamesObj = dateClasses.get(key) || {\n            className: \"\",\n            holidayNames: [],\n        };\n        if (\"className\" in classNamesObj &&\n            classNamesObj[\"className\"] === defaultClassName &&\n            arraysAreEqual(classNamesObj[\"holidayNames\"], [holidayName])) {\n            return;\n        }\n        classNamesObj[\"className\"] = defaultClassName;\n        var holidayNameArr = classNamesObj[\"holidayNames\"];\n        classNamesObj[\"holidayNames\"] = holidayNameArr\n            ? __spreadArray(__spreadArray([], holidayNameArr, true), [holidayName], false) : [holidayName];\n        dateClasses.set(key, classNamesObj);\n    });\n    return dateClasses;\n}\n/**\n * Determines the times to inject after a given start of day, current time, and multiplier.\n * @param startOfDay The start of the day.\n * @param currentTime The current time.\n * @param currentMultiplier The current multiplier.\n * @param intervals The intervals.\n * @param injectedTimes The times to potentially inject.\n * @returns An array of times to inject.\n */\nfunction timesToInjectAfter(startOfDay, currentTime, currentMultiplier, intervals, injectedTimes) {\n    var l = injectedTimes.length;\n    var times = [];\n    for (var i = 0; i < l; i++) {\n        var injectedTime = startOfDay;\n        var injectedTimeValue = injectedTimes[i];\n        if (injectedTimeValue) {\n            injectedTime = addHours(injectedTime, getHours(injectedTimeValue));\n            injectedTime = addMinutes(injectedTime, getMinutes(injectedTimeValue));\n            injectedTime = addSeconds(injectedTime, getSeconds(injectedTimeValue));\n        }\n        var nextTime = addMinutes(startOfDay, (currentMultiplier + 1) * intervals);\n        if (isAfter(injectedTime, currentTime) &&\n            isBefore(injectedTime, nextTime) &&\n            injectedTimeValue != undefined) {\n            times.push(injectedTimeValue);\n        }\n    }\n    return times;\n}\n/**\n * Adds a leading zero to a number if it's less than 10.\n * @param i The number to add a leading zero to.\n * @returns The number as a string, with a leading zero if it was less than 10.\n */\nfunction addZero(i) {\n    return i < 10 ? \"0\".concat(i) : \"\".concat(i);\n}\n/**\n * Gets the start and end years for a period.\n * @param date The date to get the period for.\n * @param yearItemNumber The number of years in the period. Defaults to DEFAULT_YEAR_ITEM_NUMBER.\n * @returns An object with the start and end years for the period.\n */\nfunction getYearsPeriod(date, yearItemNumber) {\n    if (yearItemNumber === void 0) { yearItemNumber = DEFAULT_YEAR_ITEM_NUMBER; }\n    var endPeriod = Math.ceil(getYear(date) / yearItemNumber) * yearItemNumber;\n    var startPeriod = endPeriod - (yearItemNumber - 1);\n    return { startPeriod: startPeriod, endPeriod: endPeriod };\n}\n/**\n * Gets the number of hours in a day.\n * @param d The date to get the number of hours for.\n * @returns The number of hours in the day.\n */\nfunction getHoursInDay(d) {\n    var startOfDay = new Date(d.getFullYear(), d.getMonth(), d.getDate());\n    var startOfTheNextDay = new Date(d.getFullYear(), d.getMonth(), d.getDate(), 24);\n    return Math.round((+startOfTheNextDay - +startOfDay) / 3600000);\n}\n/**\n * Returns the start of the minute for the given date\n *\n * NOTE: this function is a DST and timezone-safe analog of `date-fns/startOfMinute`\n * do not make changes unless you know what you're doing\n *\n * See comments on https://github.com/Hacker0x01/react-datepicker/pull/4244\n * for more details\n *\n * @param d date\n * @returns start of the minute\n */\nfunction startOfMinute(d) {\n    var seconds = d.getSeconds();\n    var milliseconds = d.getMilliseconds();\n    return toDate(d.getTime() - seconds * 1000 - milliseconds);\n}\n/**\n * Returns whether the given dates are in the same minute\n *\n * This function is a DST and timezone-safe analog of `date-fns/isSameMinute`\n *\n * @param d1\n * @param d2\n * @returns\n */\nfunction isSameMinute(d1, d2) {\n    return startOfMinute(d1).getTime() === startOfMinute(d2).getTime();\n}\n/**\n * Returns a new datetime object representing the input date with midnight time\n * @param date The date to get the midnight time for\n * @returns A new datetime object representing the input date with midnight time\n */\nfunction getMidnightDate(date) {\n    if (!isDate(date)) {\n        throw new Error(\"Invalid date\");\n    }\n    var dateWithoutTime = new Date(date);\n    dateWithoutTime.setHours(0, 0, 0, 0);\n    return dateWithoutTime;\n}\n/**\n * Is the first date before the second one?\n * @param date The date that should be before the other one to return true\n * @param dateToCompare The date to compare with\n * @returns The first date is before the second date\n *\n * Note:\n *  This function considers the mid-night of the given dates for comparison.\n *  It evaluates whether date is before dateToCompare based on their mid-night timestamps.\n */\nfunction isDateBefore(date, dateToCompare) {\n    if (!isDate(date) || !isDate(dateToCompare)) {\n        throw new Error(\"Invalid date received\");\n    }\n    var midnightDate = getMidnightDate(date);\n    var midnightDateToCompare = getMidnightDate(dateToCompare);\n    return isBefore(midnightDate, midnightDateToCompare);\n}\n/**\n * Checks if the space key was pressed down.\n *\n * @param event - The keyboard event.\n * @returns - Returns true if the space key was pressed down, false otherwise.\n */\nfunction isSpaceKeyDown(event) {\n    return event.key === KeyType.Space;\n}\n\n/**\n * `InputTime` is a React component that manages time input.\n *\n * @component\n * @example\n * <InputTime timeString=\"12:00\" />\n *\n * @param props - The properties that define the `InputTime` component.\n * @param props.onChange - Function that is called when the date changes.\n * @param props.date - The initial date value.\n * @param props.timeString - The initial time string value.\n * @param props.timeInputLabel - The label for the time input.\n * @param props.customTimeInput - An optional custom time input element.\n *\n * @returns The `InputTime` component.\n */\nvar InputTime = /** @class */ (function (_super) {\n    __extends(InputTime, _super);\n    function InputTime(props) {\n        var _this = _super.call(this, props) || this;\n        _this.inputRef = React.createRef();\n        _this.onTimeChange = function (time) {\n            var _a, _b;\n            _this.setState({ time: time });\n            var propDate = _this.props.date;\n            var isPropDateValid = propDate instanceof Date && !isNaN(+propDate);\n            var date = isPropDateValid ? propDate : new Date();\n            if (time === null || time === void 0 ? void 0 : time.includes(\":\")) {\n                var _c = time.split(\":\"), hours = _c[0], minutes = _c[1];\n                date.setHours(Number(hours));\n                date.setMinutes(Number(minutes));\n            }\n            (_b = (_a = _this.props).onChange) === null || _b === void 0 ? void 0 : _b.call(_a, date);\n        };\n        _this.renderTimeInput = function () {\n            var time = _this.state.time;\n            var _a = _this.props, date = _a.date, timeString = _a.timeString, customTimeInput = _a.customTimeInput;\n            if (customTimeInput) {\n                return cloneElement(customTimeInput, {\n                    date: date,\n                    value: time,\n                    onChange: _this.onTimeChange,\n                });\n            }\n            return (React.createElement(\"input\", { type: \"time\", className: \"react-datepicker-time__input\", placeholder: \"Time\", name: \"time-input\", ref: _this.inputRef, onClick: function () {\n                    var _a;\n                    (_a = _this.inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();\n                }, required: true, value: time, onChange: function (event) {\n                    _this.onTimeChange(event.target.value || timeString);\n                } }));\n        };\n        _this.state = {\n            time: _this.props.timeString,\n        };\n        return _this;\n    }\n    InputTime.getDerivedStateFromProps = function (props, state) {\n        if (props.timeString !== state.time) {\n            return {\n                time: props.timeString,\n            };\n        }\n        // Return null to indicate no change to state.\n        return null;\n    };\n    InputTime.prototype.render = function () {\n        return (React.createElement(\"div\", { className: \"react-datepicker__input-time-container\" },\n            React.createElement(\"div\", { className: \"react-datepicker-time__caption\" }, this.props.timeInputLabel),\n            React.createElement(\"div\", { className: \"react-datepicker-time__input-container\" },\n                React.createElement(\"div\", { className: \"react-datepicker-time__input\" }, this.renderTimeInput()))));\n    };\n    return InputTime;\n}(Component));\n\n/**\n * `Day` is a React component that represents a single day in a date picker.\n * It handles the rendering and interaction of a day.\n *\n * @prop ariaLabelPrefixWhenEnabled - Aria label prefix when the day is enabled.\n * @prop ariaLabelPrefixWhenDisabled - Aria label prefix when the day is disabled.\n * @prop disabledKeyboardNavigation - Whether keyboard navigation is disabled.\n * @prop day - The day to be displayed.\n * @prop dayClassName - Function to customize the CSS class of the day.\n * @prop endDate - The end date in a range.\n * @prop highlightDates - Map of dates to be highlighted.\n * @prop holidays - Map of holiday dates.\n * @prop inline - Whether the date picker is inline.\n * @prop shouldFocusDayInline - Whether the day should be focused when date picker is inline.\n * @prop month - The month the day belongs to.\n * @prop onClick - Click event handler.\n * @prop onMouseEnter - Mouse enter event handler.\n * @prop handleOnKeyDown - Key down event handler.\n * @prop usePointerEvent - Whether to use pointer events.\n * @prop preSelection - The date that is currently selected.\n * @prop selected - The selected date.\n * @prop selectingDate - The date currently being selected.\n * @prop selectsEnd - Whether the day can be the end date in a range.\n * @prop selectsStart - Whether the day can be the start date in a range.\n * @prop selectsRange - Whether the day can be in a range.\n * @prop showWeekPicker - Whether to show week picker.\n * @prop showWeekNumber - Whether to show week numbers.\n * @prop selectsDisabledDaysInRange - Whether to select disabled days in a range.\n * @prop selectsMultiple - Whether to allow multiple date selection.\n * @prop selectedDates - Array of selected dates.\n * @prop startDate - The start date in a range.\n * @prop renderDayContents - Function to customize the rendering of the day's contents.\n * @prop containerRef - Ref for the container.\n * @prop excludeDates - Array of dates to be excluded.\n * @prop calendarStartDay - The start day of the week.\n * @prop locale - The locale object.\n * @prop monthShowsDuplicateDaysEnd - Whether to show duplicate days at the end of the month.\n * @prop monthShowsDuplicateDaysStart - Whether to show duplicate days at the start of the month.\n * @prop includeDates - Array of dates to be included.\n * @prop includeDateIntervals - Array of date intervals to be included.\n * @prop minDate - The minimum date that can be selected.\n * @prop maxDate - The maximum date that can be selected.\n *\n * @example\n * ```tsx\n * import React from 'react';\n * import Day from './day';\n *\n * function MyComponent() {\n *   const handleDayClick = (event) => {\n *     console.log('Day clicked', event);\n *   };\n *\n *   const handleDayMouseEnter = (event) => {\n *     console.log('Mouse entered day', event);\n *   };\n *\n *   const renderDayContents = (date) => {\n *     return <div>{date.getDate()}</div>;\n *   };\n *\n *   return (\n *     <Day\n *       day={new Date()}\n *       onClick={handleDayClick}\n *       onMouseEnter={handleDayMouseEnter}\n *       renderDayContents={renderDayContents}\n *     />\n *   );\n * }\n *\n * export default MyComponent;\n * ```\n */\nvar Day = /** @class */ (function (_super) {\n    __extends(Day, _super);\n    function Day() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.dayEl = createRef();\n        _this.handleClick = function (event) {\n            if (!_this.isDisabled() && _this.props.onClick) {\n                _this.props.onClick(event);\n            }\n        };\n        _this.handleMouseEnter = function (event) {\n            if (!_this.isDisabled() && _this.props.onMouseEnter) {\n                _this.props.onMouseEnter(event);\n            }\n        };\n        _this.handleOnKeyDown = function (event) {\n            var _a, _b;\n            var eventKey = event.key;\n            if (eventKey === KeyType.Space) {\n                event.preventDefault();\n                event.key = KeyType.Enter;\n            }\n            (_b = (_a = _this.props).handleOnKeyDown) === null || _b === void 0 ? void 0 : _b.call(_a, event);\n        };\n        _this.isSameDay = function (other) {\n            return isSameDay(_this.props.day, other);\n        };\n        _this.isKeyboardSelected = function () {\n            var _a;\n            if (_this.props.disabledKeyboardNavigation) {\n                return false;\n            }\n            var isSelectedDate = _this.props.selectsMultiple\n                ? (_a = _this.props.selectedDates) === null || _a === void 0 ? void 0 : _a.some(function (date) { return _this.isSameDayOrWeek(date); })\n                : _this.isSameDayOrWeek(_this.props.selected);\n            var isDisabled = _this.props.preSelection && _this.isDisabled(_this.props.preSelection);\n            return (!isSelectedDate &&\n                _this.isSameDayOrWeek(_this.props.preSelection) &&\n                !isDisabled);\n        };\n        _this.isDisabled = function (day) {\n            if (day === void 0) { day = _this.props.day; }\n            // Almost all props previously were passed as this.props w/o proper typing with prop-types\n            // after the migration to TS i made it explicit\n            return isDayDisabled(day, {\n                minDate: _this.props.minDate,\n                maxDate: _this.props.maxDate,\n                excludeDates: _this.props.excludeDates,\n                excludeDateIntervals: _this.props.excludeDateIntervals,\n                includeDateIntervals: _this.props.includeDateIntervals,\n                includeDates: _this.props.includeDates,\n                filterDate: _this.props.filterDate,\n            });\n        };\n        _this.isExcluded = function () {\n            // Almost all props previously were passed as this.props w/o proper typing with prop-types\n            // after the migration to TS i made it explicit\n            return isDayExcluded(_this.props.day, {\n                excludeDates: _this.props.excludeDates,\n                excludeDateIntervals: _this.props.excludeDateIntervals,\n            });\n        };\n        _this.isStartOfWeek = function () {\n            return isSameDay(_this.props.day, getStartOfWeek(_this.props.day, _this.props.locale, _this.props.calendarStartDay));\n        };\n        _this.isSameWeek = function (other) {\n            return _this.props.showWeekPicker &&\n                isSameDay(other, getStartOfWeek(_this.props.day, _this.props.locale, _this.props.calendarStartDay));\n        };\n        _this.isSameDayOrWeek = function (other) {\n            return _this.isSameDay(other) || _this.isSameWeek(other);\n        };\n        _this.getHighLightedClass = function () {\n            var _a = _this.props, day = _a.day, highlightDates = _a.highlightDates;\n            if (!highlightDates) {\n                return false;\n            }\n            // Looking for className in the Map of {'day string, 'className'}\n            var dayStr = formatDate(day, \"MM.dd.yyyy\");\n            return highlightDates.get(dayStr);\n        };\n        // Function to return the array containing className associated to the date\n        _this.getHolidaysClass = function () {\n            var _a;\n            var _b = _this.props, day = _b.day, holidays = _b.holidays;\n            if (!holidays) {\n                // For type consistency no other reasons\n                return [undefined];\n            }\n            var dayStr = formatDate(day, \"MM.dd.yyyy\");\n            // Looking for className in the Map of {day string: {className, holidayName}}\n            if (holidays.has(dayStr)) {\n                return [(_a = holidays.get(dayStr)) === null || _a === void 0 ? void 0 : _a.className];\n            }\n            // For type consistency no other reasons\n            return [undefined];\n        };\n        _this.isInRange = function () {\n            var _a = _this.props, day = _a.day, startDate = _a.startDate, endDate = _a.endDate;\n            if (!startDate || !endDate) {\n                return false;\n            }\n            return isDayInRange(day, startDate, endDate);\n        };\n        _this.isInSelectingRange = function () {\n            var _a;\n            var _b = _this.props, day = _b.day, selectsStart = _b.selectsStart, selectsEnd = _b.selectsEnd, selectsRange = _b.selectsRange, selectsDisabledDaysInRange = _b.selectsDisabledDaysInRange, startDate = _b.startDate, endDate = _b.endDate;\n            var selectingDate = (_a = _this.props.selectingDate) !== null && _a !== void 0 ? _a : _this.props.preSelection;\n            if (!(selectsStart || selectsEnd || selectsRange) ||\n                !selectingDate ||\n                (!selectsDisabledDaysInRange && _this.isDisabled())) {\n                return false;\n            }\n            if (selectsStart &&\n                endDate &&\n                (isBefore(selectingDate, endDate) || isEqual(selectingDate, endDate))) {\n                return isDayInRange(day, selectingDate, endDate);\n            }\n            if (selectsEnd &&\n                startDate &&\n                (isAfter(selectingDate, startDate) || isEqual(selectingDate, startDate))) {\n                return isDayInRange(day, startDate, selectingDate);\n            }\n            if (selectsRange &&\n                startDate &&\n                !endDate &&\n                (isAfter(selectingDate, startDate) || isEqual(selectingDate, startDate))) {\n                return isDayInRange(day, startDate, selectingDate);\n            }\n            return false;\n        };\n        _this.isSelectingRangeStart = function () {\n            var _a;\n            if (!_this.isInSelectingRange()) {\n                return false;\n            }\n            var _b = _this.props, day = _b.day, startDate = _b.startDate, selectsStart = _b.selectsStart;\n            var selectingDate = (_a = _this.props.selectingDate) !== null && _a !== void 0 ? _a : _this.props.preSelection;\n            if (selectsStart) {\n                return isSameDay(day, selectingDate);\n            }\n            else {\n                return isSameDay(day, startDate);\n            }\n        };\n        _this.isSelectingRangeEnd = function () {\n            var _a;\n            if (!_this.isInSelectingRange()) {\n                return false;\n            }\n            var _b = _this.props, day = _b.day, endDate = _b.endDate, selectsEnd = _b.selectsEnd, selectsRange = _b.selectsRange;\n            var selectingDate = (_a = _this.props.selectingDate) !== null && _a !== void 0 ? _a : _this.props.preSelection;\n            if (selectsEnd || selectsRange) {\n                return isSameDay(day, selectingDate);\n            }\n            else {\n                return isSameDay(day, endDate);\n            }\n        };\n        _this.isRangeStart = function () {\n            var _a = _this.props, day = _a.day, startDate = _a.startDate, endDate = _a.endDate;\n            if (!startDate || !endDate) {\n                return false;\n            }\n            return isSameDay(startDate, day);\n        };\n        _this.isRangeEnd = function () {\n            var _a = _this.props, day = _a.day, startDate = _a.startDate, endDate = _a.endDate;\n            if (!startDate || !endDate) {\n                return false;\n            }\n            return isSameDay(endDate, day);\n        };\n        _this.isWeekend = function () {\n            var weekday = getDay(_this.props.day);\n            return weekday === 0 || weekday === 6;\n        };\n        _this.isAfterMonth = function () {\n            return (_this.props.month !== undefined &&\n                (_this.props.month + 1) % 12 === getMonth(_this.props.day));\n        };\n        _this.isBeforeMonth = function () {\n            return (_this.props.month !== undefined &&\n                (getMonth(_this.props.day) + 1) % 12 === _this.props.month);\n        };\n        _this.isCurrentDay = function () { return _this.isSameDay(newDate()); };\n        _this.isSelected = function () {\n            var _a;\n            if (_this.props.selectsMultiple) {\n                return (_a = _this.props.selectedDates) === null || _a === void 0 ? void 0 : _a.some(function (date) {\n                    return _this.isSameDayOrWeek(date);\n                });\n            }\n            return _this.isSameDayOrWeek(_this.props.selected);\n        };\n        _this.getClassNames = function (date) {\n            var dayClassName = _this.props.dayClassName\n                ? _this.props.dayClassName(date)\n                : undefined;\n            return clsx(\"react-datepicker__day\", dayClassName, \"react-datepicker__day--\" + getDayOfWeekCode(_this.props.day), {\n                \"react-datepicker__day--disabled\": _this.isDisabled(),\n                \"react-datepicker__day--excluded\": _this.isExcluded(),\n                \"react-datepicker__day--selected\": _this.isSelected(),\n                \"react-datepicker__day--keyboard-selected\": _this.isKeyboardSelected(),\n                \"react-datepicker__day--range-start\": _this.isRangeStart(),\n                \"react-datepicker__day--range-end\": _this.isRangeEnd(),\n                \"react-datepicker__day--in-range\": _this.isInRange(),\n                \"react-datepicker__day--in-selecting-range\": _this.isInSelectingRange(),\n                \"react-datepicker__day--selecting-range-start\": _this.isSelectingRangeStart(),\n                \"react-datepicker__day--selecting-range-end\": _this.isSelectingRangeEnd(),\n                \"react-datepicker__day--today\": _this.isCurrentDay(),\n                \"react-datepicker__day--weekend\": _this.isWeekend(),\n                \"react-datepicker__day--outside-month\": _this.isAfterMonth() || _this.isBeforeMonth(),\n            }, _this.getHighLightedClass(), _this.getHolidaysClass());\n        };\n        _this.getAriaLabel = function () {\n            var _a = _this.props, day = _a.day, _b = _a.ariaLabelPrefixWhenEnabled, ariaLabelPrefixWhenEnabled = _b === void 0 ? \"Choose\" : _b, _c = _a.ariaLabelPrefixWhenDisabled, ariaLabelPrefixWhenDisabled = _c === void 0 ? \"Not available\" : _c;\n            var prefix = _this.isDisabled() || _this.isExcluded()\n                ? ariaLabelPrefixWhenDisabled\n                : ariaLabelPrefixWhenEnabled;\n            return \"\".concat(prefix, \" \").concat(formatDate(day, \"PPPP\", _this.props.locale));\n        };\n        // A function to return the holiday's name as title's content\n        _this.getTitle = function () {\n            var _a = _this.props, day = _a.day, _b = _a.holidays, holidays = _b === void 0 ? new Map() : _b, excludeDates = _a.excludeDates;\n            var compareDt = formatDate(day, \"MM.dd.yyyy\");\n            var titles = [];\n            if (holidays.has(compareDt)) {\n                titles.push.apply(titles, holidays.get(compareDt).holidayNames);\n            }\n            if (_this.isExcluded()) {\n                titles.push(excludeDates === null || excludeDates === void 0 ? void 0 : excludeDates.filter(function (excludeDate) {\n                    if (excludeDate instanceof Date) {\n                        return isSameDay(excludeDate, day);\n                    }\n                    return isSameDay(excludeDate === null || excludeDate === void 0 ? void 0 : excludeDate.date, day);\n                }).map(function (excludeDate) {\n                    if (excludeDate instanceof Date) {\n                        return undefined;\n                    }\n                    return excludeDate === null || excludeDate === void 0 ? void 0 : excludeDate.message;\n                }));\n            }\n            // I'm not sure that this is a right output, but all tests are green\n            return titles.join(\", \");\n        };\n        _this.getTabIndex = function () {\n            var selectedDay = _this.props.selected;\n            var preSelectionDay = _this.props.preSelection;\n            var tabIndex = !(_this.props.showWeekPicker &&\n                (_this.props.showWeekNumber || !_this.isStartOfWeek())) &&\n                (_this.isKeyboardSelected() ||\n                    (_this.isSameDay(selectedDay) &&\n                        isSameDay(preSelectionDay, selectedDay)))\n                ? 0\n                : -1;\n            return tabIndex;\n        };\n        // various cases when we need to apply focus to the preselected day\n        // focus the day on mount/update so that keyboard navigation works while cycling through months with up or down keys (not for prev and next month buttons)\n        // prevent focus for these activeElement cases so we don't pull focus from the input as the calendar opens\n        _this.handleFocusDay = function () {\n            var _a;\n            // only do this while the input isn't focused\n            // otherwise, typing/backspacing the date manually may steal focus away from the input\n            _this.shouldFocusDay() && ((_a = _this.dayEl.current) === null || _a === void 0 ? void 0 : _a.focus({ preventScroll: true }));\n        };\n        _this.renderDayContents = function () {\n            if (_this.props.monthShowsDuplicateDaysEnd && _this.isAfterMonth())\n                return null;\n            if (_this.props.monthShowsDuplicateDaysStart && _this.isBeforeMonth())\n                return null;\n            return _this.props.renderDayContents\n                ? _this.props.renderDayContents(getDate(_this.props.day), _this.props.day)\n                : getDate(_this.props.day);\n        };\n        _this.render = function () { return (\n        // TODO: Use <option> instead of the \"option\" role to ensure accessibility across all devices.\n        React.createElement(\"div\", { ref: _this.dayEl, className: _this.getClassNames(_this.props.day), onKeyDown: _this.handleOnKeyDown, onClick: _this.handleClick, onMouseEnter: !_this.props.usePointerEvent ? _this.handleMouseEnter : undefined, onPointerEnter: _this.props.usePointerEvent ? _this.handleMouseEnter : undefined, tabIndex: _this.getTabIndex(), \"aria-label\": _this.getAriaLabel(), role: \"option\", title: _this.getTitle(), \"aria-disabled\": _this.isDisabled(), \"aria-current\": _this.isCurrentDay() ? \"date\" : undefined, \"aria-selected\": _this.isSelected() || _this.isInRange() },\n            _this.renderDayContents(),\n            _this.getTitle() !== \"\" && (React.createElement(\"span\", { className: \"overlay\" }, _this.getTitle())))); };\n        return _this;\n    }\n    Day.prototype.componentDidMount = function () {\n        this.handleFocusDay();\n    };\n    Day.prototype.componentDidUpdate = function () {\n        this.handleFocusDay();\n    };\n    Day.prototype.shouldFocusDay = function () {\n        var shouldFocusDay = false;\n        if (this.getTabIndex() === 0 && this.isSameDay(this.props.preSelection)) {\n            // there is currently no activeElement and not inline\n            if (!document.activeElement || document.activeElement === document.body) {\n                shouldFocusDay = true;\n            }\n            // inline version:\n            // do not focus on initial render to prevent autoFocus issue\n            // focus after month has changed via keyboard\n            if (this.props.inline && !this.props.shouldFocusDayInline) {\n                shouldFocusDay = false;\n            }\n            if (this.isDayActiveElement()) {\n                shouldFocusDay = true;\n            }\n            if (this.isDuplicateDay()) {\n                shouldFocusDay = false;\n            }\n        }\n        return shouldFocusDay;\n    };\n    // the activeElement is in the container, and it is another instance of Day\n    Day.prototype.isDayActiveElement = function () {\n        var _a, _b, _c;\n        return (((_b = (_a = this.props.containerRef) === null || _a === void 0 ? void 0 : _a.current) === null || _b === void 0 ? void 0 : _b.contains(document.activeElement)) &&\n            ((_c = document.activeElement) === null || _c === void 0 ? void 0 : _c.classList.contains(\"react-datepicker__day\")));\n    };\n    Day.prototype.isDuplicateDay = function () {\n        return (\n        //day is one of the non rendered duplicate days\n        (this.props.monthShowsDuplicateDaysEnd && this.isAfterMonth()) ||\n            (this.props.monthShowsDuplicateDaysStart && this.isBeforeMonth()));\n    };\n    return Day;\n}(Component));\n\nvar WeekNumber = /** @class */ (function (_super) {\n    __extends(WeekNumber, _super);\n    function WeekNumber() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.weekNumberEl = createRef();\n        _this.handleClick = function (event) {\n            if (_this.props.onClick) {\n                _this.props.onClick(event);\n            }\n        };\n        _this.handleOnKeyDown = function (event) {\n            var _a, _b;\n            var eventKey = event.key;\n            if (eventKey === KeyType.Space) {\n                event.preventDefault();\n                event.key = KeyType.Enter;\n            }\n            (_b = (_a = _this.props).handleOnKeyDown) === null || _b === void 0 ? void 0 : _b.call(_a, event);\n        };\n        _this.isKeyboardSelected = function () {\n            return !_this.props.disabledKeyboardNavigation &&\n                !isSameDay(_this.props.date, _this.props.selected) &&\n                isSameDay(_this.props.date, _this.props.preSelection);\n        };\n        _this.getTabIndex = function () {\n            return _this.props.showWeekPicker &&\n                _this.props.showWeekNumber &&\n                (_this.isKeyboardSelected() ||\n                    (isSameDay(_this.props.date, _this.props.selected) &&\n                        isSameDay(_this.props.preSelection, _this.props.selected)))\n                ? 0\n                : -1;\n        };\n        // various cases when we need to apply focus to the preselected week-number\n        // focus the week-number on mount/update so that keyboard navigation works while cycling through months with up or down keys (not for prev and next month buttons)\n        // prevent focus for these activeElement cases so we don't pull focus from the input as the calendar opens\n        _this.handleFocusWeekNumber = function (prevProps) {\n            var shouldFocusWeekNumber = false;\n            // only do this while the input isn't focused\n            // otherwise, typing/backspacing the date manually may steal focus away from the input\n            if (_this.getTabIndex() === 0 &&\n                !(prevProps === null || prevProps === void 0 ? void 0 : prevProps.isInputFocused) &&\n                isSameDay(_this.props.date, _this.props.preSelection)) {\n                // there is currently no activeElement and not inline\n                if (!document.activeElement || document.activeElement === document.body) {\n                    shouldFocusWeekNumber = true;\n                }\n                // inline version:\n                // do not focus on initial render to prevent autoFocus issue\n                // focus after month has changed via keyboard\n                if (_this.props.inline && !_this.props.shouldFocusDayInline) {\n                    shouldFocusWeekNumber = false;\n                }\n                // the activeElement is in the container, and it is another instance of WeekNumber\n                if (_this.props.containerRef &&\n                    _this.props.containerRef.current &&\n                    _this.props.containerRef.current.contains(document.activeElement) &&\n                    document.activeElement &&\n                    document.activeElement.classList.contains(\"react-datepicker__week-number\")) {\n                    shouldFocusWeekNumber = true;\n                }\n            }\n            shouldFocusWeekNumber &&\n                _this.weekNumberEl.current &&\n                _this.weekNumberEl.current.focus({ preventScroll: true });\n        };\n        return _this;\n    }\n    Object.defineProperty(WeekNumber, \"defaultProps\", {\n        get: function () {\n            return {\n                ariaLabelPrefix: \"week \",\n            };\n        },\n        enumerable: false,\n        configurable: true\n    });\n    WeekNumber.prototype.componentDidMount = function () {\n        this.handleFocusWeekNumber();\n    };\n    WeekNumber.prototype.componentDidUpdate = function (prevProps) {\n        this.handleFocusWeekNumber(prevProps);\n    };\n    WeekNumber.prototype.render = function () {\n        var _a = this.props, weekNumber = _a.weekNumber, isWeekDisabled = _a.isWeekDisabled, _b = _a.ariaLabelPrefix, ariaLabelPrefix = _b === void 0 ? WeekNumber.defaultProps.ariaLabelPrefix : _b, onClick = _a.onClick;\n        var weekNumberClasses = {\n            \"react-datepicker__week-number\": true,\n            \"react-datepicker__week-number--clickable\": !!onClick && !isWeekDisabled,\n            \"react-datepicker__week-number--selected\": !!onClick && isSameDay(this.props.date, this.props.selected),\n        };\n        return (React.createElement(\"div\", { ref: this.weekNumberEl, className: clsx(weekNumberClasses), \"aria-label\": \"\".concat(ariaLabelPrefix, \" \").concat(this.props.weekNumber), onClick: this.handleClick, onKeyDown: this.handleOnKeyDown, tabIndex: this.getTabIndex() }, weekNumber));\n    };\n    return WeekNumber;\n}(Component));\n\nvar Week = /** @class */ (function (_super) {\n    __extends(Week, _super);\n    function Week() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.isDisabled = function (day) {\n            return isDayDisabled(day, {\n                minDate: _this.props.minDate,\n                maxDate: _this.props.maxDate,\n                excludeDates: _this.props.excludeDates,\n                excludeDateIntervals: _this.props.excludeDateIntervals,\n                includeDateIntervals: _this.props.includeDateIntervals,\n                includeDates: _this.props.includeDates,\n                filterDate: _this.props.filterDate,\n            });\n        };\n        _this.handleDayClick = function (day, event) {\n            if (_this.props.onDayClick) {\n                _this.props.onDayClick(day, event);\n            }\n        };\n        _this.handleDayMouseEnter = function (day) {\n            if (_this.props.onDayMouseEnter) {\n                _this.props.onDayMouseEnter(day);\n            }\n        };\n        _this.handleWeekClick = function (day, weekNumber, event) {\n            var _a, _b, _c;\n            var enabledWeekDay = new Date(day);\n            for (var i = 0; i < 7; i++) {\n                var processingDay = new Date(day);\n                processingDay.setDate(processingDay.getDate() + i);\n                var isEnabled = !_this.isDisabled(processingDay);\n                if (isEnabled) {\n                    enabledWeekDay = processingDay;\n                    break;\n                }\n            }\n            if (typeof _this.props.onWeekSelect === \"function\") {\n                _this.props.onWeekSelect(enabledWeekDay, weekNumber, event);\n            }\n            if (_this.props.showWeekPicker) {\n                _this.handleDayClick(enabledWeekDay, event);\n            }\n            if ((_a = _this.props.shouldCloseOnSelect) !== null && _a !== void 0 ? _a : Week.defaultProps.shouldCloseOnSelect) {\n                (_c = (_b = _this.props).setOpen) === null || _c === void 0 ? void 0 : _c.call(_b, false);\n            }\n        };\n        _this.formatWeekNumber = function (date) {\n            if (_this.props.formatWeekNumber) {\n                return _this.props.formatWeekNumber(date);\n            }\n            return getWeek(date);\n        };\n        _this.isWeekDisabled = function () {\n            var startOfWeek = _this.startOfWeek();\n            var endOfWeek = addDays(startOfWeek, 6);\n            var processingDate = new Date(startOfWeek);\n            while (processingDate <= endOfWeek) {\n                if (!_this.isDisabled(processingDate))\n                    return false;\n                processingDate = addDays(processingDate, 1);\n            }\n            return true;\n        };\n        _this.renderDays = function () {\n            var startOfWeek = _this.startOfWeek();\n            var days = [];\n            var weekNumber = _this.formatWeekNumber(startOfWeek);\n            if (_this.props.showWeekNumber) {\n                var onClickAction = _this.props.onWeekSelect || _this.props.showWeekPicker\n                    ? _this.handleWeekClick.bind(_this, startOfWeek, weekNumber)\n                    : undefined;\n                days.push(React.createElement(WeekNumber, _assign({ key: \"W\" }, Week.defaultProps, _this.props, { weekNumber: weekNumber, isWeekDisabled: _this.isWeekDisabled(), date: startOfWeek, onClick: onClickAction })));\n            }\n            return days.concat([0, 1, 2, 3, 4, 5, 6].map(function (offset) {\n                var day = addDays(startOfWeek, offset);\n                return (React.createElement(Day, _assign({}, Week.defaultProps, _this.props, { ariaLabelPrefixWhenEnabled: _this.props.chooseDayAriaLabelPrefix, ariaLabelPrefixWhenDisabled: _this.props.disabledDayAriaLabelPrefix, key: day.valueOf(), day: day, onClick: _this.handleDayClick.bind(_this, day), onMouseEnter: _this.handleDayMouseEnter.bind(_this, day) })));\n            }));\n        };\n        _this.startOfWeek = function () {\n            return getStartOfWeek(_this.props.day, _this.props.locale, _this.props.calendarStartDay);\n        };\n        _this.isKeyboardSelected = function () {\n            return !_this.props.disabledKeyboardNavigation &&\n                !isSameDay(_this.startOfWeek(), _this.props.selected) &&\n                isSameDay(_this.startOfWeek(), _this.props.preSelection);\n        };\n        return _this;\n    }\n    Object.defineProperty(Week, \"defaultProps\", {\n        get: function () {\n            return {\n                shouldCloseOnSelect: true,\n            };\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Week.prototype.render = function () {\n        var weekNumberClasses = {\n            \"react-datepicker__week\": true,\n            \"react-datepicker__week--selected\": isSameDay(this.startOfWeek(), this.props.selected),\n            \"react-datepicker__week--keyboard-selected\": this.isKeyboardSelected(),\n        };\n        return React.createElement(\"div\", { className: clsx(weekNumberClasses) }, this.renderDays());\n    };\n    return Week;\n}(Component));\n\nvar _a;\nvar FIXED_HEIGHT_STANDARD_WEEK_COUNT = 6;\nvar MONTH_COLUMNS_LAYOUT = {\n    TWO_COLUMNS: \"two_columns\",\n    THREE_COLUMNS: \"three_columns\",\n    FOUR_COLUMNS: \"four_columns\",\n};\nvar MONTH_COLUMNS = (_a = {},\n    _a[MONTH_COLUMNS_LAYOUT.TWO_COLUMNS] = {\n        grid: [\n            [0, 1],\n            [2, 3],\n            [4, 5],\n            [6, 7],\n            [8, 9],\n            [10, 11],\n        ],\n        verticalNavigationOffset: 2,\n    },\n    _a[MONTH_COLUMNS_LAYOUT.THREE_COLUMNS] = {\n        grid: [\n            [0, 1, 2],\n            [3, 4, 5],\n            [6, 7, 8],\n            [9, 10, 11],\n        ],\n        verticalNavigationOffset: 3,\n    },\n    _a[MONTH_COLUMNS_LAYOUT.FOUR_COLUMNS] = {\n        grid: [\n            [0, 1, 2, 3],\n            [4, 5, 6, 7],\n            [8, 9, 10, 11],\n        ],\n        verticalNavigationOffset: 4,\n    },\n    _a);\nvar MONTH_NAVIGATION_HORIZONTAL_OFFSET = 1;\nfunction getMonthColumnsLayout(showFourColumnMonthYearPicker, showTwoColumnMonthYearPicker) {\n    if (showFourColumnMonthYearPicker) {\n        return MONTH_COLUMNS_LAYOUT.FOUR_COLUMNS;\n    }\n    if (showTwoColumnMonthYearPicker) {\n        return MONTH_COLUMNS_LAYOUT.TWO_COLUMNS;\n    }\n    return MONTH_COLUMNS_LAYOUT.THREE_COLUMNS;\n}\n/**\n * `Month` is a React component that represents a month in a calendar.\n * It accepts a `MonthProps` object as props which provides various configurations and event handlers.\n *\n * @prop dayClassName - Function to determine the class name for a day.\n * @prop monthClassName - Function to determine the class name for a month.\n * @prop filterDate - Function to filter dates.\n * @prop formatWeekNumber - Function to format the week number.\n * @prop onDayClick - Function to handle day click events.\n * @prop onDayMouseEnter - Function to handle mouse enter events on a day.\n * @prop onMouseLeave - Function to handle mouse leave events.\n * @prop onWeekSelect - Function to handle week selection.\n * @prop setPreSelection - Function to set pre-selection.\n * @prop setOpen - Function to set open state.\n * @prop renderDayContents - Function to render day contents.\n * @prop renderMonthContent - Function to render month content.\n * @prop renderQuarterContent - Function to render quarter content.\n * @prop handleOnKeyDown - Function to handle key down events.\n * @prop handleOnMonthKeyDown - Function to handle key down events on a month.\n * @prop ariaLabelPrefix - Aria label prefix.\n * @prop chooseDayAriaLabelPrefix - Aria label prefix for choosing a day.\n * @prop disabledDayAriaLabelPrefix - Aria label prefix for disabled day.\n * @prop disabledKeyboardNavigation - Flag to disable keyboard navigation.\n * @prop day - The day.\n * @prop endDate - The end date.\n * @prop orderInDisplay - The order in display.\n * @prop excludeDates - Dates to exclude.\n * @prop excludeDateIntervals - Date intervals to exclude.\n * @prop fixedHeight - Flag to set fixed height.\n * @prop highlightDates - Dates to highlight.\n * @prop holidays - Holidays.\n * @prop includeDates - Dates to include.\n * @prop includeDateIntervals - Date intervals to include.\n * @prop inline - Flag to set inline.\n * @prop shouldFocusDayInline - Flag to set focus on day inline.\n * @prop locale - The locale.\n * @prop maxDate - The maximum date.\n * @prop minDate - The minimum date.\n * @prop usePointerEvent - Flag to use pointer event.\n * @prop peekNextMonth - Flag to peek next month.\n * @prop preSelection - The pre-selection.\n * @prop selected - The selected date.\n * @prop selectingDate - The selecting date.\n * @prop calendarStartDay - The calendar start day.\n * @prop selectsEnd - Flag to select end.\n * @prop selectsStart - Flag to select start.\n * @prop selectsRange - Flag to select range.\n * @prop selectsDisabledDaysInRange - Flag to select disabled days in range.\n * @prop selectsMultiple - Flag to select multiple.\n * @prop selectedDates - The selected dates.\n * @prop showWeekNumbers - Flag to show week numbers.\n * @prop startDate - The start date.\n * @prop shouldCloseOnSelect - Flag to close on select.\n * @prop showMonthYearPicker - Flag to show month year picker.\n * @prop showFullMonthYearPicker - Flag to show full month year picker.\n * @prop showTwoColumnMonthYearPicker - Flag to show two column month year picker.\n * @prop showFourColumnMonthYearPicker - Flag to show four column month year picker.\n * @prop showQuarterYearPicker - Flag to show quarter year picker.\n * @prop showWeekPicker - Flag to show week picker.\n * @prop isInputFocused - Flag to set input focus.\n * @prop weekAriaLabelPrefix - Aria label prefix for week.\n * @prop containerRef - The container reference.\n * @prop monthShowsDuplicateDaysEnd - Flag to show duplicate days at the end of the month.\n * @prop monthShowsDuplicateDaysStart - Flag to show duplicate days at the start of the month.\n *\n * @example\n * ```tsx\n * function App() {\n *  const handleDayClick = (date) => {\n *     console.log('Day clicked: ', date);\n *   };\n *\n *   const handleDayMouseEnter = (date) => {\n *     console.log('Mouse entered on day: ', date);\n *   };\n *\n *   return (\n *     <div>\n *       <Month\n *         day={new Date()}\n *         endDate={new Date()}\n *         onDayClick={handleDayClick}\n *         onDayMouseEnter={handleDayMouseEnter}\n *         disabledKeyboardNavigation={false}\n *         showWeekNumbers={true}\n *         showMonthYearPicker={false}\n *       />\n *     </div>\n *   );\n * }\n * ```\n */\nvar Month = /** @class */ (function (_super) {\n    __extends(Month, _super);\n    function Month() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.MONTH_REFS = __spreadArray([], Array(12), true).map(function () { return createRef(); });\n        _this.QUARTER_REFS = __spreadArray([], Array(4), true).map(function () { return createRef(); });\n        _this.isDisabled = function (day) {\n            // Almost all props previously were passed as this.props w/o proper typing with prop-types\n            // after the migration to TS i made it explicit\n            return isDayDisabled(day, {\n                minDate: _this.props.minDate,\n                maxDate: _this.props.maxDate,\n                excludeDates: _this.props.excludeDates,\n                excludeDateIntervals: _this.props.excludeDateIntervals,\n                includeDateIntervals: _this.props.includeDateIntervals,\n                includeDates: _this.props.includeDates,\n                filterDate: _this.props.filterDate,\n            });\n        };\n        _this.isExcluded = function (day) {\n            // Almost all props previously were passed as this.props w/o proper typing with prop-types\n            // after the migration to TS i made it explicit\n            return isDayExcluded(day, {\n                excludeDates: _this.props.excludeDates,\n                excludeDateIntervals: _this.props.excludeDateIntervals,\n            });\n        };\n        _this.handleDayClick = function (day, event) {\n            var _a, _b;\n            (_b = (_a = _this.props).onDayClick) === null || _b === void 0 ? void 0 : _b.call(_a, day, event, _this.props.orderInDisplay);\n        };\n        _this.handleDayMouseEnter = function (day) {\n            var _a, _b;\n            (_b = (_a = _this.props).onDayMouseEnter) === null || _b === void 0 ? void 0 : _b.call(_a, day);\n        };\n        _this.handleMouseLeave = function () {\n            var _a, _b;\n            (_b = (_a = _this.props).onMouseLeave) === null || _b === void 0 ? void 0 : _b.call(_a);\n        };\n        _this.isRangeStartMonth = function (m) {\n            var _a = _this.props, day = _a.day, startDate = _a.startDate, endDate = _a.endDate;\n            if (!startDate || !endDate) {\n                return false;\n            }\n            return isSameMonth(setMonth(day, m), startDate);\n        };\n        _this.isRangeStartQuarter = function (q) {\n            var _a = _this.props, day = _a.day, startDate = _a.startDate, endDate = _a.endDate;\n            if (!startDate || !endDate) {\n                return false;\n            }\n            return isSameQuarter(setQuarter(day, q), startDate);\n        };\n        _this.isRangeEndMonth = function (m) {\n            var _a = _this.props, day = _a.day, startDate = _a.startDate, endDate = _a.endDate;\n            if (!startDate || !endDate) {\n                return false;\n            }\n            return isSameMonth(setMonth(day, m), endDate);\n        };\n        _this.isRangeEndQuarter = function (q) {\n            var _a = _this.props, day = _a.day, startDate = _a.startDate, endDate = _a.endDate;\n            if (!startDate || !endDate) {\n                return false;\n            }\n            return isSameQuarter(setQuarter(day, q), endDate);\n        };\n        _this.isInSelectingRangeMonth = function (m) {\n            var _a;\n            var _b = _this.props, day = _b.day, selectsStart = _b.selectsStart, selectsEnd = _b.selectsEnd, selectsRange = _b.selectsRange, startDate = _b.startDate, endDate = _b.endDate;\n            var selectingDate = (_a = _this.props.selectingDate) !== null && _a !== void 0 ? _a : _this.props.preSelection;\n            if (!(selectsStart || selectsEnd || selectsRange) || !selectingDate) {\n                return false;\n            }\n            if (selectsStart && endDate) {\n                return isMonthInRange(selectingDate, endDate, m, day);\n            }\n            if (selectsEnd && startDate) {\n                return isMonthInRange(startDate, selectingDate, m, day);\n            }\n            if (selectsRange && startDate && !endDate) {\n                return isMonthInRange(startDate, selectingDate, m, day);\n            }\n            return false;\n        };\n        _this.isSelectingMonthRangeStart = function (m) {\n            var _a;\n            if (!_this.isInSelectingRangeMonth(m)) {\n                return false;\n            }\n            var _b = _this.props, day = _b.day, startDate = _b.startDate, selectsStart = _b.selectsStart;\n            var _month = setMonth(day, m);\n            var selectingDate = (_a = _this.props.selectingDate) !== null && _a !== void 0 ? _a : _this.props.preSelection;\n            if (selectsStart) {\n                return isSameMonth(_month, selectingDate);\n            }\n            else {\n                return isSameMonth(_month, startDate);\n            }\n        };\n        _this.isSelectingMonthRangeEnd = function (m) {\n            var _a;\n            if (!_this.isInSelectingRangeMonth(m)) {\n                return false;\n            }\n            var _b = _this.props, day = _b.day, endDate = _b.endDate, selectsEnd = _b.selectsEnd, selectsRange = _b.selectsRange;\n            var _month = setMonth(day, m);\n            var selectingDate = (_a = _this.props.selectingDate) !== null && _a !== void 0 ? _a : _this.props.preSelection;\n            if (selectsEnd || selectsRange) {\n                return isSameMonth(_month, selectingDate);\n            }\n            else {\n                return isSameMonth(_month, endDate);\n            }\n        };\n        _this.isInSelectingRangeQuarter = function (q) {\n            var _a;\n            var _b = _this.props, day = _b.day, selectsStart = _b.selectsStart, selectsEnd = _b.selectsEnd, selectsRange = _b.selectsRange, startDate = _b.startDate, endDate = _b.endDate;\n            var selectingDate = (_a = _this.props.selectingDate) !== null && _a !== void 0 ? _a : _this.props.preSelection;\n            if (!(selectsStart || selectsEnd || selectsRange) || !selectingDate) {\n                return false;\n            }\n            if (selectsStart && endDate) {\n                return isQuarterInRange(selectingDate, endDate, q, day);\n            }\n            if (selectsEnd && startDate) {\n                return isQuarterInRange(startDate, selectingDate, q, day);\n            }\n            if (selectsRange && startDate && !endDate) {\n                return isQuarterInRange(startDate, selectingDate, q, day);\n            }\n            return false;\n        };\n        _this.isWeekInMonth = function (startOfWeek) {\n            var day = _this.props.day;\n            var endOfWeek = addDays(startOfWeek, 6);\n            return isSameMonth(startOfWeek, day) || isSameMonth(endOfWeek, day);\n        };\n        _this.isCurrentMonth = function (day, m) {\n            return getYear(day) === getYear(newDate()) && m === getMonth(newDate());\n        };\n        _this.isCurrentQuarter = function (day, q) {\n            return getYear(day) === getYear(newDate()) && q === getQuarter(newDate());\n        };\n        _this.isSelectedMonth = function (day, m, selected) {\n            return getMonth(selected) === m && getYear(day) === getYear(selected);\n        };\n        _this.isSelectMonthInList = function (day, m, selectedDates) {\n            return selectedDates.some(function (selectedDate) {\n                return _this.isSelectedMonth(day, m, selectedDate);\n            });\n        };\n        _this.isSelectedQuarter = function (day, q, selected) {\n            return getQuarter(day) === q && getYear(day) === getYear(selected);\n        };\n        _this.isMonthSelected = function () {\n            var _a = _this.props, day = _a.day, selected = _a.selected, selectedDates = _a.selectedDates, selectsMultiple = _a.selectsMultiple;\n            var monthIdx = getMonth(day);\n            if (selectsMultiple) {\n                return selectedDates === null || selectedDates === void 0 ? void 0 : selectedDates.some(function (date) {\n                    return _this.isSelectedMonth(day, monthIdx, date);\n                });\n            }\n            return !!selected && _this.isSelectedMonth(day, monthIdx, selected);\n        };\n        _this.renderWeeks = function () {\n            var weeks = [];\n            var isFixedHeight = _this.props.fixedHeight;\n            var i = 0;\n            var breakAfterNextPush = false;\n            var currentWeekStart = getStartOfWeek(getStartOfMonth(_this.props.day), _this.props.locale, _this.props.calendarStartDay);\n            var isPreSelected = function (preSelection) {\n                return _this.props.showWeekPicker\n                    ? getStartOfWeek(preSelection, _this.props.locale, _this.props.calendarStartDay)\n                    : _this.props.preSelection;\n            };\n            var isSelected = function (selected) {\n                return _this.props.showWeekPicker\n                    ? getStartOfWeek(selected, _this.props.locale, _this.props.calendarStartDay)\n                    : _this.props.selected;\n            };\n            var selected = _this.props.selected\n                ? isSelected(_this.props.selected)\n                : undefined;\n            var preSelection = _this.props.preSelection\n                ? isPreSelected(_this.props.preSelection)\n                : undefined;\n            while (true) {\n                weeks.push(React.createElement(Week, _assign({}, _this.props, { ariaLabelPrefix: _this.props.weekAriaLabelPrefix, key: i, day: currentWeekStart, month: getMonth(_this.props.day), onDayClick: _this.handleDayClick, onDayMouseEnter: _this.handleDayMouseEnter, selected: selected, preSelection: preSelection, showWeekNumber: _this.props.showWeekNumbers })));\n                if (breakAfterNextPush)\n                    break;\n                i++;\n                currentWeekStart = addWeeks(currentWeekStart, 1);\n                // If one of these conditions is true, we will either break on this week\n                // or break on the next week\n                var isFixedAndFinalWeek = isFixedHeight && i >= FIXED_HEIGHT_STANDARD_WEEK_COUNT;\n                var isNonFixedAndOutOfMonth = !isFixedHeight && !_this.isWeekInMonth(currentWeekStart);\n                if (isFixedAndFinalWeek || isNonFixedAndOutOfMonth) {\n                    if (_this.props.peekNextMonth) {\n                        breakAfterNextPush = true;\n                    }\n                    else {\n                        break;\n                    }\n                }\n            }\n            return weeks;\n        };\n        _this.onMonthClick = function (event, m) {\n            var _a = _this.isMonthDisabledForLabelDate(m), isDisabled = _a.isDisabled, labelDate = _a.labelDate;\n            if (isDisabled) {\n                return;\n            }\n            _this.handleDayClick(getStartOfMonth(labelDate), event);\n        };\n        _this.onMonthMouseEnter = function (m) {\n            var _a = _this.isMonthDisabledForLabelDate(m), isDisabled = _a.isDisabled, labelDate = _a.labelDate;\n            if (isDisabled) {\n                return;\n            }\n            _this.handleDayMouseEnter(getStartOfMonth(labelDate));\n        };\n        _this.handleMonthNavigation = function (newMonth, newDate) {\n            var _a, _b, _c, _d;\n            (_b = (_a = _this.props).setPreSelection) === null || _b === void 0 ? void 0 : _b.call(_a, newDate);\n            (_d = (_c = _this.MONTH_REFS[newMonth]) === null || _c === void 0 ? void 0 : _c.current) === null || _d === void 0 ? void 0 : _d.focus();\n        };\n        _this.handleKeyboardNavigation = function (event, eventKey, month) {\n            var _a;\n            var _b = _this.props, selected = _b.selected, preSelection = _b.preSelection, setPreSelection = _b.setPreSelection, minDate = _b.minDate, maxDate = _b.maxDate, showFourColumnMonthYearPicker = _b.showFourColumnMonthYearPicker, showTwoColumnMonthYearPicker = _b.showTwoColumnMonthYearPicker;\n            if (!preSelection)\n                return;\n            var monthColumnsLayout = getMonthColumnsLayout(showFourColumnMonthYearPicker, showTwoColumnMonthYearPicker);\n            var verticalOffset = _this.getVerticalOffset(monthColumnsLayout);\n            var monthsGrid = (_a = MONTH_COLUMNS[monthColumnsLayout]) === null || _a === void 0 ? void 0 : _a.grid;\n            var calculateNewDateAndMonth = function (eventKey, date, month) {\n                var _a, _b;\n                var newCalculatedDate = date;\n                var newCalculatedMonth = month;\n                switch (eventKey) {\n                    case KeyType.ArrowRight:\n                        newCalculatedDate = addMonths(date, MONTH_NAVIGATION_HORIZONTAL_OFFSET);\n                        newCalculatedMonth =\n                            month === 11 ? 0 : month + MONTH_NAVIGATION_HORIZONTAL_OFFSET;\n                        break;\n                    case KeyType.ArrowLeft:\n                        newCalculatedDate = subMonths(date, MONTH_NAVIGATION_HORIZONTAL_OFFSET);\n                        newCalculatedMonth =\n                            month === 0 ? 11 : month - MONTH_NAVIGATION_HORIZONTAL_OFFSET;\n                        break;\n                    case KeyType.ArrowUp:\n                        newCalculatedDate = subMonths(date, verticalOffset);\n                        newCalculatedMonth = ((_a = monthsGrid === null || monthsGrid === void 0 ? void 0 : monthsGrid[0]) === null || _a === void 0 ? void 0 : _a.includes(month))\n                            ? month + 12 - verticalOffset\n                            : month - verticalOffset;\n                        break;\n                    case KeyType.ArrowDown:\n                        newCalculatedDate = addMonths(date, verticalOffset);\n                        newCalculatedMonth = ((_b = monthsGrid === null || monthsGrid === void 0 ? void 0 : monthsGrid[monthsGrid.length - 1]) === null || _b === void 0 ? void 0 : _b.includes(month))\n                            ? month - 12 + verticalOffset\n                            : month + verticalOffset;\n                        break;\n                }\n                return { newCalculatedDate: newCalculatedDate, newCalculatedMonth: newCalculatedMonth };\n            };\n            var getNewDateAndMonth = function (eventKey, selectedDate, month) {\n                var MAX_ITERATIONS = 40;\n                var eventKeyCopy = eventKey;\n                var validDateFound = false;\n                var iterations = 0;\n                var _a = calculateNewDateAndMonth(eventKeyCopy, selectedDate, month), newCalculatedDate = _a.newCalculatedDate, newCalculatedMonth = _a.newCalculatedMonth;\n                while (!validDateFound) {\n                    if (iterations >= MAX_ITERATIONS) {\n                        newCalculatedDate = selectedDate;\n                        newCalculatedMonth = month;\n                        break;\n                    }\n                    // if minDate exists and the new month is before the minimum month, it will try to find the next available month after\n                    if (minDate && newCalculatedDate < minDate) {\n                        eventKeyCopy = KeyType.ArrowRight;\n                        var obj = calculateNewDateAndMonth(eventKeyCopy, newCalculatedDate, newCalculatedMonth);\n                        newCalculatedDate = obj.newCalculatedDate;\n                        newCalculatedMonth = obj.newCalculatedMonth;\n                    }\n                    // if maxDate exists and the new month is after the maximum month, it will try to find the next available month before\n                    if (maxDate && newCalculatedDate > maxDate) {\n                        eventKeyCopy = KeyType.ArrowLeft;\n                        var obj = calculateNewDateAndMonth(eventKeyCopy, newCalculatedDate, newCalculatedMonth);\n                        newCalculatedDate = obj.newCalculatedDate;\n                        newCalculatedMonth = obj.newCalculatedMonth;\n                    }\n                    if (isMonthYearDisabled(newCalculatedDate, _this.props)) {\n                        var obj = calculateNewDateAndMonth(eventKeyCopy, newCalculatedDate, newCalculatedMonth);\n                        newCalculatedDate = obj.newCalculatedDate;\n                        newCalculatedMonth = obj.newCalculatedMonth;\n                    }\n                    else {\n                        validDateFound = true;\n                    }\n                    iterations++;\n                }\n                return { newCalculatedDate: newCalculatedDate, newCalculatedMonth: newCalculatedMonth };\n            };\n            if (eventKey === KeyType.Enter) {\n                if (!_this.isMonthDisabled(month)) {\n                    _this.onMonthClick(event, month);\n                    setPreSelection === null || setPreSelection === void 0 ? void 0 : setPreSelection(selected);\n                }\n                return;\n            }\n            var _c = getNewDateAndMonth(eventKey, preSelection, month), newCalculatedDate = _c.newCalculatedDate, newCalculatedMonth = _c.newCalculatedMonth;\n            switch (eventKey) {\n                case KeyType.ArrowRight:\n                case KeyType.ArrowLeft:\n                case KeyType.ArrowUp:\n                case KeyType.ArrowDown:\n                    _this.handleMonthNavigation(newCalculatedMonth, newCalculatedDate);\n                    break;\n            }\n        };\n        _this.getVerticalOffset = function (monthColumnsLayout) {\n            var _a, _b;\n            return (_b = (_a = MONTH_COLUMNS[monthColumnsLayout]) === null || _a === void 0 ? void 0 : _a.verticalNavigationOffset) !== null && _b !== void 0 ? _b : 0;\n        };\n        _this.onMonthKeyDown = function (event, month) {\n            var _a = _this.props, disabledKeyboardNavigation = _a.disabledKeyboardNavigation, handleOnMonthKeyDown = _a.handleOnMonthKeyDown;\n            var eventKey = event.key;\n            if (eventKey !== KeyType.Tab) {\n                // preventDefault on tab event blocks focus change\n                event.preventDefault();\n            }\n            if (!disabledKeyboardNavigation) {\n                _this.handleKeyboardNavigation(event, eventKey, month);\n            }\n            handleOnMonthKeyDown && handleOnMonthKeyDown(event);\n        };\n        _this.onQuarterClick = function (event, q) {\n            var labelDate = setQuarter(_this.props.day, q);\n            if (isQuarterDisabled(labelDate, _this.props)) {\n                return;\n            }\n            _this.handleDayClick(getStartOfQuarter(labelDate), event);\n        };\n        _this.onQuarterMouseEnter = function (q) {\n            var labelDate = setQuarter(_this.props.day, q);\n            if (isQuarterDisabled(labelDate, _this.props)) {\n                return;\n            }\n            _this.handleDayMouseEnter(getStartOfQuarter(labelDate));\n        };\n        _this.handleQuarterNavigation = function (newQuarter, newDate) {\n            var _a, _b, _c, _d;\n            if (_this.isDisabled(newDate) || _this.isExcluded(newDate)) {\n                return;\n            }\n            (_b = (_a = _this.props).setPreSelection) === null || _b === void 0 ? void 0 : _b.call(_a, newDate);\n            (_d = (_c = _this.QUARTER_REFS[newQuarter - 1]) === null || _c === void 0 ? void 0 : _c.current) === null || _d === void 0 ? void 0 : _d.focus();\n        };\n        _this.onQuarterKeyDown = function (event, quarter) {\n            var _a, _b;\n            var eventKey = event.key;\n            if (!_this.props.disabledKeyboardNavigation) {\n                switch (eventKey) {\n                    case KeyType.Enter:\n                        _this.onQuarterClick(event, quarter);\n                        (_b = (_a = _this.props).setPreSelection) === null || _b === void 0 ? void 0 : _b.call(_a, _this.props.selected);\n                        break;\n                    case KeyType.ArrowRight:\n                        if (!_this.props.preSelection) {\n                            break;\n                        }\n                        _this.handleQuarterNavigation(quarter === 4 ? 1 : quarter + 1, addQuarters(_this.props.preSelection, 1));\n                        break;\n                    case KeyType.ArrowLeft:\n                        if (!_this.props.preSelection) {\n                            break;\n                        }\n                        _this.handleQuarterNavigation(quarter === 1 ? 4 : quarter - 1, subQuarters(_this.props.preSelection, 1));\n                        break;\n                }\n            }\n        };\n        _this.isMonthDisabledForLabelDate = function (month) {\n            var _a;\n            var _b = _this.props, day = _b.day, minDate = _b.minDate, maxDate = _b.maxDate, excludeDates = _b.excludeDates, includeDates = _b.includeDates;\n            var labelDate = setMonth(day, month);\n            return {\n                isDisabled: (_a = ((minDate || maxDate || excludeDates || includeDates) &&\n                    isMonthDisabled(labelDate, _this.props))) !== null && _a !== void 0 ? _a : false,\n                labelDate: labelDate,\n            };\n        };\n        _this.isMonthDisabled = function (month) {\n            var isDisabled = _this.isMonthDisabledForLabelDate(month).isDisabled;\n            return isDisabled;\n        };\n        _this.getMonthClassNames = function (m) {\n            var _a = _this.props, day = _a.day, startDate = _a.startDate, endDate = _a.endDate, preSelection = _a.preSelection, monthClassName = _a.monthClassName;\n            var _monthClassName = monthClassName\n                ? monthClassName(setMonth(day, m))\n                : undefined;\n            var selection = _this.getSelection();\n            return clsx(\"react-datepicker__month-text\", \"react-datepicker__month-\".concat(m), _monthClassName, {\n                \"react-datepicker__month-text--disabled\": _this.isMonthDisabled(m),\n                \"react-datepicker__month-text--selected\": selection\n                    ? _this.isSelectMonthInList(day, m, selection)\n                    : undefined,\n                \"react-datepicker__month-text--keyboard-selected\": !_this.props.disabledKeyboardNavigation &&\n                    preSelection &&\n                    _this.isSelectedMonth(day, m, preSelection) &&\n                    !_this.isMonthSelected() &&\n                    !_this.isMonthDisabled(m),\n                \"react-datepicker__month-text--in-selecting-range\": _this.isInSelectingRangeMonth(m),\n                \"react-datepicker__month-text--in-range\": startDate && endDate\n                    ? isMonthInRange(startDate, endDate, m, day)\n                    : undefined,\n                \"react-datepicker__month-text--range-start\": _this.isRangeStartMonth(m),\n                \"react-datepicker__month-text--range-end\": _this.isRangeEndMonth(m),\n                \"react-datepicker__month-text--selecting-range-start\": _this.isSelectingMonthRangeStart(m),\n                \"react-datepicker__month-text--selecting-range-end\": _this.isSelectingMonthRangeEnd(m),\n                \"react-datepicker__month-text--today\": _this.isCurrentMonth(day, m),\n            });\n        };\n        _this.getTabIndex = function (m) {\n            if (_this.props.preSelection == null) {\n                return \"-1\";\n            }\n            var preSelectedMonth = getMonth(_this.props.preSelection);\n            var isPreSelectedMonthDisabled = _this.isMonthDisabledForLabelDate(preSelectedMonth).isDisabled;\n            var tabIndex = m === preSelectedMonth &&\n                !(isPreSelectedMonthDisabled || _this.props.disabledKeyboardNavigation)\n                ? \"0\"\n                : \"-1\";\n            return tabIndex;\n        };\n        _this.getQuarterTabIndex = function (q) {\n            if (_this.props.preSelection == null) {\n                return \"-1\";\n            }\n            var preSelectedQuarter = getQuarter(_this.props.preSelection);\n            var isCurrentQuarterDisabled = isQuarterDisabled(_this.props.day, _this.props);\n            var tabIndex = q === preSelectedQuarter &&\n                !(isCurrentQuarterDisabled || _this.props.disabledKeyboardNavigation)\n                ? \"0\"\n                : \"-1\";\n            return tabIndex;\n        };\n        _this.getAriaLabel = function (month) {\n            var _a = _this.props, _b = _a.chooseDayAriaLabelPrefix, chooseDayAriaLabelPrefix = _b === void 0 ? \"Choose\" : _b, _c = _a.disabledDayAriaLabelPrefix, disabledDayAriaLabelPrefix = _c === void 0 ? \"Not available\" : _c, day = _a.day, locale = _a.locale;\n            var labelDate = setMonth(day, month);\n            var prefix = _this.isDisabled(labelDate) || _this.isExcluded(labelDate)\n                ? disabledDayAriaLabelPrefix\n                : chooseDayAriaLabelPrefix;\n            return \"\".concat(prefix, \" \").concat(formatDate(labelDate, \"MMMM yyyy\", locale));\n        };\n        _this.getQuarterClassNames = function (q) {\n            var _a = _this.props, day = _a.day, startDate = _a.startDate, endDate = _a.endDate, selected = _a.selected, minDate = _a.minDate, maxDate = _a.maxDate, excludeDates = _a.excludeDates, includeDates = _a.includeDates, filterDate = _a.filterDate, preSelection = _a.preSelection, disabledKeyboardNavigation = _a.disabledKeyboardNavigation;\n            var isDisabled = (minDate || maxDate || excludeDates || includeDates || filterDate) &&\n                isQuarterDisabled(setQuarter(day, q), _this.props);\n            return clsx(\"react-datepicker__quarter-text\", \"react-datepicker__quarter-\".concat(q), {\n                \"react-datepicker__quarter-text--disabled\": isDisabled,\n                \"react-datepicker__quarter-text--selected\": selected\n                    ? _this.isSelectedQuarter(day, q, selected)\n                    : undefined,\n                \"react-datepicker__quarter-text--keyboard-selected\": !disabledKeyboardNavigation &&\n                    preSelection &&\n                    _this.isSelectedQuarter(day, q, preSelection) &&\n                    !isDisabled,\n                \"react-datepicker__quarter-text--in-selecting-range\": _this.isInSelectingRangeQuarter(q),\n                \"react-datepicker__quarter-text--in-range\": startDate && endDate\n                    ? isQuarterInRange(startDate, endDate, q, day)\n                    : undefined,\n                \"react-datepicker__quarter-text--range-start\": _this.isRangeStartQuarter(q),\n                \"react-datepicker__quarter-text--range-end\": _this.isRangeEndQuarter(q),\n                \"react-datepicker__quarter-text--today\": _this.isCurrentQuarter(day, q),\n            });\n        };\n        _this.getMonthContent = function (m) {\n            var _a = _this.props, showFullMonthYearPicker = _a.showFullMonthYearPicker, renderMonthContent = _a.renderMonthContent, locale = _a.locale, day = _a.day;\n            var shortMonthText = getMonthShortInLocale(m, locale);\n            var fullMonthText = getMonthInLocale(m, locale);\n            if (renderMonthContent) {\n                return renderMonthContent(m, shortMonthText, fullMonthText, day);\n            }\n            return showFullMonthYearPicker ? fullMonthText : shortMonthText;\n        };\n        _this.getQuarterContent = function (q) {\n            var _a;\n            var _b = _this.props, renderQuarterContent = _b.renderQuarterContent, locale = _b.locale;\n            var shortQuarter = getQuarterShortInLocale(q, locale);\n            return (_a = renderQuarterContent === null || renderQuarterContent === void 0 ? void 0 : renderQuarterContent(q, shortQuarter)) !== null && _a !== void 0 ? _a : shortQuarter;\n        };\n        _this.renderMonths = function () {\n            var _a;\n            var _b = _this.props, showTwoColumnMonthYearPicker = _b.showTwoColumnMonthYearPicker, showFourColumnMonthYearPicker = _b.showFourColumnMonthYearPicker, day = _b.day, selected = _b.selected;\n            var monthColumns = (_a = MONTH_COLUMNS[getMonthColumnsLayout(showFourColumnMonthYearPicker, showTwoColumnMonthYearPicker)]) === null || _a === void 0 ? void 0 : _a.grid;\n            return monthColumns === null || monthColumns === void 0 ? void 0 : monthColumns.map(function (month, i) { return (React.createElement(\"div\", { className: \"react-datepicker__month-wrapper\", key: i }, month.map(function (m, j) { return (React.createElement(\"div\", { ref: _this.MONTH_REFS[m], key: j, onClick: function (event) {\n                    _this.onMonthClick(event, m);\n                }, onKeyDown: function (event) {\n                    if (isSpaceKeyDown(event)) {\n                        event.preventDefault();\n                        event.key = KeyType.Enter;\n                    }\n                    _this.onMonthKeyDown(event, m);\n                }, onMouseEnter: !_this.props.usePointerEvent\n                    ? function () { return _this.onMonthMouseEnter(m); }\n                    : undefined, onPointerEnter: _this.props.usePointerEvent\n                    ? function () { return _this.onMonthMouseEnter(m); }\n                    : undefined, tabIndex: Number(_this.getTabIndex(m)), className: _this.getMonthClassNames(m), \"aria-disabled\": _this.isMonthDisabled(m), role: \"option\", \"aria-label\": _this.getAriaLabel(m), \"aria-current\": _this.isCurrentMonth(day, m) ? \"date\" : undefined, \"aria-selected\": selected ? _this.isSelectedMonth(day, m, selected) : undefined }, _this.getMonthContent(m))); }))); });\n        };\n        _this.renderQuarters = function () {\n            var _a = _this.props, day = _a.day, selected = _a.selected;\n            var quarters = [1, 2, 3, 4];\n            return (React.createElement(\"div\", { className: \"react-datepicker__quarter-wrapper\" }, quarters.map(function (q, j) { return (React.createElement(\"div\", { key: j, ref: _this.QUARTER_REFS[j], role: \"option\", onClick: function (event) {\n                    _this.onQuarterClick(event, q);\n                }, onKeyDown: function (event) {\n                    _this.onQuarterKeyDown(event, q);\n                }, onMouseEnter: !_this.props.usePointerEvent\n                    ? function () { return _this.onQuarterMouseEnter(q); }\n                    : undefined, onPointerEnter: _this.props.usePointerEvent\n                    ? function () { return _this.onQuarterMouseEnter(q); }\n                    : undefined, className: _this.getQuarterClassNames(q), \"aria-selected\": selected ? _this.isSelectedQuarter(day, q, selected) : undefined, tabIndex: Number(_this.getQuarterTabIndex(q)), \"aria-current\": _this.isCurrentQuarter(day, q) ? \"date\" : undefined }, _this.getQuarterContent(q))); })));\n        };\n        _this.getClassNames = function () {\n            var _a = _this.props, selectingDate = _a.selectingDate, selectsStart = _a.selectsStart, selectsEnd = _a.selectsEnd, showMonthYearPicker = _a.showMonthYearPicker, showQuarterYearPicker = _a.showQuarterYearPicker, showWeekPicker = _a.showWeekPicker;\n            return clsx(\"react-datepicker__month\", {\n                \"react-datepicker__month--selecting-range\": selectingDate && (selectsStart || selectsEnd),\n            }, { \"react-datepicker__monthPicker\": showMonthYearPicker }, { \"react-datepicker__quarterPicker\": showQuarterYearPicker }, { \"react-datepicker__weekPicker\": showWeekPicker });\n        };\n        return _this;\n    }\n    Month.prototype.getSelection = function () {\n        var _a = this.props, selected = _a.selected, selectedDates = _a.selectedDates, selectsMultiple = _a.selectsMultiple;\n        if (selectsMultiple) {\n            return selectedDates;\n        }\n        if (selected) {\n            return [selected];\n        }\n        return undefined;\n    };\n    Month.prototype.render = function () {\n        var _a = this.props, showMonthYearPicker = _a.showMonthYearPicker, showQuarterYearPicker = _a.showQuarterYearPicker, day = _a.day, _b = _a.ariaLabelPrefix, ariaLabelPrefix = _b === void 0 ? \"Month \" : _b;\n        var formattedAriaLabelPrefix = ariaLabelPrefix\n            ? ariaLabelPrefix.trim() + \" \"\n            : \"\";\n        return (React.createElement(\"div\", { className: this.getClassNames(), onMouseLeave: !this.props.usePointerEvent ? this.handleMouseLeave : undefined, onPointerLeave: this.props.usePointerEvent ? this.handleMouseLeave : undefined, \"aria-label\": \"\".concat(formattedAriaLabelPrefix).concat(formatDate(day, \"MMMM, yyyy\", this.props.locale)), role: \"listbox\" }, showMonthYearPicker\n            ? this.renderMonths()\n            : showQuarterYearPicker\n                ? this.renderQuarters()\n                : this.renderWeeks()));\n    };\n    return Month;\n}(Component));\n\nvar MonthDropdownOptions = /** @class */ (function (_super) {\n    __extends(MonthDropdownOptions, _super);\n    function MonthDropdownOptions() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.isSelectedMonth = function (i) { return _this.props.month === i; };\n        _this.renderOptions = function () {\n            return _this.props.monthNames.map(function (month, i) { return (React.createElement(\"div\", { className: _this.isSelectedMonth(i)\n                    ? \"react-datepicker__month-option react-datepicker__month-option--selected_month\"\n                    : \"react-datepicker__month-option\", key: month, onClick: _this.onChange.bind(_this, i), \"aria-selected\": _this.isSelectedMonth(i) ? \"true\" : undefined },\n                _this.isSelectedMonth(i) ? (React.createElement(\"span\", { className: \"react-datepicker__month-option--selected\" }, \"\\u2713\")) : (\"\"),\n                month)); });\n        };\n        _this.onChange = function (month) { return _this.props.onChange(month); };\n        _this.handleClickOutside = function () { return _this.props.onCancel(); };\n        return _this;\n    }\n    MonthDropdownOptions.prototype.render = function () {\n        return (React.createElement(ClickOutsideWrapper, { className: \"react-datepicker__month-dropdown\", onClickOutside: this.handleClickOutside }, this.renderOptions()));\n    };\n    return MonthDropdownOptions;\n}(Component));\n\nvar MonthDropdown = /** @class */ (function (_super) {\n    __extends(MonthDropdown, _super);\n    function MonthDropdown() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.state = {\n            dropdownVisible: false,\n        };\n        _this.renderSelectOptions = function (monthNames) {\n            return monthNames.map(function (m, i) { return (React.createElement(\"option\", { key: m, value: i }, m)); });\n        };\n        _this.renderSelectMode = function (monthNames) { return (React.createElement(\"select\", { value: _this.props.month, className: \"react-datepicker__month-select\", onChange: function (e) { return _this.onChange(parseInt(e.target.value)); } }, _this.renderSelectOptions(monthNames))); };\n        _this.renderReadView = function (visible, monthNames) { return (React.createElement(\"div\", { key: \"read\", style: { visibility: visible ? \"visible\" : \"hidden\" }, className: \"react-datepicker__month-read-view\", onClick: _this.toggleDropdown },\n            React.createElement(\"span\", { className: \"react-datepicker__month-read-view--down-arrow\" }),\n            React.createElement(\"span\", { className: \"react-datepicker__month-read-view--selected-month\" }, monthNames[_this.props.month]))); };\n        _this.renderDropdown = function (monthNames) { return (React.createElement(MonthDropdownOptions, _assign({ key: \"dropdown\" }, _this.props, { monthNames: monthNames, onChange: _this.onChange, onCancel: _this.toggleDropdown }))); };\n        _this.renderScrollMode = function (monthNames) {\n            var dropdownVisible = _this.state.dropdownVisible;\n            var result = [_this.renderReadView(!dropdownVisible, monthNames)];\n            if (dropdownVisible) {\n                result.unshift(_this.renderDropdown(monthNames));\n            }\n            return result;\n        };\n        _this.onChange = function (month) {\n            _this.toggleDropdown();\n            if (month !== _this.props.month) {\n                _this.props.onChange(month);\n            }\n        };\n        _this.toggleDropdown = function () {\n            return _this.setState({\n                dropdownVisible: !_this.state.dropdownVisible,\n            });\n        };\n        return _this;\n    }\n    MonthDropdown.prototype.render = function () {\n        var _this = this;\n        var monthNames = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11].map(this.props.useShortMonthInDropdown\n            ? function (m) { return getMonthShortInLocale(m, _this.props.locale); }\n            : function (m) { return getMonthInLocale(m, _this.props.locale); });\n        var renderedDropdown;\n        switch (this.props.dropdownMode) {\n            case \"scroll\":\n                renderedDropdown = this.renderScrollMode(monthNames);\n                break;\n            case \"select\":\n                renderedDropdown = this.renderSelectMode(monthNames);\n                break;\n        }\n        return (React.createElement(\"div\", { className: \"react-datepicker__month-dropdown-container react-datepicker__month-dropdown-container--\".concat(this.props.dropdownMode) }, renderedDropdown));\n    };\n    return MonthDropdown;\n}(Component));\n\nfunction generateMonthYears(minDate, maxDate) {\n    var list = [];\n    var currDate = getStartOfMonth(minDate);\n    var lastDate = getStartOfMonth(maxDate);\n    while (!isAfter(currDate, lastDate)) {\n        list.push(newDate(currDate));\n        currDate = addMonths(currDate, 1);\n    }\n    return list;\n}\nvar MonthYearDropdownOptions = /** @class */ (function (_super) {\n    __extends(MonthYearDropdownOptions, _super);\n    function MonthYearDropdownOptions(props) {\n        var _this = _super.call(this, props) || this;\n        _this.renderOptions = function () {\n            return _this.state.monthYearsList.map(function (monthYear) {\n                var monthYearPoint = getTime(monthYear);\n                var isSameMonthYear = isSameYear(_this.props.date, monthYear) &&\n                    isSameMonth(_this.props.date, monthYear);\n                return (React.createElement(\"div\", { className: isSameMonthYear\n                        ? \"react-datepicker__month-year-option--selected_month-year\"\n                        : \"react-datepicker__month-year-option\", key: monthYearPoint, onClick: _this.onChange.bind(_this, monthYearPoint), \"aria-selected\": isSameMonthYear ? \"true\" : undefined },\n                    isSameMonthYear ? (React.createElement(\"span\", { className: \"react-datepicker__month-year-option--selected\" }, \"\\u2713\")) : (\"\"),\n                    formatDate(monthYear, _this.props.dateFormat, _this.props.locale)));\n            });\n        };\n        _this.onChange = function (monthYear) { return _this.props.onChange(monthYear); };\n        _this.handleClickOutside = function () {\n            _this.props.onCancel();\n        };\n        _this.state = {\n            monthYearsList: generateMonthYears(_this.props.minDate, _this.props.maxDate),\n        };\n        return _this;\n    }\n    MonthYearDropdownOptions.prototype.render = function () {\n        var dropdownClass = clsx({\n            \"react-datepicker__month-year-dropdown\": true,\n            \"react-datepicker__month-year-dropdown--scrollable\": this.props.scrollableMonthYearDropdown,\n        });\n        return (React.createElement(ClickOutsideWrapper, { className: dropdownClass, onClickOutside: this.handleClickOutside }, this.renderOptions()));\n    };\n    return MonthYearDropdownOptions;\n}(Component));\n\nvar MonthYearDropdown = /** @class */ (function (_super) {\n    __extends(MonthYearDropdown, _super);\n    function MonthYearDropdown() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.state = {\n            dropdownVisible: false,\n        };\n        _this.renderSelectOptions = function () {\n            var currDate = getStartOfMonth(_this.props.minDate);\n            var lastDate = getStartOfMonth(_this.props.maxDate);\n            var options = [];\n            while (!isAfter(currDate, lastDate)) {\n                var timePoint = getTime(currDate);\n                options.push(React.createElement(\"option\", { key: timePoint, value: timePoint }, formatDate(currDate, _this.props.dateFormat, _this.props.locale)));\n                currDate = addMonths(currDate, 1);\n            }\n            return options;\n        };\n        _this.onSelectChange = function (event) {\n            _this.onChange(parseInt(event.target.value));\n        };\n        _this.renderSelectMode = function () { return (React.createElement(\"select\", { value: getTime(getStartOfMonth(_this.props.date)), className: \"react-datepicker__month-year-select\", onChange: _this.onSelectChange }, _this.renderSelectOptions())); };\n        _this.renderReadView = function (visible) {\n            var yearMonth = formatDate(_this.props.date, _this.props.dateFormat, _this.props.locale);\n            return (React.createElement(\"div\", { key: \"read\", style: { visibility: visible ? \"visible\" : \"hidden\" }, className: \"react-datepicker__month-year-read-view\", onClick: _this.toggleDropdown },\n                React.createElement(\"span\", { className: \"react-datepicker__month-year-read-view--down-arrow\" }),\n                React.createElement(\"span\", { className: \"react-datepicker__month-year-read-view--selected-month-year\" }, yearMonth)));\n        };\n        _this.renderDropdown = function () { return (React.createElement(MonthYearDropdownOptions, _assign({ key: \"dropdown\" }, _this.props, { onChange: _this.onChange, onCancel: _this.toggleDropdown }))); };\n        _this.renderScrollMode = function () {\n            var dropdownVisible = _this.state.dropdownVisible;\n            var result = [_this.renderReadView(!dropdownVisible)];\n            if (dropdownVisible) {\n                result.unshift(_this.renderDropdown());\n            }\n            return result;\n        };\n        _this.onChange = function (monthYearPoint) {\n            _this.toggleDropdown();\n            var changedDate = newDate(monthYearPoint);\n            if (isSameYear(_this.props.date, changedDate) &&\n                isSameMonth(_this.props.date, changedDate)) {\n                return;\n            }\n            _this.props.onChange(changedDate);\n        };\n        _this.toggleDropdown = function () {\n            return _this.setState({\n                dropdownVisible: !_this.state.dropdownVisible,\n            });\n        };\n        return _this;\n    }\n    MonthYearDropdown.prototype.render = function () {\n        var renderedDropdown;\n        switch (this.props.dropdownMode) {\n            case \"scroll\":\n                renderedDropdown = this.renderScrollMode();\n                break;\n            case \"select\":\n                renderedDropdown = this.renderSelectMode();\n                break;\n        }\n        return (React.createElement(\"div\", { className: \"react-datepicker__month-year-dropdown-container react-datepicker__month-year-dropdown-container--\".concat(this.props.dropdownMode) }, renderedDropdown));\n    };\n    return MonthYearDropdown;\n}(Component));\n\nvar Time = /** @class */ (function (_super) {\n    __extends(Time, _super);\n    function Time() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.state = {\n            height: null,\n        };\n        _this.scrollToTheSelectedTime = function () {\n            requestAnimationFrame(function () {\n                var _a, _b, _c;\n                if (!_this.list)\n                    return;\n                _this.list.scrollTop =\n                    (_c = (_this.centerLi &&\n                        Time.calcCenterPosition(_this.props.monthRef\n                            ? _this.props.monthRef.clientHeight -\n                                ((_b = (_a = _this.header) === null || _a === void 0 ? void 0 : _a.clientHeight) !== null && _b !== void 0 ? _b : 0)\n                            : _this.list.clientHeight, _this.centerLi))) !== null && _c !== void 0 ? _c : 0;\n            });\n        };\n        _this.handleClick = function (time) {\n            var _a, _b;\n            if (((_this.props.minTime || _this.props.maxTime) &&\n                isTimeInDisabledRange(time, _this.props)) ||\n                ((_this.props.excludeTimes ||\n                    _this.props.includeTimes ||\n                    _this.props.filterTime) &&\n                    isTimeDisabled(time, _this.props))) {\n                return;\n            }\n            (_b = (_a = _this.props).onChange) === null || _b === void 0 ? void 0 : _b.call(_a, time);\n        };\n        _this.isSelectedTime = function (time) {\n            return _this.props.selected && isSameMinute(_this.props.selected, time);\n        };\n        _this.isDisabledTime = function (time) {\n            return ((_this.props.minTime || _this.props.maxTime) &&\n                isTimeInDisabledRange(time, _this.props)) ||\n                ((_this.props.excludeTimes ||\n                    _this.props.includeTimes ||\n                    _this.props.filterTime) &&\n                    isTimeDisabled(time, _this.props));\n        };\n        _this.liClasses = function (time) {\n            var _a;\n            var classes = [\n                \"react-datepicker__time-list-item\",\n                _this.props.timeClassName ? _this.props.timeClassName(time) : undefined,\n            ];\n            if (_this.isSelectedTime(time)) {\n                classes.push(\"react-datepicker__time-list-item--selected\");\n            }\n            if (_this.isDisabledTime(time)) {\n                classes.push(\"react-datepicker__time-list-item--disabled\");\n            }\n            //convert this.props.intervals and the relevant time to seconds and check if it it's a clean multiple of the interval\n            if (_this.props.injectTimes &&\n                (getHours(time) * 3600 + getMinutes(time) * 60 + getSeconds(time)) %\n                    (((_a = _this.props.intervals) !== null && _a !== void 0 ? _a : Time.defaultProps.intervals) * 60) !==\n                    0) {\n                classes.push(\"react-datepicker__time-list-item--injected\");\n            }\n            return classes.join(\" \");\n        };\n        _this.handleOnKeyDown = function (event, time) {\n            var _a, _b;\n            if (event.key === KeyType.Space) {\n                event.preventDefault();\n                event.key = KeyType.Enter;\n            }\n            if ((event.key === KeyType.ArrowUp || event.key === KeyType.ArrowLeft) &&\n                event.target instanceof HTMLElement &&\n                event.target.previousSibling) {\n                event.preventDefault();\n                event.target.previousSibling instanceof HTMLElement &&\n                    event.target.previousSibling.focus();\n            }\n            if ((event.key === KeyType.ArrowDown || event.key === KeyType.ArrowRight) &&\n                event.target instanceof HTMLElement &&\n                event.target.nextSibling) {\n                event.preventDefault();\n                event.target.nextSibling instanceof HTMLElement &&\n                    event.target.nextSibling.focus();\n            }\n            if (event.key === KeyType.Enter) {\n                _this.handleClick(time);\n            }\n            (_b = (_a = _this.props).handleOnKeyDown) === null || _b === void 0 ? void 0 : _b.call(_a, event);\n        };\n        _this.renderTimes = function () {\n            var _a;\n            var times = [];\n            var format = typeof _this.props.format === \"string\" ? _this.props.format : \"p\";\n            var intervals = (_a = _this.props.intervals) !== null && _a !== void 0 ? _a : Time.defaultProps.intervals;\n            var activeDate = _this.props.selected || _this.props.openToDate || newDate();\n            var base = getStartOfDay(activeDate);\n            var sortedInjectTimes = _this.props.injectTimes &&\n                _this.props.injectTimes.sort(function (a, b) {\n                    return a.getTime() - b.getTime();\n                });\n            var minutesInDay = 60 * getHoursInDay(activeDate);\n            var multiplier = minutesInDay / intervals;\n            for (var i = 0; i < multiplier; i++) {\n                var currentTime = addMinutes(base, i * intervals);\n                times.push(currentTime);\n                if (sortedInjectTimes) {\n                    var timesToInject = timesToInjectAfter(base, currentTime, i, intervals, sortedInjectTimes);\n                    times = times.concat(timesToInject);\n                }\n            }\n            // Determine which time to focus and scroll into view when component mounts\n            var timeToFocus = times.reduce(function (prev, time) {\n                if (time.getTime() <= activeDate.getTime()) {\n                    return time;\n                }\n                return prev;\n            }, times[0]);\n            return times.map(function (time) {\n                return (React.createElement(\"li\", { key: time.valueOf(), onClick: _this.handleClick.bind(_this, time), className: _this.liClasses(time), ref: function (li) {\n                        if (time === timeToFocus) {\n                            _this.centerLi = li;\n                        }\n                    }, onKeyDown: function (event) {\n                        _this.handleOnKeyDown(event, time);\n                    }, tabIndex: time === timeToFocus ? 0 : -1, role: \"option\", \"aria-selected\": _this.isSelectedTime(time) ? \"true\" : undefined, \"aria-disabled\": _this.isDisabledTime(time) ? \"true\" : undefined }, formatDate(time, format, _this.props.locale)));\n            });\n        };\n        _this.renderTimeCaption = function () {\n            if (_this.props.showTimeCaption === false) {\n                return React.createElement(React.Fragment, null);\n            }\n            return (React.createElement(\"div\", { className: \"react-datepicker__header react-datepicker__header--time \".concat(_this.props.showTimeSelectOnly\n                    ? \"react-datepicker__header--time--only\"\n                    : \"\"), ref: function (header) {\n                    _this.header = header;\n                } },\n                React.createElement(\"div\", { className: \"react-datepicker-time__header\" }, _this.props.timeCaption)));\n        };\n        return _this;\n    }\n    Object.defineProperty(Time, \"defaultProps\", {\n        get: function () {\n            return {\n                intervals: 30,\n                todayButton: null,\n                timeCaption: \"Time\",\n                showTimeCaption: true,\n            };\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Time.prototype.componentDidMount = function () {\n        // code to ensure selected time will always be in focus within time window when it first appears\n        this.scrollToTheSelectedTime();\n        this.observeDatePickerHeightChanges();\n    };\n    Time.prototype.componentWillUnmount = function () {\n        var _a;\n        (_a = this.resizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();\n    };\n    Time.prototype.observeDatePickerHeightChanges = function () {\n        var _this = this;\n        var monthRef = this.props.monthRef;\n        this.updateContainerHeight();\n        if (monthRef) {\n            this.resizeObserver = new ResizeObserver(function () {\n                _this.updateContainerHeight();\n            });\n            this.resizeObserver.observe(monthRef);\n        }\n    };\n    Time.prototype.updateContainerHeight = function () {\n        if (this.props.monthRef && this.header) {\n            this.setState({\n                height: this.props.monthRef.clientHeight - this.header.clientHeight,\n            });\n        }\n    };\n    Time.prototype.render = function () {\n        var _this = this;\n        var _a;\n        var height = this.state.height;\n        return (React.createElement(\"div\", { className: \"react-datepicker__time-container \".concat(((_a = this.props.todayButton) !== null && _a !== void 0 ? _a : Time.defaultProps.todayButton)\n                ? \"react-datepicker__time-container--with-today-button\"\n                : \"\") },\n            this.renderTimeCaption(),\n            React.createElement(\"div\", { className: \"react-datepicker__time\" },\n                React.createElement(\"div\", { className: \"react-datepicker__time-box\" },\n                    React.createElement(\"ul\", { className: \"react-datepicker__time-list\", ref: function (list) {\n                            _this.list = list;\n                        }, style: height ? { height: height } : {}, role: \"listbox\", \"aria-label\": this.props.timeCaption }, this.renderTimes())))));\n    };\n    Time.calcCenterPosition = function (listHeight, centerLiRef) {\n        return (centerLiRef.offsetTop - (listHeight / 2 - centerLiRef.clientHeight / 2));\n    };\n    return Time;\n}(Component));\n\nvar VERTICAL_NAVIGATION_OFFSET = 3;\n/**\n * `Year` is a component that represents a year in a date picker.\n *\n * @class\n * @param {YearProps} props - The properties that define the `Year` component.\n * @property {VoidFunction} [props.clearSelectingDate] - Function to clear the selected date.\n * @property {Date} [props.date] - The currently selected date.\n * @property {boolean} [props.disabledKeyboardNavigation] - If true, keyboard navigation is disabled.\n * @property {Date} [props.endDate] - The end date in a range selection.\n * @property {(date: Date) => void} props.onDayClick - Function to handle day click events.\n * @property {Date} props.preSelection - The date that is currently in focus.\n * @property {(date: Date) => void} props.setPreSelection - Function to set the pre-selected date.\n * @property {{ [key: string]: any }} props.selected - The selected date(s).\n * @property {boolean} props.inline - If true, the date picker is displayed inline.\n * @property {Date} props.maxDate - The maximum selectable date.\n * @property {Date} props.minDate - The minimum selectable date.\n * @property {boolean} props.usePointerEvent - If true, pointer events are used instead of mouse events.\n * @property {(date: Date) => void} props.onYearMouseEnter - Function to handle mouse enter events on a year.\n * @property {(date: Date) => void} props.onYearMouseLeave - Function to handle mouse leave events on a year.\n */\nvar Year = /** @class */ (function (_super) {\n    __extends(Year, _super);\n    function Year(props) {\n        var _this = _super.call(this, props) || this;\n        _this.YEAR_REFS = __spreadArray([], Array(_this.props.yearItemNumber), true).map(function () {\n            return createRef();\n        });\n        _this.isDisabled = function (date) {\n            return isDayDisabled(date, {\n                minDate: _this.props.minDate,\n                maxDate: _this.props.maxDate,\n                excludeDates: _this.props.excludeDates,\n                includeDates: _this.props.includeDates,\n                filterDate: _this.props.filterDate,\n            });\n        };\n        _this.isExcluded = function (date) {\n            return isDayExcluded(date, {\n                excludeDates: _this.props.excludeDates,\n            });\n        };\n        _this.selectingDate = function () { var _a; return (_a = _this.props.selectingDate) !== null && _a !== void 0 ? _a : _this.props.preSelection; };\n        _this.updateFocusOnPaginate = function (refIndex) {\n            var waitForReRender = function () {\n                var _a, _b;\n                (_b = (_a = _this.YEAR_REFS[refIndex]) === null || _a === void 0 ? void 0 : _a.current) === null || _b === void 0 ? void 0 : _b.focus();\n            };\n            window.requestAnimationFrame(waitForReRender);\n        };\n        _this.handleYearClick = function (day, event) {\n            if (_this.props.onDayClick) {\n                _this.props.onDayClick(day, event);\n            }\n        };\n        _this.handleYearNavigation = function (newYear, newDate) {\n            var _a, _b, _c, _d;\n            var _e = _this.props, date = _e.date, yearItemNumber = _e.yearItemNumber;\n            if (date === undefined || yearItemNumber === undefined) {\n                return;\n            }\n            var startPeriod = getYearsPeriod(date, yearItemNumber).startPeriod;\n            if (_this.isDisabled(newDate) || _this.isExcluded(newDate)) {\n                return;\n            }\n            (_b = (_a = _this.props).setPreSelection) === null || _b === void 0 ? void 0 : _b.call(_a, newDate);\n            if (newYear - startPeriod < 0) {\n                _this.updateFocusOnPaginate(yearItemNumber - (startPeriod - newYear));\n            }\n            else if (newYear - startPeriod >= yearItemNumber) {\n                _this.updateFocusOnPaginate(Math.abs(yearItemNumber - (newYear - startPeriod)));\n            }\n            else\n                (_d = (_c = _this.YEAR_REFS[newYear - startPeriod]) === null || _c === void 0 ? void 0 : _c.current) === null || _d === void 0 ? void 0 : _d.focus();\n        };\n        _this.isSameDay = function (y, other) { return isSameDay(y, other); };\n        _this.isCurrentYear = function (y) { return y === getYear(newDate()); };\n        _this.isRangeStart = function (y) {\n            return _this.props.startDate &&\n                _this.props.endDate &&\n                isSameYear(setYear(newDate(), y), _this.props.startDate);\n        };\n        _this.isRangeEnd = function (y) {\n            return _this.props.startDate &&\n                _this.props.endDate &&\n                isSameYear(setYear(newDate(), y), _this.props.endDate);\n        };\n        _this.isInRange = function (y) {\n            return isYearInRange(y, _this.props.startDate, _this.props.endDate);\n        };\n        _this.isInSelectingRange = function (y) {\n            var _a = _this.props, selectsStart = _a.selectsStart, selectsEnd = _a.selectsEnd, selectsRange = _a.selectsRange, startDate = _a.startDate, endDate = _a.endDate;\n            if (!(selectsStart || selectsEnd || selectsRange) ||\n                !_this.selectingDate()) {\n                return false;\n            }\n            if (selectsStart && endDate) {\n                return isYearInRange(y, _this.selectingDate(), endDate);\n            }\n            if (selectsEnd && startDate) {\n                return isYearInRange(y, startDate, _this.selectingDate());\n            }\n            if (selectsRange && startDate && !endDate) {\n                return isYearInRange(y, startDate, _this.selectingDate());\n            }\n            return false;\n        };\n        _this.isSelectingRangeStart = function (y) {\n            var _a;\n            if (!_this.isInSelectingRange(y)) {\n                return false;\n            }\n            var _b = _this.props, startDate = _b.startDate, selectsStart = _b.selectsStart;\n            var _year = setYear(newDate(), y);\n            if (selectsStart) {\n                return isSameYear(_year, (_a = _this.selectingDate()) !== null && _a !== void 0 ? _a : null);\n            }\n            return isSameYear(_year, startDate !== null && startDate !== void 0 ? startDate : null);\n        };\n        _this.isSelectingRangeEnd = function (y) {\n            var _a;\n            if (!_this.isInSelectingRange(y)) {\n                return false;\n            }\n            var _b = _this.props, endDate = _b.endDate, selectsEnd = _b.selectsEnd, selectsRange = _b.selectsRange;\n            var _year = setYear(newDate(), y);\n            if (selectsEnd || selectsRange) {\n                return isSameYear(_year, (_a = _this.selectingDate()) !== null && _a !== void 0 ? _a : null);\n            }\n            return isSameYear(_year, endDate !== null && endDate !== void 0 ? endDate : null);\n        };\n        _this.isKeyboardSelected = function (y) {\n            if (_this.props.date === undefined ||\n                _this.props.selected == null ||\n                _this.props.preSelection == null) {\n                return;\n            }\n            var _a = _this.props, minDate = _a.minDate, maxDate = _a.maxDate, excludeDates = _a.excludeDates, includeDates = _a.includeDates, filterDate = _a.filterDate;\n            var date = getStartOfYear(setYear(_this.props.date, y));\n            var isDisabled = (minDate || maxDate || excludeDates || includeDates || filterDate) &&\n                isYearDisabled(y, _this.props);\n            return (!_this.props.disabledKeyboardNavigation &&\n                !_this.props.inline &&\n                !isSameDay(date, getStartOfYear(_this.props.selected)) &&\n                isSameDay(date, getStartOfYear(_this.props.preSelection)) &&\n                !isDisabled);\n        };\n        _this.isSelectedYear = function (year) {\n            var _a = _this.props, selectsMultiple = _a.selectsMultiple, selected = _a.selected, selectedDates = _a.selectedDates;\n            if (selectsMultiple) {\n                return selectedDates === null || selectedDates === void 0 ? void 0 : selectedDates.some(function (date) { return year === getYear(date); });\n            }\n            return !!selected && year === getYear(selected);\n        };\n        _this.onYearClick = function (event, y) {\n            var date = _this.props.date;\n            if (date === undefined) {\n                return;\n            }\n            _this.handleYearClick(getStartOfYear(setYear(date, y)), event);\n        };\n        _this.onYearKeyDown = function (event, y) {\n            var _a, _b;\n            var key = event.key;\n            var _c = _this.props, date = _c.date, yearItemNumber = _c.yearItemNumber, handleOnKeyDown = _c.handleOnKeyDown;\n            if (key !== KeyType.Tab) {\n                // preventDefault on tab event blocks focus change\n                event.preventDefault();\n            }\n            if (!_this.props.disabledKeyboardNavigation) {\n                switch (key) {\n                    case KeyType.Enter:\n                        if (_this.props.selected == null) {\n                            break;\n                        }\n                        _this.onYearClick(event, y);\n                        (_b = (_a = _this.props).setPreSelection) === null || _b === void 0 ? void 0 : _b.call(_a, _this.props.selected);\n                        break;\n                    case KeyType.ArrowRight:\n                        if (_this.props.preSelection == null) {\n                            break;\n                        }\n                        _this.handleYearNavigation(y + 1, addYears(_this.props.preSelection, 1));\n                        break;\n                    case KeyType.ArrowLeft:\n                        if (_this.props.preSelection == null) {\n                            break;\n                        }\n                        _this.handleYearNavigation(y - 1, subYears(_this.props.preSelection, 1));\n                        break;\n                    case KeyType.ArrowUp: {\n                        if (date === undefined ||\n                            yearItemNumber === undefined ||\n                            _this.props.preSelection == null) {\n                            break;\n                        }\n                        var startPeriod = getYearsPeriod(date, yearItemNumber).startPeriod;\n                        var offset = VERTICAL_NAVIGATION_OFFSET;\n                        var newYear = y - offset;\n                        if (newYear < startPeriod) {\n                            var leftOverOffset = yearItemNumber % offset;\n                            if (y >= startPeriod && y < startPeriod + leftOverOffset) {\n                                offset = leftOverOffset;\n                            }\n                            else {\n                                offset += leftOverOffset;\n                            }\n                            newYear = y - offset;\n                        }\n                        _this.handleYearNavigation(newYear, subYears(_this.props.preSelection, offset));\n                        break;\n                    }\n                    case KeyType.ArrowDown: {\n                        if (date === undefined ||\n                            yearItemNumber === undefined ||\n                            _this.props.preSelection == null) {\n                            break;\n                        }\n                        var endPeriod = getYearsPeriod(date, yearItemNumber).endPeriod;\n                        var offset = VERTICAL_NAVIGATION_OFFSET;\n                        var newYear = y + offset;\n                        if (newYear > endPeriod) {\n                            var leftOverOffset = yearItemNumber % offset;\n                            if (y <= endPeriod && y > endPeriod - leftOverOffset) {\n                                offset = leftOverOffset;\n                            }\n                            else {\n                                offset += leftOverOffset;\n                            }\n                            newYear = y + offset;\n                        }\n                        _this.handleYearNavigation(newYear, addYears(_this.props.preSelection, offset));\n                        break;\n                    }\n                }\n            }\n            handleOnKeyDown && handleOnKeyDown(event);\n        };\n        _this.getYearClassNames = function (y) {\n            var _a = _this.props, date = _a.date, minDate = _a.minDate, maxDate = _a.maxDate, excludeDates = _a.excludeDates, includeDates = _a.includeDates, filterDate = _a.filterDate, yearClassName = _a.yearClassName;\n            return clsx(\"react-datepicker__year-text\", \"react-datepicker__year-\".concat(y), date ? yearClassName === null || yearClassName === void 0 ? void 0 : yearClassName(setYear(date, y)) : undefined, {\n                \"react-datepicker__year-text--selected\": _this.isSelectedYear(y),\n                \"react-datepicker__year-text--disabled\": (minDate || maxDate || excludeDates || includeDates || filterDate) &&\n                    isYearDisabled(y, _this.props),\n                \"react-datepicker__year-text--keyboard-selected\": _this.isKeyboardSelected(y),\n                \"react-datepicker__year-text--range-start\": _this.isRangeStart(y),\n                \"react-datepicker__year-text--range-end\": _this.isRangeEnd(y),\n                \"react-datepicker__year-text--in-range\": _this.isInRange(y),\n                \"react-datepicker__year-text--in-selecting-range\": _this.isInSelectingRange(y),\n                \"react-datepicker__year-text--selecting-range-start\": _this.isSelectingRangeStart(y),\n                \"react-datepicker__year-text--selecting-range-end\": _this.isSelectingRangeEnd(y),\n                \"react-datepicker__year-text--today\": _this.isCurrentYear(y),\n            });\n        };\n        _this.getYearTabIndex = function (y) {\n            if (_this.props.disabledKeyboardNavigation ||\n                _this.props.preSelection == null) {\n                return \"-1\";\n            }\n            var preSelected = getYear(_this.props.preSelection);\n            var isPreSelectedYearDisabled = isYearDisabled(y, _this.props);\n            return y === preSelected && !isPreSelectedYearDisabled ? \"0\" : \"-1\";\n        };\n        _this.getYearContent = function (y) {\n            return _this.props.renderYearContent ? _this.props.renderYearContent(y) : y;\n        };\n        return _this;\n    }\n    Year.prototype.render = function () {\n        var _this = this;\n        var yearsList = [];\n        var _a = this.props, date = _a.date, yearItemNumber = _a.yearItemNumber, onYearMouseEnter = _a.onYearMouseEnter, onYearMouseLeave = _a.onYearMouseLeave;\n        if (date === undefined) {\n            return null;\n        }\n        var _b = getYearsPeriod(date, yearItemNumber), startPeriod = _b.startPeriod, endPeriod = _b.endPeriod;\n        var _loop_1 = function (y) {\n            yearsList.push(React.createElement(\"div\", { ref: this_1.YEAR_REFS[y - startPeriod], onClick: function (event) {\n                    _this.onYearClick(event, y);\n                }, onKeyDown: function (event) {\n                    if (isSpaceKeyDown(event)) {\n                        event.preventDefault();\n                        event.key = KeyType.Enter;\n                    }\n                    _this.onYearKeyDown(event, y);\n                }, tabIndex: Number(this_1.getYearTabIndex(y)), className: this_1.getYearClassNames(y), onMouseEnter: !this_1.props.usePointerEvent\n                    ? function (event) { return onYearMouseEnter(event, y); }\n                    : undefined, onPointerEnter: this_1.props.usePointerEvent\n                    ? function (event) { return onYearMouseEnter(event, y); }\n                    : undefined, onMouseLeave: !this_1.props.usePointerEvent\n                    ? function (event) { return onYearMouseLeave(event, y); }\n                    : undefined, onPointerLeave: this_1.props.usePointerEvent\n                    ? function (event) { return onYearMouseLeave(event, y); }\n                    : undefined, key: y, \"aria-current\": this_1.isCurrentYear(y) ? \"date\" : undefined }, this_1.getYearContent(y)));\n        };\n        var this_1 = this;\n        for (var y = startPeriod; y <= endPeriod; y++) {\n            _loop_1(y);\n        }\n        return (React.createElement(\"div\", { className: \"react-datepicker__year\" },\n            React.createElement(\"div\", { className: \"react-datepicker__year-wrapper\", onMouseLeave: !this.props.usePointerEvent\n                    ? this.props.clearSelectingDate\n                    : undefined, onPointerLeave: this.props.usePointerEvent\n                    ? this.props.clearSelectingDate\n                    : undefined }, yearsList)));\n    };\n    return Year;\n}(Component));\n\nfunction generateYears(year, noOfYear, minDate, maxDate) {\n    var list = [];\n    for (var i = 0; i < 2 * noOfYear + 1; i++) {\n        var newYear = year + noOfYear - i;\n        var isInRange = true;\n        if (minDate) {\n            isInRange = getYear(minDate) <= newYear;\n        }\n        if (maxDate && isInRange) {\n            isInRange = getYear(maxDate) >= newYear;\n        }\n        if (isInRange) {\n            list.push(newYear);\n        }\n    }\n    return list;\n}\nvar YearDropdownOptions = /** @class */ (function (_super) {\n    __extends(YearDropdownOptions, _super);\n    function YearDropdownOptions(props) {\n        var _this = _super.call(this, props) || this;\n        _this.renderOptions = function () {\n            var selectedYear = _this.props.year;\n            var options = _this.state.yearsList.map(function (year) { return (React.createElement(\"div\", { className: selectedYear === year\n                    ? \"react-datepicker__year-option react-datepicker__year-option--selected_year\"\n                    : \"react-datepicker__year-option\", key: year, onClick: _this.onChange.bind(_this, year), \"aria-selected\": selectedYear === year ? \"true\" : undefined },\n                selectedYear === year ? (React.createElement(\"span\", { className: \"react-datepicker__year-option--selected\" }, \"\\u2713\")) : (\"\"),\n                year)); });\n            var minYear = _this.props.minDate ? getYear(_this.props.minDate) : null;\n            var maxYear = _this.props.maxDate ? getYear(_this.props.maxDate) : null;\n            if (!maxYear || !_this.state.yearsList.find(function (year) { return year === maxYear; })) {\n                options.unshift(React.createElement(\"div\", { className: \"react-datepicker__year-option\", key: \"upcoming\", onClick: _this.incrementYears },\n                    React.createElement(\"a\", { className: \"react-datepicker__navigation react-datepicker__navigation--years react-datepicker__navigation--years-upcoming\" })));\n            }\n            if (!minYear || !_this.state.yearsList.find(function (year) { return year === minYear; })) {\n                options.push(React.createElement(\"div\", { className: \"react-datepicker__year-option\", key: \"previous\", onClick: _this.decrementYears },\n                    React.createElement(\"a\", { className: \"react-datepicker__navigation react-datepicker__navigation--years react-datepicker__navigation--years-previous\" })));\n            }\n            return options;\n        };\n        _this.onChange = function (year) {\n            _this.props.onChange(year);\n        };\n        _this.handleClickOutside = function () {\n            _this.props.onCancel();\n        };\n        _this.shiftYears = function (amount) {\n            var years = _this.state.yearsList.map(function (year) {\n                return year + amount;\n            });\n            _this.setState({\n                yearsList: years,\n            });\n        };\n        _this.incrementYears = function () {\n            return _this.shiftYears(1);\n        };\n        _this.decrementYears = function () {\n            return _this.shiftYears(-1);\n        };\n        var yearDropdownItemNumber = props.yearDropdownItemNumber, scrollableYearDropdown = props.scrollableYearDropdown;\n        var noOfYear = yearDropdownItemNumber || (scrollableYearDropdown ? 10 : 5);\n        _this.state = {\n            yearsList: generateYears(_this.props.year, noOfYear, _this.props.minDate, _this.props.maxDate),\n        };\n        _this.dropdownRef = createRef();\n        return _this;\n    }\n    YearDropdownOptions.prototype.componentDidMount = function () {\n        var dropdownCurrent = this.dropdownRef.current;\n        if (dropdownCurrent) {\n            // Get array from HTMLCollection\n            var dropdownCurrentChildren = dropdownCurrent.children\n                ? Array.from(dropdownCurrent.children)\n                : null;\n            var selectedYearOptionEl = dropdownCurrentChildren\n                ? dropdownCurrentChildren.find(function (childEl) { return childEl.ariaSelected; })\n                : null;\n            dropdownCurrent.scrollTop =\n                selectedYearOptionEl && selectedYearOptionEl instanceof HTMLElement\n                    ? selectedYearOptionEl.offsetTop +\n                        (selectedYearOptionEl.clientHeight - dropdownCurrent.clientHeight) /\n                            2\n                    : (dropdownCurrent.scrollHeight - dropdownCurrent.clientHeight) / 2;\n        }\n    };\n    YearDropdownOptions.prototype.render = function () {\n        var dropdownClass = clsx({\n            \"react-datepicker__year-dropdown\": true,\n            \"react-datepicker__year-dropdown--scrollable\": this.props.scrollableYearDropdown,\n        });\n        return (React.createElement(ClickOutsideWrapper, { className: dropdownClass, containerRef: this.dropdownRef, onClickOutside: this.handleClickOutside }, this.renderOptions()));\n    };\n    return YearDropdownOptions;\n}(Component));\n\nvar YearDropdown = /** @class */ (function (_super) {\n    __extends(YearDropdown, _super);\n    function YearDropdown() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.state = {\n            dropdownVisible: false,\n        };\n        _this.renderSelectOptions = function () {\n            var minYear = _this.props.minDate\n                ? getYear(_this.props.minDate)\n                : 1900;\n            var maxYear = _this.props.maxDate\n                ? getYear(_this.props.maxDate)\n                : 2100;\n            var options = [];\n            for (var i = minYear; i <= maxYear; i++) {\n                options.push(React.createElement(\"option\", { key: i, value: i }, i));\n            }\n            return options;\n        };\n        _this.onSelectChange = function (event) {\n            _this.onChange(parseInt(event.target.value));\n        };\n        _this.renderSelectMode = function () { return (React.createElement(\"select\", { value: _this.props.year, className: \"react-datepicker__year-select\", onChange: _this.onSelectChange }, _this.renderSelectOptions())); };\n        _this.renderReadView = function (visible) { return (React.createElement(\"div\", { key: \"read\", style: { visibility: visible ? \"visible\" : \"hidden\" }, className: \"react-datepicker__year-read-view\", onClick: function (event) {\n                return _this.toggleDropdown(event);\n            } },\n            React.createElement(\"span\", { className: \"react-datepicker__year-read-view--down-arrow\" }),\n            React.createElement(\"span\", { className: \"react-datepicker__year-read-view--selected-year\" }, _this.props.year))); };\n        _this.renderDropdown = function () { return (React.createElement(YearDropdownOptions, _assign({ key: \"dropdown\" }, _this.props, { onChange: _this.onChange, onCancel: _this.toggleDropdown }))); };\n        _this.renderScrollMode = function () {\n            var dropdownVisible = _this.state.dropdownVisible;\n            var result = [_this.renderReadView(!dropdownVisible)];\n            if (dropdownVisible) {\n                result.unshift(_this.renderDropdown());\n            }\n            return result;\n        };\n        _this.onChange = function (year) {\n            _this.toggleDropdown();\n            if (year === _this.props.year)\n                return;\n            _this.props.onChange(year);\n        };\n        _this.toggleDropdown = function (event) {\n            _this.setState({\n                dropdownVisible: !_this.state.dropdownVisible,\n            }, function () {\n                if (_this.props.adjustDateOnChange) {\n                    _this.handleYearChange(_this.props.date, event);\n                }\n            });\n        };\n        _this.handleYearChange = function (date, event) {\n            var _a;\n            (_a = _this.onSelect) === null || _a === void 0 ? void 0 : _a.call(_this, date, event);\n            _this.setOpen();\n        };\n        _this.onSelect = function (date, event) {\n            var _a, _b;\n            (_b = (_a = _this.props).onSelect) === null || _b === void 0 ? void 0 : _b.call(_a, date, event);\n        };\n        _this.setOpen = function () {\n            var _a, _b;\n            (_b = (_a = _this.props).setOpen) === null || _b === void 0 ? void 0 : _b.call(_a, true);\n        };\n        return _this;\n    }\n    YearDropdown.prototype.render = function () {\n        var renderedDropdown;\n        switch (this.props.dropdownMode) {\n            case \"scroll\":\n                renderedDropdown = this.renderScrollMode();\n                break;\n            case \"select\":\n                renderedDropdown = this.renderSelectMode();\n                break;\n        }\n        return (React.createElement(\"div\", { className: \"react-datepicker__year-dropdown-container react-datepicker__year-dropdown-container--\".concat(this.props.dropdownMode) }, renderedDropdown));\n    };\n    return YearDropdown;\n}(Component));\n\nvar DROPDOWN_FOCUS_CLASSNAMES = [\n    \"react-datepicker__year-select\",\n    \"react-datepicker__month-select\",\n    \"react-datepicker__month-year-select\",\n];\nvar isDropdownSelect = function (element) {\n    var classNames = (element.className || \"\").split(/\\s+/);\n    return DROPDOWN_FOCUS_CLASSNAMES.some(function (testClassname) { return classNames.indexOf(testClassname) >= 0; });\n};\nvar Calendar = /** @class */ (function (_super) {\n    __extends(Calendar, _super);\n    function Calendar(props) {\n        var _this = _super.call(this, props) || this;\n        _this.monthContainer = undefined;\n        _this.handleClickOutside = function (event) {\n            _this.props.onClickOutside(event);\n        };\n        _this.setClickOutsideRef = function () {\n            return _this.containerRef.current;\n        };\n        _this.handleDropdownFocus = function (event) {\n            var _a, _b;\n            if (isDropdownSelect(event.target)) {\n                (_b = (_a = _this.props).onDropdownFocus) === null || _b === void 0 ? void 0 : _b.call(_a, event);\n            }\n        };\n        _this.getDateInView = function () {\n            var _a = _this.props, preSelection = _a.preSelection, selected = _a.selected, openToDate = _a.openToDate;\n            var minDate = getEffectiveMinDate(_this.props);\n            var maxDate = getEffectiveMaxDate(_this.props);\n            var current = newDate();\n            var initialDate = openToDate || selected || preSelection;\n            if (initialDate) {\n                return initialDate;\n            }\n            else {\n                if (minDate && isBefore(current, minDate)) {\n                    return minDate;\n                }\n                else if (maxDate && isAfter(current, maxDate)) {\n                    return maxDate;\n                }\n            }\n            return current;\n        };\n        _this.increaseMonth = function () {\n            _this.setState(function (_a) {\n                var date = _a.date;\n                return ({\n                    date: addMonths(date, 1),\n                });\n            }, function () { return _this.handleMonthChange(_this.state.date); });\n        };\n        _this.decreaseMonth = function () {\n            _this.setState(function (_a) {\n                var date = _a.date;\n                return ({\n                    date: subMonths(date, 1),\n                });\n            }, function () { return _this.handleMonthChange(_this.state.date); });\n        };\n        _this.handleDayClick = function (day, event, monthSelectedIn) {\n            _this.props.onSelect(day, event, monthSelectedIn);\n            _this.props.setPreSelection && _this.props.setPreSelection(day);\n        };\n        _this.handleDayMouseEnter = function (day) {\n            _this.setState({ selectingDate: day });\n            _this.props.onDayMouseEnter && _this.props.onDayMouseEnter(day);\n        };\n        _this.handleMonthMouseLeave = function () {\n            _this.setState({ selectingDate: undefined });\n            _this.props.onMonthMouseLeave && _this.props.onMonthMouseLeave();\n        };\n        _this.handleYearMouseEnter = function (event, year) {\n            _this.setState({ selectingDate: setYear(newDate(), year) });\n            !!_this.props.onYearMouseEnter && _this.props.onYearMouseEnter(event, year);\n        };\n        _this.handleYearMouseLeave = function (event, year) {\n            !!_this.props.onYearMouseLeave && _this.props.onYearMouseLeave(event, year);\n        };\n        _this.handleYearChange = function (date) {\n            var _a, _b, _c, _d;\n            (_b = (_a = _this.props).onYearChange) === null || _b === void 0 ? void 0 : _b.call(_a, date);\n            _this.setState({ isRenderAriaLiveMessage: true });\n            if (_this.props.adjustDateOnChange) {\n                _this.props.onSelect(date);\n                (_d = (_c = _this.props).setOpen) === null || _d === void 0 ? void 0 : _d.call(_c, true);\n            }\n            _this.props.setPreSelection && _this.props.setPreSelection(date);\n        };\n        _this.getEnabledPreSelectionDateForMonth = function (date) {\n            if (!isDayDisabled(date, _this.props)) {\n                return date;\n            }\n            var startOfMonth = getStartOfMonth(date);\n            var endOfMonth = getEndOfMonth(date);\n            var totalDays = differenceInDays(endOfMonth, startOfMonth);\n            var preSelectedDate = null;\n            for (var dayIdx = 0; dayIdx <= totalDays; dayIdx++) {\n                var processingDate = addDays(startOfMonth, dayIdx);\n                if (!isDayDisabled(processingDate, _this.props)) {\n                    preSelectedDate = processingDate;\n                    break;\n                }\n            }\n            return preSelectedDate;\n        };\n        _this.handleMonthChange = function (date) {\n            var _a, _b, _c;\n            var enabledPreSelectionDate = (_a = _this.getEnabledPreSelectionDateForMonth(date)) !== null && _a !== void 0 ? _a : date;\n            _this.handleCustomMonthChange(enabledPreSelectionDate);\n            if (_this.props.adjustDateOnChange) {\n                _this.props.onSelect(enabledPreSelectionDate);\n                (_c = (_b = _this.props).setOpen) === null || _c === void 0 ? void 0 : _c.call(_b, true);\n            }\n            _this.props.setPreSelection &&\n                _this.props.setPreSelection(enabledPreSelectionDate);\n        };\n        _this.handleCustomMonthChange = function (date) {\n            var _a, _b;\n            (_b = (_a = _this.props).onMonthChange) === null || _b === void 0 ? void 0 : _b.call(_a, date);\n            _this.setState({ isRenderAriaLiveMessage: true });\n        };\n        _this.handleMonthYearChange = function (date) {\n            _this.handleYearChange(date);\n            _this.handleMonthChange(date);\n        };\n        _this.changeYear = function (year) {\n            _this.setState(function (_a) {\n                var date = _a.date;\n                return ({\n                    date: setYear(date, Number(year)),\n                });\n            }, function () { return _this.handleYearChange(_this.state.date); });\n        };\n        _this.changeMonth = function (month) {\n            _this.setState(function (_a) {\n                var date = _a.date;\n                return ({\n                    date: setMonth(date, Number(month)),\n                });\n            }, function () { return _this.handleMonthChange(_this.state.date); });\n        };\n        _this.changeMonthYear = function (monthYear) {\n            _this.setState(function (_a) {\n                var date = _a.date;\n                return ({\n                    date: setYear(setMonth(date, getMonth(monthYear)), getYear(monthYear)),\n                });\n            }, function () { return _this.handleMonthYearChange(_this.state.date); });\n        };\n        _this.header = function (date) {\n            if (date === void 0) { date = _this.state.date; }\n            var startOfWeek = getStartOfWeek(date, _this.props.locale, _this.props.calendarStartDay);\n            var dayNames = [];\n            if (_this.props.showWeekNumbers) {\n                dayNames.push(React.createElement(\"div\", { key: \"W\", className: \"react-datepicker__day-name\" }, _this.props.weekLabel || \"#\"));\n            }\n            return dayNames.concat([0, 1, 2, 3, 4, 5, 6].map(function (offset) {\n                var day = addDays(startOfWeek, offset);\n                var weekDayName = _this.formatWeekday(day, _this.props.locale);\n                var weekDayClassName = _this.props.weekDayClassName\n                    ? _this.props.weekDayClassName(day)\n                    : undefined;\n                return (React.createElement(\"div\", { key: offset, \"aria-label\": formatDate(day, \"EEEE\", _this.props.locale), className: clsx(\"react-datepicker__day-name\", weekDayClassName) }, weekDayName));\n            }));\n        };\n        _this.formatWeekday = function (day, locale) {\n            if (_this.props.formatWeekDay) {\n                return getFormattedWeekdayInLocale(day, _this.props.formatWeekDay, locale);\n            }\n            return _this.props.useWeekdaysShort\n                ? getWeekdayShortInLocale(day, locale)\n                : getWeekdayMinInLocale(day, locale);\n        };\n        _this.decreaseYear = function () {\n            _this.setState(function (_a) {\n                var _b;\n                var date = _a.date;\n                return ({\n                    date: subYears(date, _this.props.showYearPicker\n                        ? ((_b = _this.props.yearItemNumber) !== null && _b !== void 0 ? _b : Calendar.defaultProps.yearItemNumber)\n                        : 1),\n                });\n            }, function () { return _this.handleYearChange(_this.state.date); });\n        };\n        _this.clearSelectingDate = function () {\n            _this.setState({ selectingDate: undefined });\n        };\n        _this.renderPreviousButton = function () {\n            var _a, _b, _c;\n            if (_this.props.renderCustomHeader) {\n                return;\n            }\n            var monthsShown = (_a = _this.props.monthsShown) !== null && _a !== void 0 ? _a : Calendar.defaultProps.monthsShown;\n            var monthsToSubtract = _this.props.showPreviousMonths\n                ? monthsShown - 1\n                : 0;\n            var monthSelectedIn = (_b = _this.props.monthSelectedIn) !== null && _b !== void 0 ? _b : monthsToSubtract;\n            var fromMonthDate = subMonths(_this.state.date, monthSelectedIn);\n            var allPrevDaysDisabled;\n            switch (true) {\n                case _this.props.showMonthYearPicker:\n                    allPrevDaysDisabled = yearDisabledBefore(_this.state.date, _this.props);\n                    break;\n                case _this.props.showYearPicker:\n                    allPrevDaysDisabled = yearsDisabledBefore(_this.state.date, _this.props);\n                    break;\n                case _this.props.showQuarterYearPicker:\n                    allPrevDaysDisabled = quarterDisabledBefore(_this.state.date, _this.props);\n                    break;\n                default:\n                    allPrevDaysDisabled = monthDisabledBefore(fromMonthDate, _this.props);\n                    break;\n            }\n            if ((!((_c = _this.props.forceShowMonthNavigation) !== null && _c !== void 0 ? _c : Calendar.defaultProps.forceShowMonthNavigation) &&\n                !_this.props.showDisabledMonthNavigation &&\n                allPrevDaysDisabled) ||\n                _this.props.showTimeSelectOnly) {\n                return;\n            }\n            var iconClasses = [\n                \"react-datepicker__navigation-icon\",\n                \"react-datepicker__navigation-icon--previous\",\n            ];\n            var classes = [\n                \"react-datepicker__navigation\",\n                \"react-datepicker__navigation--previous\",\n            ];\n            var clickHandler = _this.decreaseMonth;\n            if (_this.props.showMonthYearPicker ||\n                _this.props.showQuarterYearPicker ||\n                _this.props.showYearPicker) {\n                clickHandler = _this.decreaseYear;\n            }\n            if (allPrevDaysDisabled && _this.props.showDisabledMonthNavigation) {\n                classes.push(\"react-datepicker__navigation--previous--disabled\");\n                clickHandler = undefined;\n            }\n            var isForYear = _this.props.showMonthYearPicker ||\n                _this.props.showQuarterYearPicker ||\n                _this.props.showYearPicker;\n            var _d = _this.props, _e = _d.previousMonthButtonLabel, previousMonthButtonLabel = _e === void 0 ? Calendar.defaultProps.previousMonthButtonLabel : _e, _f = _d.previousYearButtonLabel, previousYearButtonLabel = _f === void 0 ? Calendar.defaultProps.previousYearButtonLabel : _f;\n            var _g = _this.props, _h = _g.previousMonthAriaLabel, previousMonthAriaLabel = _h === void 0 ? typeof previousMonthButtonLabel === \"string\"\n                ? previousMonthButtonLabel\n                : \"Previous Month\" : _h, _j = _g.previousYearAriaLabel, previousYearAriaLabel = _j === void 0 ? typeof previousYearButtonLabel === \"string\"\n                ? previousYearButtonLabel\n                : \"Previous Year\" : _j;\n            return (React.createElement(\"button\", { type: \"button\", className: classes.join(\" \"), onClick: clickHandler, onKeyDown: _this.props.handleOnKeyDown, \"aria-label\": isForYear ? previousYearAriaLabel : previousMonthAriaLabel },\n                React.createElement(\"span\", { className: iconClasses.join(\" \") }, isForYear ? previousYearButtonLabel : previousMonthButtonLabel)));\n        };\n        _this.increaseYear = function () {\n            _this.setState(function (_a) {\n                var _b;\n                var date = _a.date;\n                return ({\n                    date: addYears(date, _this.props.showYearPicker\n                        ? ((_b = _this.props.yearItemNumber) !== null && _b !== void 0 ? _b : Calendar.defaultProps.yearItemNumber)\n                        : 1),\n                });\n            }, function () { return _this.handleYearChange(_this.state.date); });\n        };\n        _this.renderNextButton = function () {\n            var _a;\n            if (_this.props.renderCustomHeader) {\n                return;\n            }\n            var allNextDaysDisabled;\n            switch (true) {\n                case _this.props.showMonthYearPicker:\n                    allNextDaysDisabled = yearDisabledAfter(_this.state.date, _this.props);\n                    break;\n                case _this.props.showYearPicker:\n                    allNextDaysDisabled = yearsDisabledAfter(_this.state.date, _this.props);\n                    break;\n                case _this.props.showQuarterYearPicker:\n                    allNextDaysDisabled = quarterDisabledAfter(_this.state.date, _this.props);\n                    break;\n                default:\n                    allNextDaysDisabled = monthDisabledAfter(_this.state.date, _this.props);\n                    break;\n            }\n            if ((!((_a = _this.props.forceShowMonthNavigation) !== null && _a !== void 0 ? _a : Calendar.defaultProps.forceShowMonthNavigation) &&\n                !_this.props.showDisabledMonthNavigation &&\n                allNextDaysDisabled) ||\n                _this.props.showTimeSelectOnly) {\n                return;\n            }\n            var classes = [\n                \"react-datepicker__navigation\",\n                \"react-datepicker__navigation--next\",\n            ];\n            var iconClasses = [\n                \"react-datepicker__navigation-icon\",\n                \"react-datepicker__navigation-icon--next\",\n            ];\n            if (_this.props.showTimeSelect) {\n                classes.push(\"react-datepicker__navigation--next--with-time\");\n            }\n            if (_this.props.todayButton) {\n                classes.push(\"react-datepicker__navigation--next--with-today-button\");\n            }\n            var clickHandler = _this.increaseMonth;\n            if (_this.props.showMonthYearPicker ||\n                _this.props.showQuarterYearPicker ||\n                _this.props.showYearPicker) {\n                clickHandler = _this.increaseYear;\n            }\n            if (allNextDaysDisabled && _this.props.showDisabledMonthNavigation) {\n                classes.push(\"react-datepicker__navigation--next--disabled\");\n                clickHandler = undefined;\n            }\n            var isForYear = _this.props.showMonthYearPicker ||\n                _this.props.showQuarterYearPicker ||\n                _this.props.showYearPicker;\n            var _b = _this.props, _c = _b.nextMonthButtonLabel, nextMonthButtonLabel = _c === void 0 ? Calendar.defaultProps.nextMonthButtonLabel : _c, _d = _b.nextYearButtonLabel, nextYearButtonLabel = _d === void 0 ? Calendar.defaultProps.nextYearButtonLabel : _d;\n            var _e = _this.props, _f = _e.nextMonthAriaLabel, nextMonthAriaLabel = _f === void 0 ? typeof nextMonthButtonLabel === \"string\"\n                ? nextMonthButtonLabel\n                : \"Next Month\" : _f, _g = _e.nextYearAriaLabel, nextYearAriaLabel = _g === void 0 ? typeof nextYearButtonLabel === \"string\"\n                ? nextYearButtonLabel\n                : \"Next Year\" : _g;\n            return (React.createElement(\"button\", { type: \"button\", className: classes.join(\" \"), onClick: clickHandler, onKeyDown: _this.props.handleOnKeyDown, \"aria-label\": isForYear ? nextYearAriaLabel : nextMonthAriaLabel },\n                React.createElement(\"span\", { className: iconClasses.join(\" \") }, isForYear ? nextYearButtonLabel : nextMonthButtonLabel)));\n        };\n        _this.renderCurrentMonth = function (date) {\n            if (date === void 0) { date = _this.state.date; }\n            var classes = [\"react-datepicker__current-month\"];\n            if (_this.props.showYearDropdown) {\n                classes.push(\"react-datepicker__current-month--hasYearDropdown\");\n            }\n            if (_this.props.showMonthDropdown) {\n                classes.push(\"react-datepicker__current-month--hasMonthDropdown\");\n            }\n            if (_this.props.showMonthYearDropdown) {\n                classes.push(\"react-datepicker__current-month--hasMonthYearDropdown\");\n            }\n            return (React.createElement(\"h2\", { className: classes.join(\" \") }, formatDate(date, _this.props.dateFormat, _this.props.locale)));\n        };\n        _this.renderYearDropdown = function (overrideHide) {\n            if (overrideHide === void 0) { overrideHide = false; }\n            if (!_this.props.showYearDropdown || overrideHide) {\n                return;\n            }\n            return (React.createElement(YearDropdown, _assign({}, Calendar.defaultProps, _this.props, { date: _this.state.date, onChange: _this.changeYear, year: getYear(_this.state.date) })));\n        };\n        _this.renderMonthDropdown = function (overrideHide) {\n            if (overrideHide === void 0) { overrideHide = false; }\n            if (!_this.props.showMonthDropdown || overrideHide) {\n                return;\n            }\n            return (React.createElement(MonthDropdown, _assign({}, Calendar.defaultProps, _this.props, { month: getMonth(_this.state.date), onChange: _this.changeMonth })));\n        };\n        _this.renderMonthYearDropdown = function (overrideHide) {\n            if (overrideHide === void 0) { overrideHide = false; }\n            if (!_this.props.showMonthYearDropdown || overrideHide) {\n                return;\n            }\n            return (React.createElement(MonthYearDropdown, _assign({}, Calendar.defaultProps, _this.props, { date: _this.state.date, onChange: _this.changeMonthYear })));\n        };\n        _this.handleTodayButtonClick = function (event) {\n            _this.props.onSelect(getStartOfToday(), event);\n            _this.props.setPreSelection && _this.props.setPreSelection(getStartOfToday());\n        };\n        _this.renderTodayButton = function () {\n            if (!_this.props.todayButton || _this.props.showTimeSelectOnly) {\n                return;\n            }\n            return (React.createElement(\"div\", { className: \"react-datepicker__today-button\", onClick: _this.handleTodayButtonClick }, _this.props.todayButton));\n        };\n        _this.renderDefaultHeader = function (_a) {\n            var monthDate = _a.monthDate, i = _a.i;\n            return (React.createElement(\"div\", { className: \"react-datepicker__header \".concat(_this.props.showTimeSelect\n                    ? \"react-datepicker__header--has-time-select\"\n                    : \"\") },\n                _this.renderCurrentMonth(monthDate),\n                React.createElement(\"div\", { className: \"react-datepicker__header__dropdown react-datepicker__header__dropdown--\".concat(_this.props.dropdownMode), onFocus: _this.handleDropdownFocus },\n                    _this.renderMonthDropdown(i !== 0),\n                    _this.renderMonthYearDropdown(i !== 0),\n                    _this.renderYearDropdown(i !== 0)),\n                React.createElement(\"div\", { className: \"react-datepicker__day-names\" }, _this.header(monthDate))));\n        };\n        _this.renderCustomHeader = function (headerArgs) {\n            var _a, _b;\n            var monthDate = headerArgs.monthDate, i = headerArgs.i;\n            if ((_this.props.showTimeSelect && !_this.state.monthContainer) ||\n                _this.props.showTimeSelectOnly) {\n                return null;\n            }\n            var prevMonthButtonDisabled = monthDisabledBefore(_this.state.date, _this.props);\n            var nextMonthButtonDisabled = monthDisabledAfter(_this.state.date, _this.props);\n            var prevYearButtonDisabled = yearDisabledBefore(_this.state.date, _this.props);\n            var nextYearButtonDisabled = yearDisabledAfter(_this.state.date, _this.props);\n            var showDayNames = !_this.props.showMonthYearPicker &&\n                !_this.props.showQuarterYearPicker &&\n                !_this.props.showYearPicker;\n            return (React.createElement(\"div\", { className: \"react-datepicker__header react-datepicker__header--custom\", onFocus: _this.props.onDropdownFocus }, (_b = (_a = _this.props).renderCustomHeader) === null || _b === void 0 ? void 0 :\n                _b.call(_a, _assign(_assign({}, _this.state), { customHeaderCount: i, monthDate: monthDate, changeMonth: _this.changeMonth, changeYear: _this.changeYear, decreaseMonth: _this.decreaseMonth, increaseMonth: _this.increaseMonth, decreaseYear: _this.decreaseYear, increaseYear: _this.increaseYear, prevMonthButtonDisabled: prevMonthButtonDisabled, nextMonthButtonDisabled: nextMonthButtonDisabled, prevYearButtonDisabled: prevYearButtonDisabled, nextYearButtonDisabled: nextYearButtonDisabled })),\n                showDayNames && (React.createElement(\"div\", { className: \"react-datepicker__day-names\" }, _this.header(monthDate)))));\n        };\n        _this.renderYearHeader = function (_a) {\n            var monthDate = _a.monthDate;\n            var _b = _this.props, showYearPicker = _b.showYearPicker, _c = _b.yearItemNumber, yearItemNumber = _c === void 0 ? Calendar.defaultProps.yearItemNumber : _c;\n            var _d = getYearsPeriod(monthDate, yearItemNumber), startPeriod = _d.startPeriod, endPeriod = _d.endPeriod;\n            return (React.createElement(\"div\", { className: \"react-datepicker__header react-datepicker-year-header\" }, showYearPicker ? \"\".concat(startPeriod, \" - \").concat(endPeriod) : getYear(monthDate)));\n        };\n        _this.renderHeader = function (_a) {\n            var monthDate = _a.monthDate, _b = _a.i, i = _b === void 0 ? 0 : _b;\n            var headerArgs = { monthDate: monthDate, i: i };\n            switch (true) {\n                case _this.props.renderCustomHeader !== undefined:\n                    return _this.renderCustomHeader(headerArgs);\n                case _this.props.showMonthYearPicker ||\n                    _this.props.showQuarterYearPicker ||\n                    _this.props.showYearPicker:\n                    return _this.renderYearHeader(headerArgs);\n                default:\n                    return _this.renderDefaultHeader(headerArgs);\n            }\n        };\n        _this.renderMonths = function () {\n            var _a, _b;\n            if (_this.props.showTimeSelectOnly || _this.props.showYearPicker) {\n                return;\n            }\n            var monthList = [];\n            var monthsShown = (_a = _this.props.monthsShown) !== null && _a !== void 0 ? _a : Calendar.defaultProps.monthsShown;\n            var monthsToSubtract = _this.props.showPreviousMonths\n                ? monthsShown - 1\n                : 0;\n            var fromMonthDate = _this.props.showMonthYearPicker || _this.props.showQuarterYearPicker\n                ? addYears(_this.state.date, monthsToSubtract)\n                : subMonths(_this.state.date, monthsToSubtract);\n            var monthSelectedIn = (_b = _this.props.monthSelectedIn) !== null && _b !== void 0 ? _b : monthsToSubtract;\n            for (var i = 0; i < monthsShown; ++i) {\n                var monthsToAdd = i - monthSelectedIn + monthsToSubtract;\n                var monthDate = _this.props.showMonthYearPicker || _this.props.showQuarterYearPicker\n                    ? addYears(fromMonthDate, monthsToAdd)\n                    : addMonths(fromMonthDate, monthsToAdd);\n                var monthKey = \"month-\".concat(i);\n                var monthShowsDuplicateDaysEnd = i < monthsShown - 1;\n                var monthShowsDuplicateDaysStart = i > 0;\n                monthList.push(React.createElement(\"div\", { key: monthKey, ref: function (div) {\n                        _this.monthContainer = div !== null && div !== void 0 ? div : undefined;\n                    }, className: \"react-datepicker__month-container\" },\n                    _this.renderHeader({ monthDate: monthDate, i: i }),\n                    React.createElement(Month, _assign({}, Calendar.defaultProps, _this.props, { containerRef: _this.containerRef, ariaLabelPrefix: _this.props.monthAriaLabelPrefix, day: monthDate, onDayClick: _this.handleDayClick, handleOnKeyDown: _this.props.handleOnDayKeyDown, handleOnMonthKeyDown: _this.props.handleOnKeyDown, onDayMouseEnter: _this.handleDayMouseEnter, onMouseLeave: _this.handleMonthMouseLeave, orderInDisplay: i, selectingDate: _this.state.selectingDate, monthShowsDuplicateDaysEnd: monthShowsDuplicateDaysEnd, monthShowsDuplicateDaysStart: monthShowsDuplicateDaysStart }))));\n            }\n            return monthList;\n        };\n        _this.renderYears = function () {\n            if (_this.props.showTimeSelectOnly) {\n                return;\n            }\n            if (_this.props.showYearPicker) {\n                return (React.createElement(\"div\", { className: \"react-datepicker__year--container\" },\n                    _this.renderHeader({ monthDate: _this.state.date }),\n                    React.createElement(Year, _assign({}, Calendar.defaultProps, _this.props, { selectingDate: _this.state.selectingDate, date: _this.state.date, onDayClick: _this.handleDayClick, clearSelectingDate: _this.clearSelectingDate, onYearMouseEnter: _this.handleYearMouseEnter, onYearMouseLeave: _this.handleYearMouseLeave }))));\n            }\n            return;\n        };\n        _this.renderTimeSection = function () {\n            if (_this.props.showTimeSelect &&\n                (_this.state.monthContainer || _this.props.showTimeSelectOnly)) {\n                return (React.createElement(Time, _assign({}, Calendar.defaultProps, _this.props, { onChange: _this.props.onTimeChange, format: _this.props.timeFormat, intervals: _this.props.timeIntervals, monthRef: _this.state.monthContainer })));\n            }\n            return;\n        };\n        _this.renderInputTimeSection = function () {\n            var time = _this.props.selected\n                ? new Date(_this.props.selected)\n                : undefined;\n            var timeValid = time && isValid(time) && Boolean(_this.props.selected);\n            var timeString = timeValid\n                ? \"\".concat(addZero(time.getHours()), \":\").concat(addZero(time.getMinutes()))\n                : \"\";\n            if (_this.props.showTimeInput) {\n                return (React.createElement(InputTime, _assign({}, Calendar.defaultProps, _this.props, { date: time, timeString: timeString, onChange: _this.props.onTimeChange })));\n            }\n            return;\n        };\n        _this.renderAriaLiveRegion = function () {\n            var _a;\n            var _b = getYearsPeriod(_this.state.date, (_a = _this.props.yearItemNumber) !== null && _a !== void 0 ? _a : Calendar.defaultProps.yearItemNumber), startPeriod = _b.startPeriod, endPeriod = _b.endPeriod;\n            var ariaLiveMessage;\n            if (_this.props.showYearPicker) {\n                ariaLiveMessage = \"\".concat(startPeriod, \" - \").concat(endPeriod);\n            }\n            else if (_this.props.showMonthYearPicker ||\n                _this.props.showQuarterYearPicker) {\n                ariaLiveMessage = getYear(_this.state.date);\n            }\n            else {\n                ariaLiveMessage = \"\".concat(getMonthInLocale(getMonth(_this.state.date), _this.props.locale), \" \").concat(getYear(_this.state.date));\n            }\n            return (React.createElement(\"span\", { role: \"alert\", \"aria-live\": \"polite\", className: \"react-datepicker__aria-live\" }, _this.state.isRenderAriaLiveMessage && ariaLiveMessage));\n        };\n        _this.renderChildren = function () {\n            if (_this.props.children) {\n                return (React.createElement(\"div\", { className: \"react-datepicker__children-container\" }, _this.props.children));\n            }\n            return;\n        };\n        _this.containerRef = createRef();\n        _this.state = {\n            date: _this.getDateInView(),\n            selectingDate: undefined,\n            monthContainer: undefined,\n            isRenderAriaLiveMessage: false,\n        };\n        return _this;\n    }\n    Object.defineProperty(Calendar, \"defaultProps\", {\n        get: function () {\n            return {\n                monthsShown: 1,\n                forceShowMonthNavigation: false,\n                timeCaption: \"Time\",\n                previousYearButtonLabel: \"Previous Year\",\n                nextYearButtonLabel: \"Next Year\",\n                previousMonthButtonLabel: \"Previous Month\",\n                nextMonthButtonLabel: \"Next Month\",\n                yearItemNumber: DEFAULT_YEAR_ITEM_NUMBER,\n            };\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Calendar.prototype.componentDidMount = function () {\n        var _this = this;\n        // monthContainer height is needed in time component\n        // to determine the height for the ul in the time component\n        // setState here so height is given after final component\n        // layout is rendered\n        if (this.props.showTimeSelect) {\n            this.assignMonthContainer = (function () {\n                _this.setState({ monthContainer: _this.monthContainer });\n            })();\n        }\n    };\n    Calendar.prototype.componentDidUpdate = function (prevProps) {\n        var _this = this;\n        if (this.props.preSelection &&\n            (!isSameDay(this.props.preSelection, prevProps.preSelection) ||\n                this.props.monthSelectedIn !== prevProps.monthSelectedIn)) {\n            var hasMonthChanged_1 = !isSameMonth(this.state.date, this.props.preSelection);\n            this.setState({\n                date: this.props.preSelection,\n            }, function () { return hasMonthChanged_1 && _this.handleCustomMonthChange(_this.state.date); });\n        }\n        else if (this.props.openToDate &&\n            !isSameDay(this.props.openToDate, prevProps.openToDate)) {\n            this.setState({\n                date: this.props.openToDate,\n            });\n        }\n    };\n    Calendar.prototype.render = function () {\n        var Container = this.props.container || CalendarContainer;\n        return (React.createElement(ClickOutsideWrapper, { onClickOutside: this.handleClickOutside, style: { display: \"contents\" }, ignoreClass: this.props.outsideClickIgnoreClass },\n            React.createElement(\"div\", { style: { display: \"contents\" }, ref: this.containerRef },\n                React.createElement(Container, { className: clsx(\"react-datepicker\", this.props.className, {\n                        \"react-datepicker--time-only\": this.props.showTimeSelectOnly,\n                    }), showTime: this.props.showTimeSelect || this.props.showTimeInput, showTimeSelectOnly: this.props.showTimeSelectOnly },\n                    this.renderAriaLiveRegion(),\n                    this.renderPreviousButton(),\n                    this.renderNextButton(),\n                    this.renderMonths(),\n                    this.renderYears(),\n                    this.renderTodayButton(),\n                    this.renderTimeSection(),\n                    this.renderInputTimeSection(),\n                    this.renderChildren()))));\n    };\n    return Calendar;\n}(Component));\n\n/**\n * `CalendarIcon` is a React component that renders an icon for a calendar.\n * The icon can be a string representing a CSS class, a React node, or a default SVG icon.\n *\n * @component\n * @prop  icon - The icon to be displayed. This can be a string representing a CSS class or a React node.\n * @prop  className - An optional string representing additional CSS classes to be applied to the icon.\n * @prop  onClick - An optional function to be called when the icon is clicked.\n *\n * @example\n * // To use a CSS class as the icon\n * <CalendarIcon icon=\"my-icon-class\" onClick={myClickHandler} />\n *\n * @example\n * // To use a React node as the icon\n * <CalendarIcon icon={<MyIconComponent />} onClick={myClickHandler} />\n *\n * @returns  The `CalendarIcon` component.\n */\nvar CalendarIcon = function (_a) {\n    var icon = _a.icon, _b = _a.className, className = _b === void 0 ? \"\" : _b, onClick = _a.onClick;\n    var defaultClass = \"react-datepicker__calendar-icon\";\n    if (typeof icon === \"string\") {\n        return (React.createElement(\"i\", { className: \"\".concat(defaultClass, \" \").concat(icon, \" \").concat(className), \"aria-hidden\": \"true\", onClick: onClick }));\n    }\n    if (React.isValidElement(icon)) {\n        // Because we are checking that typeof icon is string first, we can safely cast icon as React.ReactElement on types level and code level\n        var iconElement_1 = icon;\n        return React.cloneElement(iconElement_1, {\n            className: \"\".concat(iconElement_1.props.className || \"\", \" \").concat(defaultClass, \" \").concat(className),\n            onClick: function (event) {\n                if (typeof iconElement_1.props.onClick === \"function\") {\n                    iconElement_1.props.onClick(event);\n                }\n                if (typeof onClick === \"function\") {\n                    onClick(event);\n                }\n            },\n        });\n    }\n    // Default SVG Icon\n    return (React.createElement(\"svg\", { className: \"\".concat(defaultClass, \" \").concat(className), xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 448 512\", onClick: onClick },\n        React.createElement(\"path\", { d: \"M96 32V64H48C21.5 64 0 85.5 0 112v48H448V112c0-26.5-21.5-48-48-48H352V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V64H160V32c0-17.7-14.3-32-32-32S96 14.3 96 32zM448 192H0V464c0 26.5 21.5 48 48 48H400c26.5 0 48-21.5 48-48V192z\" })));\n};\n\n/**\n * `Portal` is a React component that allows you to render children into a DOM node\n * that exists outside the DOM hierarchy of the parent component.\n *\n * @class\n * @param {PortalProps} props - The properties that define the `Portal` component.\n * @property {React.ReactNode} props.children - The children to be rendered into the `Portal`.\n * @property {string} props.portalId - The id of the DOM node into which the `Portal` will render.\n * @property {ShadowRoot} [props.portalHost] - The DOM node to host the `Portal`.\n */\nvar Portal = /** @class */ (function (_super) {\n    __extends(Portal, _super);\n    function Portal(props) {\n        var _this = _super.call(this, props) || this;\n        _this.portalRoot = null;\n        _this.el = document.createElement(\"div\");\n        return _this;\n    }\n    Portal.prototype.componentDidMount = function () {\n        this.portalRoot = (this.props.portalHost || document).getElementById(this.props.portalId);\n        if (!this.portalRoot) {\n            this.portalRoot = document.createElement(\"div\");\n            this.portalRoot.setAttribute(\"id\", this.props.portalId);\n            (this.props.portalHost || document.body).appendChild(this.portalRoot);\n        }\n        this.portalRoot.appendChild(this.el);\n    };\n    Portal.prototype.componentWillUnmount = function () {\n        if (this.portalRoot) {\n            this.portalRoot.removeChild(this.el);\n        }\n    };\n    Portal.prototype.render = function () {\n        return ReactDOM.createPortal(this.props.children, this.el);\n    };\n    return Portal;\n}(Component));\n\nvar focusableElementsSelector = \"[tabindex], a, button, input, select, textarea\";\nvar focusableFilter = function (node) {\n    if (node instanceof HTMLAnchorElement) {\n        return node.tabIndex !== -1;\n    }\n    return !node.disabled && node.tabIndex !== -1;\n};\n/**\n * `TabLoop` is a React component that manages tabbing behavior for its children.\n *\n * TabLoop prevents the user from tabbing outside of the popper\n * It creates a tabindex loop so that \"Tab\" on the last element will focus the first element\n * and \"Shift Tab\" on the first element will focus the last element\n *\n * @component\n * @example\n * <TabLoop enableTabLoop={true}>\n *   <ChildComponent />\n * </TabLoop>\n *\n * @param props - The properties that define the `TabLoop` component.\n * @param props.children - The child components.\n * @param props.enableTabLoop - Whether to enable the tab loop.\n *\n * @returns The `TabLoop` component.\n */\nvar TabLoop = /** @class */ (function (_super) {\n    __extends(TabLoop, _super);\n    function TabLoop(props) {\n        var _this = _super.call(this, props) || this;\n        /**\n         * `getTabChildren` is a method of the `TabLoop` class that retrieves all tabbable children of the component.\n         *\n         * This method uses the `tabbable` library to find all tabbable elements within the `TabLoop` component.\n         * It then filters out any elements that are not visible.\n         *\n         * @returns An array of all tabbable and visible children of the `TabLoop` component.\n         */\n        _this.getTabChildren = function () {\n            var _a;\n            return Array.prototype.slice\n                .call((_a = _this.tabLoopRef.current) === null || _a === void 0 ? void 0 : _a.querySelectorAll(focusableElementsSelector), 1, -1)\n                .filter(focusableFilter);\n        };\n        _this.handleFocusStart = function () {\n            var tabChildren = _this.getTabChildren();\n            tabChildren &&\n                tabChildren.length > 1 &&\n                tabChildren[tabChildren.length - 1].focus();\n        };\n        _this.handleFocusEnd = function () {\n            var tabChildren = _this.getTabChildren();\n            tabChildren && tabChildren.length > 1 && tabChildren[0].focus();\n        };\n        _this.tabLoopRef = createRef();\n        return _this;\n    }\n    TabLoop.prototype.render = function () {\n        var _a;\n        if (!((_a = this.props.enableTabLoop) !== null && _a !== void 0 ? _a : TabLoop.defaultProps.enableTabLoop)) {\n            return this.props.children;\n        }\n        return (React.createElement(\"div\", { className: \"react-datepicker__tab-loop\", ref: this.tabLoopRef },\n            React.createElement(\"div\", { className: \"react-datepicker__tab-loop__start\", tabIndex: 0, onFocus: this.handleFocusStart }),\n            this.props.children,\n            React.createElement(\"div\", { className: \"react-datepicker__tab-loop__end\", tabIndex: 0, onFocus: this.handleFocusEnd })));\n    };\n    TabLoop.defaultProps = {\n        enableTabLoop: true,\n    };\n    return TabLoop;\n}(Component));\n\n/**\n * `withFloating` is a higher-order component that adds floating behavior to a component.\n *\n * @param Component - The component to enhance.\n *\n * @example\n * const FloatingComponent = withFloating(MyComponent);\n * <FloatingComponent popperModifiers={[]} popperProps={{}} hidePopper={true} />\n *\n * @param popperModifiers - The modifiers to use for the popper.\n * @param popperProps - The props to pass to the popper.\n * @param hidePopper - Whether to hide the popper.\n * @param popperPlacement - The placement of the popper.\n *\n * @returns A new component with floating behavior.\n */\nfunction withFloating(Component) {\n    var WithFloating = function (props) {\n        var _a;\n        var hidePopper = typeof props.hidePopper === \"boolean\" ? props.hidePopper : true;\n        var arrowRef = useRef(null);\n        var floatingProps = useFloating(_assign({ open: !hidePopper, whileElementsMounted: autoUpdate, placement: props.popperPlacement, middleware: __spreadArray([\n                flip({ padding: 15 }),\n                offset(10),\n                arrow({ element: arrowRef })\n            ], ((_a = props.popperModifiers) !== null && _a !== void 0 ? _a : []), true) }, props.popperProps));\n        var componentProps = _assign(_assign({}, props), { hidePopper: hidePopper, popperProps: _assign(_assign({}, floatingProps), { arrowRef: arrowRef }) });\n        return React.createElement(Component, _assign({}, componentProps));\n    };\n    return WithFloating;\n}\n\n// Exported for testing purposes\nvar PopperComponent = /** @class */ (function (_super) {\n    __extends(PopperComponent, _super);\n    function PopperComponent() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    Object.defineProperty(PopperComponent, \"defaultProps\", {\n        get: function () {\n            return {\n                hidePopper: true,\n            };\n        },\n        enumerable: false,\n        configurable: true\n    });\n    PopperComponent.prototype.render = function () {\n        var _a = this.props, className = _a.className, wrapperClassName = _a.wrapperClassName, _b = _a.hidePopper, hidePopper = _b === void 0 ? PopperComponent.defaultProps.hidePopper : _b, popperComponent = _a.popperComponent, targetComponent = _a.targetComponent, enableTabLoop = _a.enableTabLoop, popperOnKeyDown = _a.popperOnKeyDown, portalId = _a.portalId, portalHost = _a.portalHost, popperProps = _a.popperProps, showArrow = _a.showArrow;\n        var popper = undefined;\n        if (!hidePopper) {\n            var classes = clsx(\"react-datepicker-popper\", className);\n            popper = (React.createElement(TabLoop, { enableTabLoop: enableTabLoop },\n                React.createElement(\"div\", { ref: popperProps.refs.setFloating, style: popperProps.floatingStyles, className: classes, \"data-placement\": popperProps.placement, onKeyDown: popperOnKeyDown },\n                    popperComponent,\n                    showArrow && (React.createElement(FloatingArrow, { ref: popperProps.arrowRef, context: popperProps.context, fill: \"currentColor\", strokeWidth: 1, height: 8, width: 16, style: { transform: \"translateY(-1px)\" }, className: \"react-datepicker__triangle\" })))));\n        }\n        if (this.props.popperContainer) {\n            popper = createElement(this.props.popperContainer, {}, popper);\n        }\n        if (portalId && !hidePopper) {\n            popper = (React.createElement(Portal, { portalId: portalId, portalHost: portalHost }, popper));\n        }\n        var wrapperClasses = clsx(\"react-datepicker-wrapper\", wrapperClassName);\n        return (React.createElement(React.Fragment, null,\n            React.createElement(\"div\", { ref: popperProps.refs.setReference, className: wrapperClasses }, targetComponent),\n            popper));\n    };\n    return PopperComponent;\n}(Component));\nvar PopperComponent$1 = withFloating(PopperComponent);\n\nvar outsideClickIgnoreClass = \"react-datepicker-ignore-onclickoutside\";\n// Compares dates year+month combinations\nfunction hasPreSelectionChanged(date1, date2) {\n    if (date1 && date2) {\n        return (getMonth(date1) !== getMonth(date2) || getYear(date1) !== getYear(date2));\n    }\n    return date1 !== date2;\n}\n/**\n * General datepicker component.\n */\nvar INPUT_ERR_1 = \"Date input not valid.\";\nvar DatePicker = /** @class */ (function (_super) {\n    __extends(DatePicker, _super);\n    function DatePicker(props) {\n        var _this = _super.call(this, props) || this;\n        _this.calendar = null;\n        _this.input = null;\n        _this.getPreSelection = function () {\n            return _this.props.openToDate\n                ? _this.props.openToDate\n                : _this.props.selectsEnd && _this.props.startDate\n                    ? _this.props.startDate\n                    : _this.props.selectsStart && _this.props.endDate\n                        ? _this.props.endDate\n                        : newDate();\n        };\n        // Convert the date from string format to standard Date format\n        _this.modifyHolidays = function () {\n            var _a;\n            return (_a = _this.props.holidays) === null || _a === void 0 ? void 0 : _a.reduce(function (accumulator, holiday) {\n                var date = new Date(holiday.date);\n                if (!isValid(date)) {\n                    return accumulator;\n                }\n                return __spreadArray(__spreadArray([], accumulator, true), [_assign(_assign({}, holiday), { date: date })], false);\n            }, []);\n        };\n        _this.calcInitialState = function () {\n            var _a;\n            var defaultPreSelection = _this.getPreSelection();\n            var minDate = getEffectiveMinDate(_this.props);\n            var maxDate = getEffectiveMaxDate(_this.props);\n            var boundedPreSelection = minDate && isBefore(defaultPreSelection, getStartOfDay(minDate))\n                ? minDate\n                : maxDate && isAfter(defaultPreSelection, getEndOfDay(maxDate))\n                    ? maxDate\n                    : defaultPreSelection;\n            return {\n                open: _this.props.startOpen || false,\n                preventFocus: false,\n                inputValue: null,\n                preSelection: (_a = (_this.props.selectsRange\n                    ? _this.props.startDate\n                    : _this.props.selected)) !== null && _a !== void 0 ? _a : boundedPreSelection,\n                // transforming highlighted days (perhaps nested array)\n                // to flat Map for faster access in day.jsx\n                highlightDates: getHighLightDaysMap(_this.props.highlightDates),\n                focused: false,\n                // used to focus day in inline version after month has changed, but not on\n                // initial render\n                shouldFocusDayInline: false,\n                isRenderAriaLiveMessage: false,\n                wasHidden: false,\n            };\n        };\n        _this.resetHiddenStatus = function () {\n            _this.setState(_assign(_assign({}, _this.state), { wasHidden: false }));\n        };\n        _this.setHiddenStatus = function () {\n            _this.setState(_assign(_assign({}, _this.state), { wasHidden: true }));\n        };\n        _this.setHiddenStateOnVisibilityHidden = function () {\n            if (document.visibilityState !== \"hidden\") {\n                return;\n            }\n            _this.setHiddenStatus();\n        };\n        _this.clearPreventFocusTimeout = function () {\n            if (_this.preventFocusTimeout) {\n                clearTimeout(_this.preventFocusTimeout);\n            }\n        };\n        _this.setFocus = function () {\n            var _a, _b;\n            (_b = (_a = _this.input) === null || _a === void 0 ? void 0 : _a.focus) === null || _b === void 0 ? void 0 : _b.call(_a, { preventScroll: true });\n        };\n        _this.setBlur = function () {\n            var _a, _b;\n            (_b = (_a = _this.input) === null || _a === void 0 ? void 0 : _a.blur) === null || _b === void 0 ? void 0 : _b.call(_a);\n            _this.cancelFocusInput();\n        };\n        _this.deferBlur = function () {\n            requestAnimationFrame(function () {\n                _this.setBlur();\n            });\n        };\n        _this.setOpen = function (open, skipSetBlur) {\n            if (skipSetBlur === void 0) { skipSetBlur = false; }\n            _this.setState({\n                open: open,\n                preSelection: open && _this.state.open\n                    ? _this.state.preSelection\n                    : _this.calcInitialState().preSelection,\n                lastPreSelectChange: PRESELECT_CHANGE_VIA_NAVIGATE,\n            }, function () {\n                if (!open) {\n                    _this.setState(function (prev) { return ({\n                        focused: skipSetBlur ? prev.focused : false,\n                    }); }, function () {\n                        !skipSetBlur && _this.deferBlur();\n                        _this.setState({ inputValue: null });\n                    });\n                }\n            });\n        };\n        _this.inputOk = function () { return isDate(_this.state.preSelection); };\n        _this.isCalendarOpen = function () {\n            return _this.props.open === undefined\n                ? _this.state.open && !_this.props.disabled && !_this.props.readOnly\n                : _this.props.open;\n        };\n        _this.handleFocus = function (event) {\n            var _a, _b;\n            var isAutoReFocus = _this.state.wasHidden;\n            var isOpenAllowed = isAutoReFocus ? _this.state.open : true;\n            if (isAutoReFocus) {\n                _this.resetHiddenStatus();\n            }\n            if (!_this.state.preventFocus) {\n                (_b = (_a = _this.props).onFocus) === null || _b === void 0 ? void 0 : _b.call(_a, event);\n                if (isOpenAllowed &&\n                    !_this.props.preventOpenOnFocus &&\n                    !_this.props.readOnly) {\n                    _this.setOpen(true);\n                }\n            }\n            _this.setState({ focused: true });\n        };\n        _this.sendFocusBackToInput = function () {\n            // Clear previous timeout if it exists\n            if (_this.preventFocusTimeout) {\n                _this.clearPreventFocusTimeout();\n            }\n            // close the popper and refocus the input\n            // stop the input from auto opening onFocus\n            // setFocus to the input\n            _this.setState({ preventFocus: true }, function () {\n                _this.preventFocusTimeout = setTimeout(function () {\n                    _this.setFocus();\n                    _this.setState({ preventFocus: false });\n                });\n            });\n        };\n        _this.cancelFocusInput = function () {\n            clearTimeout(_this.inputFocusTimeout);\n            _this.inputFocusTimeout = undefined;\n        };\n        _this.deferFocusInput = function () {\n            _this.cancelFocusInput();\n            _this.inputFocusTimeout = setTimeout(function () { return _this.setFocus(); }, 1);\n        };\n        _this.handleDropdownFocus = function () {\n            _this.cancelFocusInput();\n        };\n        _this.handleBlur = function (event) {\n            var _a, _b;\n            if (!_this.state.open || _this.props.withPortal || _this.props.showTimeInput) {\n                (_b = (_a = _this.props).onBlur) === null || _b === void 0 ? void 0 : _b.call(_a, event);\n            }\n            if (_this.state.open && _this.props.open === false) {\n                _this.setOpen(false);\n            }\n            _this.setState({ focused: false });\n        };\n        _this.handleCalendarClickOutside = function (event) {\n            var _a, _b;\n            if (!_this.props.inline) {\n                _this.setOpen(false);\n            }\n            (_b = (_a = _this.props).onClickOutside) === null || _b === void 0 ? void 0 : _b.call(_a, event);\n            if (_this.props.withPortal) {\n                event.preventDefault();\n            }\n        };\n        // handleChange is called when user types in the textbox\n        _this.handleChange = function () {\n            var _a, _b, _c, _d, _e;\n            var allArgs = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                allArgs[_i] = arguments[_i];\n            }\n            var event = allArgs[0];\n            if (_this.props.onChangeRaw) {\n                _this.props.onChangeRaw.apply(_this, allArgs);\n                if (!event ||\n                    typeof event.isDefaultPrevented !== \"function\" ||\n                    event.isDefaultPrevented()) {\n                    return;\n                }\n            }\n            _this.setState({\n                inputValue: (event === null || event === void 0 ? void 0 : event.target) instanceof HTMLInputElement ? event.target.value : null,\n                lastPreSelectChange: PRESELECT_CHANGE_VIA_INPUT,\n            });\n            var _f = _this.props, selectsRange = _f.selectsRange, startDate = _f.startDate, endDate = _f.endDate;\n            var dateFormat = (_a = _this.props.dateFormat) !== null && _a !== void 0 ? _a : DatePicker.defaultProps.dateFormat;\n            var strictParsing = (_b = _this.props.strictParsing) !== null && _b !== void 0 ? _b : DatePicker.defaultProps.strictParsing;\n            var value = (event === null || event === void 0 ? void 0 : event.target) instanceof HTMLInputElement ? event.target.value : \"\";\n            if (selectsRange) {\n                var _g = value\n                    .split(dateFormat.includes(\"-\") ? DATE_RANGE_SEPARATOR : \"-\", 2)\n                    .map(function (val) { return val.trim(); }), valueStart = _g[0], valueEnd = _g[1];\n                var startDateNew = parseDate(valueStart !== null && valueStart !== void 0 ? valueStart : \"\", dateFormat, _this.props.locale, strictParsing);\n                var endDateNew = parseDate(valueEnd !== null && valueEnd !== void 0 ? valueEnd : \"\", dateFormat, _this.props.locale, strictParsing);\n                var startChanged = (startDate === null || startDate === void 0 ? void 0 : startDate.getTime()) !== (startDateNew === null || startDateNew === void 0 ? void 0 : startDateNew.getTime());\n                var endChanged = (endDate === null || endDate === void 0 ? void 0 : endDate.getTime()) !== (endDateNew === null || endDateNew === void 0 ? void 0 : endDateNew.getTime());\n                if (!startChanged && !endChanged) {\n                    return;\n                }\n                if (startDateNew && isDayDisabled(startDateNew, _this.props)) {\n                    return;\n                }\n                if (endDateNew && isDayDisabled(endDateNew, _this.props)) {\n                    return;\n                }\n                (_d = (_c = _this.props).onChange) === null || _d === void 0 ? void 0 : _d.call(_c, [startDateNew, endDateNew], event);\n            }\n            else {\n                // not selectsRange\n                var date = parseDate(value, dateFormat, _this.props.locale, strictParsing, (_e = _this.props.selected) !== null && _e !== void 0 ? _e : undefined);\n                // Update selection if either (1) date was successfully parsed, or (2) input field is empty\n                if (date || !value) {\n                    _this.setSelected(date, event, true);\n                }\n            }\n        };\n        _this.handleSelect = function (date, event, monthSelectedIn) {\n            if (_this.props.readOnly)\n                return;\n            if (_this.props.shouldCloseOnSelect && !_this.props.showTimeSelect) {\n                // Preventing onFocus event to fix issue\n                // https://github.com/Hacker0x01/react-datepicker/issues/628\n                _this.sendFocusBackToInput();\n            }\n            if (_this.props.onChangeRaw) {\n                _this.props.onChangeRaw(event);\n            }\n            _this.setSelected(date, event, false, monthSelectedIn);\n            if (_this.props.showDateSelect) {\n                _this.setState({ isRenderAriaLiveMessage: true });\n            }\n            if (!_this.props.shouldCloseOnSelect || _this.props.showTimeSelect) {\n                _this.setPreSelection(date);\n            }\n            else if (!_this.props.inline) {\n                if (!_this.props.selectsRange) {\n                    _this.setOpen(false);\n                }\n                var _a = _this.props, startDate = _a.startDate, endDate = _a.endDate;\n                if (startDate &&\n                    !endDate &&\n                    (_this.props.swapRange || !isDateBefore(date, startDate))) {\n                    _this.setOpen(false);\n                }\n            }\n        };\n        // setSelected is called either from handleChange (user typed date into textbox and it was parsed) or handleSelect (user selected date from calendar using mouse or keyboard)\n        _this.setSelected = function (date, event, keepInput, monthSelectedIn) {\n            var _a, _b;\n            var changedDate = date;\n            // Early return if selected year/month/day is disabled\n            if (_this.props.showYearPicker) {\n                if (changedDate !== null &&\n                    isYearDisabled(getYear(changedDate), _this.props)) {\n                    return;\n                }\n            }\n            else if (_this.props.showMonthYearPicker) {\n                if (changedDate !== null && isMonthDisabled(changedDate, _this.props)) {\n                    return;\n                }\n            }\n            else {\n                if (changedDate !== null && isDayDisabled(changedDate, _this.props)) {\n                    return;\n                }\n            }\n            var _c = _this.props, onChange = _c.onChange, selectsRange = _c.selectsRange, startDate = _c.startDate, endDate = _c.endDate, selectsMultiple = _c.selectsMultiple, selectedDates = _c.selectedDates, minTime = _c.minTime, swapRange = _c.swapRange;\n            if (!isEqual(_this.props.selected, changedDate) ||\n                _this.props.allowSameDay ||\n                selectsRange ||\n                selectsMultiple) {\n                if (changedDate !== null) {\n                    // Preserve previously selected time if only date is currently being changed\n                    if (_this.props.selected &&\n                        (!keepInput ||\n                            (!_this.props.showTimeSelect &&\n                                !_this.props.showTimeSelectOnly &&\n                                !_this.props.showTimeInput))) {\n                        changedDate = setTime(changedDate, {\n                            hour: getHours(_this.props.selected),\n                            minute: getMinutes(_this.props.selected),\n                            second: getSeconds(_this.props.selected),\n                        });\n                    }\n                    // If minTime is present then set the time to minTime\n                    if (!keepInput &&\n                        (_this.props.showTimeSelect || _this.props.showTimeSelectOnly)) {\n                        if (minTime) {\n                            changedDate = setTime(changedDate, {\n                                hour: minTime.getHours(),\n                                minute: minTime.getMinutes(),\n                                second: minTime.getSeconds(),\n                            });\n                        }\n                    }\n                    if (!_this.props.inline) {\n                        _this.setState({\n                            preSelection: changedDate,\n                        });\n                    }\n                    if (!_this.props.focusSelectedMonth) {\n                        _this.setState({ monthSelectedIn: monthSelectedIn });\n                    }\n                }\n                if (selectsRange) {\n                    var noRanges = !startDate && !endDate;\n                    var hasStartRange = startDate && !endDate;\n                    var isRangeFilled = startDate && endDate;\n                    if (noRanges) {\n                        onChange === null || onChange === void 0 ? void 0 : onChange([changedDate, null], event);\n                    }\n                    else if (hasStartRange) {\n                        if (changedDate === null) {\n                            onChange === null || onChange === void 0 ? void 0 : onChange([null, null], event);\n                        }\n                        else if (isDateBefore(changedDate, startDate)) {\n                            if (swapRange) {\n                                onChange === null || onChange === void 0 ? void 0 : onChange([changedDate, startDate], event);\n                            }\n                            else {\n                                onChange === null || onChange === void 0 ? void 0 : onChange([changedDate, null], event);\n                            }\n                        }\n                        else {\n                            onChange === null || onChange === void 0 ? void 0 : onChange([startDate, changedDate], event);\n                        }\n                    }\n                    if (isRangeFilled) {\n                        onChange === null || onChange === void 0 ? void 0 : onChange([changedDate, null], event);\n                    }\n                }\n                else if (selectsMultiple) {\n                    if (changedDate !== null) {\n                        if (!(selectedDates === null || selectedDates === void 0 ? void 0 : selectedDates.length)) {\n                            onChange === null || onChange === void 0 ? void 0 : onChange([changedDate], event);\n                        }\n                        else {\n                            var isChangedDateAlreadySelected = selectedDates.some(function (selectedDate) { return isSameDay(selectedDate, changedDate); });\n                            if (isChangedDateAlreadySelected) {\n                                var nextDates = selectedDates.filter(function (selectedDate) { return !isSameDay(selectedDate, changedDate); });\n                                onChange === null || onChange === void 0 ? void 0 : onChange(nextDates, event);\n                            }\n                            else {\n                                onChange === null || onChange === void 0 ? void 0 : onChange(__spreadArray(__spreadArray([], selectedDates, true), [changedDate], false), event);\n                            }\n                        }\n                    }\n                }\n                else {\n                    onChange === null || onChange === void 0 ? void 0 : onChange(changedDate, event);\n                }\n            }\n            if (!keepInput) {\n                (_b = (_a = _this.props).onSelect) === null || _b === void 0 ? void 0 : _b.call(_a, changedDate, event);\n                _this.setState({ inputValue: null });\n            }\n        };\n        // When checking preSelection via min/maxDate, times need to be manipulated via getStartOfDay/getEndOfDay\n        _this.setPreSelection = function (date) {\n            if (_this.props.readOnly)\n                return;\n            var hasMinDate = isDate(_this.props.minDate);\n            var hasMaxDate = isDate(_this.props.maxDate);\n            var isValidDateSelection = true;\n            if (date) {\n                var dateStartOfDay = getStartOfDay(date);\n                if (hasMinDate && hasMaxDate) {\n                    // isDayInRange uses getStartOfDay internally, so not necessary to manipulate times here\n                    isValidDateSelection = isDayInRange(date, _this.props.minDate, _this.props.maxDate);\n                }\n                else if (hasMinDate) {\n                    var minDateStartOfDay = getStartOfDay(_this.props.minDate);\n                    isValidDateSelection =\n                        isAfter(date, minDateStartOfDay) ||\n                            isEqual(dateStartOfDay, minDateStartOfDay);\n                }\n                else if (hasMaxDate) {\n                    var maxDateEndOfDay = getEndOfDay(_this.props.maxDate);\n                    isValidDateSelection =\n                        isBefore(date, maxDateEndOfDay) ||\n                            isEqual(dateStartOfDay, maxDateEndOfDay);\n                }\n            }\n            if (isValidDateSelection) {\n                _this.setState({\n                    preSelection: date,\n                });\n            }\n        };\n        _this.toggleCalendar = function () {\n            _this.setOpen(!_this.state.open);\n        };\n        _this.handleTimeChange = function (time) {\n            var _a, _b;\n            if (_this.props.selectsRange || _this.props.selectsMultiple) {\n                return;\n            }\n            var selected = _this.props.selected\n                ? _this.props.selected\n                : _this.getPreSelection();\n            var changedDate = _this.props.selected\n                ? time\n                : setTime(selected, {\n                    hour: getHours(time),\n                    minute: getMinutes(time),\n                });\n            _this.setState({\n                preSelection: changedDate,\n            });\n            (_b = (_a = _this.props).onChange) === null || _b === void 0 ? void 0 : _b.call(_a, changedDate);\n            if (_this.props.shouldCloseOnSelect && !_this.props.showTimeInput) {\n                _this.sendFocusBackToInput();\n                _this.setOpen(false);\n            }\n            if (_this.props.showTimeInput) {\n                _this.setOpen(true);\n            }\n            if (_this.props.showTimeSelectOnly || _this.props.showTimeSelect) {\n                _this.setState({ isRenderAriaLiveMessage: true });\n            }\n            _this.setState({ inputValue: null });\n        };\n        _this.onInputClick = function () {\n            var _a, _b;\n            if (!_this.props.disabled && !_this.props.readOnly) {\n                _this.setOpen(true);\n            }\n            (_b = (_a = _this.props).onInputClick) === null || _b === void 0 ? void 0 : _b.call(_a);\n        };\n        _this.onInputKeyDown = function (event) {\n            var _a, _b, _c, _d, _e, _f;\n            (_b = (_a = _this.props).onKeyDown) === null || _b === void 0 ? void 0 : _b.call(_a, event);\n            var eventKey = event.key;\n            if (!_this.state.open &&\n                !_this.props.inline &&\n                !_this.props.preventOpenOnFocus) {\n                if (eventKey === KeyType.ArrowDown ||\n                    eventKey === KeyType.ArrowUp ||\n                    eventKey === KeyType.Enter) {\n                    (_c = _this.onInputClick) === null || _c === void 0 ? void 0 : _c.call(_this);\n                }\n                return;\n            }\n            // if calendar is open, these keys will focus the selected item\n            if (_this.state.open) {\n                if (eventKey === KeyType.ArrowDown || eventKey === KeyType.ArrowUp) {\n                    event.preventDefault();\n                    var selectorString = _this.props.showTimeSelectOnly\n                        ? \".react-datepicker__time-list-item[tabindex='0']\"\n                        : _this.props.showWeekPicker && _this.props.showWeekNumbers\n                            ? '.react-datepicker__week-number[tabindex=\"0\"]'\n                            : _this.props.showFullMonthYearPicker ||\n                                _this.props.showMonthYearPicker\n                                ? '.react-datepicker__month-text[tabindex=\"0\"]'\n                                : '.react-datepicker__day[tabindex=\"0\"]';\n                    var selectedItem = ((_d = _this.calendar) === null || _d === void 0 ? void 0 : _d.containerRef.current) instanceof Element &&\n                        _this.calendar.containerRef.current.querySelector(selectorString);\n                    selectedItem instanceof HTMLElement &&\n                        selectedItem.focus({ preventScroll: true });\n                    return;\n                }\n                var copy = newDate(_this.state.preSelection);\n                if (eventKey === KeyType.Enter) {\n                    event.preventDefault();\n                    event.target.blur();\n                    if (_this.inputOk() &&\n                        _this.state.lastPreSelectChange === PRESELECT_CHANGE_VIA_NAVIGATE) {\n                        _this.handleSelect(copy, event);\n                        !_this.props.shouldCloseOnSelect && _this.setPreSelection(copy);\n                    }\n                    else {\n                        _this.setOpen(false);\n                    }\n                }\n                else if (eventKey === KeyType.Escape) {\n                    event.preventDefault();\n                    event.target.blur();\n                    _this.sendFocusBackToInput();\n                    _this.setOpen(false);\n                }\n                else if (eventKey === KeyType.Tab) {\n                    _this.setOpen(false);\n                }\n                if (!_this.inputOk()) {\n                    (_f = (_e = _this.props).onInputError) === null || _f === void 0 ? void 0 : _f.call(_e, { code: 1, msg: INPUT_ERR_1 });\n                }\n            }\n        };\n        _this.onPortalKeyDown = function (event) {\n            var eventKey = event.key;\n            if (eventKey === KeyType.Escape) {\n                event.preventDefault();\n                _this.setState({\n                    preventFocus: true,\n                }, function () {\n                    _this.setOpen(false);\n                    setTimeout(function () {\n                        _this.setFocus();\n                        _this.setState({ preventFocus: false });\n                    });\n                });\n            }\n        };\n        // keyDown events passed down to day.jsx\n        _this.onDayKeyDown = function (event) {\n            var _a, _b, _c, _d, _e, _f;\n            var _g = _this.props, minDate = _g.minDate, maxDate = _g.maxDate, disabledKeyboardNavigation = _g.disabledKeyboardNavigation, showWeekPicker = _g.showWeekPicker, shouldCloseOnSelect = _g.shouldCloseOnSelect, locale = _g.locale, calendarStartDay = _g.calendarStartDay, adjustDateOnChange = _g.adjustDateOnChange, inline = _g.inline;\n            (_b = (_a = _this.props).onKeyDown) === null || _b === void 0 ? void 0 : _b.call(_a, event);\n            if (disabledKeyboardNavigation)\n                return;\n            var eventKey = event.key;\n            var isShiftKeyActive = event.shiftKey;\n            var copy = newDate(_this.state.preSelection);\n            var calculateNewDate = function (eventKey, date) {\n                var newCalculatedDate = date;\n                switch (eventKey) {\n                    case KeyType.ArrowRight:\n                        newCalculatedDate = showWeekPicker\n                            ? addWeeks(date, 1)\n                            : addDays(date, 1);\n                        break;\n                    case KeyType.ArrowLeft:\n                        newCalculatedDate = showWeekPicker\n                            ? subWeeks(date, 1)\n                            : subDays(date, 1);\n                        break;\n                    case KeyType.ArrowUp:\n                        newCalculatedDate = subWeeks(date, 1);\n                        break;\n                    case KeyType.ArrowDown:\n                        newCalculatedDate = addWeeks(date, 1);\n                        break;\n                    case KeyType.PageUp:\n                        newCalculatedDate = isShiftKeyActive\n                            ? subYears(date, 1)\n                            : subMonths(date, 1);\n                        break;\n                    case KeyType.PageDown:\n                        newCalculatedDate = isShiftKeyActive\n                            ? addYears(date, 1)\n                            : addMonths(date, 1);\n                        break;\n                    case KeyType.Home:\n                        newCalculatedDate = getStartOfWeek(date, locale, calendarStartDay);\n                        break;\n                    case KeyType.End:\n                        newCalculatedDate = getEndOfWeek(date);\n                        break;\n                }\n                return newCalculatedDate;\n            };\n            var getNewDate = function (eventKey, date) {\n                var MAX_ITERATIONS = 40;\n                var eventKeyCopy = eventKey;\n                var validDateFound = false;\n                var iterations = 0;\n                var newSelection = calculateNewDate(eventKey, date);\n                while (!validDateFound) {\n                    if (iterations >= MAX_ITERATIONS) {\n                        newSelection = date;\n                        break;\n                    }\n                    // if minDate exists and the new selection is before the min date, get the nearest date that isn't disabled\n                    if (minDate && newSelection < minDate) {\n                        eventKeyCopy = KeyType.ArrowRight;\n                        newSelection = isDayDisabled(minDate, _this.props)\n                            ? calculateNewDate(eventKeyCopy, newSelection)\n                            : minDate;\n                    }\n                    // if maxDate exists and the new selection is after the max date, get the nearest date that isn't disabled\n                    if (maxDate && newSelection > maxDate) {\n                        eventKeyCopy = KeyType.ArrowLeft;\n                        newSelection = isDayDisabled(maxDate, _this.props)\n                            ? calculateNewDate(eventKeyCopy, newSelection)\n                            : maxDate;\n                    }\n                    if (isDayDisabled(newSelection, _this.props)) {\n                        // if PageUp and Home is pressed to a disabled date, it will try to find the next available date after\n                        if (eventKeyCopy === KeyType.PageUp ||\n                            eventKeyCopy === KeyType.Home) {\n                            eventKeyCopy = KeyType.ArrowRight;\n                        }\n                        // if PageDown and End is pressed to a disabled date, it will try to find the next available date before\n                        if (eventKeyCopy === KeyType.PageDown ||\n                            eventKeyCopy === KeyType.End) {\n                            eventKeyCopy = KeyType.ArrowLeft;\n                        }\n                        newSelection = calculateNewDate(eventKeyCopy, newSelection);\n                    }\n                    else {\n                        validDateFound = true;\n                    }\n                    iterations++;\n                }\n                return newSelection;\n            };\n            if (eventKey === KeyType.Enter) {\n                event.preventDefault();\n                _this.handleSelect(copy, event);\n                !shouldCloseOnSelect && _this.setPreSelection(copy);\n                return;\n            }\n            else if (eventKey === KeyType.Escape) {\n                event.preventDefault();\n                _this.setOpen(false);\n                if (!_this.inputOk()) {\n                    (_d = (_c = _this.props).onInputError) === null || _d === void 0 ? void 0 : _d.call(_c, { code: 1, msg: INPUT_ERR_1 });\n                }\n                return;\n            }\n            var newSelection = null;\n            switch (eventKey) {\n                case KeyType.ArrowLeft:\n                case KeyType.ArrowRight:\n                case KeyType.ArrowUp:\n                case KeyType.ArrowDown:\n                case KeyType.PageUp:\n                case KeyType.PageDown:\n                case KeyType.Home:\n                case KeyType.End:\n                    newSelection = getNewDate(eventKey, copy);\n                    break;\n            }\n            if (!newSelection) {\n                (_f = (_e = _this.props).onInputError) === null || _f === void 0 ? void 0 : _f.call(_e, { code: 1, msg: INPUT_ERR_1 });\n                return;\n            }\n            event.preventDefault();\n            _this.setState({ lastPreSelectChange: PRESELECT_CHANGE_VIA_NAVIGATE });\n            if (adjustDateOnChange) {\n                _this.setSelected(newSelection);\n            }\n            _this.setPreSelection(newSelection);\n            // need to figure out whether month has changed to focus day in inline version\n            if (inline) {\n                var prevMonth = getMonth(copy);\n                var newMonth = getMonth(newSelection);\n                var prevYear = getYear(copy);\n                var newYear = getYear(newSelection);\n                if (prevMonth !== newMonth || prevYear !== newYear) {\n                    // month has changed\n                    _this.setState({ shouldFocusDayInline: true });\n                }\n                else {\n                    // month hasn't changed\n                    _this.setState({ shouldFocusDayInline: false });\n                }\n            }\n        };\n        // handle generic key down events in the popper that do not adjust or select dates\n        // ex: while focusing prev and next month buttons\n        _this.onPopperKeyDown = function (event) {\n            var eventKey = event.key;\n            if (eventKey === KeyType.Escape) {\n                event.preventDefault();\n                _this.sendFocusBackToInput();\n                _this.setOpen(false);\n            }\n        };\n        _this.onClearClick = function (event) {\n            if (event) {\n                if (event.preventDefault) {\n                    event.preventDefault();\n                }\n            }\n            _this.sendFocusBackToInput();\n            var _a = _this.props, selectsRange = _a.selectsRange, onChange = _a.onChange;\n            if (selectsRange) {\n                onChange === null || onChange === void 0 ? void 0 : onChange([null, null], event);\n            }\n            else {\n                onChange === null || onChange === void 0 ? void 0 : onChange(null, event);\n            }\n            _this.setState({ inputValue: null });\n        };\n        _this.clear = function () {\n            _this.onClearClick();\n        };\n        _this.onScroll = function (event) {\n            if (typeof _this.props.closeOnScroll === \"boolean\" &&\n                _this.props.closeOnScroll) {\n                if (event.target === document ||\n                    event.target === document.documentElement ||\n                    event.target === document.body) {\n                    _this.setOpen(false);\n                }\n            }\n            else if (typeof _this.props.closeOnScroll === \"function\") {\n                if (_this.props.closeOnScroll(event)) {\n                    _this.setOpen(false);\n                }\n            }\n        };\n        _this.renderCalendar = function () {\n            var _a, _b;\n            if (!_this.props.inline && !_this.isCalendarOpen()) {\n                return null;\n            }\n            return (React.createElement(Calendar, _assign({ showMonthYearDropdown: undefined, ref: function (elem) {\n                    _this.calendar = elem;\n                } }, _this.props, _this.state, { setOpen: _this.setOpen, dateFormat: (_a = _this.props.dateFormatCalendar) !== null && _a !== void 0 ? _a : DatePicker.defaultProps.dateFormatCalendar, onSelect: _this.handleSelect, onClickOutside: _this.handleCalendarClickOutside, holidays: getHolidaysMap(_this.modifyHolidays()), outsideClickIgnoreClass: outsideClickIgnoreClass, onDropdownFocus: _this.handleDropdownFocus, onTimeChange: _this.handleTimeChange, className: _this.props.calendarClassName, container: _this.props.calendarContainer, handleOnKeyDown: _this.props.onKeyDown, handleOnDayKeyDown: _this.onDayKeyDown, setPreSelection: _this.setPreSelection, dropdownMode: (_b = _this.props.dropdownMode) !== null && _b !== void 0 ? _b : DatePicker.defaultProps.dropdownMode }), _this.props.children));\n        };\n        _this.renderAriaLiveRegion = function () {\n            var _a = _this.props, _b = _a.dateFormat, dateFormat = _b === void 0 ? DatePicker.defaultProps.dateFormat : _b, locale = _a.locale;\n            var isContainsTime = _this.props.showTimeInput || _this.props.showTimeSelect;\n            var longDateFormat = isContainsTime ? \"PPPPp\" : \"PPPP\";\n            var ariaLiveMessage;\n            if (_this.props.selectsRange) {\n                ariaLiveMessage = \"Selected start date: \".concat(safeDateFormat(_this.props.startDate, {\n                    dateFormat: longDateFormat,\n                    locale: locale,\n                }), \". \").concat(_this.props.endDate\n                    ? \"End date: \" +\n                        safeDateFormat(_this.props.endDate, {\n                            dateFormat: longDateFormat,\n                            locale: locale,\n                        })\n                    : \"\");\n            }\n            else {\n                if (_this.props.showTimeSelectOnly) {\n                    ariaLiveMessage = \"Selected time: \".concat(safeDateFormat(_this.props.selected, { dateFormat: dateFormat, locale: locale }));\n                }\n                else if (_this.props.showYearPicker) {\n                    ariaLiveMessage = \"Selected year: \".concat(safeDateFormat(_this.props.selected, { dateFormat: \"yyyy\", locale: locale }));\n                }\n                else if (_this.props.showMonthYearPicker) {\n                    ariaLiveMessage = \"Selected month: \".concat(safeDateFormat(_this.props.selected, { dateFormat: \"MMMM yyyy\", locale: locale }));\n                }\n                else if (_this.props.showQuarterYearPicker) {\n                    ariaLiveMessage = \"Selected quarter: \".concat(safeDateFormat(_this.props.selected, {\n                        dateFormat: \"yyyy, QQQ\",\n                        locale: locale,\n                    }));\n                }\n                else {\n                    ariaLiveMessage = \"Selected date: \".concat(safeDateFormat(_this.props.selected, {\n                        dateFormat: longDateFormat,\n                        locale: locale,\n                    }));\n                }\n            }\n            return (React.createElement(\"span\", { role: \"alert\", \"aria-live\": \"polite\", className: \"react-datepicker__aria-live\" }, ariaLiveMessage));\n        };\n        _this.renderDateInput = function () {\n            var _a, _b;\n            var _c;\n            var className = clsx(_this.props.className, (_a = {},\n                _a[outsideClickIgnoreClass] = _this.state.open,\n                _a));\n            var customInput = _this.props.customInput || React.createElement(\"input\", { type: \"text\" });\n            var customInputRef = _this.props.customInputRef || \"ref\";\n            var _d = _this.props, _e = _d.dateFormat, dateFormat = _e === void 0 ? DatePicker.defaultProps.dateFormat : _e, locale = _d.locale;\n            var inputValue = typeof _this.props.value === \"string\"\n                ? _this.props.value\n                : typeof _this.state.inputValue === \"string\"\n                    ? _this.state.inputValue\n                    : _this.props.selectsRange\n                        ? safeDateRangeFormat(_this.props.startDate, _this.props.endDate, {\n                            dateFormat: dateFormat,\n                            locale: locale,\n                        })\n                        : _this.props.selectsMultiple\n                            ? safeMultipleDatesFormat((_c = _this.props.selectedDates) !== null && _c !== void 0 ? _c : [], {\n                                dateFormat: dateFormat,\n                                locale: locale,\n                            })\n                            : safeDateFormat(_this.props.selected, {\n                                dateFormat: dateFormat,\n                                locale: locale,\n                            });\n            return cloneElement(customInput, (_b = {},\n                _b[customInputRef] = function (input) {\n                    _this.input = input;\n                },\n                _b.value = inputValue,\n                _b.onBlur = _this.handleBlur,\n                _b.onChange = _this.handleChange,\n                _b.onClick = _this.onInputClick,\n                _b.onFocus = _this.handleFocus,\n                _b.onKeyDown = _this.onInputKeyDown,\n                _b.id = _this.props.id,\n                _b.name = _this.props.name,\n                _b.form = _this.props.form,\n                _b.autoFocus = _this.props.autoFocus,\n                _b.placeholder = _this.props.placeholderText,\n                _b.disabled = _this.props.disabled,\n                _b.autoComplete = _this.props.autoComplete,\n                _b.className = clsx(customInput.props.className, className),\n                _b.title = _this.props.title,\n                _b.readOnly = _this.props.readOnly,\n                _b.required = _this.props.required,\n                _b.tabIndex = _this.props.tabIndex,\n                _b[\"aria-describedby\"] = _this.props.ariaDescribedBy,\n                _b[\"aria-invalid\"] = _this.props.ariaInvalid,\n                _b[\"aria-labelledby\"] = _this.props.ariaLabelledBy,\n                _b[\"aria-required\"] = _this.props.ariaRequired,\n                _b));\n        };\n        _this.renderClearButton = function () {\n            var _a = _this.props, isClearable = _a.isClearable, disabled = _a.disabled, selected = _a.selected, startDate = _a.startDate, endDate = _a.endDate, clearButtonTitle = _a.clearButtonTitle, _b = _a.clearButtonClassName, clearButtonClassName = _b === void 0 ? \"\" : _b, _c = _a.ariaLabelClose, ariaLabelClose = _c === void 0 ? \"Close\" : _c, selectedDates = _a.selectedDates, readOnly = _a.readOnly;\n            if (isClearable &&\n                !readOnly &&\n                (selected != null ||\n                    startDate != null ||\n                    endDate != null ||\n                    (selectedDates === null || selectedDates === void 0 ? void 0 : selectedDates.length))) {\n                return (React.createElement(\"button\", { type: \"button\", className: clsx(\"react-datepicker__close-icon\", clearButtonClassName, { \"react-datepicker__close-icon--disabled\": disabled }), disabled: disabled, \"aria-label\": ariaLabelClose, onClick: _this.onClearClick, title: clearButtonTitle, tabIndex: -1 }));\n            }\n            else {\n                return null;\n            }\n        };\n        _this.state = _this.calcInitialState();\n        _this.preventFocusTimeout = undefined;\n        return _this;\n    }\n    Object.defineProperty(DatePicker, \"defaultProps\", {\n        get: function () {\n            return {\n                allowSameDay: false,\n                dateFormat: \"MM/dd/yyyy\",\n                dateFormatCalendar: \"LLLL yyyy\",\n                disabled: false,\n                disabledKeyboardNavigation: false,\n                dropdownMode: \"scroll\",\n                preventOpenOnFocus: false,\n                monthsShown: 1,\n                readOnly: false,\n                withPortal: false,\n                selectsDisabledDaysInRange: false,\n                shouldCloseOnSelect: true,\n                showTimeSelect: false,\n                showTimeInput: false,\n                showPreviousMonths: false,\n                showMonthYearPicker: false,\n                showFullMonthYearPicker: false,\n                showTwoColumnMonthYearPicker: false,\n                showFourColumnMonthYearPicker: false,\n                showYearPicker: false,\n                showQuarterYearPicker: false,\n                showWeekPicker: false,\n                strictParsing: false,\n                swapRange: false,\n                timeIntervals: 30,\n                timeCaption: \"Time\",\n                previousMonthAriaLabel: \"Previous Month\",\n                previousMonthButtonLabel: \"Previous Month\",\n                nextMonthAriaLabel: \"Next Month\",\n                nextMonthButtonLabel: \"Next Month\",\n                previousYearAriaLabel: \"Previous Year\",\n                previousYearButtonLabel: \"Previous Year\",\n                nextYearAriaLabel: \"Next Year\",\n                nextYearButtonLabel: \"Next Year\",\n                timeInputLabel: \"Time\",\n                enableTabLoop: true,\n                yearItemNumber: DEFAULT_YEAR_ITEM_NUMBER,\n                focusSelectedMonth: false,\n                showPopperArrow: true,\n                excludeScrollbar: true,\n                customTimeInput: null,\n                calendarStartDay: undefined,\n                toggleCalendarOnIconClick: false,\n                usePointerEvent: false,\n            };\n        },\n        enumerable: false,\n        configurable: true\n    });\n    DatePicker.prototype.componentDidMount = function () {\n        window.addEventListener(\"scroll\", this.onScroll, true);\n        document.addEventListener(\"visibilitychange\", this.setHiddenStateOnVisibilityHidden);\n    };\n    DatePicker.prototype.componentDidUpdate = function (prevProps, prevState) {\n        var _a, _b, _c, _d;\n        if (prevProps.inline &&\n            hasPreSelectionChanged(prevProps.selected, this.props.selected)) {\n            this.setPreSelection(this.props.selected);\n        }\n        if (this.state.monthSelectedIn !== undefined &&\n            prevProps.monthsShown !== this.props.monthsShown) {\n            this.setState({ monthSelectedIn: 0 });\n        }\n        if (prevProps.highlightDates !== this.props.highlightDates) {\n            this.setState({\n                highlightDates: getHighLightDaysMap(this.props.highlightDates),\n            });\n        }\n        if (!prevState.focused &&\n            !isEqual(prevProps.selected, this.props.selected)) {\n            this.setState({ inputValue: null });\n        }\n        if (prevState.open !== this.state.open) {\n            if (prevState.open === false && this.state.open === true) {\n                (_b = (_a = this.props).onCalendarOpen) === null || _b === void 0 ? void 0 : _b.call(_a);\n            }\n            if (prevState.open === true && this.state.open === false) {\n                (_d = (_c = this.props).onCalendarClose) === null || _d === void 0 ? void 0 : _d.call(_c);\n            }\n        }\n    };\n    DatePicker.prototype.componentWillUnmount = function () {\n        this.clearPreventFocusTimeout();\n        window.removeEventListener(\"scroll\", this.onScroll, true);\n        document.removeEventListener(\"visibilitychange\", this.setHiddenStateOnVisibilityHidden);\n    };\n    DatePicker.prototype.renderInputContainer = function () {\n        var _a = this.props, showIcon = _a.showIcon, icon = _a.icon, calendarIconClassname = _a.calendarIconClassname, calendarIconClassName = _a.calendarIconClassName, toggleCalendarOnIconClick = _a.toggleCalendarOnIconClick;\n        var open = this.state.open;\n        if (calendarIconClassname) {\n            console.warn(\"calendarIconClassname props is deprecated. should use calendarIconClassName props.\");\n        }\n        return (React.createElement(\"div\", { className: \"react-datepicker__input-container\".concat(showIcon ? \" react-datepicker__view-calendar-icon\" : \"\") },\n            showIcon && (React.createElement(CalendarIcon, _assign({ icon: icon, className: clsx(calendarIconClassName, !calendarIconClassName && calendarIconClassname, open && \"react-datepicker-ignore-onclickoutside\") }, (toggleCalendarOnIconClick\n                ? {\n                    onClick: this.toggleCalendar,\n                }\n                : null)))),\n            this.state.isRenderAriaLiveMessage && this.renderAriaLiveRegion(),\n            this.renderDateInput(),\n            this.renderClearButton()));\n    };\n    DatePicker.prototype.render = function () {\n        var calendar = this.renderCalendar();\n        if (this.props.inline)\n            return calendar;\n        if (this.props.withPortal) {\n            var portalContainer = this.state.open ? (React.createElement(TabLoop, { enableTabLoop: this.props.enableTabLoop },\n                React.createElement(\"div\", { className: \"react-datepicker__portal\", tabIndex: -1, onKeyDown: this.onPortalKeyDown }, calendar))) : null;\n            if (this.state.open && this.props.portalId) {\n                portalContainer = (React.createElement(Portal, _assign({ portalId: this.props.portalId }, this.props), portalContainer));\n            }\n            return (React.createElement(\"div\", null,\n                this.renderInputContainer(),\n                portalContainer));\n        }\n        return (React.createElement(PopperComponent$1, _assign({}, this.props, { className: this.props.popperClassName, hidePopper: !this.isCalendarOpen(), targetComponent: this.renderInputContainer(), popperComponent: calendar, popperOnKeyDown: this.onPopperKeyDown, showArrow: this.props.showPopperArrow })));\n    };\n    return DatePicker;\n}(Component));\nvar PRESELECT_CHANGE_VIA_INPUT = \"input\";\nvar PRESELECT_CHANGE_VIA_NAVIGATE = \"navigate\";\n\nexport { CalendarContainer, DatePicker as default, getDefaultLocale, registerLocale, setDefaultLocale };\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZXMuanMiLCJzb3VyY2VzIjpbIi4uL25vZGVfbW9kdWxlcy90c2xpYi90c2xpYi5lczYuanMiLCIuLi9zcmMvY2FsZW5kYXJfY29udGFpbmVyLnRzeCIsIi4uL3NyYy9jbGlja19vdXRzaWRlX3dyYXBwZXIudHN4IiwiLi4vc3JjL2RhdGVfdXRpbHMudHMiLCIuLi9zcmMvaW5wdXRfdGltZS50c3giLCIuLi9zcmMvZGF5LnRzeCIsIi4uL3NyYy93ZWVrX251bWJlci50c3giLCIuLi9zcmMvd2Vlay50c3giLCIuLi9zcmMvbW9udGgudHN4IiwiLi4vc3JjL21vbnRoX2Ryb3Bkb3duX29wdGlvbnMudHN4IiwiLi4vc3JjL21vbnRoX2Ryb3Bkb3duLnRzeCIsIi4uL3NyYy9tb250aF95ZWFyX2Ryb3Bkb3duX29wdGlvbnMudHN4IiwiLi4vc3JjL21vbnRoX3llYXJfZHJvcGRvd24udHN4IiwiLi4vc3JjL3RpbWUudHN4IiwiLi4vc3JjL3llYXIudHN4IiwiLi4vc3JjL3llYXJfZHJvcGRvd25fb3B0aW9ucy50c3giLCIuLi9zcmMveWVhcl9kcm9wZG93bi50c3giLCIuLi9zcmMvY2FsZW5kYXIudHN4IiwiLi4vc3JjL2NhbGVuZGFyX2ljb24udHN4IiwiLi4vc3JjL3BvcnRhbC50c3giLCIuLi9zcmMvdGFiX2xvb3AudHN4IiwiLi4vc3JjL3dpdGhfZmxvYXRpbmcudHN4IiwiLi4vc3JjL3BvcHBlcl9jb21wb25lbnQudHN4IiwiLi4vc3JjL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbkNvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlxyXG5cclxuUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XHJcbnB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC5cclxuXHJcblRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcclxuUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZXHJcbkFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCxcclxuSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXHJcbkxPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SXHJcbk9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1JcclxuUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cclxuLyogZ2xvYmFsIFJlZmxlY3QsIFByb21pc2UsIFN1cHByZXNzZWRFcnJvciwgU3ltYm9sLCBJdGVyYXRvciAqL1xyXG5cclxudmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbihkLCBiKSB7XHJcbiAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XHJcbiAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxyXG4gICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCBwKSkgZFtwXSA9IGJbcF07IH07XHJcbiAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2V4dGVuZHMoZCwgYikge1xyXG4gICAgaWYgKHR5cGVvZiBiICE9PSBcImZ1bmN0aW9uXCIgJiYgYiAhPT0gbnVsbClcclxuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyhiKSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XHJcbiAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xyXG4gICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XHJcbiAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XHJcbn1cclxuXHJcbmV4cG9ydCB2YXIgX19hc3NpZ24gPSBmdW5jdGlvbigpIHtcclxuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiBfX2Fzc2lnbih0KSB7XHJcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XHJcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XHJcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSkgdFtwXSA9IHNbcF07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3Jlc3QocywgZSkge1xyXG4gICAgdmFyIHQgPSB7fTtcclxuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxyXG4gICAgICAgIHRbcF0gPSBzW3BdO1xyXG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxyXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxyXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XHJcbiAgICAgICAgfVxyXG4gICAgcmV0dXJuIHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2RlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKSB7XHJcbiAgICB2YXIgYyA9IGFyZ3VtZW50cy5sZW5ndGgsIHIgPSBjIDwgMyA/IHRhcmdldCA6IGRlc2MgPT09IG51bGwgPyBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSkgOiBkZXNjLCBkO1xyXG4gICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0LmRlY29yYXRlID09PSBcImZ1bmN0aW9uXCIpIHIgPSBSZWZsZWN0LmRlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKTtcclxuICAgIGVsc2UgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIGlmIChkID0gZGVjb3JhdG9yc1tpXSkgciA9IChjIDwgMyA/IGQocikgOiBjID4gMyA/IGQodGFyZ2V0LCBrZXksIHIpIDogZCh0YXJnZXQsIGtleSkpIHx8IHI7XHJcbiAgICByZXR1cm4gYyA+IDMgJiYgciAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHIpLCByO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19wYXJhbShwYXJhbUluZGV4LCBkZWNvcmF0b3IpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0LCBrZXkpIHsgZGVjb3JhdG9yKHRhcmdldCwga2V5LCBwYXJhbUluZGV4KTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19lc0RlY29yYXRlKGN0b3IsIGRlc2NyaXB0b3JJbiwgZGVjb3JhdG9ycywgY29udGV4dEluLCBpbml0aWFsaXplcnMsIGV4dHJhSW5pdGlhbGl6ZXJzKSB7XHJcbiAgICBmdW5jdGlvbiBhY2NlcHQoZikgeyBpZiAoZiAhPT0gdm9pZCAwICYmIHR5cGVvZiBmICE9PSBcImZ1bmN0aW9uXCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJGdW5jdGlvbiBleHBlY3RlZFwiKTsgcmV0dXJuIGY7IH1cclxuICAgIHZhciBraW5kID0gY29udGV4dEluLmtpbmQsIGtleSA9IGtpbmQgPT09IFwiZ2V0dGVyXCIgPyBcImdldFwiIDoga2luZCA9PT0gXCJzZXR0ZXJcIiA/IFwic2V0XCIgOiBcInZhbHVlXCI7XHJcbiAgICB2YXIgdGFyZ2V0ID0gIWRlc2NyaXB0b3JJbiAmJiBjdG9yID8gY29udGV4dEluW1wic3RhdGljXCJdID8gY3RvciA6IGN0b3IucHJvdG90eXBlIDogbnVsbDtcclxuICAgIHZhciBkZXNjcmlwdG9yID0gZGVzY3JpcHRvckluIHx8ICh0YXJnZXQgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgY29udGV4dEluLm5hbWUpIDoge30pO1xyXG4gICAgdmFyIF8sIGRvbmUgPSBmYWxzZTtcclxuICAgIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAgICAgdmFyIGNvbnRleHQgPSB7fTtcclxuICAgICAgICBmb3IgKHZhciBwIGluIGNvbnRleHRJbikgY29udGV4dFtwXSA9IHAgPT09IFwiYWNjZXNzXCIgPyB7fSA6IGNvbnRleHRJbltwXTtcclxuICAgICAgICBmb3IgKHZhciBwIGluIGNvbnRleHRJbi5hY2Nlc3MpIGNvbnRleHQuYWNjZXNzW3BdID0gY29udGV4dEluLmFjY2Vzc1twXTtcclxuICAgICAgICBjb250ZXh0LmFkZEluaXRpYWxpemVyID0gZnVuY3Rpb24gKGYpIHsgaWYgKGRvbmUpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgYWRkIGluaXRpYWxpemVycyBhZnRlciBkZWNvcmF0aW9uIGhhcyBjb21wbGV0ZWRcIik7IGV4dHJhSW5pdGlhbGl6ZXJzLnB1c2goYWNjZXB0KGYgfHwgbnVsbCkpOyB9O1xyXG4gICAgICAgIHZhciByZXN1bHQgPSAoMCwgZGVjb3JhdG9yc1tpXSkoa2luZCA9PT0gXCJhY2Nlc3NvclwiID8geyBnZXQ6IGRlc2NyaXB0b3IuZ2V0LCBzZXQ6IGRlc2NyaXB0b3Iuc2V0IH0gOiBkZXNjcmlwdG9yW2tleV0sIGNvbnRleHQpO1xyXG4gICAgICAgIGlmIChraW5kID09PSBcImFjY2Vzc29yXCIpIHtcclxuICAgICAgICAgICAgaWYgKHJlc3VsdCA9PT0gdm9pZCAwKSBjb250aW51ZTtcclxuICAgICAgICAgICAgaWYgKHJlc3VsdCA9PT0gbnVsbCB8fCB0eXBlb2YgcmVzdWx0ICE9PSBcIm9iamVjdFwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiT2JqZWN0IGV4cGVjdGVkXCIpO1xyXG4gICAgICAgICAgICBpZiAoXyA9IGFjY2VwdChyZXN1bHQuZ2V0KSkgZGVzY3JpcHRvci5nZXQgPSBfO1xyXG4gICAgICAgICAgICBpZiAoXyA9IGFjY2VwdChyZXN1bHQuc2V0KSkgZGVzY3JpcHRvci5zZXQgPSBfO1xyXG4gICAgICAgICAgICBpZiAoXyA9IGFjY2VwdChyZXN1bHQuaW5pdCkpIGluaXRpYWxpemVycy51bnNoaWZ0KF8pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChfID0gYWNjZXB0KHJlc3VsdCkpIHtcclxuICAgICAgICAgICAgaWYgKGtpbmQgPT09IFwiZmllbGRcIikgaW5pdGlhbGl6ZXJzLnVuc2hpZnQoXyk7XHJcbiAgICAgICAgICAgIGVsc2UgZGVzY3JpcHRvcltrZXldID0gXztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAodGFyZ2V0KSBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBjb250ZXh0SW4ubmFtZSwgZGVzY3JpcHRvcik7XHJcbiAgICBkb25lID0gdHJ1ZTtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3J1bkluaXRpYWxpemVycyh0aGlzQXJnLCBpbml0aWFsaXplcnMsIHZhbHVlKSB7XHJcbiAgICB2YXIgdXNlVmFsdWUgPSBhcmd1bWVudHMubGVuZ3RoID4gMjtcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW5pdGlhbGl6ZXJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgdmFsdWUgPSB1c2VWYWx1ZSA/IGluaXRpYWxpemVyc1tpXS5jYWxsKHRoaXNBcmcsIHZhbHVlKSA6IGluaXRpYWxpemVyc1tpXS5jYWxsKHRoaXNBcmcpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHVzZVZhbHVlID8gdmFsdWUgOiB2b2lkIDA7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19wcm9wS2V5KHgpIHtcclxuICAgIHJldHVybiB0eXBlb2YgeCA9PT0gXCJzeW1ib2xcIiA/IHggOiBcIlwiLmNvbmNhdCh4KTtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3NldEZ1bmN0aW9uTmFtZShmLCBuYW1lLCBwcmVmaXgpIHtcclxuICAgIGlmICh0eXBlb2YgbmFtZSA9PT0gXCJzeW1ib2xcIikgbmFtZSA9IG5hbWUuZGVzY3JpcHRpb24gPyBcIltcIi5jb25jYXQobmFtZS5kZXNjcmlwdGlvbiwgXCJdXCIpIDogXCJcIjtcclxuICAgIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZiwgXCJuYW1lXCIsIHsgY29uZmlndXJhYmxlOiB0cnVlLCB2YWx1ZTogcHJlZml4ID8gXCJcIi5jb25jYXQocHJlZml4LCBcIiBcIiwgbmFtZSkgOiBuYW1lIH0pO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fbWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpIHtcclxuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5tZXRhZGF0YSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gUmVmbGVjdC5tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2F3YWl0ZXIodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XHJcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cclxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xyXG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxyXG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcclxuICAgIH0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19nZW5lcmF0b3IodGhpc0FyZywgYm9keSkge1xyXG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZyA9IE9iamVjdC5jcmVhdGUoKHR5cGVvZiBJdGVyYXRvciA9PT0gXCJmdW5jdGlvblwiID8gSXRlcmF0b3IgOiBPYmplY3QpLnByb3RvdHlwZSk7XHJcbiAgICByZXR1cm4gZy5uZXh0ID0gdmVyYigwKSwgZ1tcInRocm93XCJdID0gdmVyYigxKSwgZ1tcInJldHVyblwiXSA9IHZlcmIoMiksIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xyXG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcclxuICAgICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xyXG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XHJcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcclxuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xyXG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XHJcbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCB2YXIgX19jcmVhdGVCaW5kaW5nID0gT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xyXG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcclxuICAgIHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihtLCBrKTtcclxuICAgIGlmICghZGVzYyB8fCAoXCJnZXRcIiBpbiBkZXNjID8gIW0uX19lc01vZHVsZSA6IGRlc2Mud3JpdGFibGUgfHwgZGVzYy5jb25maWd1cmFibGUpKSB7XHJcbiAgICAgICAgZGVzYyA9IHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuIG1ba107IH0gfTtcclxuICAgIH1cclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBrMiwgZGVzYyk7XHJcbn0pIDogKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XHJcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xyXG4gICAgb1trMl0gPSBtW2tdO1xyXG59KTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2V4cG9ydFN0YXIobSwgbykge1xyXG4gICAgZm9yICh2YXIgcCBpbiBtKSBpZiAocCAhPT0gXCJkZWZhdWx0XCIgJiYgIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvLCBwKSkgX19jcmVhdGVCaW5kaW5nKG8sIG0sIHApO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX192YWx1ZXMobykge1xyXG4gICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcclxuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xyXG4gICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSByZXR1cm4ge1xyXG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcclxuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3JlYWQobywgbikge1xyXG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xyXG4gICAgaWYgKCFtKSByZXR1cm4gbztcclxuICAgIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xyXG4gICAgdHJ5IHtcclxuICAgICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxyXG4gICAgZmluYWxseSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG4vKiogQGRlcHJlY2F0ZWQgKi9cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkKCkge1xyXG4gICAgZm9yICh2YXIgYXIgPSBbXSwgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgYXIgPSBhci5jb25jYXQoX19yZWFkKGFyZ3VtZW50c1tpXSkpO1xyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG4vKiogQGRlcHJlY2F0ZWQgKi9cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkQXJyYXlzKCkge1xyXG4gICAgZm9yICh2YXIgcyA9IDAsIGkgPSAwLCBpbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBpbDsgaSsrKSBzICs9IGFyZ3VtZW50c1tpXS5sZW5ndGg7XHJcbiAgICBmb3IgKHZhciByID0gQXJyYXkocyksIGsgPSAwLCBpID0gMDsgaSA8IGlsOyBpKyspXHJcbiAgICAgICAgZm9yICh2YXIgYSA9IGFyZ3VtZW50c1tpXSwgaiA9IDAsIGpsID0gYS5sZW5ndGg7IGogPCBqbDsgaisrLCBrKyspXHJcbiAgICAgICAgICAgIHJba10gPSBhW2pdO1xyXG4gICAgcmV0dXJuIHI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZEFycmF5KHRvLCBmcm9tLCBwYWNrKSB7XHJcbiAgICBpZiAocGFjayB8fCBhcmd1bWVudHMubGVuZ3RoID09PSAyKSBmb3IgKHZhciBpID0gMCwgbCA9IGZyb20ubGVuZ3RoLCBhcjsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgIGlmIChhciB8fCAhKGkgaW4gZnJvbSkpIHtcclxuICAgICAgICAgICAgaWYgKCFhcikgYXIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tLCAwLCBpKTtcclxuICAgICAgICAgICAgYXJbaV0gPSBmcm9tW2ldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0by5jb25jYXQoYXIgfHwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSkpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdCh2KSB7XHJcbiAgICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIF9fYXdhaXQgPyAodGhpcy52ID0gdiwgdGhpcykgOiBuZXcgX19hd2FpdCh2KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNHZW5lcmF0b3IodGhpc0FyZywgX2FyZ3VtZW50cywgZ2VuZXJhdG9yKSB7XHJcbiAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgdmFyIGcgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSksIGksIHEgPSBbXTtcclxuICAgIHJldHVybiBpID0gT2JqZWN0LmNyZWF0ZSgodHlwZW9mIEFzeW5jSXRlcmF0b3IgPT09IFwiZnVuY3Rpb25cIiA/IEFzeW5jSXRlcmF0b3IgOiBPYmplY3QpLnByb3RvdHlwZSksIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiwgYXdhaXRSZXR1cm4pLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGk7XHJcbiAgICBmdW5jdGlvbiBhd2FpdFJldHVybihmKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHYpLnRoZW4oZiwgcmVqZWN0KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gdmVyYihuLCBmKSB7IGlmIChnW25dKSB7IGlbbl0gPSBmdW5jdGlvbiAodikgeyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKGEsIGIpIHsgcS5wdXNoKFtuLCB2LCBhLCBiXSkgPiAxIHx8IHJlc3VtZShuLCB2KTsgfSk7IH07IGlmIChmKSBpW25dID0gZihpW25dKTsgfSB9XHJcbiAgICBmdW5jdGlvbiByZXN1bWUobiwgdikgeyB0cnkgeyBzdGVwKGdbbl0odikpOyB9IGNhdGNoIChlKSB7IHNldHRsZShxWzBdWzNdLCBlKTsgfSB9XHJcbiAgICBmdW5jdGlvbiBzdGVwKHIpIHsgci52YWx1ZSBpbnN0YW5jZW9mIF9fYXdhaXQgPyBQcm9taXNlLnJlc29sdmUoci52YWx1ZS52KS50aGVuKGZ1bGZpbGwsIHJlamVjdCkgOiBzZXR0bGUocVswXVsyXSwgcik7IH1cclxuICAgIGZ1bmN0aW9uIGZ1bGZpbGwodmFsdWUpIHsgcmVzdW1lKFwibmV4dFwiLCB2YWx1ZSk7IH1cclxuICAgIGZ1bmN0aW9uIHJlamVjdCh2YWx1ZSkgeyByZXN1bWUoXCJ0aHJvd1wiLCB2YWx1ZSk7IH1cclxuICAgIGZ1bmN0aW9uIHNldHRsZShmLCB2KSB7IGlmIChmKHYpLCBxLnNoaWZ0KCksIHEubGVuZ3RoKSByZXN1bWUocVswXVswXSwgcVswXVsxXSk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNEZWxlZ2F0b3Iobykge1xyXG4gICAgdmFyIGksIHA7XHJcbiAgICByZXR1cm4gaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIsIGZ1bmN0aW9uIChlKSB7IHRocm93IGU7IH0pLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuLCBmKSB7IGlbbl0gPSBvW25dID8gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIChwID0gIXApID8geyB2YWx1ZTogX19hd2FpdChvW25dKHYpKSwgZG9uZTogZmFsc2UgfSA6IGYgPyBmKHYpIDogdjsgfSA6IGY7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNWYWx1ZXMobykge1xyXG4gICAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxuICAgIHZhciBtID0gb1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0sIGk7XHJcbiAgICByZXR1cm4gbSA/IG0uY2FsbChvKSA6IChvID0gdHlwZW9mIF9fdmFsdWVzID09PSBcImZ1bmN0aW9uXCIgPyBfX3ZhbHVlcyhvKSA6IG9bU3ltYm9sLml0ZXJhdG9yXSgpLCBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaSk7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgaVtuXSA9IG9bbl0gJiYgZnVuY3Rpb24gKHYpIHsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsgdiA9IG9bbl0odiksIHNldHRsZShyZXNvbHZlLCByZWplY3QsIHYuZG9uZSwgdi52YWx1ZSk7IH0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCBkLCB2KSB7IFByb21pc2UucmVzb2x2ZSh2KS50aGVuKGZ1bmN0aW9uKHYpIHsgcmVzb2x2ZSh7IHZhbHVlOiB2LCBkb25lOiBkIH0pOyB9LCByZWplY3QpOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX21ha2VUZW1wbGF0ZU9iamVjdChjb29rZWQsIHJhdykge1xyXG4gICAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29va2VkLCBcInJhd1wiLCB7IHZhbHVlOiByYXcgfSk7IH0gZWxzZSB7IGNvb2tlZC5yYXcgPSByYXc7IH1cclxuICAgIHJldHVybiBjb29rZWQ7XHJcbn07XHJcblxyXG52YXIgX19zZXRNb2R1bGVEZWZhdWx0ID0gT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCB2KSB7XHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgXCJkZWZhdWx0XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHYgfSk7XHJcbn0pIDogZnVuY3Rpb24obywgdikge1xyXG4gICAgb1tcImRlZmF1bHRcIl0gPSB2O1xyXG59O1xyXG5cclxudmFyIG93bktleXMgPSBmdW5jdGlvbihvKSB7XHJcbiAgICBvd25LZXlzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMgfHwgZnVuY3Rpb24gKG8pIHtcclxuICAgICAgICB2YXIgYXIgPSBbXTtcclxuICAgICAgICBmb3IgKHZhciBrIGluIG8pIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobywgaykpIGFyW2FyLmxlbmd0aF0gPSBrO1xyXG4gICAgICAgIHJldHVybiBhcjtcclxuICAgIH07XHJcbiAgICByZXR1cm4gb3duS2V5cyhvKTtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydFN0YXIobW9kKSB7XHJcbiAgICBpZiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSByZXR1cm4gbW9kO1xyXG4gICAgdmFyIHJlc3VsdCA9IHt9O1xyXG4gICAgaWYgKG1vZCAhPSBudWxsKSBmb3IgKHZhciBrID0gb3duS2V5cyhtb2QpLCBpID0gMDsgaSA8IGsubGVuZ3RoOyBpKyspIGlmIChrW2ldICE9PSBcImRlZmF1bHRcIikgX19jcmVhdGVCaW5kaW5nKHJlc3VsdCwgbW9kLCBrW2ldKTtcclxuICAgIF9fc2V0TW9kdWxlRGVmYXVsdChyZXN1bHQsIG1vZCk7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19pbXBvcnREZWZhdWx0KG1vZCkge1xyXG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBkZWZhdWx0OiBtb2QgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRHZXQocmVjZWl2ZXIsIHN0YXRlLCBraW5kLCBmKSB7XHJcbiAgICBpZiAoa2luZCA9PT0gXCJhXCIgJiYgIWYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIGFjY2Vzc29yIHdhcyBkZWZpbmVkIHdpdGhvdXQgYSBnZXR0ZXJcIik7XHJcbiAgICBpZiAodHlwZW9mIHN0YXRlID09PSBcImZ1bmN0aW9uXCIgPyByZWNlaXZlciAhPT0gc3RhdGUgfHwgIWYgOiAhc3RhdGUuaGFzKHJlY2VpdmVyKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCByZWFkIHByaXZhdGUgbWVtYmVyIGZyb20gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtcclxuICAgIHJldHVybiBraW5kID09PSBcIm1cIiA/IGYgOiBraW5kID09PSBcImFcIiA/IGYuY2FsbChyZWNlaXZlcikgOiBmID8gZi52YWx1ZSA6IHN0YXRlLmdldChyZWNlaXZlcik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHJlY2VpdmVyLCBzdGF0ZSwgdmFsdWUsIGtpbmQsIGYpIHtcclxuICAgIGlmIChraW5kID09PSBcIm1cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgbWV0aG9kIGlzIG5vdCB3cml0YWJsZVwiKTtcclxuICAgIGlmIChraW5kID09PSBcImFcIiAmJiAhZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIHNldHRlclwiKTtcclxuICAgIGlmICh0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyICE9PSBzdGF0ZSB8fCAhZiA6ICFzdGF0ZS5oYXMocmVjZWl2ZXIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHdyaXRlIHByaXZhdGUgbWVtYmVyIHRvIGFuIG9iamVjdCB3aG9zZSBjbGFzcyBkaWQgbm90IGRlY2xhcmUgaXRcIik7XHJcbiAgICByZXR1cm4gKGtpbmQgPT09IFwiYVwiID8gZi5jYWxsKHJlY2VpdmVyLCB2YWx1ZSkgOiBmID8gZi52YWx1ZSA9IHZhbHVlIDogc3RhdGUuc2V0KHJlY2VpdmVyLCB2YWx1ZSkpLCB2YWx1ZTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRJbihzdGF0ZSwgcmVjZWl2ZXIpIHtcclxuICAgIGlmIChyZWNlaXZlciA9PT0gbnVsbCB8fCAodHlwZW9mIHJlY2VpdmVyICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiByZWNlaXZlciAhPT0gXCJmdW5jdGlvblwiKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCB1c2UgJ2luJyBvcGVyYXRvciBvbiBub24tb2JqZWN0XCIpO1xyXG4gICAgcmV0dXJuIHR5cGVvZiBzdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gcmVjZWl2ZXIgPT09IHN0YXRlIDogc3RhdGUuaGFzKHJlY2VpdmVyKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYWRkRGlzcG9zYWJsZVJlc291cmNlKGVudiwgdmFsdWUsIGFzeW5jKSB7XHJcbiAgICBpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHZvaWQgMCkge1xyXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIHZhbHVlICE9PSBcImZ1bmN0aW9uXCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJPYmplY3QgZXhwZWN0ZWQuXCIpO1xyXG4gICAgICAgIHZhciBkaXNwb3NlLCBpbm5lcjtcclxuICAgICAgICBpZiAoYXN5bmMpIHtcclxuICAgICAgICAgICAgaWYgKCFTeW1ib2wuYXN5bmNEaXNwb3NlKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jRGlzcG9zZSBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICAgICAgICAgIGRpc3Bvc2UgPSB2YWx1ZVtTeW1ib2wuYXN5bmNEaXNwb3NlXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGRpc3Bvc2UgPT09IHZvaWQgMCkge1xyXG4gICAgICAgICAgICBpZiAoIVN5bWJvbC5kaXNwb3NlKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmRpc3Bvc2UgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgICAgICAgICBkaXNwb3NlID0gdmFsdWVbU3ltYm9sLmRpc3Bvc2VdO1xyXG4gICAgICAgICAgICBpZiAoYXN5bmMpIGlubmVyID0gZGlzcG9zZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHR5cGVvZiBkaXNwb3NlICE9PSBcImZ1bmN0aW9uXCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJPYmplY3Qgbm90IGRpc3Bvc2FibGUuXCIpO1xyXG4gICAgICAgIGlmIChpbm5lcikgZGlzcG9zZSA9IGZ1bmN0aW9uKCkgeyB0cnkgeyBpbm5lci5jYWxsKHRoaXMpOyB9IGNhdGNoIChlKSB7IHJldHVybiBQcm9taXNlLnJlamVjdChlKTsgfSB9O1xyXG4gICAgICAgIGVudi5zdGFjay5wdXNoKHsgdmFsdWU6IHZhbHVlLCBkaXNwb3NlOiBkaXNwb3NlLCBhc3luYzogYXN5bmMgfSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChhc3luYykge1xyXG4gICAgICAgIGVudi5zdGFjay5wdXNoKHsgYXN5bmM6IHRydWUgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcblxyXG59XHJcblxyXG52YXIgX1N1cHByZXNzZWRFcnJvciA9IHR5cGVvZiBTdXBwcmVzc2VkRXJyb3IgPT09IFwiZnVuY3Rpb25cIiA/IFN1cHByZXNzZWRFcnJvciA6IGZ1bmN0aW9uIChlcnJvciwgc3VwcHJlc3NlZCwgbWVzc2FnZSkge1xyXG4gICAgdmFyIGUgPSBuZXcgRXJyb3IobWVzc2FnZSk7XHJcbiAgICByZXR1cm4gZS5uYW1lID0gXCJTdXBwcmVzc2VkRXJyb3JcIiwgZS5lcnJvciA9IGVycm9yLCBlLnN1cHByZXNzZWQgPSBzdXBwcmVzc2VkLCBlO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZGlzcG9zZVJlc291cmNlcyhlbnYpIHtcclxuICAgIGZ1bmN0aW9uIGZhaWwoZSkge1xyXG4gICAgICAgIGVudi5lcnJvciA9IGVudi5oYXNFcnJvciA/IG5ldyBfU3VwcHJlc3NlZEVycm9yKGUsIGVudi5lcnJvciwgXCJBbiBlcnJvciB3YXMgc3VwcHJlc3NlZCBkdXJpbmcgZGlzcG9zYWwuXCIpIDogZTtcclxuICAgICAgICBlbnYuaGFzRXJyb3IgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgdmFyIHIsIHMgPSAwO1xyXG4gICAgZnVuY3Rpb24gbmV4dCgpIHtcclxuICAgICAgICB3aGlsZSAociA9IGVudi5zdGFjay5wb3AoKSkge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFyLmFzeW5jICYmIHMgPT09IDEpIHJldHVybiBzID0gMCwgZW52LnN0YWNrLnB1c2gociksIFByb21pc2UucmVzb2x2ZSgpLnRoZW4obmV4dCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoci5kaXNwb3NlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHIuZGlzcG9zZS5jYWxsKHIudmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyLmFzeW5jKSByZXR1cm4gcyB8PSAyLCBQcm9taXNlLnJlc29sdmUocmVzdWx0KS50aGVuKG5leHQsIGZ1bmN0aW9uKGUpIHsgZmFpbChlKTsgcmV0dXJuIG5leHQoKTsgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHMgfD0gMTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgZmFpbChlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocyA9PT0gMSkgcmV0dXJuIGVudi5oYXNFcnJvciA/IFByb21pc2UucmVqZWN0KGVudi5lcnJvcikgOiBQcm9taXNlLnJlc29sdmUoKTtcclxuICAgICAgICBpZiAoZW52Lmhhc0Vycm9yKSB0aHJvdyBlbnYuZXJyb3I7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV4dCgpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZXdyaXRlUmVsYXRpdmVJbXBvcnRFeHRlbnNpb24ocGF0aCwgcHJlc2VydmVKc3gpIHtcclxuICAgIGlmICh0eXBlb2YgcGF0aCA9PT0gXCJzdHJpbmdcIiAmJiAvXlxcLlxcLj9cXC8vLnRlc3QocGF0aCkpIHtcclxuICAgICAgICByZXR1cm4gcGF0aC5yZXBsYWNlKC9cXC4odHN4KSR8KCg/OlxcLmQpPykoKD86XFwuW14uL10rPyk/KVxcLihbY21dPyl0cyQvaSwgZnVuY3Rpb24gKG0sIHRzeCwgZCwgZXh0LCBjbSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHN4ID8gcHJlc2VydmVKc3ggPyBcIi5qc3hcIiA6IFwiLmpzXCIgOiBkICYmICghZXh0IHx8ICFjbSkgPyBtIDogKGQgKyBleHQgKyBcIi5cIiArIGNtLnRvTG93ZXJDYXNlKCkgKyBcImpzXCIpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHBhdGg7XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IHtcclxuICAgIF9fZXh0ZW5kczogX19leHRlbmRzLFxyXG4gICAgX19hc3NpZ246IF9fYXNzaWduLFxyXG4gICAgX19yZXN0OiBfX3Jlc3QsXHJcbiAgICBfX2RlY29yYXRlOiBfX2RlY29yYXRlLFxyXG4gICAgX19wYXJhbTogX19wYXJhbSxcclxuICAgIF9fZXNEZWNvcmF0ZTogX19lc0RlY29yYXRlLFxyXG4gICAgX19ydW5Jbml0aWFsaXplcnM6IF9fcnVuSW5pdGlhbGl6ZXJzLFxyXG4gICAgX19wcm9wS2V5OiBfX3Byb3BLZXksXHJcbiAgICBfX3NldEZ1bmN0aW9uTmFtZTogX19zZXRGdW5jdGlvbk5hbWUsXHJcbiAgICBfX21ldGFkYXRhOiBfX21ldGFkYXRhLFxyXG4gICAgX19hd2FpdGVyOiBfX2F3YWl0ZXIsXHJcbiAgICBfX2dlbmVyYXRvcjogX19nZW5lcmF0b3IsXHJcbiAgICBfX2NyZWF0ZUJpbmRpbmc6IF9fY3JlYXRlQmluZGluZyxcclxuICAgIF9fZXhwb3J0U3RhcjogX19leHBvcnRTdGFyLFxyXG4gICAgX192YWx1ZXM6IF9fdmFsdWVzLFxyXG4gICAgX19yZWFkOiBfX3JlYWQsXHJcbiAgICBfX3NwcmVhZDogX19zcHJlYWQsXHJcbiAgICBfX3NwcmVhZEFycmF5czogX19zcHJlYWRBcnJheXMsXHJcbiAgICBfX3NwcmVhZEFycmF5OiBfX3NwcmVhZEFycmF5LFxyXG4gICAgX19hd2FpdDogX19hd2FpdCxcclxuICAgIF9fYXN5bmNHZW5lcmF0b3I6IF9fYXN5bmNHZW5lcmF0b3IsXHJcbiAgICBfX2FzeW5jRGVsZWdhdG9yOiBfX2FzeW5jRGVsZWdhdG9yLFxyXG4gICAgX19hc3luY1ZhbHVlczogX19hc3luY1ZhbHVlcyxcclxuICAgIF9fbWFrZVRlbXBsYXRlT2JqZWN0OiBfX21ha2VUZW1wbGF0ZU9iamVjdCxcclxuICAgIF9faW1wb3J0U3RhcjogX19pbXBvcnRTdGFyLFxyXG4gICAgX19pbXBvcnREZWZhdWx0OiBfX2ltcG9ydERlZmF1bHQsXHJcbiAgICBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0OiBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0LFxyXG4gICAgX19jbGFzc1ByaXZhdGVGaWVsZFNldDogX19jbGFzc1ByaXZhdGVGaWVsZFNldCxcclxuICAgIF9fY2xhc3NQcml2YXRlRmllbGRJbjogX19jbGFzc1ByaXZhdGVGaWVsZEluLFxyXG4gICAgX19hZGREaXNwb3NhYmxlUmVzb3VyY2U6IF9fYWRkRGlzcG9zYWJsZVJlc291cmNlLFxyXG4gICAgX19kaXNwb3NlUmVzb3VyY2VzOiBfX2Rpc3Bvc2VSZXNvdXJjZXMsXHJcbiAgICBfX3Jld3JpdGVSZWxhdGl2ZUltcG9ydEV4dGVuc2lvbjogX19yZXdyaXRlUmVsYXRpdmVJbXBvcnRFeHRlbnNpb24sXHJcbn07XHJcbiIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsXSwibmFtZXMiOlsiZXh0ZW5kU3RhdGljcyIsImQiLCJiIiwiT2JqZWN0Iiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJBcnJheSIsInAiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJfX2V4dGVuZHMiLCJUeXBlRXJyb3IiLCJTdHJpbmciLCJfXyIsImNvbnN0cnVjdG9yIiwiY3JlYXRlIiwiX19hc3NpZ24iLCJhc3NpZ24iLCJ0IiwicyIsImkiLCJuIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiYXBwbHkiLCJfX3NwcmVhZEFycmF5IiwidG8iLCJmcm9tIiwicGFjayIsImwiLCJhciIsInNsaWNlIiwiY29uY2F0IiwiU3VwcHJlc3NlZEVycm9yIiwiZXJyb3IiLCJzdXBwcmVzc2VkIiwibWVzc2FnZSIsImUiLCJFcnJvciIsIm5hbWUiLCJpc1ZhbGlkRGF0ZSIsImRmSXNTYW1lWWVhciIsImRmSXNTYW1lTW9udGgiLCJkZklzU2FtZVF1YXJ0ZXIiLCJkZklzU2FtZURheSIsImRmSXNFcXVhbCIsIlBvcHBlckNvbXBvbmVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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\n","import React, { useState, useEffect, useRef } from \"react\";\nimport DatePicker from \"react-datepicker\";\nimport \"react-datepicker/dist/react-datepicker.css\";\n\nexport function DatePickerComponent({ onDateChange, disabled }) {\n  const [startDate, setStartDate] = useState(new Date());\n\n  const handleChange = (date) => {\n    if (onDateChange) {\n      setStartDate(date);\n      onDateChange(date);\n    }\n  };\n\n  return (\n    <div className=\"relative w-full font-sans\">\n      <DatePicker\n        selected={startDate}\n        onChange={handleChange}\n        minDate={new Date()}\n        dateFormat=\"MMM dd, yyyy\"\n        placeholderText=\"Enter the date\"\n        className={`form-input h-full text-start ${disabled ? \"bg-zinc-100 cursor-not-allowed text-gray-300\" : \"text-zinc-950 bg-white bg-clip-padding\"} text-zinc-900 text-sm font-medium leading-loose  font-sans    rounded   m-0 focus:text-gray-700 focus:bg-white focus:outline-none w-full  `}        popperPlacement=\"bottom-start\"\n        portalId=\"root\"\n        disabled={disabled}\n      />\n      <button\n        type=\"button\"\n        className={`absolute inset-y-0 right-0 flex items-center ${disabled ? \" text-gray-300\" : \"text-zinc-500\"}`}\n        onClick={() =>\n          document\n            .querySelector(\".react-datepicker__input-container input\")\n            .focus()\n        }\n      >\n        <svg\n          xmlns=\"http://www.w3.org/2000/svg\"\n          width=\"21\"\n          height=\"20\"\n          viewBox=\"0 0 21 20\"\n          fill=\"none\"\n        >\n          <path\n            d=\"M13.5003 1.66675V5.00008M6.83366 1.66675V5.00008M2.66699 8.33342H17.667M4.33366 3.33341H16.0003C16.9208 3.33341 17.667 4.07961 17.667 5.00008V16.6667C17.667 17.5872 16.9208 18.3334 16.0003 18.3334H4.33366C3.41318 18.3334 2.66699 17.5872 2.66699 16.6667V5.00008C2.66699 4.07961 3.41318 3.33341 4.33366 3.33341Z\"\n            stroke=\"CurrentColor\"\n            strokeWidth=\"1.67\"\n            strokeLinecap=\"round\"\n            strokeLinejoin=\"round\"\n          />\n        </svg>\n      </button>\n    </div>\n  );\n}\n\nexport function TimePickerComponent({ onTimeChange, selectedDate, disabled }) {\n  // default time as the next nearest 5-minute slot with a minimum gap of 2 minutes\n  const startTimeLogic = () => {\n    const now = new Date();\n    const minutes = now.getMinutes();\n    const nextSlot = Math.ceil((minutes + 3) / 5) * 5;\n    const newTime = new Date(now);\n    newTime.setMinutes(nextSlot);\n    newTime.setSeconds(0);\n    newTime.setMilliseconds(0);\n    return newTime;\n  };\n  const timeInputRef = useRef(null);\n\n  const [startTime, setStartTime] = useState(() => {\n    return startTimeLogic();\n  });\n  const [minTime, setMinTime] = useState(() => {\n    return selectedDate.getDate() > new Date().getDate()\n      ? undefined\n      : new Date();\n  });\n  const [maxTime, setMaxTime] = useState(() => {\n    return selectedDate.getDate() > new Date().getDate()\n      ? undefined\n      : new Date().setHours(23, 59, 59);\n  });\n\n  useEffect(() => {\n    setMinTime(\n      selectedDate.getDate() > new Date().getDate() ? undefined : new Date()\n    );\n    setMaxTime(\n      selectedDate.getDate() > new Date().getDate()\n        ? undefined\n        : new Date().setHours(23, 59, 59)\n    );\n  }, [selectedDate]);\n\n  const handleChange = (time) => {\n    if (onTimeChange) {\n      const now = new Date();\n      if (selectedDate.getDate() === now.getDate()) {\n        const diffInMinutes = (time.getTime() - now.getTime()) / (1000 * 60);\n        if (diffInMinutes <= 3) {\n          const defaultTime = startTimeLogic();\n          setStartTime(defaultTime);\n          onTimeChange(defaultTime);\n          return;\n        }\n      }\n      setStartTime(time);\n      onTimeChange(time);\n    }\n  };\n\n  return (\n    <div className=\"relative w-full font-sans\">\n      <DatePicker\n        selected={startTime}\n        onChange={handleChange}\n        showTimeSelect\n        showTimeSelectOnly\n        timeIntervals={5}\n        minTime={minTime}\n        maxTime={maxTime}\n        dateFormat=\"h:mm aa\"\n        className={`form-input h-full text-start ${disabled ? \"bg-zinc-100 cursor-not-allowed text-gray-300\" : \"text-zinc-950 bg-white bg-clip-padding\"}text-zinc-900 text-sm font-medium leading-loose  font-sans    rounded   m-0 focus:text-gray-700 focus:bg-white focus:outline-none w-full `}        popperPlacement=\"bottom-start\"\n        portalId=\"root\"\n        ref={timeInputRef}\n        disabled={disabled}\n      />\n      <button\n        type=\"button\"\n        className={`absolute  font-sans inset-y-0 right-0 flex items-center ${disabled ? \" text-gray-300\" : \"text-zinc-500\"}`}\n        onClick={() => timeInputRef.current.setFocus()} // Use the ref to focus the correct input\n      >\n        <svg\n          xmlns=\"http://www.w3.org/2000/svg\"\n          width=\"21\"\n          height=\"20\"\n          viewBox=\"0 0 21 20\"\n          fill=\"none\"\n        >\n          <g clipPath=\"url(#clip0_4725_168)\">\n            <path\n              d=\"M10.8343 5.00008V10.0001L14.1676 11.6667M19.1676 10.0001C19.1676 14.6025 15.4367 18.3334 10.8343 18.3334C6.23194 18.3334 2.50098 14.6025 2.50098 10.0001C2.50098 5.39771 6.23194 1.66675 10.8343 1.66675C15.4367 1.66675 19.1676 5.39771 19.1676 10.0001Z\"\n              stroke=\"CurrentColor\"\n              strokeWidth=\"1.67\"\n              strokeLinecap=\"round\"\n              strokeLinejoin=\"round\"\n            />\n          </g>\n        </svg>\n      </button>\n    </div>\n  );\n}\n","var cssUnit = {\n    cm: true,\n    mm: true,\n    in: true,\n    px: true,\n    pt: true,\n    pc: true,\n    em: true,\n    ex: true,\n    ch: true,\n    rem: true,\n    vw: true,\n    vh: true,\n    vmin: true,\n    vmax: true,\n    \"%\": true,\n};\n/**\n * If size is a number, append px to the value as default unit.\n * If size is a string, validate against list of valid units.\n * If unit is valid, return size as is.\n * If unit is invalid, console warn issue, replace with px as the unit.\n *\n * @param {(number | string)} size\n * @return {LengthObject} LengthObject\n */\nexport function parseLengthAndUnit(size) {\n    if (typeof size === \"number\") {\n        return {\n            value: size,\n            unit: \"px\",\n        };\n    }\n    var value;\n    var valueString = (size.match(/^[0-9.]*/) || \"\").toString();\n    if (valueString.includes(\".\")) {\n        value = parseFloat(valueString);\n    }\n    else {\n        value = parseInt(valueString, 10);\n    }\n    var unit = (size.match(/[^0-9]*$/) || \"\").toString();\n    if (cssUnit[unit]) {\n        return {\n            value: value,\n            unit: unit,\n        };\n    }\n    console.warn(\"React Spinners: \".concat(size, \" is not a valid css value. Defaulting to \").concat(value, \"px.\"));\n    return {\n        value: value,\n        unit: \"px\",\n    };\n}\n/**\n * Take value as an input and return valid css value\n *\n * @param {(number | string)} value\n * @return {string} valid css value\n */\nexport function cssValue(value) {\n    var lengthWithunit = parseLengthAndUnit(value);\n    return \"\".concat(lengthWithunit.value).concat(lengthWithunit.unit);\n}\n","export var createAnimation = function (loaderName, frames, suffix) {\n    var animationName = \"react-spinners-\".concat(loaderName, \"-\").concat(suffix);\n    if (typeof window == \"undefined\" || !window.document) {\n        return animationName;\n    }\n    var styleEl = document.createElement(\"style\");\n    document.head.appendChild(styleEl);\n    var styleSheet = styleEl.sheet;\n    var keyFrames = \"\\n    @keyframes \".concat(animationName, \" {\\n      \").concat(frames, \"\\n    }\\n  \");\n    if (styleSheet) {\n        styleSheet.insertRule(keyFrames, 0);\n    }\n    return animationName;\n};\n","\"use client\";\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n};\nimport * as React from \"react\";\nimport { cssValue } from \"./helpers/unitConverter\";\nimport { createAnimation } from \"./helpers/animation\";\nvar clip = createAnimation(\"ClipLoader\", \"0% {transform: rotate(0deg) scale(1)} 50% {transform: rotate(180deg) scale(0.8)} 100% {transform: rotate(360deg) scale(1)}\", \"clip\");\nfunction ClipLoader(_a) {\n    var _b = _a.loading, loading = _b === void 0 ? true : _b, _c = _a.color, color = _c === void 0 ? \"#000000\" : _c, _d = _a.speedMultiplier, speedMultiplier = _d === void 0 ? 1 : _d, _e = _a.cssOverride, cssOverride = _e === void 0 ? {} : _e, _f = _a.size, size = _f === void 0 ? 35 : _f, additionalprops = __rest(_a, [\"loading\", \"color\", \"speedMultiplier\", \"cssOverride\", \"size\"]);\n    var style = __assign({ background: \"transparent !important\", width: cssValue(size), height: cssValue(size), borderRadius: \"100%\", border: \"2px solid\", borderTopColor: color, borderBottomColor: \"transparent\", borderLeftColor: color, borderRightColor: color, display: \"inline-block\", animation: \"\".concat(clip, \" \").concat(0.75 / speedMultiplier, \"s 0s infinite linear\"), animationFillMode: \"both\" }, cssOverride);\n    if (!loading) {\n        return null;\n    }\n    return React.createElement(\"span\", __assign({ style: style }, additionalprops));\n}\nexport default ClipLoader;\n","/**\n * Hex, bytes and number utilities.\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { abytes as abytes_, bytesToHex as bytesToHex_, concatBytes as concatBytes_, hexToBytes as hexToBytes_, isBytes as isBytes_, } from '@noble/hashes/utils.js';\nexport { abytes, anumber, bytesToHex, bytesToUtf8, concatBytes, hexToBytes, isBytes, randomBytes, utf8ToBytes, } from '@noble/hashes/utils.js';\nconst _0n = /* @__PURE__ */ BigInt(0);\nconst _1n = /* @__PURE__ */ BigInt(1);\nexport function abool(title, value) {\n    if (typeof value !== 'boolean')\n        throw new Error(title + ' boolean expected, got ' + value);\n}\n// Used in weierstrass, der\nexport function numberToHexUnpadded(num) {\n    const hex = num.toString(16);\n    return hex.length & 1 ? '0' + hex : hex;\n}\nexport function hexToNumber(hex) {\n    if (typeof hex !== 'string')\n        throw new Error('hex string expected, got ' + typeof hex);\n    return hex === '' ? _0n : BigInt('0x' + hex); // Big Endian\n}\n// BE: Big Endian, LE: Little Endian\nexport function bytesToNumberBE(bytes) {\n    return hexToNumber(bytesToHex_(bytes));\n}\nexport function bytesToNumberLE(bytes) {\n    abytes_(bytes);\n    return hexToNumber(bytesToHex_(Uint8Array.from(bytes).reverse()));\n}\nexport function numberToBytesBE(n, len) {\n    return hexToBytes_(n.toString(16).padStart(len * 2, '0'));\n}\nexport function numberToBytesLE(n, len) {\n    return numberToBytesBE(n, len).reverse();\n}\n// Unpadded, rarely used\nexport function numberToVarBytesBE(n) {\n    return hexToBytes_(numberToHexUnpadded(n));\n}\n/**\n * Takes hex string or Uint8Array, converts to Uint8Array.\n * Validates output length.\n * Will throw error for other types.\n * @param title descriptive title for an error e.g. 'private key'\n * @param hex hex string or Uint8Array\n * @param expectedLength optional, will compare to result array's length\n * @returns\n */\nexport function ensureBytes(title, hex, expectedLength) {\n    let res;\n    if (typeof hex === 'string') {\n        try {\n            res = hexToBytes_(hex);\n        }\n        catch (e) {\n            throw new Error(title + ' must be hex string or Uint8Array, cause: ' + e);\n        }\n    }\n    else if (isBytes_(hex)) {\n        // Uint8Array.from() instead of hash.slice() because node.js Buffer\n        // is instance of Uint8Array, and its slice() creates **mutable** copy\n        res = Uint8Array.from(hex);\n    }\n    else {\n        throw new Error(title + ' must be hex string or Uint8Array');\n    }\n    const len = res.length;\n    if (typeof expectedLength === 'number' && len !== expectedLength)\n        throw new Error(title + ' of length ' + expectedLength + ' expected, got ' + len);\n    return res;\n}\n// Compares 2 u8a-s in kinda constant time\nexport function equalBytes(a, b) {\n    if (a.length !== b.length)\n        return false;\n    let diff = 0;\n    for (let i = 0; i < a.length; i++)\n        diff |= a[i] ^ b[i];\n    return diff === 0;\n}\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\n// export const utf8ToBytes: typeof utf8ToBytes_ = utf8ToBytes_;\n/**\n * Converts bytes to string using UTF8 encoding.\n * @example bytesToUtf8(Uint8Array.from([97, 98, 99])) // 'abc'\n */\n// export const bytesToUtf8: typeof bytesToUtf8_ = bytesToUtf8_;\n// Is positive bigint\nconst isPosBig = (n) => typeof n === 'bigint' && _0n <= n;\nexport function inRange(n, min, max) {\n    return isPosBig(n) && isPosBig(min) && isPosBig(max) && min <= n && n < max;\n}\n/**\n * Asserts min <= n < max. NOTE: It's < max and not <= max.\n * @example\n * aInRange('x', x, 1n, 256n); // would assume x is in (1n..255n)\n */\nexport function aInRange(title, n, min, max) {\n    // Why min <= n < max and not a (min < n < max) OR b (min <= n <= max)?\n    // consider P=256n, min=0n, max=P\n    // - a for min=0 would require -1:          `inRange('x', x, -1n, P)`\n    // - b would commonly require subtraction:  `inRange('x', x, 0n, P - 1n)`\n    // - our way is the cleanest:               `inRange('x', x, 0n, P)\n    if (!inRange(n, min, max))\n        throw new Error('expected valid ' + title + ': ' + min + ' <= n < ' + max + ', got ' + n);\n}\n// Bit operations\n/**\n * Calculates amount of bits in a bigint.\n * Same as `n.toString(2).length`\n * TODO: merge with nLength in modular\n */\nexport function bitLen(n) {\n    let len;\n    for (len = 0; n > _0n; n >>= _1n, len += 1)\n        ;\n    return len;\n}\n/**\n * Gets single bit at position.\n * NOTE: first bit position is 0 (same as arrays)\n * Same as `!!+Array.from(n.toString(2)).reverse()[pos]`\n */\nexport function bitGet(n, pos) {\n    return (n >> BigInt(pos)) & _1n;\n}\n/**\n * Sets single bit at position.\n */\nexport function bitSet(n, pos, value) {\n    return n | ((value ? _1n : _0n) << BigInt(pos));\n}\n/**\n * Calculate mask for N bits. Not using ** operator with bigints because of old engines.\n * Same as BigInt(`0b${Array(i).fill('1').join('')}`)\n */\nexport const bitMask = (n) => (_1n << BigInt(n)) - _1n;\n/**\n * Minimal HMAC-DRBG from NIST 800-90 for RFC6979 sigs.\n * @returns function that will call DRBG until 2nd arg returns something meaningful\n * @example\n *   const drbg = createHmacDRBG<Key>(32, 32, hmac);\n *   drbg(seed, bytesToKey); // bytesToKey must return Key or undefined\n */\nexport function createHmacDrbg(hashLen, qByteLen, hmacFn) {\n    if (typeof hashLen !== 'number' || hashLen < 2)\n        throw new Error('hashLen must be a number');\n    if (typeof qByteLen !== 'number' || qByteLen < 2)\n        throw new Error('qByteLen must be a number');\n    if (typeof hmacFn !== 'function')\n        throw new Error('hmacFn must be a function');\n    // Step B, Step C: set hashLen to 8*ceil(hlen/8)\n    const u8n = (len) => new Uint8Array(len); // creates Uint8Array\n    const u8of = (byte) => Uint8Array.of(byte); // another shortcut\n    let v = u8n(hashLen); // Minimal non-full-spec HMAC-DRBG from NIST 800-90 for RFC6979 sigs.\n    let k = u8n(hashLen); // Steps B and C of RFC6979 3.2: set hashLen, in our case always same\n    let i = 0; // Iterations counter, will throw when over 1000\n    const reset = () => {\n        v.fill(1);\n        k.fill(0);\n        i = 0;\n    };\n    const h = (...b) => hmacFn(k, v, ...b); // hmac(k)(v, ...values)\n    const reseed = (seed = u8n(0)) => {\n        // HMAC-DRBG reseed() function. Steps D-G\n        k = h(u8of(0x00), seed); // k = hmac(k || v || 0x00 || seed)\n        v = h(); // v = hmac(k || v)\n        if (seed.length === 0)\n            return;\n        k = h(u8of(0x01), seed); // k = hmac(k || v || 0x01 || seed)\n        v = h(); // v = hmac(k || v)\n    };\n    const gen = () => {\n        // HMAC-DRBG generate() function\n        if (i++ >= 1000)\n            throw new Error('drbg: tried 1000 values');\n        let len = 0;\n        const out = [];\n        while (len < qByteLen) {\n            v = h();\n            const sl = v.slice();\n            out.push(sl);\n            len += v.length;\n        }\n        return concatBytes_(...out);\n    };\n    const genUntil = (seed, pred) => {\n        reset();\n        reseed(seed); // Steps D-G\n        let res = undefined; // Step H: grind until k is in [1..n-1]\n        while (!(res = pred(gen())))\n            reseed();\n        reset();\n        return res;\n    };\n    return genUntil;\n}\n// Validating curves and fields\nconst validatorFns = {\n    bigint: (val) => typeof val === 'bigint',\n    function: (val) => typeof val === 'function',\n    boolean: (val) => typeof val === 'boolean',\n    string: (val) => typeof val === 'string',\n    stringOrUint8Array: (val) => typeof val === 'string' || isBytes_(val),\n    isSafeInteger: (val) => Number.isSafeInteger(val),\n    array: (val) => Array.isArray(val),\n    field: (val, object) => object.Fp.isValid(val),\n    hash: (val) => typeof val === 'function' && Number.isSafeInteger(val.outputLen),\n};\n// type Record<K extends string | number | symbol, T> = { [P in K]: T; }\nexport function validateObject(object, validators, optValidators = {}) {\n    const checkField = (fieldName, type, isOptional) => {\n        const checkVal = validatorFns[type];\n        if (typeof checkVal !== 'function')\n            throw new Error('invalid validator function');\n        const val = object[fieldName];\n        if (isOptional && val === undefined)\n            return;\n        if (!checkVal(val, object)) {\n            throw new Error('param ' + String(fieldName) + ' is invalid. Expected ' + type + ', got ' + val);\n        }\n    };\n    for (const [fieldName, type] of Object.entries(validators))\n        checkField(fieldName, type, false);\n    for (const [fieldName, type] of Object.entries(optValidators))\n        checkField(fieldName, type, true);\n    return object;\n}\n// validate type tests\n// const o: { a: number; b: number; c: number } = { a: 1, b: 5, c: 6 };\n// const z0 = validateObject(o, { a: 'isSafeInteger' }, { c: 'bigint' }); // Ok!\n// // Should fail type-check\n// const z1 = validateObject(o, { a: 'tmp' }, { c: 'zz' });\n// const z2 = validateObject(o, { a: 'isSafeInteger' }, { c: 'zz' });\n// const z3 = validateObject(o, { test: 'boolean', z: 'bug' });\n// const z4 = validateObject(o, { a: 'boolean', z: 'bug' });\nexport function isHash(val) {\n    return typeof val === 'function' && Number.isSafeInteger(val.outputLen);\n}\nexport function _validateObject(object, fields, optFields = {}) {\n    if (!object || typeof object !== 'object')\n        throw new Error('expected valid options object');\n    function checkField(fieldName, expectedType, isOpt) {\n        const val = object[fieldName];\n        if (isOpt && val === undefined)\n            return;\n        const current = typeof val;\n        if (current !== expectedType || val === null)\n            throw new Error(`param \"${fieldName}\" is invalid: expected ${expectedType}, got ${current}`);\n    }\n    Object.entries(fields).forEach(([k, v]) => checkField(k, v, false));\n    Object.entries(optFields).forEach(([k, v]) => checkField(k, v, true));\n}\n/**\n * throws not implemented error\n */\nexport const notImplemented = () => {\n    throw new Error('not implemented');\n};\n/**\n * Memoizes (caches) computation result.\n * Uses WeakMap: the value is going auto-cleaned by GC after last reference is removed.\n */\nexport function memoized(fn) {\n    const map = new WeakMap();\n    return (arg, ...args) => {\n        const val = map.get(arg);\n        if (val !== undefined)\n            return val;\n        const computed = fn(arg, ...args);\n        map.set(arg, computed);\n        return computed;\n    };\n}\n//# sourceMappingURL=utils.js.map","/** @internal */\nexport const version = '0.1.1';\n//# sourceMappingURL=version.js.map","import { version } from '../version.js';\n/** @internal */\nexport function getUrl(url) {\n    return url;\n}\n/** @internal */\nexport function getVersion() {\n    return version;\n}\n/** @internal */\nexport function prettyPrint(args) {\n    if (!args)\n        return '';\n    const entries = Object.entries(args)\n        .map(([key, value]) => {\n        if (value === undefined || value === false)\n            return null;\n        return [key, value];\n    })\n        .filter(Boolean);\n    const maxLength = entries.reduce((acc, [key]) => Math.max(acc, key.length), 0);\n    return entries\n        .map(([key, value]) => `  ${`${key}:`.padEnd(maxLength + 1)}  ${value}`)\n        .join('\\n');\n}\n//# sourceMappingURL=errors.js.map","import { getVersion } from './internal/errors.js';\n/**\n * Base error class inherited by all errors thrown by ox.\n *\n * @example\n * ```ts\n * import { Errors } from 'ox'\n * throw new Errors.BaseError('An error occurred')\n * ```\n */\nexport class BaseError extends Error {\n    constructor(shortMessage, options = {}) {\n        const details = (() => {\n            if (options.cause instanceof BaseError) {\n                if (options.cause.details)\n                    return options.cause.details;\n                if (options.cause.shortMessage)\n                    return options.cause.shortMessage;\n            }\n            if (options.cause &&\n                'details' in options.cause &&\n                typeof options.cause.details === 'string')\n                return options.cause.details;\n            if (options.cause?.message)\n                return options.cause.message;\n            return options.details;\n        })();\n        const docsPath = (() => {\n            if (options.cause instanceof BaseError)\n                return options.cause.docsPath || options.docsPath;\n            return options.docsPath;\n        })();\n        const docsBaseUrl = 'https://oxlib.sh';\n        const docs = `${docsBaseUrl}${docsPath ?? ''}`;\n        const message = [\n            shortMessage || 'An error occurred.',\n            ...(options.metaMessages ? ['', ...options.metaMessages] : []),\n            ...(details || docsPath\n                ? [\n                    '',\n                    details ? `Details: ${details}` : undefined,\n                    docsPath ? `See: ${docs}` : undefined,\n                ]\n                : []),\n        ]\n            .filter((x) => typeof x === 'string')\n            .join('\\n');\n        super(message, options.cause ? { cause: options.cause } : undefined);\n        Object.defineProperty(this, \"details\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"docs\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"docsPath\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"shortMessage\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"cause\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        Object.defineProperty(this, \"name\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 'BaseError'\n        });\n        Object.defineProperty(this, \"version\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: `ox@${getVersion()}`\n        });\n        this.cause = options.cause;\n        this.details = details;\n        this.docs = docs;\n        this.docsPath = docsPath;\n        this.shortMessage = shortMessage;\n    }\n    walk(fn) {\n        return walk(this, fn);\n    }\n}\n/** @internal */\nfunction walk(err, fn) {\n    if (fn?.(err))\n        return err;\n    if (err && typeof err === 'object' && 'cause' in err && err.cause)\n        return walk(err.cause, fn);\n    return fn ? null : err;\n}\n//# sourceMappingURL=Errors.js.map","import * as Hex from '../Hex.js';\n/** @internal */\nexport function assertSize(hex, size_) {\n    if (Hex.size(hex) > size_)\n        throw new Hex.SizeOverflowError({\n            givenSize: Hex.size(hex),\n            maxSize: size_,\n        });\n}\n/** @internal */\nexport function assertStartOffset(value, start) {\n    if (typeof start === 'number' && start > 0 && start > Hex.size(value) - 1)\n        throw new Hex.SliceOffsetOutOfBoundsError({\n            offset: start,\n            position: 'start',\n            size: Hex.size(value),\n        });\n}\n/** @internal */\nexport function assertEndOffset(value, start, end) {\n    if (typeof start === 'number' &&\n        typeof end === 'number' &&\n        Hex.size(value) !== end - start) {\n        throw new Hex.SliceOffsetOutOfBoundsError({\n            offset: end,\n            position: 'end',\n            size: Hex.size(value),\n        });\n    }\n}\n/** @internal */\nexport function pad(hex_, options = {}) {\n    const { dir, size = 32 } = options;\n    if (size === 0)\n        return hex_;\n    const hex = hex_.replace('0x', '');\n    if (hex.length > size * 2)\n        throw new Hex.SizeExceedsPaddingSizeError({\n            size: Math.ceil(hex.length / 2),\n            targetSize: size,\n            type: 'Hex',\n        });\n    return `0x${hex[dir === 'right' ? 'padEnd' : 'padStart'](size * 2, '0')}`;\n}\n/** @internal */\nexport function trim(value, options = {}) {\n    const { dir = 'left' } = options;\n    let data = value.replace('0x', '');\n    let sliceLength = 0;\n    for (let i = 0; i < data.length - 1; i++) {\n        if (data[dir === 'left' ? i : data.length - i - 1].toString() === '0')\n            sliceLength++;\n        else\n            break;\n    }\n    data =\n        dir === 'left'\n            ? data.slice(sliceLength)\n            : data.slice(0, data.length - sliceLength);\n    if (data === '0')\n        return '0x';\n    if (dir === 'right' && data.length % 2 === 1)\n        return `0x${data}0`;\n    return `0x${data}`;\n}\n//# sourceMappingURL=hex.js.map","import { equalBytes } from '@noble/curves/abstract/utils';\nimport * as Bytes from './Bytes.js';\nimport * as Errors from './Errors.js';\nimport * as Json from './Json.js';\nimport * as internal_bytes from './internal/bytes.js';\nimport * as internal from './internal/hex.js';\nconst encoder = /*#__PURE__*/ new TextEncoder();\nconst hexes = /*#__PURE__*/ Array.from({ length: 256 }, (_v, i) => i.toString(16).padStart(2, '0'));\n/**\n * Asserts if the given value is {@link ox#Hex.Hex}.\n *\n * @example\n * ```ts twoslash\n * import { Hex } from 'ox'\n *\n * Hex.assert('abc')\n * // @error: InvalidHexValueTypeError:\n * // @error: Value `\"abc\"` of type `string` is an invalid hex type.\n * // @error: Hex types must be represented as `\"0x\\${string}\"`.\n * ```\n *\n * @param value - The value to assert.\n * @param options - Options.\n */\nexport function assert(value, options = {}) {\n    const { strict = false } = options;\n    if (!value)\n        throw new InvalidHexTypeError(value);\n    if (typeof value !== 'string')\n        throw new InvalidHexTypeError(value);\n    if (strict) {\n        if (!/^0x[0-9a-fA-F]*$/.test(value))\n            throw new InvalidHexValueError(value);\n    }\n    if (!value.startsWith('0x'))\n        throw new InvalidHexValueError(value);\n}\n/**\n * Concatenates two or more {@link ox#Hex.Hex}.\n *\n * @example\n * ```ts twoslash\n * import { Hex } from 'ox'\n *\n * Hex.concat('0x123', '0x456')\n * // @log: '0x123456'\n * ```\n *\n * @param values - The {@link ox#Hex.Hex} values to concatenate.\n * @returns The concatenated {@link ox#Hex.Hex} value.\n */\nexport function concat(...values) {\n    return `0x${values.reduce((acc, x) => acc + x.replace('0x', ''), '')}`;\n}\n/**\n * Instantiates a {@link ox#Hex.Hex} value from a hex string or {@link ox#Bytes.Bytes} value.\n *\n * :::tip\n *\n * To instantiate from a **Boolean**, **String**, or **Number**, use one of the following:\n *\n * - `Hex.fromBoolean`\n *\n * - `Hex.fromString`\n *\n * - `Hex.fromNumber`\n *\n * :::\n *\n * @example\n * ```ts twoslash\n * import { Bytes, Hex } from 'ox'\n *\n * Hex.from('0x48656c6c6f20576f726c6421')\n * // @log: '0x48656c6c6f20576f726c6421'\n *\n * Hex.from(Bytes.from([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33]))\n * // @log: '0x48656c6c6f20576f726c6421'\n * ```\n *\n * @param value - The {@link ox#Bytes.Bytes} value to encode.\n * @returns The encoded {@link ox#Hex.Hex} value.\n */\nexport function from(value) {\n    if (value instanceof Uint8Array)\n        return fromBytes(value);\n    if (Array.isArray(value))\n        return fromBytes(new Uint8Array(value));\n    return value;\n}\n/**\n * Encodes a boolean into a {@link ox#Hex.Hex} value.\n *\n * @example\n * ```ts twoslash\n * import { Hex } from 'ox'\n *\n * Hex.fromBoolean(true)\n * // @log: '0x1'\n *\n * Hex.fromBoolean(false)\n * // @log: '0x0'\n *\n * Hex.fromBoolean(true, { size: 32 })\n * // @log: '0x0000000000000000000000000000000000000000000000000000000000000001'\n * ```\n *\n * @param value - The boolean value to encode.\n * @param options - Options.\n * @returns The encoded {@link ox#Hex.Hex} value.\n */\nexport function fromBoolean(value, options = {}) {\n    const hex = `0x${Number(value)}`;\n    if (typeof options.size === 'number') {\n        internal.assertSize(hex, options.size);\n        return padLeft(hex, options.size);\n    }\n    return hex;\n}\n/**\n * Encodes a {@link ox#Bytes.Bytes} value into a {@link ox#Hex.Hex} value.\n *\n * @example\n * ```ts twoslash\n * import { Bytes, Hex } from 'ox'\n *\n * Hex.fromBytes(Bytes.from([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33]))\n * // @log: '0x48656c6c6f20576f726c6421'\n * ```\n *\n * @param value - The {@link ox#Bytes.Bytes} value to encode.\n * @param options - Options.\n * @returns The encoded {@link ox#Hex.Hex} value.\n */\nexport function fromBytes(value, options = {}) {\n    let string = '';\n    for (let i = 0; i < value.length; i++)\n        string += hexes[value[i]];\n    const hex = `0x${string}`;\n    if (typeof options.size === 'number') {\n        internal.assertSize(hex, options.size);\n        return padRight(hex, options.size);\n    }\n    return hex;\n}\n/**\n * Encodes a number or bigint into a {@link ox#Hex.Hex} value.\n *\n * @example\n * ```ts twoslash\n * import { Hex } from 'ox'\n *\n * Hex.fromNumber(420)\n * // @log: '0x1a4'\n *\n * Hex.fromNumber(420, { size: 32 })\n * // @log: '0x00000000000000000000000000000000000000000000000000000000000001a4'\n * ```\n *\n * @param value - The number or bigint value to encode.\n * @param options - Options.\n * @returns The encoded {@link ox#Hex.Hex} value.\n */\nexport function fromNumber(value, options = {}) {\n    const { signed, size } = options;\n    const value_ = BigInt(value);\n    let maxValue;\n    if (size) {\n        if (signed)\n            maxValue = (1n << (BigInt(size) * 8n - 1n)) - 1n;\n        else\n            maxValue = 2n ** (BigInt(size) * 8n) - 1n;\n    }\n    else if (typeof value === 'number') {\n        maxValue = BigInt(Number.MAX_SAFE_INTEGER);\n    }\n    const minValue = typeof maxValue === 'bigint' && signed ? -maxValue - 1n : 0;\n    if ((maxValue && value_ > maxValue) || value_ < minValue) {\n        const suffix = typeof value === 'bigint' ? 'n' : '';\n        throw new IntegerOutOfRangeError({\n            max: maxValue ? `${maxValue}${suffix}` : undefined,\n            min: `${minValue}${suffix}`,\n            signed,\n            size,\n            value: `${value}${suffix}`,\n        });\n    }\n    const stringValue = (signed && value_ < 0 ? (1n << BigInt(size * 8)) + BigInt(value_) : value_).toString(16);\n    const hex = `0x${stringValue}`;\n    if (size)\n        return padLeft(hex, size);\n    return hex;\n}\n/**\n * Encodes a string into a {@link ox#Hex.Hex} value.\n *\n * @example\n * ```ts twoslash\n * import { Hex } from 'ox'\n * Hex.fromString('Hello World!')\n * // '0x48656c6c6f20576f726c6421'\n *\n * Hex.fromString('Hello World!', { size: 32 })\n * // '0x48656c6c6f20576f726c64210000000000000000000000000000000000000000'\n * ```\n *\n * @param value - The string value to encode.\n * @param options - Options.\n * @returns The encoded {@link ox#Hex.Hex} value.\n */\nexport function fromString(value, options = {}) {\n    return fromBytes(encoder.encode(value), options);\n}\n/**\n * Checks if two {@link ox#Hex.Hex} values are equal.\n *\n * @example\n * ```ts twoslash\n * import { Hex } from 'ox'\n *\n * Hex.isEqual('0xdeadbeef', '0xdeadbeef')\n * // @log: true\n *\n * Hex.isEqual('0xda', '0xba')\n * // @log: false\n * ```\n *\n * @param hexA - The first {@link ox#Hex.Hex} value.\n * @param hexB - The second {@link ox#Hex.Hex} value.\n * @returns `true` if the two {@link ox#Hex.Hex} values are equal, `false` otherwise.\n */\nexport function isEqual(hexA, hexB) {\n    return equalBytes(Bytes.fromHex(hexA), Bytes.fromHex(hexB));\n}\n/**\n * Pads a {@link ox#Hex.Hex} value to the left with zero bytes until it reaches the given `size` (default: 32 bytes).\n *\n * @example\n * ```ts twoslash\n * import { Hex } from 'ox'\n *\n * Hex.padLeft('0x1234', 4)\n * // @log: '0x00001234'\n * ```\n *\n * @param value - The {@link ox#Hex.Hex} value to pad.\n * @param size - The size (in bytes) of the output hex value.\n * @returns The padded {@link ox#Hex.Hex} value.\n */\nexport function padLeft(value, size) {\n    return internal.pad(value, { dir: 'left', size });\n}\n/**\n * Pads a {@link ox#Hex.Hex} value to the right with zero bytes until it reaches the given `size` (default: 32 bytes).\n *\n * @example\n * ```ts\n * import { Hex } from 'ox'\n *\n * Hex.padRight('0x1234', 4)\n * // @log: '0x12340000'\n * ```\n *\n * @param value - The {@link ox#Hex.Hex} value to pad.\n * @param size - The size (in bytes) of the output hex value.\n * @returns The padded {@link ox#Hex.Hex} value.\n */\nexport function padRight(value, size) {\n    return internal.pad(value, { dir: 'right', size });\n}\n/**\n * Generates a random {@link ox#Hex.Hex} value of the specified length.\n *\n * @example\n * ```ts twoslash\n * import { Hex } from 'ox'\n *\n * const hex = Hex.random(32)\n * // @log: '0x...'\n * ```\n *\n * @returns Random {@link ox#Hex.Hex} value.\n */\nexport function random(length) {\n    return fromBytes(Bytes.random(length));\n}\n/**\n * Returns a section of a {@link ox#Bytes.Bytes} value given a start/end bytes offset.\n *\n * @example\n * ```ts twoslash\n * import { Hex } from 'ox'\n *\n * Hex.slice('0x0123456789', 1, 4)\n * // @log: '0x234567'\n * ```\n *\n * @param value - The {@link ox#Hex.Hex} value to slice.\n * @param start - The start offset (in bytes).\n * @param end - The end offset (in bytes).\n * @param options - Options.\n * @returns The sliced {@link ox#Hex.Hex} value.\n */\nexport function slice(value, start, end, options = {}) {\n    const { strict } = options;\n    internal.assertStartOffset(value, start);\n    const value_ = `0x${value\n        .replace('0x', '')\n        .slice((start ?? 0) * 2, (end ?? value.length) * 2)}`;\n    if (strict)\n        internal.assertEndOffset(value_, start, end);\n    return value_;\n}\n/**\n * Retrieves the size of a {@link ox#Hex.Hex} value (in bytes).\n *\n * @example\n * ```ts twoslash\n * import { Hex } from 'ox'\n *\n * Hex.size('0xdeadbeef')\n * // @log: 4\n * ```\n *\n * @param value - The {@link ox#Hex.Hex} value to get the size of.\n * @returns The size of the {@link ox#Hex.Hex} value (in bytes).\n */\nexport function size(value) {\n    return Math.ceil((value.length - 2) / 2);\n}\n/**\n * Trims leading zeros from a {@link ox#Hex.Hex} value.\n *\n * @example\n * ```ts twoslash\n * import { Hex } from 'ox'\n *\n * Hex.trimLeft('0x00000000deadbeef')\n * // @log: '0xdeadbeef'\n * ```\n *\n * @param value - The {@link ox#Hex.Hex} value to trim.\n * @returns The trimmed {@link ox#Hex.Hex} value.\n */\nexport function trimLeft(value) {\n    return internal.trim(value, { dir: 'left' });\n}\n/**\n * Trims trailing zeros from a {@link ox#Hex.Hex} value.\n *\n * @example\n * ```ts twoslash\n * import { Hex } from 'ox'\n *\n * Hex.trimRight('0xdeadbeef00000000')\n * // @log: '0xdeadbeef'\n * ```\n *\n * @param value - The {@link ox#Hex.Hex} value to trim.\n * @returns The trimmed {@link ox#Hex.Hex} value.\n */\nexport function trimRight(value) {\n    return internal.trim(value, { dir: 'right' });\n}\n/**\n * Decodes a {@link ox#Hex.Hex} value into a BigInt.\n *\n * @example\n * ```ts twoslash\n * import { Hex } from 'ox'\n *\n * Hex.toBigInt('0x1a4')\n * // @log: 420n\n *\n * Hex.toBigInt('0x00000000000000000000000000000000000000000000000000000000000001a4', { size: 32 })\n * // @log: 420n\n * ```\n *\n * @param hex - The {@link ox#Hex.Hex} value to decode.\n * @param options - Options.\n * @returns The decoded BigInt.\n */\nexport function toBigInt(hex, options = {}) {\n    const { signed } = options;\n    if (options.size)\n        internal.assertSize(hex, options.size);\n    const value = BigInt(hex);\n    if (!signed)\n        return value;\n    const size = (hex.length - 2) / 2;\n    const max_unsigned = (1n << (BigInt(size) * 8n)) - 1n;\n    const max_signed = max_unsigned >> 1n;\n    if (value <= max_signed)\n        return value;\n    return value - max_unsigned - 1n;\n}\n/**\n * Decodes a {@link ox#Hex.Hex} value into a boolean.\n *\n * @example\n * ```ts twoslash\n * import { Hex } from 'ox'\n *\n * Hex.toBoolean('0x01')\n * // @log: true\n *\n * Hex.toBoolean('0x0000000000000000000000000000000000000000000000000000000000000001', { size: 32 })\n * // @log: true\n * ```\n *\n * @param hex - The {@link ox#Hex.Hex} value to decode.\n * @param options - Options.\n * @returns The decoded boolean.\n */\nexport function toBoolean(hex, options = {}) {\n    if (options.size)\n        internal.assertSize(hex, options.size);\n    const hex_ = trimLeft(hex);\n    if (hex_ === '0x')\n        return false;\n    if (hex_ === '0x1')\n        return true;\n    throw new InvalidHexBooleanError(hex);\n}\n/**\n * Decodes a {@link ox#Hex.Hex} value into a {@link ox#Bytes.Bytes}.\n *\n * @example\n * ```ts twoslash\n * import { Hex } from 'ox'\n *\n * const data = Hex.toBytes('0x48656c6c6f20776f726c6421')\n * // @log: Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33])\n * ```\n *\n * @param hex - The {@link ox#Hex.Hex} value to decode.\n * @param options - Options.\n * @returns The decoded {@link ox#Bytes.Bytes}.\n */\nexport function toBytes(hex, options = {}) {\n    return Bytes.fromHex(hex, options);\n}\n/**\n * Decodes a {@link ox#Hex.Hex} value into a number.\n *\n * @example\n * ```ts twoslash\n * import { Hex } from 'ox'\n *\n * Hex.toNumber('0x1a4')\n * // @log: 420\n *\n * Hex.toNumber('0x00000000000000000000000000000000000000000000000000000000000001a4', { size: 32 })\n * // @log: 420\n * ```\n *\n * @param hex - The {@link ox#Hex.Hex} value to decode.\n * @param options - Options.\n * @returns The decoded number.\n */\nexport function toNumber(hex, options = {}) {\n    const { signed, size } = options;\n    if (!signed && !size)\n        return Number(hex);\n    return Number(toBigInt(hex, options));\n}\n/**\n * Decodes a {@link ox#Hex.Hex} value into a string.\n *\n * @example\n * ```ts twoslash\n * import { Hex } from 'ox'\n *\n * Hex.toString('0x48656c6c6f20576f726c6421')\n * // @log: 'Hello world!'\n *\n * Hex.toString('0x48656c6c6f20576f726c64210000000000000000000000000000000000000000', {\n *  size: 32,\n * })\n * // @log: 'Hello world'\n * ```\n *\n * @param hex - The {@link ox#Hex.Hex} value to decode.\n * @param options - Options.\n * @returns The decoded string.\n */\nexport function toString(hex, options = {}) {\n    const { size } = options;\n    let bytes = Bytes.fromHex(hex);\n    if (size) {\n        internal_bytes.assertSize(bytes, size);\n        bytes = Bytes.trimRight(bytes);\n    }\n    return new TextDecoder().decode(bytes);\n}\n/**\n * Checks if the given value is {@link ox#Hex.Hex}.\n *\n * @example\n * ```ts twoslash\n * import { Bytes, Hex } from 'ox'\n *\n * Hex.validate('0xdeadbeef')\n * // @log: true\n *\n * Hex.validate(Bytes.from([1, 2, 3]))\n * // @log: false\n * ```\n *\n * @param value - The value to check.\n * @param options - Options.\n * @returns `true` if the value is a {@link ox#Hex.Hex}, `false` otherwise.\n */\nexport function validate(value, options = {}) {\n    const { strict = false } = options;\n    try {\n        assert(value, { strict });\n        return true;\n    }\n    catch {\n        return false;\n    }\n}\n/**\n * Thrown when the provided integer is out of range, and cannot be represented as a hex value.\n *\n * @example\n * ```ts twoslash\n * import { Hex } from 'ox'\n *\n * Hex.fromNumber(420182738912731283712937129)\n * // @error: Hex.IntegerOutOfRangeError: Number \\`4.2018273891273126e+26\\` is not in safe unsigned integer range (`0` to `9007199254740991`)\n * ```\n */\nexport class IntegerOutOfRangeError extends Errors.BaseError {\n    constructor({ max, min, signed, size, value, }) {\n        super(`Number \\`${value}\\` is not in safe${size ? ` ${size * 8}-bit` : ''}${signed ? ' signed' : ' unsigned'} integer range ${max ? `(\\`${min}\\` to \\`${max}\\`)` : `(above \\`${min}\\`)`}`);\n        Object.defineProperty(this, \"name\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 'Hex.IntegerOutOfRangeError'\n        });\n    }\n}\n/**\n * Thrown when the provided hex value cannot be represented as a boolean.\n *\n * @example\n * ```ts twoslash\n * import { Hex } from 'ox'\n *\n * Hex.toBoolean('0xa')\n * // @error: Hex.InvalidHexBooleanError: Hex value `\"0xa\"` is not a valid boolean.\n * // @error: The hex value must be `\"0x0\"` (false) or `\"0x1\"` (true).\n * ```\n */\nexport class InvalidHexBooleanError extends Errors.BaseError {\n    constructor(hex) {\n        super(`Hex value \\`\"${hex}\"\\` is not a valid boolean.`, {\n            metaMessages: [\n                'The hex value must be `\"0x0\"` (false) or `\"0x1\"` (true).',\n            ],\n        });\n        Object.defineProperty(this, \"name\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 'Hex.InvalidHexBooleanError'\n        });\n    }\n}\n/**\n * Thrown when the provided value is not a valid hex type.\n *\n * @example\n * ```ts twoslash\n * import { Hex } from 'ox'\n *\n * Hex.assert(1)\n * // @error: Hex.InvalidHexTypeError: Value `1` of type `number` is an invalid hex type.\n * ```\n */\nexport class InvalidHexTypeError extends Errors.BaseError {\n    constructor(value) {\n        super(`Value \\`${typeof value === 'object' ? Json.stringify(value) : value}\\` of type \\`${typeof value}\\` is an invalid hex type.`, {\n            metaMessages: ['Hex types must be represented as `\"0x${string}\"`.'],\n        });\n        Object.defineProperty(this, \"name\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 'Hex.InvalidHexTypeError'\n        });\n    }\n}\n/**\n * Thrown when the provided hex value is invalid.\n *\n * @example\n * ```ts twoslash\n * import { Hex } from 'ox'\n *\n * Hex.assert('0x0123456789abcdefg')\n * // @error: Hex.InvalidHexValueError: Value `0x0123456789abcdefg` is an invalid hex value.\n * // @error: Hex values must start with `\"0x\"` and contain only hexadecimal characters (0-9, a-f, A-F).\n * ```\n */\nexport class InvalidHexValueError extends Errors.BaseError {\n    constructor(value) {\n        super(`Value \\`${value}\\` is an invalid hex value.`, {\n            metaMessages: [\n                'Hex values must start with `\"0x\"` and contain only hexadecimal characters (0-9, a-f, A-F).',\n            ],\n        });\n        Object.defineProperty(this, \"name\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 'Hex.InvalidHexValueError'\n        });\n    }\n}\n/**\n * Thrown when the provided hex value is an odd length.\n *\n * @example\n * ```ts twoslash\n * import { Bytes } from 'ox'\n *\n * Bytes.fromHex('0xabcde')\n * // @error: Hex.InvalidLengthError: Hex value `\"0xabcde\"` is an odd length (5 nibbles).\n * ```\n */\nexport class InvalidLengthError extends Errors.BaseError {\n    constructor(value) {\n        super(`Hex value \\`\"${value}\"\\` is an odd length (${value.length - 2} nibbles).`, {\n            metaMessages: ['It must be an even length.'],\n        });\n        Object.defineProperty(this, \"name\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 'Hex.InvalidLengthError'\n        });\n    }\n}\n/**\n * Thrown when the size of the value exceeds the expected max size.\n *\n * @example\n * ```ts twoslash\n * import { Hex } from 'ox'\n *\n * Hex.fromString('Hello World!', { size: 8 })\n * // @error: Hex.SizeOverflowError: Size cannot exceed `8` bytes. Given size: `12` bytes.\n * ```\n */\nexport class SizeOverflowError extends Errors.BaseError {\n    constructor({ givenSize, maxSize }) {\n        super(`Size cannot exceed \\`${maxSize}\\` bytes. Given size: \\`${givenSize}\\` bytes.`);\n        Object.defineProperty(this, \"name\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 'Hex.SizeOverflowError'\n        });\n    }\n}\n/**\n * Thrown when the slice offset exceeds the bounds of the value.\n *\n * @example\n * ```ts twoslash\n * import { Hex } from 'ox'\n *\n * Hex.slice('0x0123456789', 6)\n * // @error: Hex.SliceOffsetOutOfBoundsError: Slice starting at offset `6` is out-of-bounds (size: `5`).\n * ```\n */\nexport class SliceOffsetOutOfBoundsError extends Errors.BaseError {\n    constructor({ offset, position, size, }) {\n        super(`Slice ${position === 'start' ? 'starting' : 'ending'} at offset \\`${offset}\\` is out-of-bounds (size: \\`${size}\\`).`);\n        Object.defineProperty(this, \"name\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 'Hex.SliceOffsetOutOfBoundsError'\n        });\n    }\n}\n/**\n * Thrown when the size of the value exceeds the pad size.\n *\n * @example\n * ```ts twoslash\n * import { Hex } from 'ox'\n *\n * Hex.padLeft('0x1a4e12a45a21323123aaa87a897a897a898a6567a578a867a98778a667a85a875a87a6a787a65a675a6a9', 32)\n * // @error: Hex.SizeExceedsPaddingSizeError: Hex size (`43`) exceeds padding size (`32`).\n * ```\n */\nexport class SizeExceedsPaddingSizeError extends Errors.BaseError {\n    constructor({ size, targetSize, type, }) {\n        super(`${type.charAt(0).toUpperCase()}${type\n            .slice(1)\n            .toLowerCase()} size (\\`${size}\\`) exceeds padding size (\\`${targetSize}\\`).`);\n        Object.defineProperty(this, \"name\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 'Hex.SizeExceedsPaddingSizeError'\n        });\n    }\n}\n//# sourceMappingURL=Hex.js.map","/**\n * Utils for modular division and fields.\n * Field over 11 is a finite (Galois) field is integer number operations `mod 11`.\n * There is no division: it is replaced by modular multiplicative inverse.\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { _validateObject, anumber, bitMask, bytesToNumberBE, bytesToNumberLE, ensureBytes, numberToBytesBE, numberToBytesLE, } from \"../utils.js\";\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = /* @__PURE__ */ BigInt(2), _3n = /* @__PURE__ */ BigInt(3);\n// prettier-ignore\nconst _4n = /* @__PURE__ */ BigInt(4), _5n = /* @__PURE__ */ BigInt(5);\nconst _8n = /* @__PURE__ */ BigInt(8);\n// Calculates a modulo b\nexport function mod(a, b) {\n    const result = a % b;\n    return result >= _0n ? result : b + result;\n}\n/**\n * Efficiently raise num to power and do modular division.\n * Unsafe in some contexts: uses ladder, so can expose bigint bits.\n * @example\n * pow(2n, 6n, 11n) // 64n % 11n == 9n\n */\nexport function pow(num, power, modulo) {\n    return FpPow(Field(modulo), num, power);\n}\n/** Does `x^(2^power)` mod p. `pow2(30, 4)` == `30^(2^4)` */\nexport function pow2(x, power, modulo) {\n    let res = x;\n    while (power-- > _0n) {\n        res *= res;\n        res %= modulo;\n    }\n    return res;\n}\n/**\n * Inverses number over modulo.\n * Implemented using [Euclidean GCD](https://brilliant.org/wiki/extended-euclidean-algorithm/).\n */\nexport function invert(number, modulo) {\n    if (number === _0n)\n        throw new Error('invert: expected non-zero number');\n    if (modulo <= _0n)\n        throw new Error('invert: expected positive modulus, got ' + modulo);\n    // Fermat's little theorem \"CT-like\" version inv(n) = n^(m-2) mod m is 30x slower.\n    let a = mod(number, modulo);\n    let b = modulo;\n    // prettier-ignore\n    let x = _0n, y = _1n, u = _1n, v = _0n;\n    while (a !== _0n) {\n        // JIT applies optimization if those two lines follow each other\n        const q = b / a;\n        const r = b % a;\n        const m = x - u * q;\n        const n = y - v * q;\n        // prettier-ignore\n        b = a, a = r, x = u, y = v, u = m, v = n;\n    }\n    const gcd = b;\n    if (gcd !== _1n)\n        throw new Error('invert: does not exist');\n    return mod(x, modulo);\n}\n// Not all roots are possible! Example which will throw:\n// const NUM =\n// n = 72057594037927816n;\n// Fp = Field(BigInt('0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab'));\nfunction sqrt3mod4(Fp, n) {\n    const p1div4 = (Fp.ORDER + _1n) / _4n;\n    const root = Fp.pow(n, p1div4);\n    // Throw if root^2 != n\n    if (!Fp.eql(Fp.sqr(root), n))\n        throw new Error('Cannot find square root');\n    return root;\n}\nfunction sqrt5mod8(Fp, n) {\n    const p5div8 = (Fp.ORDER - _5n) / _8n;\n    const n2 = Fp.mul(n, _2n);\n    const v = Fp.pow(n2, p5div8);\n    const nv = Fp.mul(n, v);\n    const i = Fp.mul(Fp.mul(nv, _2n), v);\n    const root = Fp.mul(nv, Fp.sub(i, Fp.ONE));\n    if (!Fp.eql(Fp.sqr(root), n))\n        throw new Error('Cannot find square root');\n    return root;\n}\n// TODO: Commented-out for now. Provide test vectors.\n// Tonelli is too slow for extension fields Fp2.\n// That means we can't use sqrt (c1, c2...) even for initialization constants.\n// if (P % _16n === _9n) return sqrt9mod16;\n// // prettier-ignore\n// function sqrt9mod16<T>(Fp: IField<T>, n: T, p7div16?: bigint) {\n//   if (p7div16 === undefined) p7div16 = (Fp.ORDER + BigInt(7)) / _16n;\n//   const c1 = Fp.sqrt(Fp.neg(Fp.ONE)); //  1. c1 = sqrt(-1) in F, i.e., (c1^2) == -1 in F\n//   const c2 = Fp.sqrt(c1);             //  2. c2 = sqrt(c1) in F, i.e., (c2^2) == c1 in F\n//   const c3 = Fp.sqrt(Fp.neg(c1));     //  3. c3 = sqrt(-c1) in F, i.e., (c3^2) == -c1 in F\n//   const c4 = p7div16;                 //  4. c4 = (q + 7) / 16        # Integer arithmetic\n//   let tv1 = Fp.pow(n, c4);            //  1. tv1 = x^c4\n//   let tv2 = Fp.mul(c1, tv1);          //  2. tv2 = c1 * tv1\n//   const tv3 = Fp.mul(c2, tv1);        //  3. tv3 = c2 * tv1\n//   let tv4 = Fp.mul(c3, tv1);          //  4. tv4 = c3 * tv1\n//   const e1 = Fp.eql(Fp.sqr(tv2), n);  //  5.  e1 = (tv2^2) == x\n//   const e2 = Fp.eql(Fp.sqr(tv3), n);  //  6.  e2 = (tv3^2) == x\n//   tv1 = Fp.cmov(tv1, tv2, e1); //  7. tv1 = CMOV(tv1, tv2, e1)  # Select tv2 if (tv2^2) == x\n//   tv2 = Fp.cmov(tv4, tv3, e2); //  8. tv2 = CMOV(tv4, tv3, e2)  # Select tv3 if (tv3^2) == x\n//   const e3 = Fp.eql(Fp.sqr(tv2), n);  //  9.  e3 = (tv2^2) == x\n//   return Fp.cmov(tv1, tv2, e3); // 10.  z = CMOV(tv1, tv2, e3) # Select the sqrt from tv1 and tv2\n// }\n/**\n * Tonelli-Shanks square root search algorithm.\n * 1. https://eprint.iacr.org/2012/685.pdf (page 12)\n * 2. Square Roots from 1; 24, 51, 10 to Dan Shanks\n * @param P field order\n * @returns function that takes field Fp (created from P) and number n\n */\nexport function tonelliShanks(P) {\n    // Initialization (precomputation).\n    // Caching initialization could boost perf by 7%.\n    if (P < BigInt(3))\n        throw new Error('sqrt is not defined for small field');\n    // Factor P - 1 = Q * 2^S, where Q is odd\n    let Q = P - _1n;\n    let S = 0;\n    while (Q % _2n === _0n) {\n        Q /= _2n;\n        S++;\n    }\n    // Find the first quadratic non-residue Z >= 2\n    let Z = _2n;\n    const _Fp = Field(P);\n    while (FpLegendre(_Fp, Z) === 1) {\n        // Basic primality test for P. After x iterations, chance of\n        // not finding quadratic non-residue is 2^x, so 2^1000.\n        if (Z++ > 1000)\n            throw new Error('Cannot find square root: probably non-prime P');\n    }\n    // Fast-path; usually done before Z, but we do \"primality test\".\n    if (S === 1)\n        return sqrt3mod4;\n    // Slow-path\n    // TODO: test on Fp2 and others\n    let cc = _Fp.pow(Z, Q); // c = z^Q\n    const Q1div2 = (Q + _1n) / _2n;\n    return function tonelliSlow(Fp, n) {\n        if (Fp.is0(n))\n            return n;\n        // Check if n is a quadratic residue using Legendre symbol\n        if (FpLegendre(Fp, n) !== 1)\n            throw new Error('Cannot find square root');\n        // Initialize variables for the main loop\n        let M = S;\n        let c = Fp.mul(Fp.ONE, cc); // c = z^Q, move cc from field _Fp into field Fp\n        let t = Fp.pow(n, Q); // t = n^Q, first guess at the fudge factor\n        let R = Fp.pow(n, Q1div2); // R = n^((Q+1)/2), first guess at the square root\n        // Main loop\n        // while t != 1\n        while (!Fp.eql(t, Fp.ONE)) {\n            if (Fp.is0(t))\n                return Fp.ZERO; // if t=0 return R=0\n            let i = 1;\n            // Find the smallest i >= 1 such that t^(2^i) ≡ 1 (mod P)\n            let t_tmp = Fp.sqr(t); // t^(2^1)\n            while (!Fp.eql(t_tmp, Fp.ONE)) {\n                i++;\n                t_tmp = Fp.sqr(t_tmp); // t^(2^2)...\n                if (i === M)\n                    throw new Error('Cannot find square root');\n            }\n            // Calculate the exponent for b: 2^(M - i - 1)\n            const exponent = _1n << BigInt(M - i - 1); // bigint is important\n            const b = Fp.pow(c, exponent); // b = 2^(M - i - 1)\n            // Update variables\n            M = i;\n            c = Fp.sqr(b); // c = b^2\n            t = Fp.mul(t, c); // t = (t * b^2)\n            R = Fp.mul(R, b); // R = R*b\n        }\n        return R;\n    };\n}\n/**\n * Square root for a finite field. Will try optimized versions first:\n *\n * 1. P ≡ 3 (mod 4)\n * 2. P ≡ 5 (mod 8)\n * 3. Tonelli-Shanks algorithm\n *\n * Different algorithms can give different roots, it is up to user to decide which one they want.\n * For example there is FpSqrtOdd/FpSqrtEven to choice root based on oddness (used for hash-to-curve).\n */\nexport function FpSqrt(P) {\n    // P ≡ 3 (mod 4) => √n = n^((P+1)/4)\n    if (P % _4n === _3n)\n        return sqrt3mod4;\n    // P ≡ 5 (mod 8) => Atkin algorithm, page 10 of https://eprint.iacr.org/2012/685.pdf\n    if (P % _8n === _5n)\n        return sqrt5mod8;\n    // P ≡ 9 (mod 16) not implemented, see above\n    // Tonelli-Shanks algorithm\n    return tonelliShanks(P);\n}\n// Little-endian check for first LE bit (last BE bit);\nexport const isNegativeLE = (num, modulo) => (mod(num, modulo) & _1n) === _1n;\n// prettier-ignore\nconst FIELD_FIELDS = [\n    'create', 'isValid', 'is0', 'neg', 'inv', 'sqrt', 'sqr',\n    'eql', 'add', 'sub', 'mul', 'pow', 'div',\n    'addN', 'subN', 'mulN', 'sqrN'\n];\nexport function validateField(field) {\n    const initial = {\n        ORDER: 'bigint',\n        MASK: 'bigint',\n        BYTES: 'number',\n        BITS: 'number',\n    };\n    const opts = FIELD_FIELDS.reduce((map, val) => {\n        map[val] = 'function';\n        return map;\n    }, initial);\n    _validateObject(field, opts);\n    // const max = 16384;\n    // if (field.BYTES < 1 || field.BYTES > max) throw new Error('invalid field');\n    // if (field.BITS < 1 || field.BITS > 8 * max) throw new Error('invalid field');\n    return field;\n}\n// Generic field functions\n/**\n * Same as `pow` but for Fp: non-constant-time.\n * Unsafe in some contexts: uses ladder, so can expose bigint bits.\n */\nexport function FpPow(Fp, num, power) {\n    if (power < _0n)\n        throw new Error('invalid exponent, negatives unsupported');\n    if (power === _0n)\n        return Fp.ONE;\n    if (power === _1n)\n        return num;\n    let p = Fp.ONE;\n    let d = num;\n    while (power > _0n) {\n        if (power & _1n)\n            p = Fp.mul(p, d);\n        d = Fp.sqr(d);\n        power >>= _1n;\n    }\n    return p;\n}\n/**\n * Efficiently invert an array of Field elements.\n * Exception-free. Will return `undefined` for 0 elements.\n * @param passZero map 0 to 0 (instead of undefined)\n */\nexport function FpInvertBatch(Fp, nums, passZero = false) {\n    const inverted = new Array(nums.length).fill(passZero ? Fp.ZERO : undefined);\n    // Walk from first to last, multiply them by each other MOD p\n    const multipliedAcc = nums.reduce((acc, num, i) => {\n        if (Fp.is0(num))\n            return acc;\n        inverted[i] = acc;\n        return Fp.mul(acc, num);\n    }, Fp.ONE);\n    // Invert last element\n    const invertedAcc = Fp.inv(multipliedAcc);\n    // Walk from last to first, multiply them by inverted each other MOD p\n    nums.reduceRight((acc, num, i) => {\n        if (Fp.is0(num))\n            return acc;\n        inverted[i] = Fp.mul(acc, inverted[i]);\n        return Fp.mul(acc, num);\n    }, invertedAcc);\n    return inverted;\n}\n// TODO: remove\nexport function FpDiv(Fp, lhs, rhs) {\n    return Fp.mul(lhs, typeof rhs === 'bigint' ? invert(rhs, Fp.ORDER) : Fp.inv(rhs));\n}\n/**\n * Legendre symbol.\n * Legendre constant is used to calculate Legendre symbol (a | p)\n * which denotes the value of a^((p-1)/2) (mod p).\n *\n * * (a | p) ≡ 1    if a is a square (mod p), quadratic residue\n * * (a | p) ≡ -1   if a is not a square (mod p), quadratic non residue\n * * (a | p) ≡ 0    if a ≡ 0 (mod p)\n */\nexport function FpLegendre(Fp, n) {\n    // We can use 3rd argument as optional cache of this value\n    // but seems unneeded for now. The operation is very fast.\n    const p1mod2 = (Fp.ORDER - _1n) / _2n;\n    const powered = Fp.pow(n, p1mod2);\n    const yes = Fp.eql(powered, Fp.ONE);\n    const zero = Fp.eql(powered, Fp.ZERO);\n    const no = Fp.eql(powered, Fp.neg(Fp.ONE));\n    if (!yes && !zero && !no)\n        throw new Error('invalid Legendre symbol result');\n    return yes ? 1 : zero ? 0 : -1;\n}\n// This function returns True whenever the value x is a square in the field F.\nexport function FpIsSquare(Fp, n) {\n    const l = FpLegendre(Fp, n);\n    return l === 1;\n}\n// CURVE.n lengths\nexport function nLength(n, nBitLength) {\n    // Bit size, byte size of CURVE.n\n    if (nBitLength !== undefined)\n        anumber(nBitLength);\n    const _nBitLength = nBitLength !== undefined ? nBitLength : n.toString(2).length;\n    const nByteLength = Math.ceil(_nBitLength / 8);\n    return { nBitLength: _nBitLength, nByteLength };\n}\n/**\n * Creates a finite field. Major performance optimizations:\n * * 1. Denormalized operations like mulN instead of mul.\n * * 2. Identical object shape: never add or remove keys.\n * * 3. `Object.freeze`.\n * Fragile: always run a benchmark on a change.\n * Security note: operations don't check 'isValid' for all elements for performance reasons,\n * it is caller responsibility to check this.\n * This is low-level code, please make sure you know what you're doing.\n *\n * Note about field properties:\n * * CHARACTERISTIC p = prime number, number of elements in main subgroup.\n * * ORDER q = similar to cofactor in curves, may be composite `q = p^m`.\n *\n * @param ORDER field order, probably prime, or could be composite\n * @param bitLen how many bits the field consumes\n * @param isLE (default: false) if encoding / decoding should be in little-endian\n * @param redef optional faster redefinitions of sqrt and other methods\n */\nexport function Field(ORDER, bitLenOrOpts, isLE = false, opts = {}) {\n    if (ORDER <= _0n)\n        throw new Error('invalid field: expected ORDER > 0, got ' + ORDER);\n    let _nbitLength = undefined;\n    let _sqrt = undefined;\n    if (typeof bitLenOrOpts === 'object' && bitLenOrOpts != null) {\n        if (opts.sqrt || isLE)\n            throw new Error('cannot specify opts in two arguments');\n        const _opts = bitLenOrOpts;\n        if (_opts.BITS)\n            _nbitLength = _opts.BITS;\n        if (_opts.sqrt)\n            _sqrt = _opts.sqrt;\n        if (typeof _opts.isLE === 'boolean')\n            isLE = _opts.isLE;\n    }\n    else {\n        if (typeof bitLenOrOpts === 'number')\n            _nbitLength = bitLenOrOpts;\n        if (opts.sqrt)\n            _sqrt = opts.sqrt;\n    }\n    const { nBitLength: BITS, nByteLength: BYTES } = nLength(ORDER, _nbitLength);\n    if (BYTES > 2048)\n        throw new Error('invalid field: expected ORDER of <= 2048 bytes');\n    let sqrtP; // cached sqrtP\n    const f = Object.freeze({\n        ORDER,\n        isLE,\n        BITS,\n        BYTES,\n        MASK: bitMask(BITS),\n        ZERO: _0n,\n        ONE: _1n,\n        create: (num) => mod(num, ORDER),\n        isValid: (num) => {\n            if (typeof num !== 'bigint')\n                throw new Error('invalid field element: expected bigint, got ' + typeof num);\n            return _0n <= num && num < ORDER; // 0 is valid element, but it's not invertible\n        },\n        is0: (num) => num === _0n,\n        // is valid and invertible\n        isValidNot0: (num) => !f.is0(num) && f.isValid(num),\n        isOdd: (num) => (num & _1n) === _1n,\n        neg: (num) => mod(-num, ORDER),\n        eql: (lhs, rhs) => lhs === rhs,\n        sqr: (num) => mod(num * num, ORDER),\n        add: (lhs, rhs) => mod(lhs + rhs, ORDER),\n        sub: (lhs, rhs) => mod(lhs - rhs, ORDER),\n        mul: (lhs, rhs) => mod(lhs * rhs, ORDER),\n        pow: (num, power) => FpPow(f, num, power),\n        div: (lhs, rhs) => mod(lhs * invert(rhs, ORDER), ORDER),\n        // Same as above, but doesn't normalize\n        sqrN: (num) => num * num,\n        addN: (lhs, rhs) => lhs + rhs,\n        subN: (lhs, rhs) => lhs - rhs,\n        mulN: (lhs, rhs) => lhs * rhs,\n        inv: (num) => invert(num, ORDER),\n        sqrt: _sqrt ||\n            ((n) => {\n                if (!sqrtP)\n                    sqrtP = FpSqrt(ORDER);\n                return sqrtP(f, n);\n            }),\n        toBytes: (num) => (isLE ? numberToBytesLE(num, BYTES) : numberToBytesBE(num, BYTES)),\n        fromBytes: (bytes) => {\n            if (bytes.length !== BYTES)\n                throw new Error('Field.fromBytes: expected ' + BYTES + ' bytes, got ' + bytes.length);\n            return isLE ? bytesToNumberLE(bytes) : bytesToNumberBE(bytes);\n        },\n        // TODO: we don't need it here, move out to separate fn\n        invertBatch: (lst) => FpInvertBatch(f, lst),\n        // We can't move this out because Fp6, Fp12 implement it\n        // and it's unclear what to return in there.\n        cmov: (a, b, c) => (c ? b : a),\n    });\n    return Object.freeze(f);\n}\nexport function FpSqrtOdd(Fp, elm) {\n    if (!Fp.isOdd)\n        throw new Error(\"Field doesn't have isOdd\");\n    const root = Fp.sqrt(elm);\n    return Fp.isOdd(root) ? root : Fp.neg(root);\n}\nexport function FpSqrtEven(Fp, elm) {\n    if (!Fp.isOdd)\n        throw new Error(\"Field doesn't have isOdd\");\n    const root = Fp.sqrt(elm);\n    return Fp.isOdd(root) ? Fp.neg(root) : root;\n}\n/**\n * \"Constant-time\" private key generation utility.\n * Same as mapKeyToField, but accepts less bytes (40 instead of 48 for 32-byte field).\n * Which makes it slightly more biased, less secure.\n * @deprecated use `mapKeyToField` instead\n */\nexport function hashToPrivateScalar(hash, groupOrder, isLE = false) {\n    hash = ensureBytes('privateHash', hash);\n    const hashLen = hash.length;\n    const minLen = nLength(groupOrder).nByteLength + 8;\n    if (minLen < 24 || hashLen < minLen || hashLen > 1024)\n        throw new Error('hashToPrivateScalar: expected ' + minLen + '-1024 bytes of input, got ' + hashLen);\n    const num = isLE ? bytesToNumberLE(hash) : bytesToNumberBE(hash);\n    return mod(num, groupOrder - _1n) + _1n;\n}\n/**\n * Returns total number of bytes consumed by the field element.\n * For example, 32 bytes for usual 256-bit weierstrass curve.\n * @param fieldOrder number of field elements, usually CURVE.n\n * @returns byte length of field\n */\nexport function getFieldBytesLength(fieldOrder) {\n    if (typeof fieldOrder !== 'bigint')\n        throw new Error('field order must be bigint');\n    const bitLength = fieldOrder.toString(2).length;\n    return Math.ceil(bitLength / 8);\n}\n/**\n * Returns minimal amount of bytes that can be safely reduced\n * by field order.\n * Should be 2^-128 for 128-bit curve such as P256.\n * @param fieldOrder number of field elements, usually CURVE.n\n * @returns byte length of target hash\n */\nexport function getMinHashLength(fieldOrder) {\n    const length = getFieldBytesLength(fieldOrder);\n    return length + Math.ceil(length / 2);\n}\n/**\n * \"Constant-time\" private key generation utility.\n * Can take (n + n/2) or more bytes of uniform input e.g. from CSPRNG or KDF\n * and convert them into private scalar, with the modulo bias being negligible.\n * Needs at least 48 bytes of input for 32-byte private key.\n * https://research.kudelskisecurity.com/2020/07/28/the-definitive-guide-to-modulo-bias-and-how-to-avoid-it/\n * FIPS 186-5, A.2 https://csrc.nist.gov/publications/detail/fips/186/5/final\n * RFC 9380, https://www.rfc-editor.org/rfc/rfc9380#section-5\n * @param hash hash output from SHA3 or a similar function\n * @param groupOrder size of subgroup - (e.g. secp256k1.CURVE.n)\n * @param isLE interpret hash bytes as LE num\n * @returns valid private scalar\n */\nexport function mapHashToField(key, fieldOrder, isLE = false) {\n    const len = key.length;\n    const fieldLen = getFieldBytesLength(fieldOrder);\n    const minLen = getMinHashLength(fieldOrder);\n    // No small numbers: need to understand bias story. No huge numbers: easier to detect JS timings.\n    if (len < 16 || len < minLen || len > 1024)\n        throw new Error('expected ' + minLen + '-1024 bytes of input, got ' + len);\n    const num = isLE ? bytesToNumberLE(key) : bytesToNumberBE(key);\n    // `mod(x, 11)` can sometimes produce 0. `mod(x, 10) + 1` is the same, but no 0\n    const reduced = mod(num, fieldOrder - _1n) + _1n;\n    return isLE ? numberToBytesLE(reduced, fieldLen) : numberToBytesBE(reduced, fieldLen);\n}\n//# sourceMappingURL=modular.js.map","/**\n * HMAC: RFC2104 message authentication code.\n * @module\n */\nimport { abytes, aexists, ahash, clean, Hash, toBytes } from \"./utils.js\";\nexport class HMAC extends Hash {\n    constructor(hash, _key) {\n        super();\n        this.finished = false;\n        this.destroyed = false;\n        ahash(hash);\n        const key = toBytes(_key);\n        this.iHash = hash.create();\n        if (typeof this.iHash.update !== 'function')\n            throw new Error('Expected instance of class which extends utils.Hash');\n        this.blockLen = this.iHash.blockLen;\n        this.outputLen = this.iHash.outputLen;\n        const blockLen = this.blockLen;\n        const pad = new Uint8Array(blockLen);\n        // blockLen can be bigger than outputLen\n        pad.set(key.length > blockLen ? hash.create().update(key).digest() : key);\n        for (let i = 0; i < pad.length; i++)\n            pad[i] ^= 0x36;\n        this.iHash.update(pad);\n        // By doing update (processing of first block) of outer hash here we can re-use it between multiple calls via clone\n        this.oHash = hash.create();\n        // Undo internal XOR && apply outer XOR\n        for (let i = 0; i < pad.length; i++)\n            pad[i] ^= 0x36 ^ 0x5c;\n        this.oHash.update(pad);\n        clean(pad);\n    }\n    update(buf) {\n        aexists(this);\n        this.iHash.update(buf);\n        return this;\n    }\n    digestInto(out) {\n        aexists(this);\n        abytes(out, this.outputLen);\n        this.finished = true;\n        this.iHash.digestInto(out);\n        this.oHash.update(out);\n        this.oHash.digestInto(out);\n        this.destroy();\n    }\n    digest() {\n        const out = new Uint8Array(this.oHash.outputLen);\n        this.digestInto(out);\n        return out;\n    }\n    _cloneInto(to) {\n        // Create new instance without calling constructor since key already in state and we don't know it.\n        to || (to = Object.create(Object.getPrototypeOf(this), {}));\n        const { oHash, iHash, finished, destroyed, blockLen, outputLen } = this;\n        to = to;\n        to.finished = finished;\n        to.destroyed = destroyed;\n        to.blockLen = blockLen;\n        to.outputLen = outputLen;\n        to.oHash = oHash._cloneInto(to.oHash);\n        to.iHash = iHash._cloneInto(to.iHash);\n        return to;\n    }\n    clone() {\n        return this._cloneInto();\n    }\n    destroy() {\n        this.destroyed = true;\n        this.oHash.destroy();\n        this.iHash.destroy();\n    }\n}\n/**\n * HMAC: RFC2104 message authentication code.\n * @param hash - function that would be used e.g. sha256\n * @param key - message key\n * @param message - message data\n * @example\n * import { hmac } from '@noble/hashes/hmac';\n * import { sha256 } from '@noble/hashes/sha2';\n * const mac1 = hmac(sha256, 'key', 'message');\n */\nexport const hmac = (hash, key, message) => new HMAC(hash, key).update(message).digest();\nhmac.create = (hash, key) => new HMAC(hash, key);\n//# sourceMappingURL=hmac.js.map","/**\n * Methods for elliptic curve multiplication by scalars.\n * Contains wNAF, pippenger\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { bitLen, bitMask, validateObject } from \"../utils.js\";\nimport { Field, FpInvertBatch, nLength, validateField } from \"./modular.js\";\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nexport function negateCt(condition, item) {\n    const neg = item.negate();\n    return condition ? neg : item;\n}\n/**\n * Takes a bunch of Projective Points but executes only one\n * inversion on all of them. Inversion is very slow operation,\n * so this improves performance massively.\n * Optimization: converts a list of projective points to a list of identical points with Z=1.\n */\nexport function normalizeZ(c, property, points) {\n    const getz = property === 'pz' ? (p) => p.pz : (p) => p.ez;\n    const toInv = FpInvertBatch(c.Fp, points.map(getz));\n    // @ts-ignore\n    const affined = points.map((p, i) => p.toAffine(toInv[i]));\n    return affined.map(c.fromAffine);\n}\nfunction validateW(W, bits) {\n    if (!Number.isSafeInteger(W) || W <= 0 || W > bits)\n        throw new Error('invalid window size, expected [1..' + bits + '], got W=' + W);\n}\nfunction calcWOpts(W, scalarBits) {\n    validateW(W, scalarBits);\n    const windows = Math.ceil(scalarBits / W) + 1; // W=8 33. Not 32, because we skip zero\n    const windowSize = 2 ** (W - 1); // W=8 128. Not 256, because we skip zero\n    const maxNumber = 2 ** W; // W=8 256\n    const mask = bitMask(W); // W=8 255 == mask 0b11111111\n    const shiftBy = BigInt(W); // W=8 8\n    return { windows, windowSize, mask, maxNumber, shiftBy };\n}\nfunction calcOffsets(n, window, wOpts) {\n    const { windowSize, mask, maxNumber, shiftBy } = wOpts;\n    let wbits = Number(n & mask); // extract W bits.\n    let nextN = n >> shiftBy; // shift number by W bits.\n    // What actually happens here:\n    // const highestBit = Number(mask ^ (mask >> 1n));\n    // let wbits2 = wbits - 1; // skip zero\n    // if (wbits2 & highestBit) { wbits2 ^= Number(mask); // (~);\n    // split if bits > max: +224 => 256-32\n    if (wbits > windowSize) {\n        // we skip zero, which means instead of `>= size-1`, we do `> size`\n        wbits -= maxNumber; // -32, can be maxNumber - wbits, but then we need to set isNeg here.\n        nextN += _1n; // +256 (carry)\n    }\n    const offsetStart = window * windowSize;\n    const offset = offsetStart + Math.abs(wbits) - 1; // -1 because we skip zero\n    const isZero = wbits === 0; // is current window slice a 0?\n    const isNeg = wbits < 0; // is current window slice negative?\n    const isNegF = window % 2 !== 0; // fake random statement for noise\n    const offsetF = offsetStart; // fake offset for noise\n    return { nextN, offset, isZero, isNeg, isNegF, offsetF };\n}\nfunction validateMSMPoints(points, c) {\n    if (!Array.isArray(points))\n        throw new Error('array expected');\n    points.forEach((p, i) => {\n        if (!(p instanceof c))\n            throw new Error('invalid point at index ' + i);\n    });\n}\nfunction validateMSMScalars(scalars, field) {\n    if (!Array.isArray(scalars))\n        throw new Error('array of scalars expected');\n    scalars.forEach((s, i) => {\n        if (!field.isValid(s))\n            throw new Error('invalid scalar at index ' + i);\n    });\n}\n// Since points in different groups cannot be equal (different object constructor),\n// we can have single place to store precomputes.\n// Allows to make points frozen / immutable.\nconst pointPrecomputes = new WeakMap();\nconst pointWindowSizes = new WeakMap();\nfunction getW(P) {\n    return pointWindowSizes.get(P) || 1;\n}\nfunction assert0(n) {\n    if (n !== _0n)\n        throw new Error('invalid wNAF');\n}\n/**\n * Elliptic curve multiplication of Point by scalar. Fragile.\n * Scalars should always be less than curve order: this should be checked inside of a curve itself.\n * Creates precomputation tables for fast multiplication:\n * - private scalar is split by fixed size windows of W bits\n * - every window point is collected from window's table & added to accumulator\n * - since windows are different, same point inside tables won't be accessed more than once per calc\n * - each multiplication is 'Math.ceil(CURVE_ORDER / 𝑊) + 1' point additions (fixed for any scalar)\n * - +1 window is neccessary for wNAF\n * - wNAF reduces table size: 2x less memory + 2x faster generation, but 10% slower multiplication\n *\n * @todo Research returning 2d JS array of windows, instead of a single window.\n * This would allow windows to be in different memory locations\n */\nexport function wNAF(c, bits) {\n    return {\n        constTimeNegate: negateCt,\n        hasPrecomputes(elm) {\n            return getW(elm) !== 1;\n        },\n        // non-const time multiplication ladder\n        unsafeLadder(elm, n, p = c.ZERO) {\n            let d = elm;\n            while (n > _0n) {\n                if (n & _1n)\n                    p = p.add(d);\n                d = d.double();\n                n >>= _1n;\n            }\n            return p;\n        },\n        /**\n         * Creates a wNAF precomputation window. Used for caching.\n         * Default window size is set by `utils.precompute()` and is equal to 8.\n         * Number of precomputed points depends on the curve size:\n         * 2^(𝑊−1) * (Math.ceil(𝑛 / 𝑊) + 1), where:\n         * - 𝑊 is the window size\n         * - 𝑛 is the bitlength of the curve order.\n         * For a 256-bit curve and window size 8, the number of precomputed points is 128 * 33 = 4224.\n         * @param elm Point instance\n         * @param W window size\n         * @returns precomputed point tables flattened to a single array\n         */\n        precomputeWindow(elm, W) {\n            const { windows, windowSize } = calcWOpts(W, bits);\n            const points = [];\n            let p = elm;\n            let base = p;\n            for (let window = 0; window < windows; window++) {\n                base = p;\n                points.push(base);\n                // i=1, bc we skip 0\n                for (let i = 1; i < windowSize; i++) {\n                    base = base.add(p);\n                    points.push(base);\n                }\n                p = base.double();\n            }\n            return points;\n        },\n        /**\n         * Implements ec multiplication using precomputed tables and w-ary non-adjacent form.\n         * @param W window size\n         * @param precomputes precomputed tables\n         * @param n scalar (we don't check here, but should be less than curve order)\n         * @returns real and fake (for const-time) points\n         */\n        wNAF(W, precomputes, n) {\n            // Smaller version:\n            // https://github.com/paulmillr/noble-secp256k1/blob/47cb1669b6e506ad66b35fe7d76132ae97465da2/index.ts#L502-L541\n            // TODO: check the scalar is less than group order?\n            // wNAF behavior is undefined otherwise. But have to carefully remove\n            // other checks before wNAF. ORDER == bits here.\n            // Accumulators\n            let p = c.ZERO;\n            let f = c.BASE;\n            // This code was first written with assumption that 'f' and 'p' will never be infinity point:\n            // since each addition is multiplied by 2 ** W, it cannot cancel each other. However,\n            // there is negate now: it is possible that negated element from low value\n            // would be the same as high element, which will create carry into next window.\n            // It's not obvious how this can fail, but still worth investigating later.\n            const wo = calcWOpts(W, bits);\n            for (let window = 0; window < wo.windows; window++) {\n                // (n === _0n) is handled and not early-exited. isEven and offsetF are used for noise\n                const { nextN, offset, isZero, isNeg, isNegF, offsetF } = calcOffsets(n, window, wo);\n                n = nextN;\n                if (isZero) {\n                    // bits are 0: add garbage to fake point\n                    // Important part for const-time getPublicKey: add random \"noise\" point to f.\n                    f = f.add(negateCt(isNegF, precomputes[offsetF]));\n                }\n                else {\n                    // bits are 1: add to result point\n                    p = p.add(negateCt(isNeg, precomputes[offset]));\n                }\n            }\n            assert0(n);\n            // Return both real and fake points: JIT won't eliminate f.\n            // At this point there is a way to F be infinity-point even if p is not,\n            // which makes it less const-time: around 1 bigint multiply.\n            return { p, f };\n        },\n        /**\n         * Implements ec unsafe (non const-time) multiplication using precomputed tables and w-ary non-adjacent form.\n         * @param W window size\n         * @param precomputes precomputed tables\n         * @param n scalar (we don't check here, but should be less than curve order)\n         * @param acc accumulator point to add result of multiplication\n         * @returns point\n         */\n        wNAFUnsafe(W, precomputes, n, acc = c.ZERO) {\n            const wo = calcWOpts(W, bits);\n            for (let window = 0; window < wo.windows; window++) {\n                if (n === _0n)\n                    break; // Early-exit, skip 0 value\n                const { nextN, offset, isZero, isNeg } = calcOffsets(n, window, wo);\n                n = nextN;\n                if (isZero) {\n                    // Window bits are 0: skip processing.\n                    // Move to next window.\n                    continue;\n                }\n                else {\n                    const item = precomputes[offset];\n                    acc = acc.add(isNeg ? item.negate() : item); // Re-using acc allows to save adds in MSM\n                }\n            }\n            assert0(n);\n            return acc;\n        },\n        getPrecomputes(W, P, transform) {\n            // Calculate precomputes on a first run, reuse them after\n            let comp = pointPrecomputes.get(P);\n            if (!comp) {\n                comp = this.precomputeWindow(P, W);\n                if (W !== 1) {\n                    // Doing transform outside of if brings 15% perf hit\n                    if (typeof transform === 'function')\n                        comp = transform(comp);\n                    pointPrecomputes.set(P, comp);\n                }\n            }\n            return comp;\n        },\n        wNAFCached(P, n, transform) {\n            const W = getW(P);\n            return this.wNAF(W, this.getPrecomputes(W, P, transform), n);\n        },\n        wNAFCachedUnsafe(P, n, transform, prev) {\n            const W = getW(P);\n            if (W === 1)\n                return this.unsafeLadder(P, n, prev); // For W=1 ladder is ~x2 faster\n            return this.wNAFUnsafe(W, this.getPrecomputes(W, P, transform), n, prev);\n        },\n        // We calculate precomputes for elliptic curve point multiplication\n        // using windowed method. This specifies window size and\n        // stores precomputed values. Usually only base point would be precomputed.\n        setWindowSize(P, W) {\n            validateW(W, bits);\n            pointWindowSizes.set(P, W);\n            pointPrecomputes.delete(P);\n        },\n    };\n}\n/**\n * Endomorphism-specific multiplication for Koblitz curves.\n * Cost: 128 dbl, 0-256 adds.\n */\nexport function mulEndoUnsafe(c, point, k1, k2) {\n    let acc = point;\n    let p1 = c.ZERO;\n    let p2 = c.ZERO;\n    while (k1 > _0n || k2 > _0n) {\n        if (k1 & _1n)\n            p1 = p1.add(acc);\n        if (k2 & _1n)\n            p2 = p2.add(acc);\n        acc = acc.double();\n        k1 >>= _1n;\n        k2 >>= _1n;\n    }\n    return { p1, p2 };\n}\n/**\n * Pippenger algorithm for multi-scalar multiplication (MSM, Pa + Qb + Rc + ...).\n * 30x faster vs naive addition on L=4096, 10x faster than precomputes.\n * For N=254bit, L=1, it does: 1024 ADD + 254 DBL. For L=5: 1536 ADD + 254 DBL.\n * Algorithmically constant-time (for same L), even when 1 point + scalar, or when scalar = 0.\n * @param c Curve Point constructor\n * @param fieldN field over CURVE.N - important that it's not over CURVE.P\n * @param points array of L curve points\n * @param scalars array of L scalars (aka private keys / bigints)\n */\nexport function pippenger(c, fieldN, points, scalars) {\n    // If we split scalars by some window (let's say 8 bits), every chunk will only\n    // take 256 buckets even if there are 4096 scalars, also re-uses double.\n    // TODO:\n    // - https://eprint.iacr.org/2024/750.pdf\n    // - https://tches.iacr.org/index.php/TCHES/article/view/10287\n    // 0 is accepted in scalars\n    validateMSMPoints(points, c);\n    validateMSMScalars(scalars, fieldN);\n    const plength = points.length;\n    const slength = scalars.length;\n    if (plength !== slength)\n        throw new Error('arrays of points and scalars must have equal length');\n    // if (plength === 0) throw new Error('array must be of length >= 2');\n    const zero = c.ZERO;\n    const wbits = bitLen(BigInt(plength));\n    let windowSize = 1; // bits\n    if (wbits > 12)\n        windowSize = wbits - 3;\n    else if (wbits > 4)\n        windowSize = wbits - 2;\n    else if (wbits > 0)\n        windowSize = 2;\n    const MASK = bitMask(windowSize);\n    const buckets = new Array(Number(MASK) + 1).fill(zero); // +1 for zero array\n    const lastBits = Math.floor((fieldN.BITS - 1) / windowSize) * windowSize;\n    let sum = zero;\n    for (let i = lastBits; i >= 0; i -= windowSize) {\n        buckets.fill(zero);\n        for (let j = 0; j < slength; j++) {\n            const scalar = scalars[j];\n            const wbits = Number((scalar >> BigInt(i)) & MASK);\n            buckets[wbits] = buckets[wbits].add(points[j]);\n        }\n        let resI = zero; // not using this will do small speed-up, but will lose ct\n        // Skip first bucket, because it is zero\n        for (let j = buckets.length - 1, sumI = zero; j > 0; j--) {\n            sumI = sumI.add(buckets[j]);\n            resI = resI.add(sumI);\n        }\n        sum = sum.add(resI);\n        if (i !== 0)\n            for (let j = 0; j < windowSize; j++)\n                sum = sum.double();\n    }\n    return sum;\n}\n/**\n * Precomputed multi-scalar multiplication (MSM, Pa + Qb + Rc + ...).\n * @param c Curve Point constructor\n * @param fieldN field over CURVE.N - important that it's not over CURVE.P\n * @param points array of L curve points\n * @returns function which multiplies points with scaars\n */\nexport function precomputeMSMUnsafe(c, fieldN, points, windowSize) {\n    /**\n     * Performance Analysis of Window-based Precomputation\n     *\n     * Base Case (256-bit scalar, 8-bit window):\n     * - Standard precomputation requires:\n     *   - 31 additions per scalar × 256 scalars = 7,936 ops\n     *   - Plus 255 summary additions = 8,191 total ops\n     *   Note: Summary additions can be optimized via accumulator\n     *\n     * Chunked Precomputation Analysis:\n     * - Using 32 chunks requires:\n     *   - 255 additions per chunk\n     *   - 256 doublings\n     *   - Total: (255 × 32) + 256 = 8,416 ops\n     *\n     * Memory Usage Comparison:\n     * Window Size | Standard Points | Chunked Points\n     * ------------|-----------------|---------------\n     *     4-bit   |     520         |      15\n     *     8-bit   |    4,224        |     255\n     *    10-bit   |   13,824        |   1,023\n     *    16-bit   |  557,056        |  65,535\n     *\n     * Key Advantages:\n     * 1. Enables larger window sizes due to reduced memory overhead\n     * 2. More efficient for smaller scalar counts:\n     *    - 16 chunks: (16 × 255) + 256 = 4,336 ops\n     *    - ~2x faster than standard 8,191 ops\n     *\n     * Limitations:\n     * - Not suitable for plain precomputes (requires 256 constant doublings)\n     * - Performance degrades with larger scalar counts:\n     *   - Optimal for ~256 scalars\n     *   - Less efficient for 4096+ scalars (Pippenger preferred)\n     */\n    validateW(windowSize, fieldN.BITS);\n    validateMSMPoints(points, c);\n    const zero = c.ZERO;\n    const tableSize = 2 ** windowSize - 1; // table size (without zero)\n    const chunks = Math.ceil(fieldN.BITS / windowSize); // chunks of item\n    const MASK = bitMask(windowSize);\n    const tables = points.map((p) => {\n        const res = [];\n        for (let i = 0, acc = p; i < tableSize; i++) {\n            res.push(acc);\n            acc = acc.add(p);\n        }\n        return res;\n    });\n    return (scalars) => {\n        validateMSMScalars(scalars, fieldN);\n        if (scalars.length > points.length)\n            throw new Error('array of scalars must be smaller than array of points');\n        let res = zero;\n        for (let i = 0; i < chunks; i++) {\n            // No need to double if accumulator is still zero.\n            if (res !== zero)\n                for (let j = 0; j < windowSize; j++)\n                    res = res.double();\n            const shiftBy = BigInt(chunks * windowSize - (i + 1) * windowSize);\n            for (let j = 0; j < scalars.length; j++) {\n                const n = scalars[j];\n                const curr = Number((n >> shiftBy) & MASK);\n                if (!curr)\n                    continue; // skip zero scalars chunks\n                res = res.add(tables[j][curr - 1]);\n            }\n        }\n        return res;\n    };\n}\n// TODO: remove\n/** @deprecated */\nexport function validateBasic(curve) {\n    validateField(curve.Fp);\n    validateObject(curve, {\n        n: 'bigint',\n        h: 'bigint',\n        Gx: 'field',\n        Gy: 'field',\n    }, {\n        nBitLength: 'isSafeInteger',\n        nByteLength: 'isSafeInteger',\n    });\n    // Set defaults\n    return Object.freeze({\n        ...nLength(curve.n, curve.nBitLength),\n        ...curve,\n        ...{ p: curve.Fp.ORDER },\n    });\n}\nfunction createField(order, field) {\n    if (field) {\n        if (field.ORDER !== order)\n            throw new Error('Field.ORDER must match order: Fp == p, Fn == n');\n        validateField(field);\n        return field;\n    }\n    else {\n        return Field(order);\n    }\n}\n/** Validates CURVE opts and creates fields */\nexport function _createCurveFields(type, CURVE, curveOpts = {}) {\n    if (!CURVE || typeof CURVE !== 'object')\n        throw new Error(`expected valid ${type} CURVE object`);\n    for (const p of ['p', 'n', 'h']) {\n        const val = CURVE[p];\n        if (!(typeof val === 'bigint' && val > _0n))\n            throw new Error(`CURVE.${p} must be positive bigint`);\n    }\n    const Fp = createField(CURVE.p, curveOpts.Fp);\n    const Fn = createField(CURVE.n, curveOpts.Fn);\n    const _b = type === 'weierstrass' ? 'b' : 'd';\n    const params = ['Gx', 'Gy', 'a', _b];\n    for (const p of params) {\n        // @ts-ignore\n        if (!Fp.isValid(CURVE[p]))\n            throw new Error(`CURVE.${p} must be valid field element of CURVE.Fp`);\n    }\n    return { Fp, Fn };\n}\n//# sourceMappingURL=curve.js.map","/**\n * Short Weierstrass curve methods. The formula is: y² = x³ + ax + b.\n *\n * ### Design rationale for types\n *\n * * Interaction between classes from different curves should fail:\n *   `k256.Point.BASE.add(p256.Point.BASE)`\n * * For this purpose we want to use `instanceof` operator, which is fast and works during runtime\n * * Different calls of `curve()` would return different classes -\n *   `curve(params) !== curve(params)`: if somebody decided to monkey-patch their curve,\n *   it won't affect others\n *\n * TypeScript can't infer types for classes created inside a function. Classes is one instance\n * of nominative types in TypeScript and interfaces only check for shape, so it's hard to create\n * unique type for every function call.\n *\n * We can use generic types via some param, like curve opts, but that would:\n *     1. Enable interaction between `curve(params)` and `curve(params)` (curves of same params)\n *     which is hard to debug.\n *     2. Params can be generic and we can't enforce them to be constant value:\n *     if somebody creates curve from non-constant params,\n *     it would be allowed to interact with other curves with non-constant params\n *\n * @todo https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-7.html#unique-symbol\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { hmac } from '@noble/hashes/hmac.js';\nimport { _validateObject, abool, abytes, aInRange, bitMask, bytesToHex, bytesToNumberBE, concatBytes, createHmacDrbg, ensureBytes, hexToBytes, inRange, isBytes, memoized, numberToHexUnpadded, randomBytes, } from \"../utils.js\";\nimport { _createCurveFields, mulEndoUnsafe, negateCt, normalizeZ, pippenger, wNAF, } from \"./curve.js\";\nimport { Field, FpInvertBatch, getMinHashLength, mapHashToField, validateField, } from \"./modular.js\";\nfunction validateSigVerOpts(opts) {\n    if (opts.lowS !== undefined)\n        abool('lowS', opts.lowS);\n    if (opts.prehash !== undefined)\n        abool('prehash', opts.prehash);\n}\nexport class DERErr extends Error {\n    constructor(m = '') {\n        super(m);\n    }\n}\n/**\n * ASN.1 DER encoding utilities. ASN is very complex & fragile. Format:\n *\n *     [0x30 (SEQUENCE), bytelength, 0x02 (INTEGER), intLength, R, 0x02 (INTEGER), intLength, S]\n *\n * Docs: https://letsencrypt.org/docs/a-warm-welcome-to-asn1-and-der/, https://luca.ntop.org/Teaching/Appunti/asn1.html\n */\nexport const DER = {\n    // asn.1 DER encoding utils\n    Err: DERErr,\n    // Basic building block is TLV (Tag-Length-Value)\n    _tlv: {\n        encode: (tag, data) => {\n            const { Err: E } = DER;\n            if (tag < 0 || tag > 256)\n                throw new E('tlv.encode: wrong tag');\n            if (data.length & 1)\n                throw new E('tlv.encode: unpadded data');\n            const dataLen = data.length / 2;\n            const len = numberToHexUnpadded(dataLen);\n            if ((len.length / 2) & 128)\n                throw new E('tlv.encode: long form length too big');\n            // length of length with long form flag\n            const lenLen = dataLen > 127 ? numberToHexUnpadded((len.length / 2) | 128) : '';\n            const t = numberToHexUnpadded(tag);\n            return t + lenLen + len + data;\n        },\n        // v - value, l - left bytes (unparsed)\n        decode(tag, data) {\n            const { Err: E } = DER;\n            let pos = 0;\n            if (tag < 0 || tag > 256)\n                throw new E('tlv.encode: wrong tag');\n            if (data.length < 2 || data[pos++] !== tag)\n                throw new E('tlv.decode: wrong tlv');\n            const first = data[pos++];\n            const isLong = !!(first & 128); // First bit of first length byte is flag for short/long form\n            let length = 0;\n            if (!isLong)\n                length = first;\n            else {\n                // Long form: [longFlag(1bit), lengthLength(7bit), length (BE)]\n                const lenLen = first & 127;\n                if (!lenLen)\n                    throw new E('tlv.decode(long): indefinite length not supported');\n                if (lenLen > 4)\n                    throw new E('tlv.decode(long): byte length is too big'); // this will overflow u32 in js\n                const lengthBytes = data.subarray(pos, pos + lenLen);\n                if (lengthBytes.length !== lenLen)\n                    throw new E('tlv.decode: length bytes not complete');\n                if (lengthBytes[0] === 0)\n                    throw new E('tlv.decode(long): zero leftmost byte');\n                for (const b of lengthBytes)\n                    length = (length << 8) | b;\n                pos += lenLen;\n                if (length < 128)\n                    throw new E('tlv.decode(long): not minimal encoding');\n            }\n            const v = data.subarray(pos, pos + length);\n            if (v.length !== length)\n                throw new E('tlv.decode: wrong value length');\n            return { v, l: data.subarray(pos + length) };\n        },\n    },\n    // https://crypto.stackexchange.com/a/57734 Leftmost bit of first byte is 'negative' flag,\n    // since we always use positive integers here. It must always be empty:\n    // - add zero byte if exists\n    // - if next byte doesn't have a flag, leading zero is not allowed (minimal encoding)\n    _int: {\n        encode(num) {\n            const { Err: E } = DER;\n            if (num < _0n)\n                throw new E('integer: negative integers are not allowed');\n            let hex = numberToHexUnpadded(num);\n            // Pad with zero byte if negative flag is present\n            if (Number.parseInt(hex[0], 16) & 0b1000)\n                hex = '00' + hex;\n            if (hex.length & 1)\n                throw new E('unexpected DER parsing assertion: unpadded hex');\n            return hex;\n        },\n        decode(data) {\n            const { Err: E } = DER;\n            if (data[0] & 128)\n                throw new E('invalid signature integer: negative');\n            if (data[0] === 0x00 && !(data[1] & 128))\n                throw new E('invalid signature integer: unnecessary leading zero');\n            return bytesToNumberBE(data);\n        },\n    },\n    toSig(hex) {\n        // parse DER signature\n        const { Err: E, _int: int, _tlv: tlv } = DER;\n        const data = ensureBytes('signature', hex);\n        const { v: seqBytes, l: seqLeftBytes } = tlv.decode(0x30, data);\n        if (seqLeftBytes.length)\n            throw new E('invalid signature: left bytes after parsing');\n        const { v: rBytes, l: rLeftBytes } = tlv.decode(0x02, seqBytes);\n        const { v: sBytes, l: sLeftBytes } = tlv.decode(0x02, rLeftBytes);\n        if (sLeftBytes.length)\n            throw new E('invalid signature: left bytes after parsing');\n        return { r: int.decode(rBytes), s: int.decode(sBytes) };\n    },\n    hexFromSig(sig) {\n        const { _tlv: tlv, _int: int } = DER;\n        const rs = tlv.encode(0x02, int.encode(sig.r));\n        const ss = tlv.encode(0x02, int.encode(sig.s));\n        const seq = rs + ss;\n        return tlv.encode(0x30, seq);\n    },\n};\n// Be friendly to bad ECMAScript parsers by not using bigint literals\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _3n = BigInt(3), _4n = BigInt(4);\n// TODO: remove\nexport function _legacyHelperEquat(Fp, a, b) {\n    /**\n     * y² = x³ + ax + b: Short weierstrass curve formula. Takes x, returns y².\n     * @returns y²\n     */\n    function weierstrassEquation(x) {\n        const x2 = Fp.sqr(x); // x * x\n        const x3 = Fp.mul(x2, x); // x² * x\n        return Fp.add(Fp.add(x3, Fp.mul(x, a)), b); // x³ + a * x + b\n    }\n    return weierstrassEquation;\n}\nexport function _legacyHelperNormPriv(Fn, allowedPrivateKeyLengths, wrapPrivateKey) {\n    const { BYTES: expected } = Fn;\n    // Validates if priv key is valid and converts it to bigint.\n    function normPrivateKeyToScalar(key) {\n        let num;\n        if (typeof key === 'bigint') {\n            num = key;\n        }\n        else {\n            let bytes = ensureBytes('private key', key);\n            if (allowedPrivateKeyLengths) {\n                if (!allowedPrivateKeyLengths.includes(bytes.length * 2))\n                    throw new Error('invalid private key');\n                const padded = new Uint8Array(expected);\n                padded.set(bytes, padded.length - bytes.length);\n                bytes = padded;\n            }\n            try {\n                num = Fn.fromBytes(bytes);\n            }\n            catch (error) {\n                throw new Error(`invalid private key: expected ui8a of size ${expected}, got ${typeof key}`);\n            }\n        }\n        if (wrapPrivateKey)\n            num = Fn.create(num); // disabled by default, enabled for BLS\n        if (!Fn.isValidNot0(num))\n            throw new Error('invalid private key: out of range [1..N-1]');\n        return num;\n    }\n    return normPrivateKeyToScalar;\n}\nexport function weierstrassN(CURVE, curveOpts = {}) {\n    const { Fp, Fn } = _createCurveFields('weierstrass', CURVE, curveOpts);\n    const { h: cofactor, n: CURVE_ORDER } = CURVE;\n    _validateObject(curveOpts, {}, {\n        allowInfinityPoint: 'boolean',\n        clearCofactor: 'function',\n        isTorsionFree: 'function',\n        fromBytes: 'function',\n        toBytes: 'function',\n        endo: 'object',\n        wrapPrivateKey: 'boolean',\n    });\n    const { endo } = curveOpts;\n    if (endo) {\n        // validateObject(endo, { beta: 'bigint', splitScalar: 'function' });\n        if (!Fp.is0(CURVE.a) ||\n            typeof endo.beta !== 'bigint' ||\n            typeof endo.splitScalar !== 'function') {\n            throw new Error('invalid endo: expected \"beta\": bigint and \"splitScalar\": function');\n        }\n    }\n    function assertCompressionIsSupported() {\n        if (!Fp.isOdd)\n            throw new Error('compression is not supported: Field does not have .isOdd()');\n    }\n    // Implements IEEE P1363 point encoding\n    function pointToBytes(_c, point, isCompressed) {\n        const { x, y } = point.toAffine();\n        const bx = Fp.toBytes(x);\n        abool('isCompressed', isCompressed);\n        if (isCompressed) {\n            assertCompressionIsSupported();\n            const hasEvenY = !Fp.isOdd(y);\n            return concatBytes(pprefix(hasEvenY), bx);\n        }\n        else {\n            return concatBytes(Uint8Array.of(0x04), bx, Fp.toBytes(y));\n        }\n    }\n    function pointFromBytes(bytes) {\n        abytes(bytes);\n        const L = Fp.BYTES;\n        const LC = L + 1; // length compressed, e.g. 33 for 32-byte field\n        const LU = 2 * L + 1; // length uncompressed, e.g. 65 for 32-byte field\n        const length = bytes.length;\n        const head = bytes[0];\n        const tail = bytes.subarray(1);\n        // No actual validation is done here: use .assertValidity()\n        if (length === LC && (head === 0x02 || head === 0x03)) {\n            const x = Fp.fromBytes(tail);\n            if (!Fp.isValid(x))\n                throw new Error('bad point: is not on curve, wrong x');\n            const y2 = weierstrassEquation(x); // y² = x³ + ax + b\n            let y;\n            try {\n                y = Fp.sqrt(y2); // y = y² ^ (p+1)/4\n            }\n            catch (sqrtError) {\n                const err = sqrtError instanceof Error ? ': ' + sqrtError.message : '';\n                throw new Error('bad point: is not on curve, sqrt error' + err);\n            }\n            assertCompressionIsSupported();\n            const isYOdd = Fp.isOdd(y); // (y & _1n) === _1n;\n            const isHeadOdd = (head & 1) === 1; // ECDSA-specific\n            if (isHeadOdd !== isYOdd)\n                y = Fp.neg(y);\n            return { x, y };\n        }\n        else if (length === LU && head === 0x04) {\n            // TODO: more checks\n            const x = Fp.fromBytes(tail.subarray(L * 0, L * 1));\n            const y = Fp.fromBytes(tail.subarray(L * 1, L * 2));\n            if (!isValidXY(x, y))\n                throw new Error('bad point: is not on curve');\n            return { x, y };\n        }\n        else {\n            throw new Error(`bad point: got length ${length}, expected compressed=${LC} or uncompressed=${LU}`);\n        }\n    }\n    const toBytes = curveOpts.toBytes || pointToBytes;\n    const fromBytes = curveOpts.fromBytes || pointFromBytes;\n    const weierstrassEquation = _legacyHelperEquat(Fp, CURVE.a, CURVE.b);\n    // TODO: move top-level\n    /** Checks whether equation holds for given x, y: y² == x³ + ax + b */\n    function isValidXY(x, y) {\n        const left = Fp.sqr(y); // y²\n        const right = weierstrassEquation(x); // x³ + ax + b\n        return Fp.eql(left, right);\n    }\n    // Validate whether the passed curve params are valid.\n    // Test 1: equation y² = x³ + ax + b should work for generator point.\n    if (!isValidXY(CURVE.Gx, CURVE.Gy))\n        throw new Error('bad curve params: generator point');\n    // Test 2: discriminant Δ part should be non-zero: 4a³ + 27b² != 0.\n    // Guarantees curve is genus-1, smooth (non-singular).\n    const _4a3 = Fp.mul(Fp.pow(CURVE.a, _3n), _4n);\n    const _27b2 = Fp.mul(Fp.sqr(CURVE.b), BigInt(27));\n    if (Fp.is0(Fp.add(_4a3, _27b2)))\n        throw new Error('bad curve params: a or b');\n    /** Asserts coordinate is valid: 0 <= n < Fp.ORDER. */\n    function acoord(title, n, banZero = false) {\n        if (!Fp.isValid(n) || (banZero && Fp.is0(n)))\n            throw new Error(`bad point coordinate ${title}`);\n        return n;\n    }\n    function aprjpoint(other) {\n        if (!(other instanceof Point))\n            throw new Error('ProjectivePoint expected');\n    }\n    // Memoized toAffine / validity check. They are heavy. Points are immutable.\n    // Converts Projective point to affine (x, y) coordinates.\n    // Can accept precomputed Z^-1 - for example, from invertBatch.\n    // (X, Y, Z) ∋ (x=X/Z, y=Y/Z)\n    const toAffineMemo = memoized((p, iz) => {\n        const { px: x, py: y, pz: z } = p;\n        // Fast-path for normalized points\n        if (Fp.eql(z, Fp.ONE))\n            return { x, y };\n        const is0 = p.is0();\n        // If invZ was 0, we return zero point. However we still want to execute\n        // all operations, so we replace invZ with a random number, 1.\n        if (iz == null)\n            iz = is0 ? Fp.ONE : Fp.inv(z);\n        const ax = Fp.mul(x, iz);\n        const ay = Fp.mul(y, iz);\n        const zz = Fp.mul(z, iz);\n        if (is0)\n            return { x: Fp.ZERO, y: Fp.ZERO };\n        if (!Fp.eql(zz, Fp.ONE))\n            throw new Error('invZ was invalid');\n        return { x: ax, y: ay };\n    });\n    // NOTE: on exception this will crash 'cached' and no value will be set.\n    // Otherwise true will be return\n    const assertValidMemo = memoized((p) => {\n        if (p.is0()) {\n            // (0, 1, 0) aka ZERO is invalid in most contexts.\n            // In BLS, ZERO can be serialized, so we allow it.\n            // (0, 0, 0) is invalid representation of ZERO.\n            if (curveOpts.allowInfinityPoint && !Fp.is0(p.py))\n                return;\n            throw new Error('bad point: ZERO');\n        }\n        // Some 3rd-party test vectors require different wording between here & `fromCompressedHex`\n        const { x, y } = p.toAffine();\n        if (!Fp.isValid(x) || !Fp.isValid(y))\n            throw new Error('bad point: x or y not field elements');\n        if (!isValidXY(x, y))\n            throw new Error('bad point: equation left != right');\n        if (!p.isTorsionFree())\n            throw new Error('bad point: not in prime-order subgroup');\n        return true;\n    });\n    function finishEndo(endoBeta, k1p, k2p, k1neg, k2neg) {\n        k2p = new Point(Fp.mul(k2p.px, endoBeta), k2p.py, k2p.pz);\n        k1p = negateCt(k1neg, k1p);\n        k2p = negateCt(k2neg, k2p);\n        return k1p.add(k2p);\n    }\n    /**\n     * Projective Point works in 3d / projective (homogeneous) coordinates:(X, Y, Z) ∋ (x=X/Z, y=Y/Z).\n     * Default Point works in 2d / affine coordinates: (x, y).\n     * We're doing calculations in projective, because its operations don't require costly inversion.\n     */\n    class Point {\n        /** Does NOT validate if the point is valid. Use `.assertValidity()`. */\n        constructor(px, py, pz) {\n            this.px = acoord('x', px);\n            this.py = acoord('y', py, true);\n            this.pz = acoord('z', pz);\n            Object.freeze(this);\n        }\n        /** Does NOT validate if the point is valid. Use `.assertValidity()`. */\n        static fromAffine(p) {\n            const { x, y } = p || {};\n            if (!p || !Fp.isValid(x) || !Fp.isValid(y))\n                throw new Error('invalid affine point');\n            if (p instanceof Point)\n                throw new Error('projective point not allowed');\n            // (0, 0) would've produced (0, 0, 1) - instead, we need (0, 1, 0)\n            if (Fp.is0(x) && Fp.is0(y))\n                return Point.ZERO;\n            return new Point(x, y, Fp.ONE);\n        }\n        get x() {\n            return this.toAffine().x;\n        }\n        get y() {\n            return this.toAffine().y;\n        }\n        static normalizeZ(points) {\n            return normalizeZ(Point, 'pz', points);\n        }\n        static fromBytes(bytes) {\n            abytes(bytes);\n            return Point.fromHex(bytes);\n        }\n        /** Converts hash string or Uint8Array to Point. */\n        static fromHex(hex) {\n            const P = Point.fromAffine(fromBytes(ensureBytes('pointHex', hex)));\n            P.assertValidity();\n            return P;\n        }\n        /** Multiplies generator point by privateKey. */\n        static fromPrivateKey(privateKey) {\n            const normPrivateKeyToScalar = _legacyHelperNormPriv(Fn, curveOpts.allowedPrivateKeyLengths, curveOpts.wrapPrivateKey);\n            return Point.BASE.multiply(normPrivateKeyToScalar(privateKey));\n        }\n        /** Multiscalar Multiplication */\n        static msm(points, scalars) {\n            return pippenger(Point, Fn, points, scalars);\n        }\n        /**\n         *\n         * @param windowSize\n         * @param isLazy true will defer table computation until the first multiplication\n         * @returns\n         */\n        precompute(windowSize = 8, isLazy = true) {\n            wnaf.setWindowSize(this, windowSize);\n            if (!isLazy)\n                this.multiply(_3n); // random number\n            return this;\n        }\n        /** \"Private method\", don't use it directly */\n        _setWindowSize(windowSize) {\n            this.precompute(windowSize);\n        }\n        // TODO: return `this`\n        /** A point on curve is valid if it conforms to equation. */\n        assertValidity() {\n            assertValidMemo(this);\n        }\n        hasEvenY() {\n            const { y } = this.toAffine();\n            if (!Fp.isOdd)\n                throw new Error(\"Field doesn't support isOdd\");\n            return !Fp.isOdd(y);\n        }\n        /** Compare one point to another. */\n        equals(other) {\n            aprjpoint(other);\n            const { px: X1, py: Y1, pz: Z1 } = this;\n            const { px: X2, py: Y2, pz: Z2 } = other;\n            const U1 = Fp.eql(Fp.mul(X1, Z2), Fp.mul(X2, Z1));\n            const U2 = Fp.eql(Fp.mul(Y1, Z2), Fp.mul(Y2, Z1));\n            return U1 && U2;\n        }\n        /** Flips point to one corresponding to (x, -y) in Affine coordinates. */\n        negate() {\n            return new Point(this.px, Fp.neg(this.py), this.pz);\n        }\n        // Renes-Costello-Batina exception-free doubling formula.\n        // There is 30% faster Jacobian formula, but it is not complete.\n        // https://eprint.iacr.org/2015/1060, algorithm 3\n        // Cost: 8M + 3S + 3*a + 2*b3 + 15add.\n        double() {\n            const { a, b } = CURVE;\n            const b3 = Fp.mul(b, _3n);\n            const { px: X1, py: Y1, pz: Z1 } = this;\n            let X3 = Fp.ZERO, Y3 = Fp.ZERO, Z3 = Fp.ZERO; // prettier-ignore\n            let t0 = Fp.mul(X1, X1); // step 1\n            let t1 = Fp.mul(Y1, Y1);\n            let t2 = Fp.mul(Z1, Z1);\n            let t3 = Fp.mul(X1, Y1);\n            t3 = Fp.add(t3, t3); // step 5\n            Z3 = Fp.mul(X1, Z1);\n            Z3 = Fp.add(Z3, Z3);\n            X3 = Fp.mul(a, Z3);\n            Y3 = Fp.mul(b3, t2);\n            Y3 = Fp.add(X3, Y3); // step 10\n            X3 = Fp.sub(t1, Y3);\n            Y3 = Fp.add(t1, Y3);\n            Y3 = Fp.mul(X3, Y3);\n            X3 = Fp.mul(t3, X3);\n            Z3 = Fp.mul(b3, Z3); // step 15\n            t2 = Fp.mul(a, t2);\n            t3 = Fp.sub(t0, t2);\n            t3 = Fp.mul(a, t3);\n            t3 = Fp.add(t3, Z3);\n            Z3 = Fp.add(t0, t0); // step 20\n            t0 = Fp.add(Z3, t0);\n            t0 = Fp.add(t0, t2);\n            t0 = Fp.mul(t0, t3);\n            Y3 = Fp.add(Y3, t0);\n            t2 = Fp.mul(Y1, Z1); // step 25\n            t2 = Fp.add(t2, t2);\n            t0 = Fp.mul(t2, t3);\n            X3 = Fp.sub(X3, t0);\n            Z3 = Fp.mul(t2, t1);\n            Z3 = Fp.add(Z3, Z3); // step 30\n            Z3 = Fp.add(Z3, Z3);\n            return new Point(X3, Y3, Z3);\n        }\n        // Renes-Costello-Batina exception-free addition formula.\n        // There is 30% faster Jacobian formula, but it is not complete.\n        // https://eprint.iacr.org/2015/1060, algorithm 1\n        // Cost: 12M + 0S + 3*a + 3*b3 + 23add.\n        add(other) {\n            aprjpoint(other);\n            const { px: X1, py: Y1, pz: Z1 } = this;\n            const { px: X2, py: Y2, pz: Z2 } = other;\n            let X3 = Fp.ZERO, Y3 = Fp.ZERO, Z3 = Fp.ZERO; // prettier-ignore\n            const a = CURVE.a;\n            const b3 = Fp.mul(CURVE.b, _3n);\n            let t0 = Fp.mul(X1, X2); // step 1\n            let t1 = Fp.mul(Y1, Y2);\n            let t2 = Fp.mul(Z1, Z2);\n            let t3 = Fp.add(X1, Y1);\n            let t4 = Fp.add(X2, Y2); // step 5\n            t3 = Fp.mul(t3, t4);\n            t4 = Fp.add(t0, t1);\n            t3 = Fp.sub(t3, t4);\n            t4 = Fp.add(X1, Z1);\n            let t5 = Fp.add(X2, Z2); // step 10\n            t4 = Fp.mul(t4, t5);\n            t5 = Fp.add(t0, t2);\n            t4 = Fp.sub(t4, t5);\n            t5 = Fp.add(Y1, Z1);\n            X3 = Fp.add(Y2, Z2); // step 15\n            t5 = Fp.mul(t5, X3);\n            X3 = Fp.add(t1, t2);\n            t5 = Fp.sub(t5, X3);\n            Z3 = Fp.mul(a, t4);\n            X3 = Fp.mul(b3, t2); // step 20\n            Z3 = Fp.add(X3, Z3);\n            X3 = Fp.sub(t1, Z3);\n            Z3 = Fp.add(t1, Z3);\n            Y3 = Fp.mul(X3, Z3);\n            t1 = Fp.add(t0, t0); // step 25\n            t1 = Fp.add(t1, t0);\n            t2 = Fp.mul(a, t2);\n            t4 = Fp.mul(b3, t4);\n            t1 = Fp.add(t1, t2);\n            t2 = Fp.sub(t0, t2); // step 30\n            t2 = Fp.mul(a, t2);\n            t4 = Fp.add(t4, t2);\n            t0 = Fp.mul(t1, t4);\n            Y3 = Fp.add(Y3, t0);\n            t0 = Fp.mul(t5, t4); // step 35\n            X3 = Fp.mul(t3, X3);\n            X3 = Fp.sub(X3, t0);\n            t0 = Fp.mul(t3, t1);\n            Z3 = Fp.mul(t5, Z3);\n            Z3 = Fp.add(Z3, t0); // step 40\n            return new Point(X3, Y3, Z3);\n        }\n        subtract(other) {\n            return this.add(other.negate());\n        }\n        is0() {\n            return this.equals(Point.ZERO);\n        }\n        /**\n         * Constant time multiplication.\n         * Uses wNAF method. Windowed method may be 10% faster,\n         * but takes 2x longer to generate and consumes 2x memory.\n         * Uses precomputes when available.\n         * Uses endomorphism for Koblitz curves.\n         * @param scalar by which the point would be multiplied\n         * @returns New point\n         */\n        multiply(scalar) {\n            const { endo } = curveOpts;\n            if (!Fn.isValidNot0(scalar))\n                throw new Error('invalid scalar: out of range'); // 0 is invalid\n            let point, fake; // Fake point is used to const-time mult\n            const mul = (n) => wnaf.wNAFCached(this, n, Point.normalizeZ);\n            /** See docs for {@link EndomorphismOpts} */\n            if (endo) {\n                const { k1neg, k1, k2neg, k2 } = endo.splitScalar(scalar);\n                const { p: k1p, f: k1f } = mul(k1);\n                const { p: k2p, f: k2f } = mul(k2);\n                fake = k1f.add(k2f);\n                point = finishEndo(endo.beta, k1p, k2p, k1neg, k2neg);\n            }\n            else {\n                const { p, f } = mul(scalar);\n                point = p;\n                fake = f;\n            }\n            // Normalize `z` for both points, but return only real one\n            return Point.normalizeZ([point, fake])[0];\n        }\n        /**\n         * Non-constant-time multiplication. Uses double-and-add algorithm.\n         * It's faster, but should only be used when you don't care about\n         * an exposed private key e.g. sig verification, which works over *public* keys.\n         */\n        multiplyUnsafe(sc) {\n            const { endo } = curveOpts;\n            const p = this;\n            if (!Fn.isValid(sc))\n                throw new Error('invalid scalar: out of range'); // 0 is valid\n            if (sc === _0n || p.is0())\n                return Point.ZERO;\n            if (sc === _1n)\n                return p; // fast-path\n            if (wnaf.hasPrecomputes(this))\n                return this.multiply(sc);\n            if (endo) {\n                const { k1neg, k1, k2neg, k2 } = endo.splitScalar(sc);\n                // `wNAFCachedUnsafe` is 30% slower\n                const { p1, p2 } = mulEndoUnsafe(Point, p, k1, k2);\n                return finishEndo(endo.beta, p1, p2, k1neg, k2neg);\n            }\n            else {\n                return wnaf.wNAFCachedUnsafe(p, sc);\n            }\n        }\n        multiplyAndAddUnsafe(Q, a, b) {\n            const sum = this.multiplyUnsafe(a).add(Q.multiplyUnsafe(b));\n            return sum.is0() ? undefined : sum;\n        }\n        /**\n         * Converts Projective point to affine (x, y) coordinates.\n         * @param invertedZ Z^-1 (inverted zero) - optional, precomputation is useful for invertBatch\n         */\n        toAffine(invertedZ) {\n            return toAffineMemo(this, invertedZ);\n        }\n        /**\n         * Checks whether Point is free of torsion elements (is in prime subgroup).\n         * Always torsion-free for cofactor=1 curves.\n         */\n        isTorsionFree() {\n            const { isTorsionFree } = curveOpts;\n            if (cofactor === _1n)\n                return true;\n            if (isTorsionFree)\n                return isTorsionFree(Point, this);\n            return wnaf.wNAFCachedUnsafe(this, CURVE_ORDER).is0();\n        }\n        clearCofactor() {\n            const { clearCofactor } = curveOpts;\n            if (cofactor === _1n)\n                return this; // Fast-path\n            if (clearCofactor)\n                return clearCofactor(Point, this);\n            return this.multiplyUnsafe(cofactor);\n        }\n        toBytes(isCompressed = true) {\n            abool('isCompressed', isCompressed);\n            this.assertValidity();\n            return toBytes(Point, this, isCompressed);\n        }\n        /** @deprecated use `toBytes` */\n        toRawBytes(isCompressed = true) {\n            return this.toBytes(isCompressed);\n        }\n        toHex(isCompressed = true) {\n            return bytesToHex(this.toBytes(isCompressed));\n        }\n        toString() {\n            return `<Point ${this.is0() ? 'ZERO' : this.toHex()}>`;\n        }\n    }\n    // base / generator point\n    Point.BASE = new Point(CURVE.Gx, CURVE.Gy, Fp.ONE);\n    // zero / infinity / identity point\n    Point.ZERO = new Point(Fp.ZERO, Fp.ONE, Fp.ZERO); // 0, 1, 0\n    // fields\n    Point.Fp = Fp;\n    Point.Fn = Fn;\n    const bits = Fn.BITS;\n    const wnaf = wNAF(Point, curveOpts.endo ? Math.ceil(bits / 2) : bits);\n    return Point;\n}\n// _legacyWeierstrass\n/** @deprecated use `weierstrassN` */\nexport function weierstrassPoints(c) {\n    const { CURVE, curveOpts } = _weierstrass_legacy_opts_to_new(c);\n    const Point = weierstrassN(CURVE, curveOpts);\n    return _weierstrass_new_output_to_legacy(c, Point);\n}\n// Points start with byte 0x02 when y is even; otherwise 0x03\nfunction pprefix(hasEvenY) {\n    return Uint8Array.of(hasEvenY ? 0x02 : 0x03);\n}\nexport function ecdsa(Point, ecdsaOpts, curveOpts = {}) {\n    _validateObject(ecdsaOpts, { hash: 'function' }, {\n        hmac: 'function',\n        lowS: 'boolean',\n        randomBytes: 'function',\n        bits2int: 'function',\n        bits2int_modN: 'function',\n    });\n    const randomBytes_ = ecdsaOpts.randomBytes || randomBytes;\n    const hmac_ = ecdsaOpts.hmac ||\n        ((key, ...msgs) => hmac(ecdsaOpts.hash, key, concatBytes(...msgs)));\n    const { Fp, Fn } = Point;\n    const { ORDER: CURVE_ORDER, BITS: fnBits } = Fn;\n    function isBiggerThanHalfOrder(number) {\n        const HALF = CURVE_ORDER >> _1n;\n        return number > HALF;\n    }\n    function normalizeS(s) {\n        return isBiggerThanHalfOrder(s) ? Fn.neg(s) : s;\n    }\n    function aValidRS(title, num) {\n        if (!Fn.isValidNot0(num))\n            throw new Error(`invalid signature ${title}: out of range 1..CURVE.n`);\n    }\n    /**\n     * ECDSA signature with its (r, s) properties. Supports DER & compact representations.\n     */\n    class Signature {\n        constructor(r, s, recovery) {\n            aValidRS('r', r); // r in [1..N-1]\n            aValidRS('s', s); // s in [1..N-1]\n            this.r = r;\n            this.s = s;\n            if (recovery != null)\n                this.recovery = recovery;\n            Object.freeze(this);\n        }\n        // pair (bytes of r, bytes of s)\n        static fromCompact(hex) {\n            const L = Fn.BYTES;\n            const b = ensureBytes('compactSignature', hex, L * 2);\n            return new Signature(Fn.fromBytes(b.subarray(0, L)), Fn.fromBytes(b.subarray(L, L * 2)));\n        }\n        // DER encoded ECDSA signature\n        // https://bitcoin.stackexchange.com/questions/57644/what-are-the-parts-of-a-bitcoin-transaction-input-script\n        static fromDER(hex) {\n            const { r, s } = DER.toSig(ensureBytes('DER', hex));\n            return new Signature(r, s);\n        }\n        /**\n         * @todo remove\n         * @deprecated\n         */\n        assertValidity() { }\n        addRecoveryBit(recovery) {\n            return new Signature(this.r, this.s, recovery);\n        }\n        // ProjPointType<bigint>\n        recoverPublicKey(msgHash) {\n            const FIELD_ORDER = Fp.ORDER;\n            const { r, s, recovery: rec } = this;\n            if (rec == null || ![0, 1, 2, 3].includes(rec))\n                throw new Error('recovery id invalid');\n            // ECDSA recovery is hard for cofactor > 1 curves.\n            // In sign, `r = q.x mod n`, and here we recover q.x from r.\n            // While recovering q.x >= n, we need to add r+n for cofactor=1 curves.\n            // However, for cofactor>1, r+n may not get q.x:\n            // r+n*i would need to be done instead where i is unknown.\n            // To easily get i, we either need to:\n            // a. increase amount of valid recid values (4, 5...); OR\n            // b. prohibit non-prime-order signatures (recid > 1).\n            const hasCofactor = CURVE_ORDER * _2n < FIELD_ORDER;\n            if (hasCofactor && rec > 1)\n                throw new Error('recovery id is ambiguous for h>1 curve');\n            const radj = rec === 2 || rec === 3 ? r + CURVE_ORDER : r;\n            if (!Fp.isValid(radj))\n                throw new Error('recovery id 2 or 3 invalid');\n            const x = Fp.toBytes(radj);\n            const R = Point.fromHex(concatBytes(pprefix((rec & 1) === 0), x));\n            const ir = Fn.inv(radj); // r^-1\n            const h = bits2int_modN(ensureBytes('msgHash', msgHash)); // Truncate hash\n            const u1 = Fn.create(-h * ir); // -hr^-1\n            const u2 = Fn.create(s * ir); // sr^-1\n            // (sr^-1)R-(hr^-1)G = -(hr^-1)G + (sr^-1). unsafe is fine: there is no private data.\n            const Q = Point.BASE.multiplyUnsafe(u1).add(R.multiplyUnsafe(u2));\n            if (Q.is0())\n                throw new Error('point at infinify');\n            Q.assertValidity();\n            return Q;\n        }\n        // Signatures should be low-s, to prevent malleability.\n        hasHighS() {\n            return isBiggerThanHalfOrder(this.s);\n        }\n        normalizeS() {\n            return this.hasHighS() ? new Signature(this.r, Fn.neg(this.s), this.recovery) : this;\n        }\n        toBytes(format) {\n            if (format === 'compact')\n                return concatBytes(Fn.toBytes(this.r), Fn.toBytes(this.s));\n            if (format === 'der')\n                return hexToBytes(DER.hexFromSig(this));\n            throw new Error('invalid format');\n        }\n        // DER-encoded\n        toDERRawBytes() {\n            return this.toBytes('der');\n        }\n        toDERHex() {\n            return bytesToHex(this.toBytes('der'));\n        }\n        // padded bytes of r, then padded bytes of s\n        toCompactRawBytes() {\n            return this.toBytes('compact');\n        }\n        toCompactHex() {\n            return bytesToHex(this.toBytes('compact'));\n        }\n    }\n    const normPrivateKeyToScalar = _legacyHelperNormPriv(Fn, curveOpts.allowedPrivateKeyLengths, curveOpts.wrapPrivateKey);\n    const utils = {\n        isValidPrivateKey(privateKey) {\n            try {\n                normPrivateKeyToScalar(privateKey);\n                return true;\n            }\n            catch (error) {\n                return false;\n            }\n        },\n        normPrivateKeyToScalar: normPrivateKeyToScalar,\n        /**\n         * Produces cryptographically secure private key from random of size\n         * (groupLen + ceil(groupLen / 2)) with modulo bias being negligible.\n         */\n        randomPrivateKey: () => {\n            const n = CURVE_ORDER;\n            return mapHashToField(randomBytes_(getMinHashLength(n)), n);\n        },\n        precompute(windowSize = 8, point = Point.BASE) {\n            return point.precompute(windowSize, false);\n        },\n    };\n    /**\n     * Computes public key for a private key. Checks for validity of the private key.\n     * @param privateKey private key\n     * @param isCompressed whether to return compact (default), or full key\n     * @returns Public key, full when isCompressed=false; short when isCompressed=true\n     */\n    function getPublicKey(privateKey, isCompressed = true) {\n        return Point.fromPrivateKey(privateKey).toBytes(isCompressed);\n    }\n    /**\n     * Quick and dirty check for item being public key. Does not validate hex, or being on-curve.\n     */\n    function isProbPub(item) {\n        if (typeof item === 'bigint')\n            return false;\n        if (item instanceof Point)\n            return true;\n        const arr = ensureBytes('key', item);\n        const length = arr.length;\n        const L = Fp.BYTES;\n        const LC = L + 1; // e.g. 33 for 32\n        const LU = 2 * L + 1; // e.g. 65 for 32\n        if (curveOpts.allowedPrivateKeyLengths || Fn.BYTES === LC) {\n            return undefined;\n        }\n        else {\n            return length === LC || length === LU;\n        }\n    }\n    /**\n     * ECDH (Elliptic Curve Diffie Hellman).\n     * Computes shared public key from private key and public key.\n     * Checks: 1) private key validity 2) shared key is on-curve.\n     * Does NOT hash the result.\n     * @param privateA private key\n     * @param publicB different public key\n     * @param isCompressed whether to return compact (default), or full key\n     * @returns shared public key\n     */\n    function getSharedSecret(privateA, publicB, isCompressed = true) {\n        if (isProbPub(privateA) === true)\n            throw new Error('first arg must be private key');\n        if (isProbPub(publicB) === false)\n            throw new Error('second arg must be public key');\n        const b = Point.fromHex(publicB); // check for being on-curve\n        return b.multiply(normPrivateKeyToScalar(privateA)).toBytes(isCompressed);\n    }\n    // RFC6979: ensure ECDSA msg is X bytes and < N. RFC suggests optional truncating via bits2octets.\n    // FIPS 186-4 4.6 suggests the leftmost min(nBitLen, outLen) bits, which matches bits2int.\n    // bits2int can produce res>N, we can do mod(res, N) since the bitLen is the same.\n    // int2octets can't be used; pads small msgs with 0: unacceptatble for trunc as per RFC vectors\n    const bits2int = ecdsaOpts.bits2int ||\n        function (bytes) {\n            // Our custom check \"just in case\", for protection against DoS\n            if (bytes.length > 8192)\n                throw new Error('input is too large');\n            // For curves with nBitLength % 8 !== 0: bits2octets(bits2octets(m)) !== bits2octets(m)\n            // for some cases, since bytes.length * 8 is not actual bitLength.\n            const num = bytesToNumberBE(bytes); // check for == u8 done here\n            const delta = bytes.length * 8 - fnBits; // truncate to nBitLength leftmost bits\n            return delta > 0 ? num >> BigInt(delta) : num;\n        };\n    const bits2int_modN = ecdsaOpts.bits2int_modN ||\n        function (bytes) {\n            return Fn.create(bits2int(bytes)); // can't use bytesToNumberBE here\n        };\n    // NOTE: pads output with zero as per spec\n    const ORDER_MASK = bitMask(fnBits);\n    /**\n     * Converts to bytes. Checks if num in `[0..ORDER_MASK-1]` e.g.: `[0..2^256-1]`.\n     */\n    function int2octets(num) {\n        // IMPORTANT: the check ensures working for case `Fn.BYTES != Fn.BITS * 8`\n        aInRange('num < 2^' + fnBits, num, _0n, ORDER_MASK);\n        return Fn.toBytes(num);\n    }\n    // Steps A, D of RFC6979 3.2\n    // Creates RFC6979 seed; converts msg/privKey to numbers.\n    // Used only in sign, not in verify.\n    // NOTE: we cannot assume here that msgHash has same amount of bytes as curve order,\n    // this will be invalid at least for P521. Also it can be bigger for P224 + SHA256\n    function prepSig(msgHash, privateKey, opts = defaultSigOpts) {\n        if (['recovered', 'canonical'].some((k) => k in opts))\n            throw new Error('sign() legacy options not supported');\n        const { hash } = ecdsaOpts;\n        let { lowS, prehash, extraEntropy: ent } = opts; // generates low-s sigs by default\n        if (lowS == null)\n            lowS = true; // RFC6979 3.2: we skip step A, because we already provide hash\n        msgHash = ensureBytes('msgHash', msgHash);\n        validateSigVerOpts(opts);\n        if (prehash)\n            msgHash = ensureBytes('prehashed msgHash', hash(msgHash));\n        // We can't later call bits2octets, since nested bits2int is broken for curves\n        // with fnBits % 8 !== 0. Because of that, we unwrap it here as int2octets call.\n        // const bits2octets = (bits) => int2octets(bits2int_modN(bits))\n        const h1int = bits2int_modN(msgHash);\n        const d = normPrivateKeyToScalar(privateKey); // validate private key, convert to bigint\n        const seedArgs = [int2octets(d), int2octets(h1int)];\n        // extraEntropy. RFC6979 3.6: additional k' (optional).\n        if (ent != null && ent !== false) {\n            // K = HMAC_K(V || 0x00 || int2octets(x) || bits2octets(h1) || k')\n            const e = ent === true ? randomBytes_(Fp.BYTES) : ent; // generate random bytes OR pass as-is\n            seedArgs.push(ensureBytes('extraEntropy', e)); // check for being bytes\n        }\n        const seed = concatBytes(...seedArgs); // Step D of RFC6979 3.2\n        const m = h1int; // NOTE: no need to call bits2int second time here, it is inside truncateHash!\n        // Converts signature params into point w r/s, checks result for validity.\n        // Can use scalar blinding b^-1(bm + bdr) where b ∈ [1,q−1] according to\n        // https://tches.iacr.org/index.php/TCHES/article/view/7337/6509. We've decided against it:\n        // a) dependency on CSPRNG b) 15% slowdown c) doesn't really help since bigints are not CT\n        function k2sig(kBytes) {\n            // RFC 6979 Section 3.2, step 3: k = bits2int(T)\n            // Important: all mod() calls here must be done over N\n            const k = bits2int(kBytes); // Cannot use fields methods, since it is group element\n            if (!Fn.isValidNot0(k))\n                return; // Valid scalars (including k) must be in 1..N-1\n            const ik = Fn.inv(k); // k^-1 mod n\n            const q = Point.BASE.multiply(k).toAffine(); // q = Gk\n            const r = Fn.create(q.x); // r = q.x mod n\n            if (r === _0n)\n                return;\n            const s = Fn.create(ik * Fn.create(m + r * d)); // Not using blinding here, see comment above\n            if (s === _0n)\n                return;\n            let recovery = (q.x === r ? 0 : 2) | Number(q.y & _1n); // recovery bit (2 or 3, when q.x > n)\n            let normS = s;\n            if (lowS && isBiggerThanHalfOrder(s)) {\n                normS = normalizeS(s); // if lowS was passed, ensure s is always\n                recovery ^= 1; // // in the bottom half of N\n            }\n            return new Signature(r, normS, recovery); // use normS, not s\n        }\n        return { seed, k2sig };\n    }\n    const defaultSigOpts = { lowS: ecdsaOpts.lowS, prehash: false };\n    const defaultVerOpts = { lowS: ecdsaOpts.lowS, prehash: false };\n    /**\n     * Signs message hash with a private key.\n     * ```\n     * sign(m, d, k) where\n     *   (x, y) = G × k\n     *   r = x mod n\n     *   s = (m + dr)/k mod n\n     * ```\n     * @param msgHash NOT message. msg needs to be hashed to `msgHash`, or use `prehash`.\n     * @param privKey private key\n     * @param opts lowS for non-malleable sigs. extraEntropy for mixing randomness into k. prehash will hash first arg.\n     * @returns signature with recovery param\n     */\n    function sign(msgHash, privKey, opts = defaultSigOpts) {\n        const { seed, k2sig } = prepSig(msgHash, privKey, opts); // Steps A, D of RFC6979 3.2.\n        const drbg = createHmacDrbg(ecdsaOpts.hash.outputLen, Fn.BYTES, hmac_);\n        return drbg(seed, k2sig); // Steps B, C, D, E, F, G\n    }\n    // Enable precomputes. Slows down first publicKey computation by 20ms.\n    Point.BASE.precompute(8);\n    /**\n     * Verifies a signature against message hash and public key.\n     * Rejects lowS signatures by default: to override,\n     * specify option `{lowS: false}`. Implements section 4.1.4 from https://www.secg.org/sec1-v2.pdf:\n     *\n     * ```\n     * verify(r, s, h, P) where\n     *   U1 = hs^-1 mod n\n     *   U2 = rs^-1 mod n\n     *   R = U1⋅G - U2⋅P\n     *   mod(R.x, n) == r\n     * ```\n     */\n    function verify(signature, msgHash, publicKey, opts = defaultVerOpts) {\n        const sg = signature;\n        msgHash = ensureBytes('msgHash', msgHash);\n        publicKey = ensureBytes('publicKey', publicKey);\n        // Verify opts\n        validateSigVerOpts(opts);\n        const { lowS, prehash, format } = opts;\n        // TODO: remove\n        if ('strict' in opts)\n            throw new Error('options.strict was renamed to lowS');\n        if (format !== undefined && !['compact', 'der', 'js'].includes(format))\n            throw new Error('format must be \"compact\", \"der\" or \"js\"');\n        const isHex = typeof sg === 'string' || isBytes(sg);\n        const isObj = !isHex &&\n            !format &&\n            typeof sg === 'object' &&\n            sg !== null &&\n            typeof sg.r === 'bigint' &&\n            typeof sg.s === 'bigint';\n        if (!isHex && !isObj)\n            throw new Error('invalid signature, expected Uint8Array, hex string or Signature instance');\n        let _sig = undefined;\n        let P;\n        // deduce signature format\n        try {\n            // if (format === 'js') {\n            //   if (sg != null && !isBytes(sg)) _sig = new Signature(sg.r, sg.s);\n            // } else if (format === 'compact') {\n            //   _sig = Signature.fromCompact(sg);\n            // } else if (format === 'der') {\n            //   _sig = Signature.fromDER(sg);\n            // } else {\n            //   throw new Error('invalid format');\n            // }\n            if (isObj) {\n                if (format === undefined || format === 'js') {\n                    _sig = new Signature(sg.r, sg.s);\n                }\n                else {\n                    throw new Error('invalid format');\n                }\n            }\n            if (isHex) {\n                // TODO: remove this malleable check\n                // Signature can be represented in 2 ways: compact (2*Fn.BYTES) & DER (variable-length).\n                // Since DER can also be 2*Fn.BYTES bytes, we check for it first.\n                try {\n                    if (format !== 'compact')\n                        _sig = Signature.fromDER(sg);\n                }\n                catch (derError) {\n                    if (!(derError instanceof DER.Err))\n                        throw derError;\n                }\n                if (!_sig && format !== 'der')\n                    _sig = Signature.fromCompact(sg);\n            }\n            P = Point.fromHex(publicKey);\n        }\n        catch (error) {\n            return false;\n        }\n        if (!_sig)\n            return false;\n        if (lowS && _sig.hasHighS())\n            return false;\n        // todo: optional.hash => hash\n        if (prehash)\n            msgHash = ecdsaOpts.hash(msgHash);\n        const { r, s } = _sig;\n        const h = bits2int_modN(msgHash); // Cannot use fields methods, since it is group element\n        const is = Fn.inv(s); // s^-1\n        const u1 = Fn.create(h * is); // u1 = hs^-1 mod n\n        const u2 = Fn.create(r * is); // u2 = rs^-1 mod n\n        const R = Point.BASE.multiplyUnsafe(u1).add(P.multiplyUnsafe(u2));\n        if (R.is0())\n            return false;\n        const v = Fn.create(R.x); // v = r.x mod n\n        return v === r;\n    }\n    // TODO: clarify API for cloning .clone({hash: sha512}) ? .createWith({hash: sha512})?\n    // const clone = (hash: CHash): ECDSA => ecdsa(Point, { ...ecdsaOpts, ...getHash(hash) }, curveOpts);\n    return Object.freeze({\n        getPublicKey,\n        getSharedSecret,\n        sign,\n        verify,\n        utils,\n        Point,\n        Signature,\n    });\n}\nfunction _weierstrass_legacy_opts_to_new(c) {\n    const CURVE = {\n        a: c.a,\n        b: c.b,\n        p: c.Fp.ORDER,\n        n: c.n,\n        h: c.h,\n        Gx: c.Gx,\n        Gy: c.Gy,\n    };\n    const Fp = c.Fp;\n    const Fn = Field(CURVE.n, c.nBitLength);\n    const curveOpts = {\n        Fp,\n        Fn,\n        allowedPrivateKeyLengths: c.allowedPrivateKeyLengths,\n        allowInfinityPoint: c.allowInfinityPoint,\n        endo: c.endo,\n        wrapPrivateKey: c.wrapPrivateKey,\n        isTorsionFree: c.isTorsionFree,\n        clearCofactor: c.clearCofactor,\n        fromBytes: c.fromBytes,\n        toBytes: c.toBytes,\n    };\n    return { CURVE, curveOpts };\n}\nfunction _ecdsa_legacy_opts_to_new(c) {\n    const { CURVE, curveOpts } = _weierstrass_legacy_opts_to_new(c);\n    const ecdsaOpts = {\n        hash: c.hash,\n        hmac: c.hmac,\n        randomBytes: c.randomBytes,\n        lowS: c.lowS,\n        bits2int: c.bits2int,\n        bits2int_modN: c.bits2int_modN,\n    };\n    return { CURVE, curveOpts, ecdsaOpts };\n}\nfunction _weierstrass_new_output_to_legacy(c, Point) {\n    const { Fp, Fn } = Point;\n    // TODO: remove\n    function isWithinCurveOrder(num) {\n        return inRange(num, _1n, Fn.ORDER);\n    }\n    const weierstrassEquation = _legacyHelperEquat(Fp, c.a, c.b);\n    const normPrivateKeyToScalar = _legacyHelperNormPriv(Fn, c.allowedPrivateKeyLengths, c.wrapPrivateKey);\n    return Object.assign({}, {\n        CURVE: c,\n        Point: Point,\n        ProjectivePoint: Point,\n        normPrivateKeyToScalar,\n        weierstrassEquation,\n        isWithinCurveOrder,\n    });\n}\nfunction _ecdsa_new_output_to_legacy(c, ecdsa) {\n    return Object.assign({}, ecdsa, {\n        ProjectivePoint: ecdsa.Point,\n        CURVE: c,\n    });\n}\n// _ecdsa_legacy\nexport function weierstrass(c) {\n    const { CURVE, curveOpts, ecdsaOpts } = _ecdsa_legacy_opts_to_new(c);\n    const Point = weierstrassN(CURVE, curveOpts);\n    const signs = ecdsa(Point, ecdsaOpts, curveOpts);\n    return _ecdsa_new_output_to_legacy(c, signs);\n}\n/**\n * Implementation of the Shallue and van de Woestijne method for any weierstrass curve.\n * TODO: check if there is a way to merge this with uvRatio in Edwards; move to modular.\n * b = True and y = sqrt(u / v) if (u / v) is square in F, and\n * b = False and y = sqrt(Z * (u / v)) otherwise.\n * @param Fp\n * @param Z\n * @returns\n */\nexport function SWUFpSqrtRatio(Fp, Z) {\n    // Generic implementation\n    const q = Fp.ORDER;\n    let l = _0n;\n    for (let o = q - _1n; o % _2n === _0n; o /= _2n)\n        l += _1n;\n    const c1 = l; // 1. c1, the largest integer such that 2^c1 divides q - 1.\n    // We need 2n ** c1 and 2n ** (c1-1). We can't use **; but we can use <<.\n    // 2n ** c1 == 2n << (c1-1)\n    const _2n_pow_c1_1 = _2n << (c1 - _1n - _1n);\n    const _2n_pow_c1 = _2n_pow_c1_1 * _2n;\n    const c2 = (q - _1n) / _2n_pow_c1; // 2. c2 = (q - 1) / (2^c1)  # Integer arithmetic\n    const c3 = (c2 - _1n) / _2n; // 3. c3 = (c2 - 1) / 2            # Integer arithmetic\n    const c4 = _2n_pow_c1 - _1n; // 4. c4 = 2^c1 - 1                # Integer arithmetic\n    const c5 = _2n_pow_c1_1; // 5. c5 = 2^(c1 - 1)                  # Integer arithmetic\n    const c6 = Fp.pow(Z, c2); // 6. c6 = Z^c2\n    const c7 = Fp.pow(Z, (c2 + _1n) / _2n); // 7. c7 = Z^((c2 + 1) / 2)\n    let sqrtRatio = (u, v) => {\n        let tv1 = c6; // 1. tv1 = c6\n        let tv2 = Fp.pow(v, c4); // 2. tv2 = v^c4\n        let tv3 = Fp.sqr(tv2); // 3. tv3 = tv2^2\n        tv3 = Fp.mul(tv3, v); // 4. tv3 = tv3 * v\n        let tv5 = Fp.mul(u, tv3); // 5. tv5 = u * tv3\n        tv5 = Fp.pow(tv5, c3); // 6. tv5 = tv5^c3\n        tv5 = Fp.mul(tv5, tv2); // 7. tv5 = tv5 * tv2\n        tv2 = Fp.mul(tv5, v); // 8. tv2 = tv5 * v\n        tv3 = Fp.mul(tv5, u); // 9. tv3 = tv5 * u\n        let tv4 = Fp.mul(tv3, tv2); // 10. tv4 = tv3 * tv2\n        tv5 = Fp.pow(tv4, c5); // 11. tv5 = tv4^c5\n        let isQR = Fp.eql(tv5, Fp.ONE); // 12. isQR = tv5 == 1\n        tv2 = Fp.mul(tv3, c7); // 13. tv2 = tv3 * c7\n        tv5 = Fp.mul(tv4, tv1); // 14. tv5 = tv4 * tv1\n        tv3 = Fp.cmov(tv2, tv3, isQR); // 15. tv3 = CMOV(tv2, tv3, isQR)\n        tv4 = Fp.cmov(tv5, tv4, isQR); // 16. tv4 = CMOV(tv5, tv4, isQR)\n        // 17. for i in (c1, c1 - 1, ..., 2):\n        for (let i = c1; i > _1n; i--) {\n            let tv5 = i - _2n; // 18.    tv5 = i - 2\n            tv5 = _2n << (tv5 - _1n); // 19.    tv5 = 2^tv5\n            let tvv5 = Fp.pow(tv4, tv5); // 20.    tv5 = tv4^tv5\n            const e1 = Fp.eql(tvv5, Fp.ONE); // 21.    e1 = tv5 == 1\n            tv2 = Fp.mul(tv3, tv1); // 22.    tv2 = tv3 * tv1\n            tv1 = Fp.mul(tv1, tv1); // 23.    tv1 = tv1 * tv1\n            tvv5 = Fp.mul(tv4, tv1); // 24.    tv5 = tv4 * tv1\n            tv3 = Fp.cmov(tv2, tv3, e1); // 25.    tv3 = CMOV(tv2, tv3, e1)\n            tv4 = Fp.cmov(tvv5, tv4, e1); // 26.    tv4 = CMOV(tv5, tv4, e1)\n        }\n        return { isValid: isQR, value: tv3 };\n    };\n    if (Fp.ORDER % _4n === _3n) {\n        // sqrt_ratio_3mod4(u, v)\n        const c1 = (Fp.ORDER - _3n) / _4n; // 1. c1 = (q - 3) / 4     # Integer arithmetic\n        const c2 = Fp.sqrt(Fp.neg(Z)); // 2. c2 = sqrt(-Z)\n        sqrtRatio = (u, v) => {\n            let tv1 = Fp.sqr(v); // 1. tv1 = v^2\n            const tv2 = Fp.mul(u, v); // 2. tv2 = u * v\n            tv1 = Fp.mul(tv1, tv2); // 3. tv1 = tv1 * tv2\n            let y1 = Fp.pow(tv1, c1); // 4. y1 = tv1^c1\n            y1 = Fp.mul(y1, tv2); // 5. y1 = y1 * tv2\n            const y2 = Fp.mul(y1, c2); // 6. y2 = y1 * c2\n            const tv3 = Fp.mul(Fp.sqr(y1), v); // 7. tv3 = y1^2; 8. tv3 = tv3 * v\n            const isQR = Fp.eql(tv3, u); // 9. isQR = tv3 == u\n            let y = Fp.cmov(y2, y1, isQR); // 10. y = CMOV(y2, y1, isQR)\n            return { isValid: isQR, value: y }; // 11. return (isQR, y) isQR ? y : y*c2\n        };\n    }\n    // No curves uses that\n    // if (Fp.ORDER % _8n === _5n) // sqrt_ratio_5mod8\n    return sqrtRatio;\n}\n/**\n * Simplified Shallue-van de Woestijne-Ulas Method\n * https://www.rfc-editor.org/rfc/rfc9380#section-6.6.2\n */\nexport function mapToCurveSimpleSWU(Fp, opts) {\n    validateField(Fp);\n    const { A, B, Z } = opts;\n    if (!Fp.isValid(A) || !Fp.isValid(B) || !Fp.isValid(Z))\n        throw new Error('mapToCurveSimpleSWU: invalid opts');\n    const sqrtRatio = SWUFpSqrtRatio(Fp, Z);\n    if (!Fp.isOdd)\n        throw new Error('Field does not have .isOdd()');\n    // Input: u, an element of F.\n    // Output: (x, y), a point on E.\n    return (u) => {\n        // prettier-ignore\n        let tv1, tv2, tv3, tv4, tv5, tv6, x, y;\n        tv1 = Fp.sqr(u); // 1.  tv1 = u^2\n        tv1 = Fp.mul(tv1, Z); // 2.  tv1 = Z * tv1\n        tv2 = Fp.sqr(tv1); // 3.  tv2 = tv1^2\n        tv2 = Fp.add(tv2, tv1); // 4.  tv2 = tv2 + tv1\n        tv3 = Fp.add(tv2, Fp.ONE); // 5.  tv3 = tv2 + 1\n        tv3 = Fp.mul(tv3, B); // 6.  tv3 = B * tv3\n        tv4 = Fp.cmov(Z, Fp.neg(tv2), !Fp.eql(tv2, Fp.ZERO)); // 7.  tv4 = CMOV(Z, -tv2, tv2 != 0)\n        tv4 = Fp.mul(tv4, A); // 8.  tv4 = A * tv4\n        tv2 = Fp.sqr(tv3); // 9.  tv2 = tv3^2\n        tv6 = Fp.sqr(tv4); // 10. tv6 = tv4^2\n        tv5 = Fp.mul(tv6, A); // 11. tv5 = A * tv6\n        tv2 = Fp.add(tv2, tv5); // 12. tv2 = tv2 + tv5\n        tv2 = Fp.mul(tv2, tv3); // 13. tv2 = tv2 * tv3\n        tv6 = Fp.mul(tv6, tv4); // 14. tv6 = tv6 * tv4\n        tv5 = Fp.mul(tv6, B); // 15. tv5 = B * tv6\n        tv2 = Fp.add(tv2, tv5); // 16. tv2 = tv2 + tv5\n        x = Fp.mul(tv1, tv3); // 17.   x = tv1 * tv3\n        const { isValid, value } = sqrtRatio(tv2, tv6); // 18. (is_gx1_square, y1) = sqrt_ratio(tv2, tv6)\n        y = Fp.mul(tv1, u); // 19.   y = tv1 * u  -> Z * u^3 * y1\n        y = Fp.mul(y, value); // 20.   y = y * y1\n        x = Fp.cmov(x, tv3, isValid); // 21.   x = CMOV(x, tv3, is_gx1_square)\n        y = Fp.cmov(y, value, isValid); // 22.   y = CMOV(y, y1, is_gx1_square)\n        const e1 = Fp.isOdd(u) === Fp.isOdd(y); // 23.  e1 = sgn0(u) == sgn0(y)\n        y = Fp.cmov(Fp.neg(y), y, e1); // 24.   y = CMOV(-y, y, e1)\n        const tv4_inv = FpInvertBatch(Fp, [tv4], true)[0];\n        x = Fp.mul(x, tv4_inv); // 25.   x = x / tv4\n        return { x, y };\n    };\n}\n//# sourceMappingURL=weierstrass.js.map","/**\n * Utilities for short weierstrass curves, combined with noble-hashes.\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { weierstrass } from \"./abstract/weierstrass.js\";\n/** connects noble-curves to noble-hashes */\nexport function getHash(hash) {\n    return { hash };\n}\nexport function createCurve(curveDef, defHash) {\n    const create = (hash) => weierstrass({ ...curveDef, hash: hash });\n    return { ...create(defHash), create };\n}\n//# sourceMappingURL=_shortw_utils.js.map","/**\n * SECG secp256k1. See [pdf](https://www.secg.org/sec2-v2.pdf).\n *\n * Belongs to Koblitz curves: it has efficiently-computable GLV endomorphism ψ,\n * check out {@link EndomorphismOpts}. Seems to be rigid (not backdoored).\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { sha256 } from '@noble/hashes/sha2.js';\nimport { randomBytes } from '@noble/hashes/utils.js';\nimport { createCurve } from \"./_shortw_utils.js\";\nimport { createHasher, isogenyMap, } from \"./abstract/hash-to-curve.js\";\nimport { Field, mod, pow2 } from \"./abstract/modular.js\";\nimport { mapToCurveSimpleSWU, } from \"./abstract/weierstrass.js\";\nimport { aInRange, bytesToNumberBE, concatBytes, ensureBytes, inRange, numberToBytesBE, } from \"./utils.js\";\n// Seems like generator was produced from some seed:\n// `Point.BASE.multiply(Point.Fn.inv(2n, N)).toAffine().x`\n// // gives short x 0x3b78ce563f89a0ed9414f5aa28ad0d96d6795f9c63n\nconst secp256k1_CURVE = {\n    p: BigInt('0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f'),\n    n: BigInt('0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141'),\n    h: BigInt(1),\n    a: BigInt(0),\n    b: BigInt(7),\n    Gx: BigInt('0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798'),\n    Gy: BigInt('0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8'),\n};\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst divNearest = (a, b) => (a + b / _2n) / b;\n/**\n * √n = n^((p+1)/4) for fields p = 3 mod 4. We unwrap the loop and multiply bit-by-bit.\n * (P+1n/4n).toString(2) would produce bits [223x 1, 0, 22x 1, 4x 0, 11, 00]\n */\nfunction sqrtMod(y) {\n    const P = secp256k1_CURVE.p;\n    // prettier-ignore\n    const _3n = BigInt(3), _6n = BigInt(6), _11n = BigInt(11), _22n = BigInt(22);\n    // prettier-ignore\n    const _23n = BigInt(23), _44n = BigInt(44), _88n = BigInt(88);\n    const b2 = (y * y * y) % P; // x^3, 11\n    const b3 = (b2 * b2 * y) % P; // x^7\n    const b6 = (pow2(b3, _3n, P) * b3) % P;\n    const b9 = (pow2(b6, _3n, P) * b3) % P;\n    const b11 = (pow2(b9, _2n, P) * b2) % P;\n    const b22 = (pow2(b11, _11n, P) * b11) % P;\n    const b44 = (pow2(b22, _22n, P) * b22) % P;\n    const b88 = (pow2(b44, _44n, P) * b44) % P;\n    const b176 = (pow2(b88, _88n, P) * b88) % P;\n    const b220 = (pow2(b176, _44n, P) * b44) % P;\n    const b223 = (pow2(b220, _3n, P) * b3) % P;\n    const t1 = (pow2(b223, _23n, P) * b22) % P;\n    const t2 = (pow2(t1, _6n, P) * b2) % P;\n    const root = pow2(t2, _2n, P);\n    if (!Fpk1.eql(Fpk1.sqr(root), y))\n        throw new Error('Cannot find square root');\n    return root;\n}\nconst Fpk1 = Field(secp256k1_CURVE.p, undefined, undefined, { sqrt: sqrtMod });\n/**\n * secp256k1 curve, ECDSA and ECDH methods.\n *\n * Field: `2n**256n - 2n**32n - 2n**9n - 2n**8n - 2n**7n - 2n**6n - 2n**4n - 1n`\n *\n * @example\n * ```js\n * import { secp256k1 } from '@noble/curves/secp256k1';\n * const priv = secp256k1.utils.randomPrivateKey();\n * const pub = secp256k1.getPublicKey(priv);\n * const msg = new Uint8Array(32).fill(1); // message hash (not message) in ecdsa\n * const sig = secp256k1.sign(msg, priv); // `{prehash: true}` option is available\n * const isValid = secp256k1.verify(sig, msg, pub) === true;\n * ```\n */\nexport const secp256k1 = createCurve({\n    ...secp256k1_CURVE,\n    Fp: Fpk1,\n    lowS: true, // Allow only low-S signatures by default in sign() and verify()\n    endo: {\n        // Endomorphism, see above\n        beta: BigInt('0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee'),\n        splitScalar: (k) => {\n            const n = secp256k1_CURVE.n;\n            const a1 = BigInt('0x3086d221a7d46bcde86c90e49284eb15');\n            const b1 = -_1n * BigInt('0xe4437ed6010e88286f547fa90abfe4c3');\n            const a2 = BigInt('0x114ca50f7a8e2f3f657c1108d9d44cfd8');\n            const b2 = a1;\n            const POW_2_128 = BigInt('0x100000000000000000000000000000000'); // (2n**128n).toString(16)\n            const c1 = divNearest(b2 * k, n);\n            const c2 = divNearest(-b1 * k, n);\n            let k1 = mod(k - c1 * a1 - c2 * a2, n);\n            let k2 = mod(-c1 * b1 - c2 * b2, n);\n            const k1neg = k1 > POW_2_128;\n            const k2neg = k2 > POW_2_128;\n            if (k1neg)\n                k1 = n - k1;\n            if (k2neg)\n                k2 = n - k2;\n            if (k1 > POW_2_128 || k2 > POW_2_128) {\n                throw new Error('splitScalar: Endomorphism failed, k=' + k);\n            }\n            return { k1neg, k1, k2neg, k2 };\n        },\n    },\n}, sha256);\n// Schnorr signatures are superior to ECDSA from above. Below is Schnorr-specific BIP0340 code.\n// https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki\n/** An object mapping tags to their tagged hash prefix of [SHA256(tag) | SHA256(tag)] */\nconst TAGGED_HASH_PREFIXES = {};\nfunction taggedHash(tag, ...messages) {\n    let tagP = TAGGED_HASH_PREFIXES[tag];\n    if (tagP === undefined) {\n        const tagH = sha256(Uint8Array.from(tag, (c) => c.charCodeAt(0)));\n        tagP = concatBytes(tagH, tagH);\n        TAGGED_HASH_PREFIXES[tag] = tagP;\n    }\n    return sha256(concatBytes(tagP, ...messages));\n}\n// ECDSA compact points are 33-byte. Schnorr is 32: we strip first byte 0x02 or 0x03\nconst pointToBytes = (point) => point.toBytes(true).slice(1);\nconst numTo32b = (n) => numberToBytesBE(n, 32);\nconst modP = (x) => mod(x, secp256k1_CURVE.p);\nconst modN = (x) => mod(x, secp256k1_CURVE.n);\nconst Point = /* @__PURE__ */ (() => secp256k1.Point)();\nconst hasEven = (y) => y % _2n === _0n;\n// Calculate point, scalar and bytes\nfunction schnorrGetExtPubKey(priv) {\n    let d_ = secp256k1.utils.normPrivateKeyToScalar(priv); // same method executed in fromPrivateKey\n    let p = Point.fromPrivateKey(d_); // P = d'⋅G; 0 < d' < n check is done inside\n    const scalar = hasEven(p.y) ? d_ : modN(-d_);\n    return { scalar: scalar, bytes: pointToBytes(p) };\n}\n/**\n * lift_x from BIP340. Convert 32-byte x coordinate to elliptic curve point.\n * @returns valid point checked for being on-curve\n */\nfunction lift_x(x) {\n    aInRange('x', x, _1n, secp256k1_CURVE.p); // Fail if x ≥ p.\n    const xx = modP(x * x);\n    const c = modP(xx * x + BigInt(7)); // Let c = x³ + 7 mod p.\n    let y = sqrtMod(c); // Let y = c^(p+1)/4 mod p.\n    if (!hasEven(y))\n        y = modP(-y); // Return the unique point P such that x(P) = x and\n    const p = Point.fromAffine({ x, y }); // y(P) = y if y mod 2 = 0 or y(P) = p-y otherwise.\n    p.assertValidity();\n    return p;\n}\nconst num = bytesToNumberBE;\n/**\n * Create tagged hash, convert it to bigint, reduce modulo-n.\n */\nfunction challenge(...args) {\n    return modN(num(taggedHash('BIP0340/challenge', ...args)));\n}\n/**\n * Schnorr public key is just `x` coordinate of Point as per BIP340.\n */\nfunction schnorrGetPublicKey(privateKey) {\n    return schnorrGetExtPubKey(privateKey).bytes; // d'=int(sk). Fail if d'=0 or d'≥n. Ret bytes(d'⋅G)\n}\n/**\n * Creates Schnorr signature as per BIP340. Verifies itself before returning anything.\n * auxRand is optional and is not the sole source of k generation: bad CSPRNG won't be dangerous.\n */\nfunction schnorrSign(message, privateKey, auxRand = randomBytes(32)) {\n    const m = ensureBytes('message', message);\n    const { bytes: px, scalar: d } = schnorrGetExtPubKey(privateKey); // checks for isWithinCurveOrder\n    const a = ensureBytes('auxRand', auxRand, 32); // Auxiliary random data a: a 32-byte array\n    const t = numTo32b(d ^ num(taggedHash('BIP0340/aux', a))); // Let t be the byte-wise xor of bytes(d) and hash/aux(a)\n    const rand = taggedHash('BIP0340/nonce', t, px, m); // Let rand = hash/nonce(t || bytes(P) || m)\n    const k_ = modN(num(rand)); // Let k' = int(rand) mod n\n    if (k_ === _0n)\n        throw new Error('sign failed: k is zero'); // Fail if k' = 0.\n    const { bytes: rx, scalar: k } = schnorrGetExtPubKey(k_); // Let R = k'⋅G.\n    const e = challenge(rx, px, m); // Let e = int(hash/challenge(bytes(R) || bytes(P) || m)) mod n.\n    const sig = new Uint8Array(64); // Let sig = bytes(R) || bytes((k + ed) mod n).\n    sig.set(rx, 0);\n    sig.set(numTo32b(modN(k + e * d)), 32);\n    // If Verify(bytes(P), m, sig) (see below) returns failure, abort\n    if (!schnorrVerify(sig, m, px))\n        throw new Error('sign: Invalid signature produced');\n    return sig;\n}\n/**\n * Verifies Schnorr signature.\n * Will swallow errors & return false except for initial type validation of arguments.\n */\nfunction schnorrVerify(signature, message, publicKey) {\n    const sig = ensureBytes('signature', signature, 64);\n    const m = ensureBytes('message', message);\n    const pub = ensureBytes('publicKey', publicKey, 32);\n    try {\n        const P = lift_x(num(pub)); // P = lift_x(int(pk)); fail if that fails\n        const r = num(sig.subarray(0, 32)); // Let r = int(sig[0:32]); fail if r ≥ p.\n        if (!inRange(r, _1n, secp256k1_CURVE.p))\n            return false;\n        const s = num(sig.subarray(32, 64)); // Let s = int(sig[32:64]); fail if s ≥ n.\n        if (!inRange(s, _1n, secp256k1_CURVE.n))\n            return false;\n        const e = challenge(numTo32b(r), pointToBytes(P), m); // int(challenge(bytes(r)||bytes(P)||m))%n\n        // R = s⋅G - e⋅P, where -eP == (n-e)P\n        const R = Point.BASE.multiplyUnsafe(s).add(P.multiplyUnsafe(modN(-e)));\n        const { x, y } = R.toAffine();\n        // Fail if is_infinite(R) / not has_even_y(R) / x(R) ≠ r.\n        if (R.is0() || !hasEven(y) || x !== r)\n            return false;\n        return true;\n    }\n    catch (error) {\n        return false;\n    }\n}\n/**\n * Schnorr signatures over secp256k1.\n * https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki\n * @example\n * ```js\n * import { schnorr } from '@noble/curves/secp256k1';\n * const priv = schnorr.utils.randomPrivateKey();\n * const pub = schnorr.getPublicKey(priv);\n * const msg = new TextEncoder().encode('hello');\n * const sig = schnorr.sign(msg, priv);\n * const isValid = schnorr.verify(sig, msg, pub);\n * ```\n */\nexport const schnorr = /* @__PURE__ */ (() => ({\n    getPublicKey: schnorrGetPublicKey,\n    sign: schnorrSign,\n    verify: schnorrVerify,\n    utils: {\n        randomPrivateKey: secp256k1.utils.randomPrivateKey,\n        lift_x,\n        pointToBytes,\n        numberToBytesBE,\n        bytesToNumberBE,\n        taggedHash,\n        mod,\n    },\n}))();\nconst isoMap = /* @__PURE__ */ (() => isogenyMap(Fpk1, [\n    // xNum\n    [\n        '0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa8c7',\n        '0x7d3d4c80bc321d5b9f315cea7fd44c5d595d2fc0bf63b92dfff1044f17c6581',\n        '0x534c328d23f234e6e2a413deca25caece4506144037c40314ecbd0b53d9dd262',\n        '0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa88c',\n    ],\n    // xDen\n    [\n        '0xd35771193d94918a9ca34ccbb7b640dd86cd409542f8487d9fe6b745781eb49b',\n        '0xedadc6f64383dc1df7c4b2d51b54225406d36b641f5e41bbc52a56612a8c6d14',\n        '0x0000000000000000000000000000000000000000000000000000000000000001', // LAST 1\n    ],\n    // yNum\n    [\n        '0x4bda12f684bda12f684bda12f684bda12f684bda12f684bda12f684b8e38e23c',\n        '0xc75e0c32d5cb7c0fa9d0a54b12a0a6d5647ab046d686da6fdffc90fc201d71a3',\n        '0x29a6194691f91a73715209ef6512e576722830a201be2018a765e85a9ecee931',\n        '0x2f684bda12f684bda12f684bda12f684bda12f684bda12f684bda12f38e38d84',\n    ],\n    // yDen\n    [\n        '0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffff93b',\n        '0x7a06534bb8bdb49fd5e9e6632722c2989467c1bfc8e8d978dfb425d2685c2573',\n        '0x6484aa716545ca2cf3a70c3fa8fe337e0a3d21162f0d6299a7bf8192bfd2a76f',\n        '0x0000000000000000000000000000000000000000000000000000000000000001', // LAST 1\n    ],\n].map((i) => i.map((j) => BigInt(j)))))();\nconst mapSWU = /* @__PURE__ */ (() => mapToCurveSimpleSWU(Fpk1, {\n    A: BigInt('0x3f8731abdd661adca08a5558f0f5d272e953d363cb6f0e5d405447c01a444533'),\n    B: BigInt('1771'),\n    Z: Fpk1.create(BigInt('-11')),\n}))();\n/** Hashing / encoding to secp256k1 points / field. RFC 9380 methods. */\nexport const secp256k1_hasher = /* @__PURE__ */ (() => createHasher(secp256k1.Point, (scalars) => {\n    const { x, y } = mapSWU(Fpk1.create(scalars[0]));\n    return isoMap(x, y);\n}, {\n    DST: 'secp256k1_XMD:SHA-256_SSWU_RO_',\n    encodeDST: 'secp256k1_XMD:SHA-256_SSWU_NU_',\n    p: Fpk1.ORDER,\n    m: 1,\n    k: 128,\n    expand: 'xmd',\n    hash: sha256,\n}))();\nexport const hashToCurve = /* @__PURE__ */ (() => secp256k1_hasher.hashToCurve)();\nexport const encodeToCurve = /* @__PURE__ */ (() => secp256k1_hasher.encodeToCurve)();\n//# sourceMappingURL=secp256k1.js.map","import { AbiFunctionNotFoundError, AbiFunctionOutputsNotFoundError, } from '../../errors/abi.js';\nimport { decodeAbiParameters, } from './decodeAbiParameters.js';\nimport { getAbiItem } from './getAbiItem.js';\nconst docsPath = '/docs/contract/decodeFunctionResult';\nexport function decodeFunctionResult(parameters) {\n    const { abi, args, functionName, data } = parameters;\n    let abiItem = abi[0];\n    if (functionName) {\n        const item = getAbiItem({ abi, args, name: functionName });\n        if (!item)\n            throw new AbiFunctionNotFoundError(functionName, { docsPath });\n        abiItem = item;\n    }\n    if (abiItem.type !== 'function')\n        throw new AbiFunctionNotFoundError(undefined, { docsPath });\n    if (!abiItem.outputs)\n        throw new AbiFunctionOutputsNotFoundError(abiItem.name, { docsPath });\n    const values = decodeAbiParameters(abiItem.outputs, data);\n    if (values && values.length > 1)\n        return values;\n    if (values && values.length === 1)\n        return values[0];\n    return undefined;\n}\n//# sourceMappingURL=decodeFunctionResult.js.map","import { AbiFunctionNotFoundError, } from '../../errors/abi.js';\nimport { toFunctionSelector, } from '../hash/toFunctionSelector.js';\nimport { formatAbiItem } from './formatAbiItem.js';\nimport { getAbiItem } from './getAbiItem.js';\nconst docsPath = '/docs/contract/encodeFunctionData';\nexport function prepareEncodeFunctionData(parameters) {\n    const { abi, args, functionName } = parameters;\n    let abiItem = abi[0];\n    if (functionName) {\n        const item = getAbiItem({\n            abi,\n            args,\n            name: functionName,\n        });\n        if (!item)\n            throw new AbiFunctionNotFoundError(functionName, { docsPath });\n        abiItem = item;\n    }\n    if (abiItem.type !== 'function')\n        throw new AbiFunctionNotFoundError(undefined, { docsPath });\n    return {\n        abi: [abiItem],\n        functionName: toFunctionSelector(formatAbiItem(abiItem)),\n    };\n}\n//# sourceMappingURL=prepareEncodeFunctionData.js.map","import { concatHex } from '../data/concat.js';\nimport { encodeAbiParameters, } from './encodeAbiParameters.js';\nimport { prepareEncodeFunctionData } from './prepareEncodeFunctionData.js';\nexport function encodeFunctionData(parameters) {\n    const { args } = parameters;\n    const { abi, functionName } = (() => {\n        if (parameters.abi.length === 1 &&\n            parameters.functionName?.startsWith('0x'))\n            return parameters;\n        return prepareEncodeFunctionData(parameters);\n    })();\n    const abiItem = abi[0];\n    const signature = functionName;\n    const data = 'inputs' in abiItem && abiItem.inputs\n        ? encodeAbiParameters(abiItem.inputs, args ?? [])\n        : undefined;\n    return concatHex([signature, data ?? '0x']);\n}\n//# sourceMappingURL=encodeFunctionData.js.map","import { AbiDecodingZeroDataError } from '../../errors/abi.js';\nimport { BaseError } from '../../errors/base.js';\nimport { ContractFunctionExecutionError, ContractFunctionRevertedError, ContractFunctionZeroDataError, RawContractError, } from '../../errors/contract.js';\nimport { RpcRequestError } from '../../errors/request.js';\nimport { InternalRpcError } from '../../errors/rpc.js';\nconst EXECUTION_REVERTED_ERROR_CODE = 3;\nexport function getContractError(err, { abi, address, args, docsPath, functionName, sender, }) {\n    const error = (err instanceof RawContractError\n        ? err\n        : err instanceof BaseError\n            ? err.walk((err) => 'data' in err) || err.walk()\n            : {});\n    const { code, data, details, message, shortMessage } = error;\n    const cause = (() => {\n        if (err instanceof AbiDecodingZeroDataError)\n            return new ContractFunctionZeroDataError({ functionName });\n        if ([EXECUTION_REVERTED_ERROR_CODE, InternalRpcError.code].includes(code) &&\n            (data || details || message || shortMessage)) {\n            return new ContractFunctionRevertedError({\n                abi,\n                data: typeof data === 'object' ? data.data : data,\n                functionName,\n                message: error instanceof RpcRequestError\n                    ? details\n                    : (shortMessage ?? message),\n            });\n        }\n        return err;\n    })();\n    return new ContractFunctionExecutionError(cause, {\n        abi,\n        args,\n        contractAddress: address,\n        docsPath,\n        functionName,\n        sender,\n    });\n}\n//# sourceMappingURL=getContractError.js.map","/**\n * Retrieves and returns an action from the client (if exists), and falls\n * back to the tree-shakable action.\n *\n * Useful for extracting overridden actions from a client (ie. if a consumer\n * wants to override the `sendTransaction` implementation).\n */\nexport function getAction(client, actionFn, \n// Some minifiers drop `Function.prototype.name`, or replace it with short letters,\n// meaning that `actionFn.name` will not always work. For that case, the consumer\n// needs to pass the name explicitly.\nname) {\n    const action_implicit = client[actionFn.name];\n    if (typeof action_implicit === 'function')\n        return action_implicit;\n    const action_explicit = client[name];\n    if (typeof action_explicit === 'function')\n        return action_explicit;\n    return (params) => actionFn(client, params);\n}\n//# sourceMappingURL=getAction.js.map","import * as Hex from './Hex.js';\n/**\n * Converts a {@link ox#Withdrawal.Rpc} to an {@link ox#Withdrawal.Withdrawal}.\n *\n * @example\n * ```ts twoslash\n * import { Withdrawal } from 'ox'\n *\n * const withdrawal = Withdrawal.fromRpc({\n *   address: '0x00000000219ab540356cBB839Cbe05303d7705Fa',\n *   amount: '0x620323',\n *   index: '0x0',\n *   validatorIndex: '0x1',\n * })\n * // @log: {\n * // @log:   address: '0x00000000219ab540356cBB839Cbe05303d7705Fa',\n * // @log:   amount: 6423331n,\n * // @log:   index: 0,\n * // @log:   validatorIndex: 1\n * // @log: }\n * ```\n *\n * @param withdrawal - The RPC withdrawal to convert.\n * @returns An instantiated {@link ox#Withdrawal.Withdrawal}.\n */\nexport function fromRpc(withdrawal) {\n    return {\n        ...withdrawal,\n        amount: BigInt(withdrawal.amount),\n        index: Number(withdrawal.index),\n        validatorIndex: Number(withdrawal.validatorIndex),\n    };\n}\n/**\n * Converts a {@link ox#Withdrawal.Withdrawal} to an {@link ox#Withdrawal.Rpc}.\n *\n * @example\n * ```ts twoslash\n * import { Withdrawal } from 'ox'\n *\n * const withdrawal = Withdrawal.toRpc({\n *   address: '0x00000000219ab540356cBB839Cbe05303d7705Fa',\n *   amount: 6423331n,\n *   index: 0,\n *   validatorIndex: 1,\n * })\n * // @log: {\n * // @log:   address: '0x00000000219ab540356cBB839Cbe05303d7705Fa',\n * // @log:   amount: '0x620323',\n * // @log:   index: '0x0',\n * // @log:   validatorIndex: '0x1',\n * // @log: }\n * ```\n *\n * @param withdrawal - The Withdrawal to convert.\n * @returns An RPC Withdrawal.\n */\nexport function toRpc(withdrawal) {\n    return {\n        address: withdrawal.address,\n        amount: Hex.fromNumber(withdrawal.amount),\n        index: Hex.fromNumber(withdrawal.index),\n        validatorIndex: Hex.fromNumber(withdrawal.validatorIndex),\n    };\n}\n//# sourceMappingURL=Withdrawal.js.map","import * as Hex from './Hex.js';\nimport * as Withdrawal from './Withdrawal.js';\n/**\n * Converts an {@link ox#BlockOverrides.Rpc} to an {@link ox#BlockOverrides.BlockOverrides}.\n *\n * @example\n * ```ts twoslash\n * import { BlockOverrides } from 'ox'\n *\n * const blockOverrides = BlockOverrides.fromRpc({\n *   baseFeePerGas: '0x1',\n *   blobBaseFee: '0x2',\n *   feeRecipient: '0x0000000000000000000000000000000000000000',\n *   gasLimit: '0x4',\n *   number: '0x5',\n *   prevRandao: '0x6',\n *   time: '0x1234567890',\n *   withdrawals: [\n *     {\n *       address: '0x0000000000000000000000000000000000000000',\n *       amount: '0x1',\n *       index: '0x0',\n *       validatorIndex: '0x1',\n *     },\n *   ],\n * })\n * ```\n *\n * @param rpcBlockOverrides - The RPC block overrides to convert.\n * @returns An instantiated {@link ox#BlockOverrides.BlockOverrides}.\n */\nexport function fromRpc(rpcBlockOverrides) {\n    return {\n        ...(rpcBlockOverrides.baseFeePerGas && {\n            baseFeePerGas: BigInt(rpcBlockOverrides.baseFeePerGas),\n        }),\n        ...(rpcBlockOverrides.blobBaseFee && {\n            blobBaseFee: BigInt(rpcBlockOverrides.blobBaseFee),\n        }),\n        ...(rpcBlockOverrides.feeRecipient && {\n            feeRecipient: rpcBlockOverrides.feeRecipient,\n        }),\n        ...(rpcBlockOverrides.gasLimit && {\n            gasLimit: BigInt(rpcBlockOverrides.gasLimit),\n        }),\n        ...(rpcBlockOverrides.number && {\n            number: BigInt(rpcBlockOverrides.number),\n        }),\n        ...(rpcBlockOverrides.prevRandao && {\n            prevRandao: BigInt(rpcBlockOverrides.prevRandao),\n        }),\n        ...(rpcBlockOverrides.time && {\n            time: BigInt(rpcBlockOverrides.time),\n        }),\n        ...(rpcBlockOverrides.withdrawals && {\n            withdrawals: rpcBlockOverrides.withdrawals.map(Withdrawal.fromRpc),\n        }),\n    };\n}\n/**\n * Converts an {@link ox#BlockOverrides.BlockOverrides} to an {@link ox#BlockOverrides.Rpc}.\n *\n * @example\n * ```ts twoslash\n * import { BlockOverrides } from 'ox'\n *\n * const blockOverrides = BlockOverrides.toRpc({\n *   baseFeePerGas: 1n,\n *   blobBaseFee: 2n,\n *   feeRecipient: '0x0000000000000000000000000000000000000000',\n *   gasLimit: 4n,\n *   number: 5n,\n *   prevRandao: 6n,\n *   time: 78187493520n,\n *   withdrawals: [\n *     {\n *       address: '0x0000000000000000000000000000000000000000',\n *       amount: 1n,\n *       index: 0,\n *       validatorIndex: 1,\n *     },\n *   ],\n * })\n * ```\n *\n * @param blockOverrides - The block overrides to convert.\n * @returns An instantiated {@link ox#BlockOverrides.Rpc}.\n */\nexport function toRpc(blockOverrides) {\n    return {\n        ...(typeof blockOverrides.baseFeePerGas === 'bigint' && {\n            baseFeePerGas: Hex.fromNumber(blockOverrides.baseFeePerGas),\n        }),\n        ...(typeof blockOverrides.blobBaseFee === 'bigint' && {\n            blobBaseFee: Hex.fromNumber(blockOverrides.blobBaseFee),\n        }),\n        ...(typeof blockOverrides.feeRecipient === 'string' && {\n            feeRecipient: blockOverrides.feeRecipient,\n        }),\n        ...(typeof blockOverrides.gasLimit === 'bigint' && {\n            gasLimit: Hex.fromNumber(blockOverrides.gasLimit),\n        }),\n        ...(typeof blockOverrides.number === 'bigint' && {\n            number: Hex.fromNumber(blockOverrides.number),\n        }),\n        ...(typeof blockOverrides.prevRandao === 'bigint' && {\n            prevRandao: Hex.fromNumber(blockOverrides.prevRandao),\n        }),\n        ...(typeof blockOverrides.time === 'bigint' && {\n            time: Hex.fromNumber(blockOverrides.time),\n        }),\n        ...(blockOverrides.withdrawals && {\n            withdrawals: blockOverrides.withdrawals.map(Withdrawal.toRpc),\n        }),\n    };\n}\n//# sourceMappingURL=BlockOverrides.js.map","/* [Multicall3](https://github.com/mds1/multicall) */\nexport const multicall3Abi = [\n    {\n        inputs: [\n            {\n                components: [\n                    {\n                        name: 'target',\n                        type: 'address',\n                    },\n                    {\n                        name: 'allowFailure',\n                        type: 'bool',\n                    },\n                    {\n                        name: 'callData',\n                        type: 'bytes',\n                    },\n                ],\n                name: 'calls',\n                type: 'tuple[]',\n            },\n        ],\n        name: 'aggregate3',\n        outputs: [\n            {\n                components: [\n                    {\n                        name: 'success',\n                        type: 'bool',\n                    },\n                    {\n                        name: 'returnData',\n                        type: 'bytes',\n                    },\n                ],\n                name: 'returnData',\n                type: 'tuple[]',\n            },\n        ],\n        stateMutability: 'view',\n        type: 'function',\n    },\n];\nexport const batchGatewayAbi = [\n    {\n        name: 'query',\n        type: 'function',\n        stateMutability: 'view',\n        inputs: [\n            {\n                type: 'tuple[]',\n                name: 'queries',\n                components: [\n                    {\n                        type: 'address',\n                        name: 'sender',\n                    },\n                    {\n                        type: 'string[]',\n                        name: 'urls',\n                    },\n                    {\n                        type: 'bytes',\n                        name: 'data',\n                    },\n                ],\n            },\n        ],\n        outputs: [\n            {\n                type: 'bool[]',\n                name: 'failures',\n            },\n            {\n                type: 'bytes[]',\n                name: 'responses',\n            },\n        ],\n    },\n    {\n        name: 'HttpError',\n        type: 'error',\n        inputs: [\n            {\n                type: 'uint16',\n                name: 'status',\n            },\n            {\n                type: 'string',\n                name: 'message',\n            },\n        ],\n    },\n];\nconst universalResolverErrors = [\n    {\n        inputs: [],\n        name: 'ResolverNotFound',\n        type: 'error',\n    },\n    {\n        inputs: [],\n        name: 'ResolverWildcardNotSupported',\n        type: 'error',\n    },\n    {\n        inputs: [],\n        name: 'ResolverNotContract',\n        type: 'error',\n    },\n    {\n        inputs: [\n            {\n                name: 'returnData',\n                type: 'bytes',\n            },\n        ],\n        name: 'ResolverError',\n        type: 'error',\n    },\n    {\n        inputs: [\n            {\n                components: [\n                    {\n                        name: 'status',\n                        type: 'uint16',\n                    },\n                    {\n                        name: 'message',\n                        type: 'string',\n                    },\n                ],\n                name: 'errors',\n                type: 'tuple[]',\n            },\n        ],\n        name: 'HttpError',\n        type: 'error',\n    },\n];\nexport const universalResolverResolveAbi = [\n    ...universalResolverErrors,\n    {\n        name: 'resolve',\n        type: 'function',\n        stateMutability: 'view',\n        inputs: [\n            { name: 'name', type: 'bytes' },\n            { name: 'data', type: 'bytes' },\n        ],\n        outputs: [\n            { name: '', type: 'bytes' },\n            { name: 'address', type: 'address' },\n        ],\n    },\n    {\n        name: 'resolve',\n        type: 'function',\n        stateMutability: 'view',\n        inputs: [\n            { name: 'name', type: 'bytes' },\n            { name: 'data', type: 'bytes' },\n            { name: 'gateways', type: 'string[]' },\n        ],\n        outputs: [\n            { name: '', type: 'bytes' },\n            { name: 'address', type: 'address' },\n        ],\n    },\n];\nexport const universalResolverReverseAbi = [\n    ...universalResolverErrors,\n    {\n        name: 'reverse',\n        type: 'function',\n        stateMutability: 'view',\n        inputs: [{ type: 'bytes', name: 'reverseName' }],\n        outputs: [\n            { type: 'string', name: 'resolvedName' },\n            { type: 'address', name: 'resolvedAddress' },\n            { type: 'address', name: 'reverseResolver' },\n            { type: 'address', name: 'resolver' },\n        ],\n    },\n    {\n        name: 'reverse',\n        type: 'function',\n        stateMutability: 'view',\n        inputs: [\n            { type: 'bytes', name: 'reverseName' },\n            { type: 'string[]', name: 'gateways' },\n        ],\n        outputs: [\n            { type: 'string', name: 'resolvedName' },\n            { type: 'address', name: 'resolvedAddress' },\n            { type: 'address', name: 'reverseResolver' },\n            { type: 'address', name: 'resolver' },\n        ],\n    },\n];\nexport const textResolverAbi = [\n    {\n        name: 'text',\n        type: 'function',\n        stateMutability: 'view',\n        inputs: [\n            { name: 'name', type: 'bytes32' },\n            { name: 'key', type: 'string' },\n        ],\n        outputs: [{ name: '', type: 'string' }],\n    },\n];\nexport const addressResolverAbi = [\n    {\n        name: 'addr',\n        type: 'function',\n        stateMutability: 'view',\n        inputs: [{ name: 'name', type: 'bytes32' }],\n        outputs: [{ name: '', type: 'address' }],\n    },\n    {\n        name: 'addr',\n        type: 'function',\n        stateMutability: 'view',\n        inputs: [\n            { name: 'name', type: 'bytes32' },\n            { name: 'coinType', type: 'uint256' },\n        ],\n        outputs: [{ name: '', type: 'bytes' }],\n    },\n];\n// ERC-1271\n// isValidSignature(bytes32 hash, bytes signature) → bytes4 magicValue\n/** @internal */\nexport const smartAccountAbi = [\n    {\n        name: 'isValidSignature',\n        type: 'function',\n        stateMutability: 'view',\n        inputs: [\n            { name: 'hash', type: 'bytes32' },\n            { name: 'signature', type: 'bytes' },\n        ],\n        outputs: [{ name: '', type: 'bytes4' }],\n    },\n];\n// ERC-6492 - universal deployless signature validator contract\n// constructor(address _signer, bytes32 _hash, bytes _signature) → bytes4 returnValue\n// returnValue is either 0x1 (valid) or 0x0 (invalid)\nexport const universalSignatureValidatorAbi = [\n    {\n        inputs: [\n            {\n                name: '_signer',\n                type: 'address',\n            },\n            {\n                name: '_hash',\n                type: 'bytes32',\n            },\n            {\n                name: '_signature',\n                type: 'bytes',\n            },\n        ],\n        stateMutability: 'nonpayable',\n        type: 'constructor',\n    },\n    {\n        inputs: [\n            {\n                name: '_signer',\n                type: 'address',\n            },\n            {\n                name: '_hash',\n                type: 'bytes32',\n            },\n            {\n                name: '_signature',\n                type: 'bytes',\n            },\n        ],\n        outputs: [\n            {\n                type: 'bool',\n            },\n        ],\n        stateMutability: 'nonpayable',\n        type: 'function',\n        name: 'isValidSig',\n    },\n];\n/** [ERC-20 Token Standard](https://ethereum.org/en/developers/docs/standards/tokens/erc-20) */\nexport const erc20Abi = [\n    {\n        type: 'event',\n        name: 'Approval',\n        inputs: [\n            {\n                indexed: true,\n                name: 'owner',\n                type: 'address',\n            },\n            {\n                indexed: true,\n                name: 'spender',\n                type: 'address',\n            },\n            {\n                indexed: false,\n                name: 'value',\n                type: 'uint256',\n            },\n        ],\n    },\n    {\n        type: 'event',\n        name: 'Transfer',\n        inputs: [\n            {\n                indexed: true,\n                name: 'from',\n                type: 'address',\n            },\n            {\n                indexed: true,\n                name: 'to',\n                type: 'address',\n            },\n            {\n                indexed: false,\n                name: 'value',\n                type: 'uint256',\n            },\n        ],\n    },\n    {\n        type: 'function',\n        name: 'allowance',\n        stateMutability: 'view',\n        inputs: [\n            {\n                name: 'owner',\n                type: 'address',\n            },\n            {\n                name: 'spender',\n                type: 'address',\n            },\n        ],\n        outputs: [\n            {\n                type: 'uint256',\n            },\n        ],\n    },\n    {\n        type: 'function',\n        name: 'approve',\n        stateMutability: 'nonpayable',\n        inputs: [\n            {\n                name: 'spender',\n                type: 'address',\n            },\n            {\n                name: 'amount',\n                type: 'uint256',\n            },\n        ],\n        outputs: [\n            {\n                type: 'bool',\n            },\n        ],\n    },\n    {\n        type: 'function',\n        name: 'balanceOf',\n        stateMutability: 'view',\n        inputs: [\n            {\n                name: 'account',\n                type: 'address',\n            },\n        ],\n        outputs: [\n            {\n                type: 'uint256',\n            },\n        ],\n    },\n    {\n        type: 'function',\n        name: 'decimals',\n        stateMutability: 'view',\n        inputs: [],\n        outputs: [\n            {\n                type: 'uint8',\n            },\n        ],\n    },\n    {\n        type: 'function',\n        name: 'name',\n        stateMutability: 'view',\n        inputs: [],\n        outputs: [\n            {\n                type: 'string',\n            },\n        ],\n    },\n    {\n        type: 'function',\n        name: 'symbol',\n        stateMutability: 'view',\n        inputs: [],\n        outputs: [\n            {\n                type: 'string',\n            },\n        ],\n    },\n    {\n        type: 'function',\n        name: 'totalSupply',\n        stateMutability: 'view',\n        inputs: [],\n        outputs: [\n            {\n                type: 'uint256',\n            },\n        ],\n    },\n    {\n        type: 'function',\n        name: 'transfer',\n        stateMutability: 'nonpayable',\n        inputs: [\n            {\n                name: 'recipient',\n                type: 'address',\n            },\n            {\n                name: 'amount',\n                type: 'uint256',\n            },\n        ],\n        outputs: [\n            {\n                type: 'bool',\n            },\n        ],\n    },\n    {\n        type: 'function',\n        name: 'transferFrom',\n        stateMutability: 'nonpayable',\n        inputs: [\n            {\n                name: 'sender',\n                type: 'address',\n            },\n            {\n                name: 'recipient',\n                type: 'address',\n            },\n            {\n                name: 'amount',\n                type: 'uint256',\n            },\n        ],\n        outputs: [\n            {\n                type: 'bool',\n            },\n        ],\n    },\n];\n/**\n * [bytes32-flavored ERC-20](https://docs.makerdao.com/smart-contract-modules/mkr-module#4.-gotchas-potential-source-of-user-error)\n * for tokens (ie. Maker) that use bytes32 instead of string.\n */\nexport const erc20Abi_bytes32 = [\n    {\n        type: 'event',\n        name: 'Approval',\n        inputs: [\n            {\n                indexed: true,\n                name: 'owner',\n                type: 'address',\n            },\n            {\n                indexed: true,\n                name: 'spender',\n                type: 'address',\n            },\n            {\n                indexed: false,\n                name: 'value',\n                type: 'uint256',\n            },\n        ],\n    },\n    {\n        type: 'event',\n        name: 'Transfer',\n        inputs: [\n            {\n                indexed: true,\n                name: 'from',\n                type: 'address',\n            },\n            {\n                indexed: true,\n                name: 'to',\n                type: 'address',\n            },\n            {\n                indexed: false,\n                name: 'value',\n                type: 'uint256',\n            },\n        ],\n    },\n    {\n        type: 'function',\n        name: 'allowance',\n        stateMutability: 'view',\n        inputs: [\n            {\n                name: 'owner',\n                type: 'address',\n            },\n            {\n                name: 'spender',\n                type: 'address',\n            },\n        ],\n        outputs: [\n            {\n                type: 'uint256',\n            },\n        ],\n    },\n    {\n        type: 'function',\n        name: 'approve',\n        stateMutability: 'nonpayable',\n        inputs: [\n            {\n                name: 'spender',\n                type: 'address',\n            },\n            {\n                name: 'amount',\n                type: 'uint256',\n            },\n        ],\n        outputs: [\n            {\n                type: 'bool',\n            },\n        ],\n    },\n    {\n        type: 'function',\n        name: 'balanceOf',\n        stateMutability: 'view',\n        inputs: [\n            {\n                name: 'account',\n                type: 'address',\n            },\n        ],\n        outputs: [\n            {\n                type: 'uint256',\n            },\n        ],\n    },\n    {\n        type: 'function',\n        name: 'decimals',\n        stateMutability: 'view',\n        inputs: [],\n        outputs: [\n            {\n                type: 'uint8',\n            },\n        ],\n    },\n    {\n        type: 'function',\n        name: 'name',\n        stateMutability: 'view',\n        inputs: [],\n        outputs: [\n            {\n                type: 'bytes32',\n            },\n        ],\n    },\n    {\n        type: 'function',\n        name: 'symbol',\n        stateMutability: 'view',\n        inputs: [],\n        outputs: [\n            {\n                type: 'bytes32',\n            },\n        ],\n    },\n    {\n        type: 'function',\n        name: 'totalSupply',\n        stateMutability: 'view',\n        inputs: [],\n        outputs: [\n            {\n                type: 'uint256',\n            },\n        ],\n    },\n    {\n        type: 'function',\n        name: 'transfer',\n        stateMutability: 'nonpayable',\n        inputs: [\n            {\n                name: 'recipient',\n                type: 'address',\n            },\n            {\n                name: 'amount',\n                type: 'uint256',\n            },\n        ],\n        outputs: [\n            {\n                type: 'bool',\n            },\n        ],\n    },\n    {\n        type: 'function',\n        name: 'transferFrom',\n        stateMutability: 'nonpayable',\n        inputs: [\n            {\n                name: 'sender',\n                type: 'address',\n            },\n            {\n                name: 'recipient',\n                type: 'address',\n            },\n            {\n                name: 'amount',\n                type: 'uint256',\n            },\n        ],\n        outputs: [\n            {\n                type: 'bool',\n            },\n        ],\n    },\n];\n/** [ERC-1155 Multi Token Standard](https://ethereum.org/en/developers/docs/standards/tokens/erc-1155) */\nexport const erc1155Abi = [\n    {\n        inputs: [\n            {\n                internalType: 'address',\n                name: 'sender',\n                type: 'address',\n            },\n            {\n                internalType: 'uint256',\n                name: 'balance',\n                type: 'uint256',\n            },\n            {\n                internalType: 'uint256',\n                name: 'needed',\n                type: 'uint256',\n            },\n            {\n                internalType: 'uint256',\n                name: 'tokenId',\n                type: 'uint256',\n            },\n        ],\n        name: 'ERC1155InsufficientBalance',\n        type: 'error',\n    },\n    {\n        inputs: [\n            {\n                internalType: 'address',\n                name: 'approver',\n                type: 'address',\n            },\n        ],\n        name: 'ERC1155InvalidApprover',\n        type: 'error',\n    },\n    {\n        inputs: [\n            {\n                internalType: 'uint256',\n                name: 'idsLength',\n                type: 'uint256',\n            },\n            {\n                internalType: 'uint256',\n                name: 'valuesLength',\n                type: 'uint256',\n            },\n        ],\n        name: 'ERC1155InvalidArrayLength',\n        type: 'error',\n    },\n    {\n        inputs: [\n            {\n                internalType: 'address',\n                name: 'operator',\n                type: 'address',\n            },\n        ],\n        name: 'ERC1155InvalidOperator',\n        type: 'error',\n    },\n    {\n        inputs: [\n            {\n                internalType: 'address',\n                name: 'receiver',\n                type: 'address',\n            },\n        ],\n        name: 'ERC1155InvalidReceiver',\n        type: 'error',\n    },\n    {\n        inputs: [\n            {\n                internalType: 'address',\n                name: 'sender',\n                type: 'address',\n            },\n        ],\n        name: 'ERC1155InvalidSender',\n        type: 'error',\n    },\n    {\n        inputs: [\n            {\n                internalType: 'address',\n                name: 'operator',\n                type: 'address',\n            },\n            {\n                internalType: 'address',\n                name: 'owner',\n                type: 'address',\n            },\n        ],\n        name: 'ERC1155MissingApprovalForAll',\n        type: 'error',\n    },\n    {\n        anonymous: false,\n        inputs: [\n            {\n                indexed: true,\n                internalType: 'address',\n                name: 'account',\n                type: 'address',\n            },\n            {\n                indexed: true,\n                internalType: 'address',\n                name: 'operator',\n                type: 'address',\n            },\n            {\n                indexed: false,\n                internalType: 'bool',\n                name: 'approved',\n                type: 'bool',\n            },\n        ],\n        name: 'ApprovalForAll',\n        type: 'event',\n    },\n    {\n        anonymous: false,\n        inputs: [\n            {\n                indexed: true,\n                internalType: 'address',\n                name: 'operator',\n                type: 'address',\n            },\n            {\n                indexed: true,\n                internalType: 'address',\n                name: 'from',\n                type: 'address',\n            },\n            {\n                indexed: true,\n                internalType: 'address',\n                name: 'to',\n                type: 'address',\n            },\n            {\n                indexed: false,\n                internalType: 'uint256[]',\n                name: 'ids',\n                type: 'uint256[]',\n            },\n            {\n                indexed: false,\n                internalType: 'uint256[]',\n                name: 'values',\n                type: 'uint256[]',\n            },\n        ],\n        name: 'TransferBatch',\n        type: 'event',\n    },\n    {\n        anonymous: false,\n        inputs: [\n            {\n                indexed: true,\n                internalType: 'address',\n                name: 'operator',\n                type: 'address',\n            },\n            {\n                indexed: true,\n                internalType: 'address',\n                name: 'from',\n                type: 'address',\n            },\n            {\n                indexed: true,\n                internalType: 'address',\n                name: 'to',\n                type: 'address',\n            },\n            {\n                indexed: false,\n                internalType: 'uint256',\n                name: 'id',\n                type: 'uint256',\n            },\n            {\n                indexed: false,\n                internalType: 'uint256',\n                name: 'value',\n                type: 'uint256',\n            },\n        ],\n        name: 'TransferSingle',\n        type: 'event',\n    },\n    {\n        anonymous: false,\n        inputs: [\n            {\n                indexed: false,\n                internalType: 'string',\n                name: 'value',\n                type: 'string',\n            },\n            {\n                indexed: true,\n                internalType: 'uint256',\n                name: 'id',\n                type: 'uint256',\n            },\n        ],\n        name: 'URI',\n        type: 'event',\n    },\n    {\n        inputs: [\n            {\n                internalType: 'address',\n                name: 'account',\n                type: 'address',\n            },\n            {\n                internalType: 'uint256',\n                name: 'id',\n                type: 'uint256',\n            },\n        ],\n        name: 'balanceOf',\n        outputs: [\n            {\n                internalType: 'uint256',\n                name: '',\n                type: 'uint256',\n            },\n        ],\n        stateMutability: 'view',\n        type: 'function',\n    },\n    {\n        inputs: [\n            {\n                internalType: 'address[]',\n                name: 'accounts',\n                type: 'address[]',\n            },\n            {\n                internalType: 'uint256[]',\n                name: 'ids',\n                type: 'uint256[]',\n            },\n        ],\n        name: 'balanceOfBatch',\n        outputs: [\n            {\n                internalType: 'uint256[]',\n                name: '',\n                type: 'uint256[]',\n            },\n        ],\n        stateMutability: 'view',\n        type: 'function',\n    },\n    {\n        inputs: [\n            {\n                internalType: 'address',\n                name: 'account',\n                type: 'address',\n            },\n            {\n                internalType: 'address',\n                name: 'operator',\n                type: 'address',\n            },\n        ],\n        name: 'isApprovedForAll',\n        outputs: [\n            {\n                internalType: 'bool',\n                name: '',\n                type: 'bool',\n            },\n        ],\n        stateMutability: 'view',\n        type: 'function',\n    },\n    {\n        inputs: [\n            {\n                internalType: 'address',\n                name: 'from',\n                type: 'address',\n            },\n            {\n                internalType: 'address',\n                name: 'to',\n                type: 'address',\n            },\n            {\n                internalType: 'uint256[]',\n                name: 'ids',\n                type: 'uint256[]',\n            },\n            {\n                internalType: 'uint256[]',\n                name: 'values',\n                type: 'uint256[]',\n            },\n            {\n                internalType: 'bytes',\n                name: 'data',\n                type: 'bytes',\n            },\n        ],\n        name: 'safeBatchTransferFrom',\n        outputs: [],\n        stateMutability: 'nonpayable',\n        type: 'function',\n    },\n    {\n        inputs: [\n            {\n                internalType: 'address',\n                name: 'from',\n                type: 'address',\n            },\n            {\n                internalType: 'address',\n                name: 'to',\n                type: 'address',\n            },\n            {\n                internalType: 'uint256',\n                name: 'id',\n                type: 'uint256',\n            },\n            {\n                internalType: 'uint256',\n                name: 'value',\n                type: 'uint256',\n            },\n            {\n                internalType: 'bytes',\n                name: 'data',\n                type: 'bytes',\n            },\n        ],\n        name: 'safeTransferFrom',\n        outputs: [],\n        stateMutability: 'nonpayable',\n        type: 'function',\n    },\n    {\n        inputs: [\n            {\n                internalType: 'address',\n                name: 'operator',\n                type: 'address',\n            },\n            {\n                internalType: 'bool',\n                name: 'approved',\n                type: 'bool',\n            },\n        ],\n        name: 'setApprovalForAll',\n        outputs: [],\n        stateMutability: 'nonpayable',\n        type: 'function',\n    },\n    {\n        inputs: [\n            {\n                internalType: 'bytes4',\n                name: 'interfaceId',\n                type: 'bytes4',\n            },\n        ],\n        name: 'supportsInterface',\n        outputs: [\n            {\n                internalType: 'bool',\n                name: '',\n                type: 'bool',\n            },\n        ],\n        stateMutability: 'view',\n        type: 'function',\n    },\n    {\n        inputs: [\n            {\n                internalType: 'uint256',\n                name: '',\n                type: 'uint256',\n            },\n        ],\n        name: 'uri',\n        outputs: [\n            {\n                internalType: 'string',\n                name: '',\n                type: 'string',\n            },\n        ],\n        stateMutability: 'view',\n        type: 'function',\n    },\n];\n/** [ERC-721 Non-Fungible Token Standard](https://ethereum.org/en/developers/docs/standards/tokens/erc-721) */\nexport const erc721Abi = [\n    {\n        type: 'event',\n        name: 'Approval',\n        inputs: [\n            {\n                indexed: true,\n                name: 'owner',\n                type: 'address',\n            },\n            {\n                indexed: true,\n                name: 'spender',\n                type: 'address',\n            },\n            {\n                indexed: true,\n                name: 'tokenId',\n                type: 'uint256',\n            },\n        ],\n    },\n    {\n        type: 'event',\n        name: 'ApprovalForAll',\n        inputs: [\n            {\n                indexed: true,\n                name: 'owner',\n                type: 'address',\n            },\n            {\n                indexed: true,\n                name: 'operator',\n                type: 'address',\n            },\n            {\n                indexed: false,\n                name: 'approved',\n                type: 'bool',\n            },\n        ],\n    },\n    {\n        type: 'event',\n        name: 'Transfer',\n        inputs: [\n            {\n                indexed: true,\n                name: 'from',\n                type: 'address',\n            },\n            {\n                indexed: true,\n                name: 'to',\n                type: 'address',\n            },\n            {\n                indexed: true,\n                name: 'tokenId',\n                type: 'uint256',\n            },\n        ],\n    },\n    {\n        type: 'function',\n        name: 'approve',\n        stateMutability: 'payable',\n        inputs: [\n            {\n                name: 'spender',\n                type: 'address',\n            },\n            {\n                name: 'tokenId',\n                type: 'uint256',\n            },\n        ],\n        outputs: [],\n    },\n    {\n        type: 'function',\n        name: 'balanceOf',\n        stateMutability: 'view',\n        inputs: [\n            {\n                name: 'account',\n                type: 'address',\n            },\n        ],\n        outputs: [\n            {\n                type: 'uint256',\n            },\n        ],\n    },\n    {\n        type: 'function',\n        name: 'getApproved',\n        stateMutability: 'view',\n        inputs: [\n            {\n                name: 'tokenId',\n                type: 'uint256',\n            },\n        ],\n        outputs: [\n            {\n                type: 'address',\n            },\n        ],\n    },\n    {\n        type: 'function',\n        name: 'isApprovedForAll',\n        stateMutability: 'view',\n        inputs: [\n            {\n                name: 'owner',\n                type: 'address',\n            },\n            {\n                name: 'operator',\n                type: 'address',\n            },\n        ],\n        outputs: [\n            {\n                type: 'bool',\n            },\n        ],\n    },\n    {\n        type: 'function',\n        name: 'name',\n        stateMutability: 'view',\n        inputs: [],\n        outputs: [\n            {\n                type: 'string',\n            },\n        ],\n    },\n    {\n        type: 'function',\n        name: 'ownerOf',\n        stateMutability: 'view',\n        inputs: [\n            {\n                name: 'tokenId',\n                type: 'uint256',\n            },\n        ],\n        outputs: [\n            {\n                name: 'owner',\n                type: 'address',\n            },\n        ],\n    },\n    {\n        type: 'function',\n        name: 'safeTransferFrom',\n        stateMutability: 'payable',\n        inputs: [\n            {\n                name: 'from',\n                type: 'address',\n            },\n            {\n                name: 'to',\n                type: 'address',\n            },\n            {\n                name: 'tokenId',\n                type: 'uint256',\n            },\n        ],\n        outputs: [],\n    },\n    {\n        type: 'function',\n        name: 'safeTransferFrom',\n        stateMutability: 'nonpayable',\n        inputs: [\n            {\n                name: 'from',\n                type: 'address',\n            },\n            {\n                name: 'to',\n                type: 'address',\n            },\n            {\n                name: 'id',\n                type: 'uint256',\n            },\n            {\n                name: 'data',\n                type: 'bytes',\n            },\n        ],\n        outputs: [],\n    },\n    {\n        type: 'function',\n        name: 'setApprovalForAll',\n        stateMutability: 'nonpayable',\n        inputs: [\n            {\n                name: 'operator',\n                type: 'address',\n            },\n            {\n                name: 'approved',\n                type: 'bool',\n            },\n        ],\n        outputs: [],\n    },\n    {\n        type: 'function',\n        name: 'symbol',\n        stateMutability: 'view',\n        inputs: [],\n        outputs: [\n            {\n                type: 'string',\n            },\n        ],\n    },\n    {\n        type: 'function',\n        name: 'tokenByIndex',\n        stateMutability: 'view',\n        inputs: [\n            {\n                name: 'index',\n                type: 'uint256',\n            },\n        ],\n        outputs: [\n            {\n                type: 'uint256',\n            },\n        ],\n    },\n    {\n        type: 'function',\n        name: 'tokenByIndex',\n        stateMutability: 'view',\n        inputs: [\n            {\n                name: 'owner',\n                type: 'address',\n            },\n            {\n                name: 'index',\n                type: 'uint256',\n            },\n        ],\n        outputs: [\n            {\n                name: 'tokenId',\n                type: 'uint256',\n            },\n        ],\n    },\n    {\n        type: 'function',\n        name: 'tokenURI',\n        stateMutability: 'view',\n        inputs: [\n            {\n                name: 'tokenId',\n                type: 'uint256',\n            },\n        ],\n        outputs: [\n            {\n                type: 'string',\n            },\n        ],\n    },\n    {\n        type: 'function',\n        name: 'totalSupply',\n        stateMutability: 'view',\n        inputs: [],\n        outputs: [\n            {\n                type: 'uint256',\n            },\n        ],\n    },\n    {\n        type: 'function',\n        name: 'transferFrom',\n        stateMutability: 'payable',\n        inputs: [\n            {\n                name: 'sender',\n                type: 'address',\n            },\n            {\n                name: 'recipient',\n                type: 'address',\n            },\n            {\n                name: 'tokenId',\n                type: 'uint256',\n            },\n        ],\n        outputs: [],\n    },\n];\n/** [ERC-4626 Tokenized Vaults Standard](https://ethereum.org/en/developers/docs/standards/tokens/erc-4626) */\nexport const erc4626Abi = [\n    {\n        anonymous: false,\n        inputs: [\n            {\n                indexed: true,\n                name: 'owner',\n                type: 'address',\n            },\n            {\n                indexed: true,\n                name: 'spender',\n                type: 'address',\n            },\n            {\n                indexed: false,\n                name: 'value',\n                type: 'uint256',\n            },\n        ],\n        name: 'Approval',\n        type: 'event',\n    },\n    {\n        anonymous: false,\n        inputs: [\n            {\n                indexed: true,\n                name: 'sender',\n                type: 'address',\n            },\n            {\n                indexed: true,\n                name: 'receiver',\n                type: 'address',\n            },\n            {\n                indexed: false,\n                name: 'assets',\n                type: 'uint256',\n            },\n            {\n                indexed: false,\n                name: 'shares',\n                type: 'uint256',\n            },\n        ],\n        name: 'Deposit',\n        type: 'event',\n    },\n    {\n        anonymous: false,\n        inputs: [\n            {\n                indexed: true,\n                name: 'from',\n                type: 'address',\n            },\n            {\n                indexed: true,\n                name: 'to',\n                type: 'address',\n            },\n            {\n                indexed: false,\n                name: 'value',\n                type: 'uint256',\n            },\n        ],\n        name: 'Transfer',\n        type: 'event',\n    },\n    {\n        anonymous: false,\n        inputs: [\n            {\n                indexed: true,\n                name: 'sender',\n                type: 'address',\n            },\n            {\n                indexed: true,\n                name: 'receiver',\n                type: 'address',\n            },\n            {\n                indexed: true,\n                name: 'owner',\n                type: 'address',\n            },\n            {\n                indexed: false,\n                name: 'assets',\n                type: 'uint256',\n            },\n            {\n                indexed: false,\n                name: 'shares',\n                type: 'uint256',\n            },\n        ],\n        name: 'Withdraw',\n        type: 'event',\n    },\n    {\n        inputs: [\n            {\n                name: 'owner',\n                type: 'address',\n            },\n            {\n                name: 'spender',\n                type: 'address',\n            },\n        ],\n        name: 'allowance',\n        outputs: [\n            {\n                type: 'uint256',\n            },\n        ],\n        stateMutability: 'view',\n        type: 'function',\n    },\n    {\n        inputs: [\n            {\n                name: 'spender',\n                type: 'address',\n            },\n            {\n                name: 'amount',\n                type: 'uint256',\n            },\n        ],\n        name: 'approve',\n        outputs: [\n            {\n                type: 'bool',\n            },\n        ],\n        stateMutability: 'nonpayable',\n        type: 'function',\n    },\n    {\n        inputs: [],\n        name: 'asset',\n        outputs: [\n            {\n                name: 'assetTokenAddress',\n                type: 'address',\n            },\n        ],\n        stateMutability: 'view',\n        type: 'function',\n    },\n    {\n        inputs: [\n            {\n                name: 'account',\n                type: 'address',\n            },\n        ],\n        name: 'balanceOf',\n        outputs: [\n            {\n                type: 'uint256',\n            },\n        ],\n        stateMutability: 'view',\n        type: 'function',\n    },\n    {\n        inputs: [\n            {\n                name: 'shares',\n                type: 'uint256',\n            },\n        ],\n        name: 'convertToAssets',\n        outputs: [\n            {\n                name: 'assets',\n                type: 'uint256',\n            },\n        ],\n        stateMutability: 'view',\n        type: 'function',\n    },\n    {\n        inputs: [\n            {\n                name: 'assets',\n                type: 'uint256',\n            },\n        ],\n        name: 'convertToShares',\n        outputs: [\n            {\n                name: 'shares',\n                type: 'uint256',\n            },\n        ],\n        stateMutability: 'view',\n        type: 'function',\n    },\n    {\n        inputs: [\n            {\n                name: 'assets',\n                type: 'uint256',\n            },\n            {\n                name: 'receiver',\n                type: 'address',\n            },\n        ],\n        name: 'deposit',\n        outputs: [\n            {\n                name: 'shares',\n                type: 'uint256',\n            },\n        ],\n        stateMutability: 'nonpayable',\n        type: 'function',\n    },\n    {\n        inputs: [\n            {\n                name: 'caller',\n                type: 'address',\n            },\n        ],\n        name: 'maxDeposit',\n        outputs: [\n            {\n                name: 'maxAssets',\n                type: 'uint256',\n            },\n        ],\n        stateMutability: 'view',\n        type: 'function',\n    },\n    {\n        inputs: [\n            {\n                name: 'caller',\n                type: 'address',\n            },\n        ],\n        name: 'maxMint',\n        outputs: [\n            {\n                name: 'maxShares',\n                type: 'uint256',\n            },\n        ],\n        stateMutability: 'view',\n        type: 'function',\n    },\n    {\n        inputs: [\n            {\n                name: 'owner',\n                type: 'address',\n            },\n        ],\n        name: 'maxRedeem',\n        outputs: [\n            {\n                name: 'maxShares',\n                type: 'uint256',\n            },\n        ],\n        stateMutability: 'view',\n        type: 'function',\n    },\n    {\n        inputs: [\n            {\n                name: 'owner',\n                type: 'address',\n            },\n        ],\n        name: 'maxWithdraw',\n        outputs: [\n            {\n                name: 'maxAssets',\n                type: 'uint256',\n            },\n        ],\n        stateMutability: 'view',\n        type: 'function',\n    },\n    {\n        inputs: [\n            {\n                name: 'shares',\n                type: 'uint256',\n            },\n            {\n                name: 'receiver',\n                type: 'address',\n            },\n        ],\n        name: 'mint',\n        outputs: [\n            {\n                name: 'assets',\n                type: 'uint256',\n            },\n        ],\n        stateMutability: 'nonpayable',\n        type: 'function',\n    },\n    {\n        inputs: [\n            {\n                name: 'assets',\n                type: 'uint256',\n            },\n        ],\n        name: 'previewDeposit',\n        outputs: [\n            {\n                name: 'shares',\n                type: 'uint256',\n            },\n        ],\n        stateMutability: 'view',\n        type: 'function',\n    },\n    {\n        inputs: [\n            {\n                name: 'shares',\n                type: 'uint256',\n            },\n        ],\n        name: 'previewMint',\n        outputs: [\n            {\n                name: 'assets',\n                type: 'uint256',\n            },\n        ],\n        stateMutability: 'view',\n        type: 'function',\n    },\n    {\n        inputs: [\n            {\n                name: 'shares',\n                type: 'uint256',\n            },\n        ],\n        name: 'previewRedeem',\n        outputs: [\n            {\n                name: 'assets',\n                type: 'uint256',\n            },\n        ],\n        stateMutability: 'view',\n        type: 'function',\n    },\n    {\n        inputs: [\n            {\n                name: 'assets',\n                type: 'uint256',\n            },\n        ],\n        name: 'previewWithdraw',\n        outputs: [\n            {\n                name: 'shares',\n                type: 'uint256',\n            },\n        ],\n        stateMutability: 'view',\n        type: 'function',\n    },\n    {\n        inputs: [\n            {\n                name: 'shares',\n                type: 'uint256',\n            },\n            {\n                name: 'receiver',\n                type: 'address',\n            },\n            {\n                name: 'owner',\n                type: 'address',\n            },\n        ],\n        name: 'redeem',\n        outputs: [\n            {\n                name: 'assets',\n                type: 'uint256',\n            },\n        ],\n        stateMutability: 'nonpayable',\n        type: 'function',\n    },\n    {\n        inputs: [],\n        name: 'totalAssets',\n        outputs: [\n            {\n                name: 'totalManagedAssets',\n                type: 'uint256',\n            },\n        ],\n        stateMutability: 'view',\n        type: 'function',\n    },\n    {\n        inputs: [],\n        name: 'totalSupply',\n        outputs: [\n            {\n                type: 'uint256',\n            },\n        ],\n        stateMutability: 'view',\n        type: 'function',\n    },\n    {\n        inputs: [\n            {\n                name: 'to',\n                type: 'address',\n            },\n            {\n                name: 'amount',\n                type: 'uint256',\n            },\n        ],\n        name: 'transfer',\n        outputs: [\n            {\n                type: 'bool',\n            },\n        ],\n        stateMutability: 'nonpayable',\n        type: 'function',\n    },\n    {\n        inputs: [\n            {\n                name: 'from',\n                type: 'address',\n            },\n            {\n                name: 'to',\n                type: 'address',\n            },\n            {\n                name: 'amount',\n                type: 'uint256',\n            },\n        ],\n        name: 'transferFrom',\n        outputs: [\n            {\n                type: 'bool',\n            },\n        ],\n        stateMutability: 'nonpayable',\n        type: 'function',\n    },\n    {\n        inputs: [\n            {\n                name: 'assets',\n                type: 'uint256',\n            },\n            {\n                name: 'receiver',\n                type: 'address',\n            },\n            {\n                name: 'owner',\n                type: 'address',\n            },\n        ],\n        name: 'withdraw',\n        outputs: [\n            {\n                name: 'shares',\n                type: 'uint256',\n            },\n        ],\n        stateMutability: 'nonpayable',\n        type: 'function',\n    },\n];\n//# sourceMappingURL=abis.js.map","export const aggregate3Signature = '0x82ad56cb';\n//# sourceMappingURL=contract.js.map","export const deploylessCallViaBytecodeBytecode = '0x608060405234801561001057600080fd5b5060405161018e38038061018e83398101604081905261002f91610124565b6000808351602085016000f59050803b61004857600080fd5b6000808351602085016000855af16040513d6000823e81610067573d81fd5b3d81f35b634e487b7160e01b600052604160045260246000fd5b600082601f83011261009257600080fd5b81516001600160401b038111156100ab576100ab61006b565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100d9576100d961006b565b6040528181528382016020018510156100f157600080fd5b60005b82811015610110576020818601810151838301820152016100f4565b506000918101602001919091529392505050565b6000806040838503121561013757600080fd5b82516001600160401b0381111561014d57600080fd5b61015985828601610081565b602085015190935090506001600160401b0381111561017757600080fd5b61018385828601610081565b915050925092905056fe';\nexport const deploylessCallViaFactoryBytecode = '0x608060405234801561001057600080fd5b506040516102c03803806102c083398101604081905261002f916101e6565b836001600160a01b03163b6000036100e457600080836001600160a01b03168360405161005c9190610270565b6000604051808303816000865af19150503d8060008114610099576040519150601f19603f3d011682016040523d82523d6000602084013e61009e565b606091505b50915091508115806100b857506001600160a01b0386163b155b156100e1578060405163101bb98d60e01b81526004016100d8919061028c565b60405180910390fd5b50505b6000808451602086016000885af16040513d6000823e81610103573d81fd5b3d81f35b80516001600160a01b038116811461011e57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561015457818101518382015260200161013c565b50506000910152565b600082601f83011261016e57600080fd5b81516001600160401b0381111561018757610187610123565b604051601f8201601f19908116603f011681016001600160401b03811182821017156101b5576101b5610123565b6040528181528382016020018510156101cd57600080fd5b6101de826020830160208701610139565b949350505050565b600080600080608085870312156101fc57600080fd5b61020585610107565b60208601519094506001600160401b0381111561022157600080fd5b61022d8782880161015d565b93505061023c60408601610107565b60608601519092506001600160401b0381111561025857600080fd5b6102648782880161015d565b91505092959194509250565b60008251610282818460208701610139565b9190910192915050565b60208152600082518060208401526102ab816040850160208701610139565b601f01601f1916919091016040019291505056fe';\nexport const universalSignatureValidatorByteCode = '0x608060405234801561001057600080fd5b5060405161069438038061069483398101604081905261002f9161051e565b600061003c848484610048565b9050806000526001601ff35b60007f64926492649264926492649264926492649264926492649264926492649264926100748361040c565b036101e7576000606080848060200190518101906100929190610577565b60405192955090935091506000906001600160a01b038516906100b69085906105dd565b6000604051808303816000865af19150503d80600081146100f3576040519150601f19603f3d011682016040523d82523d6000602084013e6100f8565b606091505b50509050876001600160a01b03163b60000361016057806101605760405162461bcd60e51b815260206004820152601e60248201527f5369676e617475726556616c696461746f723a206465706c6f796d656e74000060448201526064015b60405180910390fd5b604051630b135d3f60e11b808252906001600160a01b038a1690631626ba7e90610190908b9087906004016105f9565b602060405180830381865afa1580156101ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d19190610633565b6001600160e01b03191614945050505050610405565b6001600160a01b0384163b1561027a57604051630b135d3f60e11b808252906001600160a01b03861690631626ba7e9061022790879087906004016105f9565b602060405180830381865afa158015610244573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102689190610633565b6001600160e01b031916149050610405565b81516041146102df5760405162461bcd60e51b815260206004820152603a602482015260008051602061067483398151915260448201527f3a20696e76616c6964207369676e6174757265206c656e6774680000000000006064820152608401610157565b6102e7610425565b5060208201516040808401518451859392600091859190811061030c5761030c61065d565b016020015160f81c9050601b811480159061032b57508060ff16601c14155b1561038c5760405162461bcd60e51b815260206004820152603b602482015260008051602061067483398151915260448201527f3a20696e76616c6964207369676e617475726520762076616c756500000000006064820152608401610157565b60408051600081526020810180835289905260ff83169181019190915260608101849052608081018390526001600160a01b0389169060019060a0016020604051602081039080840390855afa1580156103ea573d6000803e3d6000fd5b505050602060405103516001600160a01b0316149450505050505b9392505050565b600060208251101561041d57600080fd5b508051015190565b60405180606001604052806003906020820280368337509192915050565b6001600160a01b038116811461045857600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561048c578181015183820152602001610474565b50506000910152565b600082601f8301126104a657600080fd5b81516001600160401b038111156104bf576104bf61045b565b604051601f8201601f19908116603f011681016001600160401b03811182821017156104ed576104ed61045b565b60405281815283820160200185101561050557600080fd5b610516826020830160208701610471565b949350505050565b60008060006060848603121561053357600080fd5b835161053e81610443565b6020850151604086015191945092506001600160401b0381111561056157600080fd5b61056d86828701610495565b9150509250925092565b60008060006060848603121561058c57600080fd5b835161059781610443565b60208501519093506001600160401b038111156105b357600080fd5b6105bf86828701610495565b604086015190935090506001600160401b0381111561056157600080fd5b600082516105ef818460208701610471565b9190910192915050565b828152604060208201526000825180604084015261061e816060850160208701610471565b601f01601f1916919091016060019392505050565b60006020828403121561064557600080fd5b81516001600160e01b03198116811461040557600080fd5b634e487b7160e01b600052603260045260246000fdfe5369676e617475726556616c696461746f72237265636f7665725369676e6572';\n//# sourceMappingURL=contracts.js.map","import { AbiConstructorNotFoundError, AbiConstructorParamsNotFoundError, } from '../../errors/abi.js';\nimport { concatHex } from '../data/concat.js';\nimport { encodeAbiParameters, } from './encodeAbiParameters.js';\nconst docsPath = '/docs/contract/encodeDeployData';\nexport function encodeDeployData(parameters) {\n    const { abi, args, bytecode } = parameters;\n    if (!args || args.length === 0)\n        return bytecode;\n    const description = abi.find((x) => 'type' in x && x.type === 'constructor');\n    if (!description)\n        throw new AbiConstructorNotFoundError({ docsPath });\n    if (!('inputs' in description))\n        throw new AbiConstructorParamsNotFoundError({ docsPath });\n    if (!description.inputs || description.inputs.length === 0)\n        throw new AbiConstructorParamsNotFoundError({ docsPath });\n    const data = encodeAbiParameters(description.inputs, args);\n    return concatHex([bytecode, data]);\n}\n//# sourceMappingURL=encodeDeployData.js.map","/** @internal */\nexport function withResolvers() {\n    let resolve = () => undefined;\n    let reject = () => undefined;\n    const promise = new Promise((resolve_, reject_) => {\n        resolve = resolve_;\n        reject = reject_;\n    });\n    return { promise, resolve, reject };\n}\n//# sourceMappingURL=withResolvers.js.map","import { withResolvers } from './withResolvers.js';\nconst schedulerCache = /*#__PURE__*/ new Map();\n/** @internal */\nexport function createBatchScheduler({ fn, id, shouldSplitBatch, wait = 0, sort, }) {\n    const exec = async () => {\n        const scheduler = getScheduler();\n        flush();\n        const args = scheduler.map(({ args }) => args);\n        if (args.length === 0)\n            return;\n        fn(args)\n            .then((data) => {\n            if (sort && Array.isArray(data))\n                data.sort(sort);\n            for (let i = 0; i < scheduler.length; i++) {\n                const { resolve } = scheduler[i];\n                resolve?.([data[i], data]);\n            }\n        })\n            .catch((err) => {\n            for (let i = 0; i < scheduler.length; i++) {\n                const { reject } = scheduler[i];\n                reject?.(err);\n            }\n        });\n    };\n    const flush = () => schedulerCache.delete(id);\n    const getBatchedArgs = () => getScheduler().map(({ args }) => args);\n    const getScheduler = () => schedulerCache.get(id) || [];\n    const setScheduler = (item) => schedulerCache.set(id, [...getScheduler(), item]);\n    return {\n        flush,\n        async schedule(args) {\n            const { promise, resolve, reject } = withResolvers();\n            const split = shouldSplitBatch?.([...getBatchedArgs(), args]);\n            if (split)\n                exec();\n            const hasActiveScheduler = getScheduler().length > 0;\n            if (hasActiveScheduler) {\n                setScheduler({ args, resolve, reject });\n                return promise;\n            }\n            setScheduler({ args, resolve, reject });\n            setTimeout(exec, wait);\n            return promise;\n        },\n    };\n}\n//# sourceMappingURL=createBatchScheduler.js.map","import { InvalidAddressError, } from '../errors/address.js';\nimport { InvalidBytesLengthError, } from '../errors/data.js';\nimport { AccountStateConflictError, StateAssignmentConflictError, } from '../errors/stateOverride.js';\nimport { isAddress } from './address/isAddress.js';\nimport { numberToHex } from './encoding/toHex.js';\n/** @internal */\nexport function serializeStateMapping(stateMapping) {\n    if (!stateMapping || stateMapping.length === 0)\n        return undefined;\n    return stateMapping.reduce((acc, { slot, value }) => {\n        if (slot.length !== 66)\n            throw new InvalidBytesLengthError({\n                size: slot.length,\n                targetSize: 66,\n                type: 'hex',\n            });\n        if (value.length !== 66)\n            throw new InvalidBytesLengthError({\n                size: value.length,\n                targetSize: 66,\n                type: 'hex',\n            });\n        acc[slot] = value;\n        return acc;\n    }, {});\n}\n/** @internal */\nexport function serializeAccountStateOverride(parameters) {\n    const { balance, nonce, state, stateDiff, code } = parameters;\n    const rpcAccountStateOverride = {};\n    if (code !== undefined)\n        rpcAccountStateOverride.code = code;\n    if (balance !== undefined)\n        rpcAccountStateOverride.balance = numberToHex(balance);\n    if (nonce !== undefined)\n        rpcAccountStateOverride.nonce = numberToHex(nonce);\n    if (state !== undefined)\n        rpcAccountStateOverride.state = serializeStateMapping(state);\n    if (stateDiff !== undefined) {\n        if (rpcAccountStateOverride.state)\n            throw new StateAssignmentConflictError();\n        rpcAccountStateOverride.stateDiff = serializeStateMapping(stateDiff);\n    }\n    return rpcAccountStateOverride;\n}\n/** @internal */\nexport function serializeStateOverride(parameters) {\n    if (!parameters)\n        return undefined;\n    const rpcStateOverride = {};\n    for (const { address, ...accountState } of parameters) {\n        if (!isAddress(address, { strict: false }))\n            throw new InvalidAddressError({ address });\n        if (rpcStateOverride[address])\n            throw new AccountStateConflictError({ address: address });\n        rpcStateOverride[address] = serializeAccountStateOverride(accountState);\n    }\n    return rpcStateOverride;\n}\n//# sourceMappingURL=stateOverride.js.map","import { parseAbi } from 'abitype';\nimport * as BlockOverrides from 'ox/BlockOverrides';\nimport { parseAccount, } from '../../accounts/utils/parseAccount.js';\nimport { multicall3Abi } from '../../constants/abis.js';\nimport { aggregate3Signature } from '../../constants/contract.js';\nimport { deploylessCallViaBytecodeBytecode, deploylessCallViaFactoryBytecode, } from '../../constants/contracts.js';\nimport { BaseError } from '../../errors/base.js';\nimport { ChainDoesNotSupportContract, ClientChainNotConfiguredError, } from '../../errors/chain.js';\nimport { CounterfactualDeploymentFailedError, RawContractError, } from '../../errors/contract.js';\nimport { decodeFunctionResult, } from '../../utils/abi/decodeFunctionResult.js';\nimport { encodeDeployData, } from '../../utils/abi/encodeDeployData.js';\nimport { encodeFunctionData, } from '../../utils/abi/encodeFunctionData.js';\nimport { getChainContractAddress, } from '../../utils/chain/getChainContractAddress.js';\nimport { numberToHex, } from '../../utils/encoding/toHex.js';\nimport { getCallError, } from '../../utils/errors/getCallError.js';\nimport { extract } from '../../utils/formatters/extract.js';\nimport { formatTransactionRequest, } from '../../utils/formatters/transactionRequest.js';\nimport { createBatchScheduler, } from '../../utils/promise/createBatchScheduler.js';\nimport { serializeStateOverride, } from '../../utils/stateOverride.js';\nimport { assertRequest } from '../../utils/transaction/assertRequest.js';\n/**\n * Executes a new message call immediately without submitting a transaction to the network.\n *\n * - Docs: https://viem.sh/docs/actions/public/call\n * - JSON-RPC Methods: [`eth_call`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_call)\n *\n * @param client - Client to use\n * @param parameters - {@link CallParameters}\n * @returns The call data. {@link CallReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { call } from 'viem/public'\n *\n * const client = createPublicClient({\n *   chain: mainnet,\n *   transport: http(),\n * })\n * const data = await call(client, {\n *   account: '0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266',\n *   data: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',\n *   to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',\n * })\n */\nexport async function call(client, args) {\n    const { account: account_ = client.account, authorizationList, batch = Boolean(client.batch?.multicall), blockNumber, blockTag = 'latest', accessList, blobs, blockOverrides, code, data: data_, factory, factoryData, gas, gasPrice, maxFeePerBlobGas, maxFeePerGas, maxPriorityFeePerGas, nonce, to, value, stateOverride, ...rest } = args;\n    const account = account_ ? parseAccount(account_) : undefined;\n    if (code && (factory || factoryData))\n        throw new BaseError('Cannot provide both `code` & `factory`/`factoryData` as parameters.');\n    if (code && to)\n        throw new BaseError('Cannot provide both `code` & `to` as parameters.');\n    // Check if the call is deployless via bytecode.\n    const deploylessCallViaBytecode = code && data_;\n    // Check if the call is deployless via a factory.\n    const deploylessCallViaFactory = factory && factoryData && to && data_;\n    const deploylessCall = deploylessCallViaBytecode || deploylessCallViaFactory;\n    const data = (() => {\n        if (deploylessCallViaBytecode)\n            return toDeploylessCallViaBytecodeData({\n                code,\n                data: data_,\n            });\n        if (deploylessCallViaFactory)\n            return toDeploylessCallViaFactoryData({\n                data: data_,\n                factory,\n                factoryData,\n                to,\n            });\n        return data_;\n    })();\n    try {\n        assertRequest(args);\n        const blockNumberHex = typeof blockNumber === 'bigint' ? numberToHex(blockNumber) : undefined;\n        const block = blockNumberHex || blockTag;\n        const rpcBlockOverrides = blockOverrides\n            ? BlockOverrides.toRpc(blockOverrides)\n            : undefined;\n        const rpcStateOverride = serializeStateOverride(stateOverride);\n        const chainFormat = client.chain?.formatters?.transactionRequest?.format;\n        const format = chainFormat || formatTransactionRequest;\n        const request = format({\n            // Pick out extra data that might exist on the chain's transaction request type.\n            ...extract(rest, { format: chainFormat }),\n            from: account?.address,\n            accessList,\n            authorizationList,\n            blobs,\n            data,\n            gas,\n            gasPrice,\n            maxFeePerBlobGas,\n            maxFeePerGas,\n            maxPriorityFeePerGas,\n            nonce,\n            to: deploylessCall ? undefined : to,\n            value,\n        });\n        if (batch &&\n            shouldPerformMulticall({ request }) &&\n            !rpcStateOverride &&\n            !rpcBlockOverrides) {\n            try {\n                return await scheduleMulticall(client, {\n                    ...request,\n                    blockNumber,\n                    blockTag,\n                });\n            }\n            catch (err) {\n                if (!(err instanceof ClientChainNotConfiguredError) &&\n                    !(err instanceof ChainDoesNotSupportContract))\n                    throw err;\n            }\n        }\n        const params = (() => {\n            const base = [\n                request,\n                block,\n            ];\n            if (rpcStateOverride && rpcBlockOverrides)\n                return [...base, rpcStateOverride, rpcBlockOverrides];\n            if (rpcStateOverride)\n                return [...base, rpcStateOverride];\n            if (rpcBlockOverrides)\n                return [...base, {}, rpcBlockOverrides];\n            return base;\n        })();\n        const response = await client.request({\n            method: 'eth_call',\n            params,\n        });\n        if (response === '0x')\n            return { data: undefined };\n        return { data: response };\n    }\n    catch (err) {\n        const data = getRevertErrorData(err);\n        // Check for CCIP-Read offchain lookup signature.\n        const { offchainLookup, offchainLookupSignature } = await import('../../utils/ccip.js');\n        if (client.ccipRead !== false &&\n            data?.slice(0, 10) === offchainLookupSignature &&\n            to)\n            return { data: await offchainLookup(client, { data, to }) };\n        // Check for counterfactual deployment error.\n        if (deploylessCall && data?.slice(0, 10) === '0x101bb98d')\n            throw new CounterfactualDeploymentFailedError({ factory });\n        throw getCallError(err, {\n            ...args,\n            account,\n            chain: client.chain,\n        });\n    }\n}\n// We only want to perform a scheduled multicall if:\n// - The request has calldata,\n// - The request has a target address,\n// - The target address is not already the aggregate3 signature,\n// - The request has no other properties (`nonce`, `gas`, etc cannot be sent with a multicall).\nfunction shouldPerformMulticall({ request }) {\n    const { data, to, ...request_ } = request;\n    if (!data)\n        return false;\n    if (data.startsWith(aggregate3Signature))\n        return false;\n    if (!to)\n        return false;\n    if (Object.values(request_).filter((x) => typeof x !== 'undefined').length > 0)\n        return false;\n    return true;\n}\nasync function scheduleMulticall(client, args) {\n    const { batchSize = 1024, wait = 0 } = typeof client.batch?.multicall === 'object' ? client.batch.multicall : {};\n    const { blockNumber, blockTag = 'latest', data, multicallAddress: multicallAddress_, to, } = args;\n    let multicallAddress = multicallAddress_;\n    if (!multicallAddress) {\n        if (!client.chain)\n            throw new ClientChainNotConfiguredError();\n        multicallAddress = getChainContractAddress({\n            blockNumber,\n            chain: client.chain,\n            contract: 'multicall3',\n        });\n    }\n    const blockNumberHex = typeof blockNumber === 'bigint' ? numberToHex(blockNumber) : undefined;\n    const block = blockNumberHex || blockTag;\n    const { schedule } = createBatchScheduler({\n        id: `${client.uid}.${block}`,\n        wait,\n        shouldSplitBatch(args) {\n            const size = args.reduce((size, { data }) => size + (data.length - 2), 0);\n            return size > batchSize * 2;\n        },\n        fn: async (requests) => {\n            const calls = requests.map((request) => ({\n                allowFailure: true,\n                callData: request.data,\n                target: request.to,\n            }));\n            const calldata = encodeFunctionData({\n                abi: multicall3Abi,\n                args: [calls],\n                functionName: 'aggregate3',\n            });\n            const data = await client.request({\n                method: 'eth_call',\n                params: [\n                    {\n                        data: calldata,\n                        to: multicallAddress,\n                    },\n                    block,\n                ],\n            });\n            return decodeFunctionResult({\n                abi: multicall3Abi,\n                args: [calls],\n                functionName: 'aggregate3',\n                data: data || '0x',\n            });\n        },\n    });\n    const [{ returnData, success }] = await schedule({ data, to });\n    if (!success)\n        throw new RawContractError({ data: returnData });\n    if (returnData === '0x')\n        return { data: undefined };\n    return { data: returnData };\n}\nfunction toDeploylessCallViaBytecodeData(parameters) {\n    const { code, data } = parameters;\n    return encodeDeployData({\n        abi: parseAbi(['constructor(bytes, bytes)']),\n        bytecode: deploylessCallViaBytecodeBytecode,\n        args: [code, data],\n    });\n}\nfunction toDeploylessCallViaFactoryData(parameters) {\n    const { data, factory, factoryData, to } = parameters;\n    return encodeDeployData({\n        abi: parseAbi(['constructor(address, bytes, address, bytes)']),\n        bytecode: deploylessCallViaFactoryBytecode,\n        args: [to, data, factory, factoryData],\n    });\n}\n/** @internal */\nexport function getRevertErrorData(err) {\n    if (!(err instanceof BaseError))\n        return undefined;\n    const error = err.walk();\n    return typeof error?.data === 'object' ? error.data?.data : error.data;\n}\n//# sourceMappingURL=call.js.map","import { decodeFunctionResult, } from '../../utils/abi/decodeFunctionResult.js';\nimport { encodeFunctionData, } from '../../utils/abi/encodeFunctionData.js';\nimport { getContractError, } from '../../utils/errors/getContractError.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { call } from './call.js';\n/**\n * Calls a read-only function on a contract, and returns the response.\n *\n * - Docs: https://viem.sh/docs/contract/readContract\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/contracts_reading-contracts\n *\n * A \"read-only\" function (constant function) on a Solidity contract is denoted by a `view` or `pure` keyword. They can only read the state of the contract, and cannot make any changes to it. Since read-only methods do not change the state of the contract, they do not require any gas to be executed, and can be called by any user without the need to pay for gas.\n *\n * Internally, uses a [Public Client](https://viem.sh/docs/clients/public) to call the [`call` action](https://viem.sh/docs/actions/public/call) with [ABI-encoded `data`](https://viem.sh/docs/contract/encodeFunctionData).\n *\n * @param client - Client to use\n * @param parameters - {@link ReadContractParameters}\n * @returns The response from the contract. Type is inferred. {@link ReadContractReturnType}\n *\n * @example\n * import { createPublicClient, http, parseAbi } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { readContract } from 'viem/contract'\n *\n * const client = createPublicClient({\n *   chain: mainnet,\n *   transport: http(),\n * })\n * const result = await readContract(client, {\n *   address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',\n *   abi: parseAbi(['function balanceOf(address) view returns (uint256)']),\n *   functionName: 'balanceOf',\n *   args: ['0xA0Cf798816D4b9b9866b5330EEa46a18382f251e'],\n * })\n * // 424122n\n */\nexport async function readContract(client, parameters) {\n    const { abi, address, args, functionName, ...rest } = parameters;\n    const calldata = encodeFunctionData({\n        abi,\n        args,\n        functionName,\n    });\n    try {\n        const { data } = await getAction(client, call, 'call')({\n            ...rest,\n            data: calldata,\n            to: address,\n        });\n        return decodeFunctionResult({\n            abi,\n            args,\n            functionName,\n            data: data || '0x',\n        });\n    }\n    catch (error) {\n        throw getContractError(error, {\n            abi,\n            address,\n            args,\n            docsPath: '/docs/contract/readContract',\n            functionName,\n        });\n    }\n}\n//# sourceMappingURL=readContract.js.map","export const presignMessagePrefix = '\\x19Ethereum Signed Message:\\n';\n//# sourceMappingURL=strings.js.map","import { presignMessagePrefix } from '../../constants/strings.js';\nimport { concat } from '../data/concat.js';\nimport { size } from '../data/size.js';\nimport { bytesToHex, stringToHex, } from '../encoding/toHex.js';\nexport function toPrefixedMessage(message_) {\n    const message = (() => {\n        if (typeof message_ === 'string')\n            return stringToHex(message_);\n        if (typeof message_.raw === 'string')\n            return message_.raw;\n        return bytesToHex(message_.raw);\n    })();\n    const prefix = stringToHex(`${presignMessagePrefix}${size(message)}`);\n    return concat([prefix, message]);\n}\n//# sourceMappingURL=toPrefixedMessage.js.map","import { keccak256 } from '../hash/keccak256.js';\nimport { toPrefixedMessage } from './toPrefixedMessage.js';\nexport function hashMessage(message, to_) {\n    return keccak256(toPrefixedMessage(message), to_);\n}\n//# sourceMappingURL=hashMessage.js.map","import { stringify } from '../utils/stringify.js';\nimport { BaseError } from './base.js';\nexport class InvalidDomainError extends BaseError {\n    constructor({ domain }) {\n        super(`Invalid domain \"${stringify(domain)}\".`, {\n            metaMessages: ['Must be a valid EIP-712 domain.'],\n        });\n    }\n}\nexport class InvalidPrimaryTypeError extends BaseError {\n    constructor({ primaryType, types, }) {\n        super(`Invalid primary type \\`${primaryType}\\` must be one of \\`${JSON.stringify(Object.keys(types))}\\`.`, {\n            docsPath: '/api/glossary/Errors#typeddatainvalidprimarytypeerror',\n            metaMessages: ['Check that the primary type is a key in `types`.'],\n        });\n    }\n}\nexport class InvalidStructTypeError extends BaseError {\n    constructor({ type }) {\n        super(`Struct type \"${type}\" is invalid.`, {\n            metaMessages: ['Struct type must not be a Solidity type.'],\n            name: 'InvalidStructTypeError',\n        });\n    }\n}\n//# sourceMappingURL=typedData.js.map","import { BytesSizeMismatchError } from '../errors/abi.js';\nimport { InvalidAddressError } from '../errors/address.js';\nimport { InvalidDomainError, InvalidPrimaryTypeError, InvalidStructTypeError, } from '../errors/typedData.js';\nimport { isAddress } from './address/isAddress.js';\nimport { size } from './data/size.js';\nimport { numberToHex } from './encoding/toHex.js';\nimport { bytesRegex, integerRegex } from './regex.js';\nimport { hashDomain, } from './signature/hashTypedData.js';\nimport { stringify } from './stringify.js';\nexport function serializeTypedData(parameters) {\n    const { domain: domain_, message: message_, primaryType, types, } = parameters;\n    const normalizeData = (struct, data_) => {\n        const data = { ...data_ };\n        for (const param of struct) {\n            const { name, type } = param;\n            if (type === 'address')\n                data[name] = data[name].toLowerCase();\n        }\n        return data;\n    };\n    const domain = (() => {\n        if (!types.EIP712Domain)\n            return {};\n        if (!domain_)\n            return {};\n        return normalizeData(types.EIP712Domain, domain_);\n    })();\n    const message = (() => {\n        if (primaryType === 'EIP712Domain')\n            return undefined;\n        return normalizeData(types[primaryType], message_);\n    })();\n    return stringify({ domain, message, primaryType, types });\n}\nexport function validateTypedData(parameters) {\n    const { domain, message, primaryType, types } = parameters;\n    const validateData = (struct, data) => {\n        for (const param of struct) {\n            const { name, type } = param;\n            const value = data[name];\n            const integerMatch = type.match(integerRegex);\n            if (integerMatch &&\n                (typeof value === 'number' || typeof value === 'bigint')) {\n                const [_type, base, size_] = integerMatch;\n                // If number cannot be cast to a sized hex value, it is out of range\n                // and will throw.\n                numberToHex(value, {\n                    signed: base === 'int',\n                    size: Number.parseInt(size_) / 8,\n                });\n            }\n            if (type === 'address' && typeof value === 'string' && !isAddress(value))\n                throw new InvalidAddressError({ address: value });\n            const bytesMatch = type.match(bytesRegex);\n            if (bytesMatch) {\n                const [_type, size_] = bytesMatch;\n                if (size_ && size(value) !== Number.parseInt(size_))\n                    throw new BytesSizeMismatchError({\n                        expectedSize: Number.parseInt(size_),\n                        givenSize: size(value),\n                    });\n            }\n            const struct = types[type];\n            if (struct) {\n                validateReference(type);\n                validateData(struct, value);\n            }\n        }\n    };\n    // Validate domain types.\n    if (types.EIP712Domain && domain) {\n        if (typeof domain !== 'object')\n            throw new InvalidDomainError({ domain });\n        validateData(types.EIP712Domain, domain);\n    }\n    // Validate message types.\n    if (primaryType !== 'EIP712Domain') {\n        if (types[primaryType])\n            validateData(types[primaryType], message);\n        else\n            throw new InvalidPrimaryTypeError({ primaryType, types });\n    }\n}\nexport function getTypesForEIP712Domain({ domain, }) {\n    return [\n        typeof domain?.name === 'string' && { name: 'name', type: 'string' },\n        domain?.version && { name: 'version', type: 'string' },\n        (typeof domain?.chainId === 'number' ||\n            typeof domain?.chainId === 'bigint') && {\n            name: 'chainId',\n            type: 'uint256',\n        },\n        domain?.verifyingContract && {\n            name: 'verifyingContract',\n            type: 'address',\n        },\n        domain?.salt && { name: 'salt', type: 'bytes32' },\n    ].filter(Boolean);\n}\nexport function domainSeparator({ domain }) {\n    return hashDomain({\n        domain,\n        types: {\n            EIP712Domain: getTypesForEIP712Domain({ domain }),\n        },\n    });\n}\n/** @internal */\nfunction validateReference(type) {\n    // Struct type must not be a Solidity type.\n    if (type === 'address' ||\n        type === 'bool' ||\n        type === 'string' ||\n        type.startsWith('bytes') ||\n        type.startsWith('uint') ||\n        type.startsWith('int'))\n        throw new InvalidStructTypeError({ type });\n}\n//# sourceMappingURL=typedData.js.map","// Implementation forked and adapted from https://github.com/MetaMask/eth-sig-util/blob/main/src/sign-typed-data.ts\nimport { encodeAbiParameters, } from '../abi/encodeAbiParameters.js';\nimport { concat } from '../data/concat.js';\nimport { toHex } from '../encoding/toHex.js';\nimport { keccak256 } from '../hash/keccak256.js';\nimport { getTypesForEIP712Domain, validateTypedData, } from '../typedData.js';\nexport function hashTypedData(parameters) {\n    const { domain = {}, message, primaryType, } = parameters;\n    const types = {\n        EIP712Domain: getTypesForEIP712Domain({ domain }),\n        ...parameters.types,\n    };\n    // Need to do a runtime validation check on addresses, byte ranges, integer ranges, etc\n    // as we can't statically check this with TypeScript.\n    validateTypedData({\n        domain,\n        message,\n        primaryType,\n        types,\n    });\n    const parts = ['0x1901'];\n    if (domain)\n        parts.push(hashDomain({\n            domain,\n            types: types,\n        }));\n    if (primaryType !== 'EIP712Domain')\n        parts.push(hashStruct({\n            data: message,\n            primaryType,\n            types: types,\n        }));\n    return keccak256(concat(parts));\n}\nexport function hashDomain({ domain, types, }) {\n    return hashStruct({\n        data: domain,\n        primaryType: 'EIP712Domain',\n        types,\n    });\n}\nexport function hashStruct({ data, primaryType, types, }) {\n    const encoded = encodeData({\n        data,\n        primaryType,\n        types,\n    });\n    return keccak256(encoded);\n}\nfunction encodeData({ data, primaryType, types, }) {\n    const encodedTypes = [{ type: 'bytes32' }];\n    const encodedValues = [hashType({ primaryType, types })];\n    for (const field of types[primaryType]) {\n        const [type, value] = encodeField({\n            types,\n            name: field.name,\n            type: field.type,\n            value: data[field.name],\n        });\n        encodedTypes.push(type);\n        encodedValues.push(value);\n    }\n    return encodeAbiParameters(encodedTypes, encodedValues);\n}\nfunction hashType({ primaryType, types, }) {\n    const encodedHashType = toHex(encodeType({ primaryType, types }));\n    return keccak256(encodedHashType);\n}\nexport function encodeType({ primaryType, types, }) {\n    let result = '';\n    const unsortedDeps = findTypeDependencies({ primaryType, types });\n    unsortedDeps.delete(primaryType);\n    const deps = [primaryType, ...Array.from(unsortedDeps).sort()];\n    for (const type of deps) {\n        result += `${type}(${types[type]\n            .map(({ name, type: t }) => `${t} ${name}`)\n            .join(',')})`;\n    }\n    return result;\n}\nfunction findTypeDependencies({ primaryType: primaryType_, types, }, results = new Set()) {\n    const match = primaryType_.match(/^\\w*/u);\n    const primaryType = match?.[0];\n    if (results.has(primaryType) || types[primaryType] === undefined) {\n        return results;\n    }\n    results.add(primaryType);\n    for (const field of types[primaryType]) {\n        findTypeDependencies({ primaryType: field.type, types }, results);\n    }\n    return results;\n}\nfunction encodeField({ types, name, type, value, }) {\n    if (types[type] !== undefined) {\n        return [\n            { type: 'bytes32' },\n            keccak256(encodeData({ data: value, primaryType: type, types })),\n        ];\n    }\n    if (type === 'bytes') {\n        const prepend = value.length % 2 ? '0' : '';\n        value = `0x${prepend + value.slice(2)}`;\n        return [{ type: 'bytes32' }, keccak256(value)];\n    }\n    if (type === 'string')\n        return [{ type: 'bytes32' }, keccak256(toHex(value))];\n    if (type.lastIndexOf(']') === type.length - 1) {\n        const parsedType = type.slice(0, type.lastIndexOf('['));\n        const typeValuePairs = value.map((item) => encodeField({\n            name,\n            type: parsedType,\n            types,\n            value: item,\n        }));\n        return [\n            { type: 'bytes32' },\n            keccak256(encodeAbiParameters(typeValuePairs.map(([t]) => t), typeValuePairs.map(([, v]) => v))),\n        ];\n    }\n    return [{ type }, value];\n}\n//# sourceMappingURL=hashTypedData.js.map","export const entryPoint06Abi = [\n    {\n        inputs: [\n            { name: 'preOpGas', type: 'uint256' },\n            { name: 'paid', type: 'uint256' },\n            { name: 'validAfter', type: 'uint48' },\n            { name: 'validUntil', type: 'uint48' },\n            { name: 'targetSuccess', type: 'bool' },\n            { name: 'targetResult', type: 'bytes' },\n        ],\n        name: 'ExecutionResult',\n        type: 'error',\n    },\n    {\n        inputs: [\n            { name: 'opIndex', type: 'uint256' },\n            { name: 'reason', type: 'string' },\n        ],\n        name: 'FailedOp',\n        type: 'error',\n    },\n    {\n        inputs: [{ name: 'sender', type: 'address' }],\n        name: 'SenderAddressResult',\n        type: 'error',\n    },\n    {\n        inputs: [{ name: 'aggregator', type: 'address' }],\n        name: 'SignatureValidationFailed',\n        type: 'error',\n    },\n    {\n        inputs: [\n            {\n                components: [\n                    { name: 'preOpGas', type: 'uint256' },\n                    { name: 'prefund', type: 'uint256' },\n                    { name: 'sigFailed', type: 'bool' },\n                    { name: 'validAfter', type: 'uint48' },\n                    { name: 'validUntil', type: 'uint48' },\n                    { name: 'paymasterContext', type: 'bytes' },\n                ],\n                name: 'returnInfo',\n                type: 'tuple',\n            },\n            {\n                components: [\n                    { name: 'stake', type: 'uint256' },\n                    { name: 'unstakeDelaySec', type: 'uint256' },\n                ],\n                name: 'senderInfo',\n                type: 'tuple',\n            },\n            {\n                components: [\n                    { name: 'stake', type: 'uint256' },\n                    { name: 'unstakeDelaySec', type: 'uint256' },\n                ],\n                name: 'factoryInfo',\n                type: 'tuple',\n            },\n            {\n                components: [\n                    { name: 'stake', type: 'uint256' },\n                    { name: 'unstakeDelaySec', type: 'uint256' },\n                ],\n                name: 'paymasterInfo',\n                type: 'tuple',\n            },\n        ],\n        name: 'ValidationResult',\n        type: 'error',\n    },\n    {\n        inputs: [\n            {\n                components: [\n                    { name: 'preOpGas', type: 'uint256' },\n                    { name: 'prefund', type: 'uint256' },\n                    { name: 'sigFailed', type: 'bool' },\n                    { name: 'validAfter', type: 'uint48' },\n                    { name: 'validUntil', type: 'uint48' },\n                    { name: 'paymasterContext', type: 'bytes' },\n                ],\n                name: 'returnInfo',\n                type: 'tuple',\n            },\n            {\n                components: [\n                    { name: 'stake', type: 'uint256' },\n                    { name: 'unstakeDelaySec', type: 'uint256' },\n                ],\n                name: 'senderInfo',\n                type: 'tuple',\n            },\n            {\n                components: [\n                    { name: 'stake', type: 'uint256' },\n                    { name: 'unstakeDelaySec', type: 'uint256' },\n                ],\n                name: 'factoryInfo',\n                type: 'tuple',\n            },\n            {\n                components: [\n                    { name: 'stake', type: 'uint256' },\n                    { name: 'unstakeDelaySec', type: 'uint256' },\n                ],\n                name: 'paymasterInfo',\n                type: 'tuple',\n            },\n            {\n                components: [\n                    { name: 'aggregator', type: 'address' },\n                    {\n                        components: [\n                            { name: 'stake', type: 'uint256' },\n                            {\n                                name: 'unstakeDelaySec',\n                                type: 'uint256',\n                            },\n                        ],\n                        name: 'stakeInfo',\n                        type: 'tuple',\n                    },\n                ],\n                name: 'aggregatorInfo',\n                type: 'tuple',\n            },\n        ],\n        name: 'ValidationResultWithAggregation',\n        type: 'error',\n    },\n    {\n        anonymous: false,\n        inputs: [\n            {\n                indexed: true,\n                name: 'userOpHash',\n                type: 'bytes32',\n            },\n            {\n                indexed: true,\n                name: 'sender',\n                type: 'address',\n            },\n            {\n                indexed: false,\n                name: 'factory',\n                type: 'address',\n            },\n            {\n                indexed: false,\n                name: 'paymaster',\n                type: 'address',\n            },\n        ],\n        name: 'AccountDeployed',\n        type: 'event',\n    },\n    { anonymous: false, inputs: [], name: 'BeforeExecution', type: 'event' },\n    {\n        anonymous: false,\n        inputs: [\n            {\n                indexed: true,\n                name: 'account',\n                type: 'address',\n            },\n            {\n                indexed: false,\n                name: 'totalDeposit',\n                type: 'uint256',\n            },\n        ],\n        name: 'Deposited',\n        type: 'event',\n    },\n    {\n        anonymous: false,\n        inputs: [\n            {\n                indexed: true,\n                name: 'aggregator',\n                type: 'address',\n            },\n        ],\n        name: 'SignatureAggregatorChanged',\n        type: 'event',\n    },\n    {\n        anonymous: false,\n        inputs: [\n            {\n                indexed: true,\n                name: 'account',\n                type: 'address',\n            },\n            {\n                indexed: false,\n                name: 'totalStaked',\n                type: 'uint256',\n            },\n            {\n                indexed: false,\n                name: 'unstakeDelaySec',\n                type: 'uint256',\n            },\n        ],\n        name: 'StakeLocked',\n        type: 'event',\n    },\n    {\n        anonymous: false,\n        inputs: [\n            {\n                indexed: true,\n                name: 'account',\n                type: 'address',\n            },\n            {\n                indexed: false,\n                name: 'withdrawTime',\n                type: 'uint256',\n            },\n        ],\n        name: 'StakeUnlocked',\n        type: 'event',\n    },\n    {\n        anonymous: false,\n        inputs: [\n            {\n                indexed: true,\n                name: 'account',\n                type: 'address',\n            },\n            {\n                indexed: false,\n                name: 'withdrawAddress',\n                type: 'address',\n            },\n            {\n                indexed: false,\n                name: 'amount',\n                type: 'uint256',\n            },\n        ],\n        name: 'StakeWithdrawn',\n        type: 'event',\n    },\n    {\n        anonymous: false,\n        inputs: [\n            {\n                indexed: true,\n                name: 'userOpHash',\n                type: 'bytes32',\n            },\n            {\n                indexed: true,\n                name: 'sender',\n                type: 'address',\n            },\n            {\n                indexed: true,\n                name: 'paymaster',\n                type: 'address',\n            },\n            {\n                indexed: false,\n                name: 'nonce',\n                type: 'uint256',\n            },\n            { indexed: false, name: 'success', type: 'bool' },\n            {\n                indexed: false,\n                name: 'actualGasCost',\n                type: 'uint256',\n            },\n            {\n                indexed: false,\n                name: 'actualGasUsed',\n                type: 'uint256',\n            },\n        ],\n        name: 'UserOperationEvent',\n        type: 'event',\n    },\n    {\n        anonymous: false,\n        inputs: [\n            {\n                indexed: true,\n                name: 'userOpHash',\n                type: 'bytes32',\n            },\n            {\n                indexed: true,\n                name: 'sender',\n                type: 'address',\n            },\n            {\n                indexed: false,\n                name: 'nonce',\n                type: 'uint256',\n            },\n            {\n                indexed: false,\n                name: 'revertReason',\n                type: 'bytes',\n            },\n        ],\n        name: 'UserOperationRevertReason',\n        type: 'event',\n    },\n    {\n        anonymous: false,\n        inputs: [\n            {\n                indexed: true,\n                name: 'account',\n                type: 'address',\n            },\n            {\n                indexed: false,\n                name: 'withdrawAddress',\n                type: 'address',\n            },\n            {\n                indexed: false,\n                name: 'amount',\n                type: 'uint256',\n            },\n        ],\n        name: 'Withdrawn',\n        type: 'event',\n    },\n    {\n        inputs: [],\n        name: 'SIG_VALIDATION_FAILED',\n        outputs: [{ name: '', type: 'uint256' }],\n        stateMutability: 'view',\n        type: 'function',\n    },\n    {\n        inputs: [\n            { name: 'initCode', type: 'bytes' },\n            { name: 'sender', type: 'address' },\n            { name: 'paymasterAndData', type: 'bytes' },\n        ],\n        name: '_validateSenderAndPaymaster',\n        outputs: [],\n        stateMutability: 'view',\n        type: 'function',\n    },\n    {\n        inputs: [{ name: 'unstakeDelaySec', type: 'uint32' }],\n        name: 'addStake',\n        outputs: [],\n        stateMutability: 'payable',\n        type: 'function',\n    },\n    {\n        inputs: [{ name: 'account', type: 'address' }],\n        name: 'balanceOf',\n        outputs: [{ name: '', type: 'uint256' }],\n        stateMutability: 'view',\n        type: 'function',\n    },\n    {\n        inputs: [{ name: 'account', type: 'address' }],\n        name: 'depositTo',\n        outputs: [],\n        stateMutability: 'payable',\n        type: 'function',\n    },\n    {\n        inputs: [{ name: '', type: 'address' }],\n        name: 'deposits',\n        outputs: [\n            { name: 'deposit', type: 'uint112' },\n            { name: 'staked', type: 'bool' },\n            { name: 'stake', type: 'uint112' },\n            { name: 'unstakeDelaySec', type: 'uint32' },\n            { name: 'withdrawTime', type: 'uint48' },\n        ],\n        stateMutability: 'view',\n        type: 'function',\n    },\n    {\n        inputs: [{ name: 'account', type: 'address' }],\n        name: 'getDepositInfo',\n        outputs: [\n            {\n                components: [\n                    { name: 'deposit', type: 'uint112' },\n                    { name: 'staked', type: 'bool' },\n                    { name: 'stake', type: 'uint112' },\n                    { name: 'unstakeDelaySec', type: 'uint32' },\n                    { name: 'withdrawTime', type: 'uint48' },\n                ],\n                name: 'info',\n                type: 'tuple',\n            },\n        ],\n        stateMutability: 'view',\n        type: 'function',\n    },\n    {\n        inputs: [\n            { name: 'sender', type: 'address' },\n            { name: 'key', type: 'uint192' },\n        ],\n        name: 'getNonce',\n        outputs: [{ name: 'nonce', type: 'uint256' }],\n        stateMutability: 'view',\n        type: 'function',\n    },\n    {\n        inputs: [{ name: 'initCode', type: 'bytes' }],\n        name: 'getSenderAddress',\n        outputs: [],\n        stateMutability: 'nonpayable',\n        type: 'function',\n    },\n    {\n        inputs: [\n            {\n                components: [\n                    { name: 'sender', type: 'address' },\n                    { name: 'nonce', type: 'uint256' },\n                    { name: 'initCode', type: 'bytes' },\n                    { name: 'callData', type: 'bytes' },\n                    { name: 'callGasLimit', type: 'uint256' },\n                    {\n                        name: 'verificationGasLimit',\n                        type: 'uint256',\n                    },\n                    {\n                        name: 'preVerificationGas',\n                        type: 'uint256',\n                    },\n                    { name: 'maxFeePerGas', type: 'uint256' },\n                    {\n                        name: 'maxPriorityFeePerGas',\n                        type: 'uint256',\n                    },\n                    { name: 'paymasterAndData', type: 'bytes' },\n                    { name: 'signature', type: 'bytes' },\n                ],\n                name: 'userOp',\n                type: 'tuple',\n            },\n        ],\n        name: 'getUserOpHash',\n        outputs: [{ name: '', type: 'bytes32' }],\n        stateMutability: 'view',\n        type: 'function',\n    },\n    {\n        inputs: [\n            {\n                components: [\n                    {\n                        components: [\n                            { name: 'sender', type: 'address' },\n                            { name: 'nonce', type: 'uint256' },\n                            { name: 'initCode', type: 'bytes' },\n                            { name: 'callData', type: 'bytes' },\n                            {\n                                name: 'callGasLimit',\n                                type: 'uint256',\n                            },\n                            {\n                                name: 'verificationGasLimit',\n                                type: 'uint256',\n                            },\n                            {\n                                name: 'preVerificationGas',\n                                type: 'uint256',\n                            },\n                            {\n                                name: 'maxFeePerGas',\n                                type: 'uint256',\n                            },\n                            {\n                                name: 'maxPriorityFeePerGas',\n                                type: 'uint256',\n                            },\n                            {\n                                name: 'paymasterAndData',\n                                type: 'bytes',\n                            },\n                            { name: 'signature', type: 'bytes' },\n                        ],\n                        name: 'userOps',\n                        type: 'tuple[]',\n                    },\n                    {\n                        name: 'aggregator',\n                        type: 'address',\n                    },\n                    { name: 'signature', type: 'bytes' },\n                ],\n                name: 'opsPerAggregator',\n                type: 'tuple[]',\n            },\n            { name: 'beneficiary', type: 'address' },\n        ],\n        name: 'handleAggregatedOps',\n        outputs: [],\n        stateMutability: 'nonpayable',\n        type: 'function',\n    },\n    {\n        inputs: [\n            {\n                components: [\n                    { name: 'sender', type: 'address' },\n                    { name: 'nonce', type: 'uint256' },\n                    { name: 'initCode', type: 'bytes' },\n                    { name: 'callData', type: 'bytes' },\n                    { name: 'callGasLimit', type: 'uint256' },\n                    {\n                        name: 'verificationGasLimit',\n                        type: 'uint256',\n                    },\n                    {\n                        name: 'preVerificationGas',\n                        type: 'uint256',\n                    },\n                    { name: 'maxFeePerGas', type: 'uint256' },\n                    {\n                        name: 'maxPriorityFeePerGas',\n                        type: 'uint256',\n                    },\n                    { name: 'paymasterAndData', type: 'bytes' },\n                    { name: 'signature', type: 'bytes' },\n                ],\n                name: 'ops',\n                type: 'tuple[]',\n            },\n            { name: 'beneficiary', type: 'address' },\n        ],\n        name: 'handleOps',\n        outputs: [],\n        stateMutability: 'nonpayable',\n        type: 'function',\n    },\n    {\n        inputs: [{ name: 'key', type: 'uint192' }],\n        name: 'incrementNonce',\n        outputs: [],\n        stateMutability: 'nonpayable',\n        type: 'function',\n    },\n    {\n        inputs: [\n            { name: 'callData', type: 'bytes' },\n            {\n                components: [\n                    {\n                        components: [\n                            { name: 'sender', type: 'address' },\n                            { name: 'nonce', type: 'uint256' },\n                            {\n                                name: 'callGasLimit',\n                                type: 'uint256',\n                            },\n                            {\n                                name: 'verificationGasLimit',\n                                type: 'uint256',\n                            },\n                            {\n                                name: 'preVerificationGas',\n                                type: 'uint256',\n                            },\n                            { name: 'paymaster', type: 'address' },\n                            {\n                                name: 'maxFeePerGas',\n                                type: 'uint256',\n                            },\n                            {\n                                name: 'maxPriorityFeePerGas',\n                                type: 'uint256',\n                            },\n                        ],\n                        name: 'mUserOp',\n                        type: 'tuple',\n                    },\n                    { name: 'userOpHash', type: 'bytes32' },\n                    { name: 'prefund', type: 'uint256' },\n                    { name: 'contextOffset', type: 'uint256' },\n                    { name: 'preOpGas', type: 'uint256' },\n                ],\n                name: 'opInfo',\n                type: 'tuple',\n            },\n            { name: 'context', type: 'bytes' },\n        ],\n        name: 'innerHandleOp',\n        outputs: [{ name: 'actualGasCost', type: 'uint256' }],\n        stateMutability: 'nonpayable',\n        type: 'function',\n    },\n    {\n        inputs: [\n            { name: '', type: 'address' },\n            { name: '', type: 'uint192' },\n        ],\n        name: 'nonceSequenceNumber',\n        outputs: [{ name: '', type: 'uint256' }],\n        stateMutability: 'view',\n        type: 'function',\n    },\n    {\n        inputs: [\n            {\n                components: [\n                    { name: 'sender', type: 'address' },\n                    { name: 'nonce', type: 'uint256' },\n                    { name: 'initCode', type: 'bytes' },\n                    { name: 'callData', type: 'bytes' },\n                    { name: 'callGasLimit', type: 'uint256' },\n                    {\n                        name: 'verificationGasLimit',\n                        type: 'uint256',\n                    },\n                    {\n                        name: 'preVerificationGas',\n                        type: 'uint256',\n                    },\n                    { name: 'maxFeePerGas', type: 'uint256' },\n                    {\n                        name: 'maxPriorityFeePerGas',\n                        type: 'uint256',\n                    },\n                    { name: 'paymasterAndData', type: 'bytes' },\n                    { name: 'signature', type: 'bytes' },\n                ],\n                name: 'op',\n                type: 'tuple',\n            },\n            { name: 'target', type: 'address' },\n            { name: 'targetCallData', type: 'bytes' },\n        ],\n        name: 'simulateHandleOp',\n        outputs: [],\n        stateMutability: 'nonpayable',\n        type: 'function',\n    },\n    {\n        inputs: [\n            {\n                components: [\n                    { name: 'sender', type: 'address' },\n                    { name: 'nonce', type: 'uint256' },\n                    { name: 'initCode', type: 'bytes' },\n                    { name: 'callData', type: 'bytes' },\n                    { name: 'callGasLimit', type: 'uint256' },\n                    {\n                        name: 'verificationGasLimit',\n                        type: 'uint256',\n                    },\n                    {\n                        name: 'preVerificationGas',\n                        type: 'uint256',\n                    },\n                    { name: 'maxFeePerGas', type: 'uint256' },\n                    {\n                        name: 'maxPriorityFeePerGas',\n                        type: 'uint256',\n                    },\n                    { name: 'paymasterAndData', type: 'bytes' },\n                    { name: 'signature', type: 'bytes' },\n                ],\n                name: 'userOp',\n                type: 'tuple',\n            },\n        ],\n        name: 'simulateValidation',\n        outputs: [],\n        stateMutability: 'nonpayable',\n        type: 'function',\n    },\n    {\n        inputs: [],\n        name: 'unlockStake',\n        outputs: [],\n        stateMutability: 'nonpayable',\n        type: 'function',\n    },\n    {\n        inputs: [\n            {\n                name: 'withdrawAddress',\n                type: 'address',\n            },\n        ],\n        name: 'withdrawStake',\n        outputs: [],\n        stateMutability: 'nonpayable',\n        type: 'function',\n    },\n    {\n        inputs: [\n            {\n                name: 'withdrawAddress',\n                type: 'address',\n            },\n            { name: 'withdrawAmount', type: 'uint256' },\n        ],\n        name: 'withdrawTo',\n        outputs: [],\n        stateMutability: 'nonpayable',\n        type: 'function',\n    },\n    { stateMutability: 'payable', type: 'receive' },\n];\nexport const entryPoint07Abi = [\n    {\n        inputs: [\n            { name: 'success', type: 'bool' },\n            { name: 'ret', type: 'bytes' },\n        ],\n        name: 'DelegateAndRevert',\n        type: 'error',\n    },\n    {\n        inputs: [\n            { name: 'opIndex', type: 'uint256' },\n            { name: 'reason', type: 'string' },\n        ],\n        name: 'FailedOp',\n        type: 'error',\n    },\n    {\n        inputs: [\n            { name: 'opIndex', type: 'uint256' },\n            { name: 'reason', type: 'string' },\n            { name: 'inner', type: 'bytes' },\n        ],\n        name: 'FailedOpWithRevert',\n        type: 'error',\n    },\n    {\n        inputs: [{ name: 'returnData', type: 'bytes' }],\n        name: 'PostOpReverted',\n        type: 'error',\n    },\n    { inputs: [], name: 'ReentrancyGuardReentrantCall', type: 'error' },\n    {\n        inputs: [{ name: 'sender', type: 'address' }],\n        name: 'SenderAddressResult',\n        type: 'error',\n    },\n    {\n        inputs: [{ name: 'aggregator', type: 'address' }],\n        name: 'SignatureValidationFailed',\n        type: 'error',\n    },\n    {\n        anonymous: false,\n        inputs: [\n            {\n                indexed: true,\n                name: 'userOpHash',\n                type: 'bytes32',\n            },\n            {\n                indexed: true,\n                name: 'sender',\n                type: 'address',\n            },\n            {\n                indexed: false,\n                name: 'factory',\n                type: 'address',\n            },\n            {\n                indexed: false,\n                name: 'paymaster',\n                type: 'address',\n            },\n        ],\n        name: 'AccountDeployed',\n        type: 'event',\n    },\n    { anonymous: false, inputs: [], name: 'BeforeExecution', type: 'event' },\n    {\n        anonymous: false,\n        inputs: [\n            {\n                indexed: true,\n                name: 'account',\n                type: 'address',\n            },\n            {\n                indexed: false,\n                name: 'totalDeposit',\n                type: 'uint256',\n            },\n        ],\n        name: 'Deposited',\n        type: 'event',\n    },\n    {\n        anonymous: false,\n        inputs: [\n            {\n                indexed: true,\n                name: 'userOpHash',\n                type: 'bytes32',\n            },\n            {\n                indexed: true,\n                name: 'sender',\n                type: 'address',\n            },\n            {\n                indexed: false,\n                name: 'nonce',\n                type: 'uint256',\n            },\n            {\n                indexed: false,\n                name: 'revertReason',\n                type: 'bytes',\n            },\n        ],\n        name: 'PostOpRevertReason',\n        type: 'event',\n    },\n    {\n        anonymous: false,\n        inputs: [\n            {\n                indexed: true,\n                name: 'aggregator',\n                type: 'address',\n            },\n        ],\n        name: 'SignatureAggregatorChanged',\n        type: 'event',\n    },\n    {\n        anonymous: false,\n        inputs: [\n            {\n                indexed: true,\n                name: 'account',\n                type: 'address',\n            },\n            {\n                indexed: false,\n                name: 'totalStaked',\n                type: 'uint256',\n            },\n            {\n                indexed: false,\n                name: 'unstakeDelaySec',\n                type: 'uint256',\n            },\n        ],\n        name: 'StakeLocked',\n        type: 'event',\n    },\n    {\n        anonymous: false,\n        inputs: [\n            {\n                indexed: true,\n                name: 'account',\n                type: 'address',\n            },\n            {\n                indexed: false,\n                name: 'withdrawTime',\n                type: 'uint256',\n            },\n        ],\n        name: 'StakeUnlocked',\n        type: 'event',\n    },\n    {\n        anonymous: false,\n        inputs: [\n            {\n                indexed: true,\n                name: 'account',\n                type: 'address',\n            },\n            {\n                indexed: false,\n                name: 'withdrawAddress',\n                type: 'address',\n            },\n            {\n                indexed: false,\n                name: 'amount',\n                type: 'uint256',\n            },\n        ],\n        name: 'StakeWithdrawn',\n        type: 'event',\n    },\n    {\n        anonymous: false,\n        inputs: [\n            {\n                indexed: true,\n                name: 'userOpHash',\n                type: 'bytes32',\n            },\n            {\n                indexed: true,\n                name: 'sender',\n                type: 'address',\n            },\n            {\n                indexed: true,\n                name: 'paymaster',\n                type: 'address',\n            },\n            {\n                indexed: false,\n                name: 'nonce',\n                type: 'uint256',\n            },\n            { indexed: false, name: 'success', type: 'bool' },\n            {\n                indexed: false,\n                name: 'actualGasCost',\n                type: 'uint256',\n            },\n            {\n                indexed: false,\n                name: 'actualGasUsed',\n                type: 'uint256',\n            },\n        ],\n        name: 'UserOperationEvent',\n        type: 'event',\n    },\n    {\n        anonymous: false,\n        inputs: [\n            {\n                indexed: true,\n                name: 'userOpHash',\n                type: 'bytes32',\n            },\n            {\n                indexed: true,\n                name: 'sender',\n                type: 'address',\n            },\n            {\n                indexed: false,\n                name: 'nonce',\n                type: 'uint256',\n            },\n        ],\n        name: 'UserOperationPrefundTooLow',\n        type: 'event',\n    },\n    {\n        anonymous: false,\n        inputs: [\n            {\n                indexed: true,\n                name: 'userOpHash',\n                type: 'bytes32',\n            },\n            {\n                indexed: true,\n                name: 'sender',\n                type: 'address',\n            },\n            {\n                indexed: false,\n                name: 'nonce',\n                type: 'uint256',\n            },\n            {\n                indexed: false,\n                name: 'revertReason',\n                type: 'bytes',\n            },\n        ],\n        name: 'UserOperationRevertReason',\n        type: 'event',\n    },\n    {\n        anonymous: false,\n        inputs: [\n            {\n                indexed: true,\n                name: 'account',\n                type: 'address',\n            },\n            {\n                indexed: false,\n                name: 'withdrawAddress',\n                type: 'address',\n            },\n            {\n                indexed: false,\n                name: 'amount',\n                type: 'uint256',\n            },\n        ],\n        name: 'Withdrawn',\n        type: 'event',\n    },\n    {\n        inputs: [{ name: 'unstakeDelaySec', type: 'uint32' }],\n        name: 'addStake',\n        outputs: [],\n        stateMutability: 'payable',\n        type: 'function',\n    },\n    {\n        inputs: [{ name: 'account', type: 'address' }],\n        name: 'balanceOf',\n        outputs: [{ name: '', type: 'uint256' }],\n        stateMutability: 'view',\n        type: 'function',\n    },\n    {\n        inputs: [\n            { name: 'target', type: 'address' },\n            { name: 'data', type: 'bytes' },\n        ],\n        name: 'delegateAndRevert',\n        outputs: [],\n        stateMutability: 'nonpayable',\n        type: 'function',\n    },\n    {\n        inputs: [{ name: 'account', type: 'address' }],\n        name: 'depositTo',\n        outputs: [],\n        stateMutability: 'payable',\n        type: 'function',\n    },\n    {\n        inputs: [{ name: '', type: 'address' }],\n        name: 'deposits',\n        outputs: [\n            { name: 'deposit', type: 'uint256' },\n            { name: 'staked', type: 'bool' },\n            { name: 'stake', type: 'uint112' },\n            { name: 'unstakeDelaySec', type: 'uint32' },\n            { name: 'withdrawTime', type: 'uint48' },\n        ],\n        stateMutability: 'view',\n        type: 'function',\n    },\n    {\n        inputs: [{ name: 'account', type: 'address' }],\n        name: 'getDepositInfo',\n        outputs: [\n            {\n                components: [\n                    { name: 'deposit', type: 'uint256' },\n                    { name: 'staked', type: 'bool' },\n                    { name: 'stake', type: 'uint112' },\n                    { name: 'unstakeDelaySec', type: 'uint32' },\n                    { name: 'withdrawTime', type: 'uint48' },\n                ],\n                name: 'info',\n                type: 'tuple',\n            },\n        ],\n        stateMutability: 'view',\n        type: 'function',\n    },\n    {\n        inputs: [\n            { name: 'sender', type: 'address' },\n            { name: 'key', type: 'uint192' },\n        ],\n        name: 'getNonce',\n        outputs: [{ name: 'nonce', type: 'uint256' }],\n        stateMutability: 'view',\n        type: 'function',\n    },\n    {\n        inputs: [{ name: 'initCode', type: 'bytes' }],\n        name: 'getSenderAddress',\n        outputs: [],\n        stateMutability: 'nonpayable',\n        type: 'function',\n    },\n    {\n        inputs: [\n            {\n                components: [\n                    { name: 'sender', type: 'address' },\n                    { name: 'nonce', type: 'uint256' },\n                    { name: 'initCode', type: 'bytes' },\n                    { name: 'callData', type: 'bytes' },\n                    {\n                        name: 'accountGasLimits',\n                        type: 'bytes32',\n                    },\n                    {\n                        name: 'preVerificationGas',\n                        type: 'uint256',\n                    },\n                    { name: 'gasFees', type: 'bytes32' },\n                    { name: 'paymasterAndData', type: 'bytes' },\n                    { name: 'signature', type: 'bytes' },\n                ],\n                name: 'userOp',\n                type: 'tuple',\n            },\n        ],\n        name: 'getUserOpHash',\n        outputs: [{ name: '', type: 'bytes32' }],\n        stateMutability: 'view',\n        type: 'function',\n    },\n    {\n        inputs: [\n            {\n                components: [\n                    {\n                        components: [\n                            { name: 'sender', type: 'address' },\n                            { name: 'nonce', type: 'uint256' },\n                            { name: 'initCode', type: 'bytes' },\n                            { name: 'callData', type: 'bytes' },\n                            {\n                                name: 'accountGasLimits',\n                                type: 'bytes32',\n                            },\n                            {\n                                name: 'preVerificationGas',\n                                type: 'uint256',\n                            },\n                            { name: 'gasFees', type: 'bytes32' },\n                            {\n                                name: 'paymasterAndData',\n                                type: 'bytes',\n                            },\n                            { name: 'signature', type: 'bytes' },\n                        ],\n                        name: 'userOps',\n                        type: 'tuple[]',\n                    },\n                    {\n                        name: 'aggregator',\n                        type: 'address',\n                    },\n                    { name: 'signature', type: 'bytes' },\n                ],\n                name: 'opsPerAggregator',\n                type: 'tuple[]',\n            },\n            { name: 'beneficiary', type: 'address' },\n        ],\n        name: 'handleAggregatedOps',\n        outputs: [],\n        stateMutability: 'nonpayable',\n        type: 'function',\n    },\n    {\n        inputs: [\n            {\n                components: [\n                    { name: 'sender', type: 'address' },\n                    { name: 'nonce', type: 'uint256' },\n                    { name: 'initCode', type: 'bytes' },\n                    { name: 'callData', type: 'bytes' },\n                    {\n                        name: 'accountGasLimits',\n                        type: 'bytes32',\n                    },\n                    {\n                        name: 'preVerificationGas',\n                        type: 'uint256',\n                    },\n                    { name: 'gasFees', type: 'bytes32' },\n                    { name: 'paymasterAndData', type: 'bytes' },\n                    { name: 'signature', type: 'bytes' },\n                ],\n                name: 'ops',\n                type: 'tuple[]',\n            },\n            { name: 'beneficiary', type: 'address' },\n        ],\n        name: 'handleOps',\n        outputs: [],\n        stateMutability: 'nonpayable',\n        type: 'function',\n    },\n    {\n        inputs: [{ name: 'key', type: 'uint192' }],\n        name: 'incrementNonce',\n        outputs: [],\n        stateMutability: 'nonpayable',\n        type: 'function',\n    },\n    {\n        inputs: [\n            { name: 'callData', type: 'bytes' },\n            {\n                components: [\n                    {\n                        components: [\n                            { name: 'sender', type: 'address' },\n                            { name: 'nonce', type: 'uint256' },\n                            {\n                                name: 'verificationGasLimit',\n                                type: 'uint256',\n                            },\n                            {\n                                name: 'callGasLimit',\n                                type: 'uint256',\n                            },\n                            {\n                                name: 'paymasterVerificationGasLimit',\n                                type: 'uint256',\n                            },\n                            {\n                                name: 'paymasterPostOpGasLimit',\n                                type: 'uint256',\n                            },\n                            {\n                                name: 'preVerificationGas',\n                                type: 'uint256',\n                            },\n                            { name: 'paymaster', type: 'address' },\n                            {\n                                name: 'maxFeePerGas',\n                                type: 'uint256',\n                            },\n                            {\n                                name: 'maxPriorityFeePerGas',\n                                type: 'uint256',\n                            },\n                        ],\n                        name: 'mUserOp',\n                        type: 'tuple',\n                    },\n                    { name: 'userOpHash', type: 'bytes32' },\n                    { name: 'prefund', type: 'uint256' },\n                    { name: 'contextOffset', type: 'uint256' },\n                    { name: 'preOpGas', type: 'uint256' },\n                ],\n                name: 'opInfo',\n                type: 'tuple',\n            },\n            { name: 'context', type: 'bytes' },\n        ],\n        name: 'innerHandleOp',\n        outputs: [{ name: 'actualGasCost', type: 'uint256' }],\n        stateMutability: 'nonpayable',\n        type: 'function',\n    },\n    {\n        inputs: [\n            { name: '', type: 'address' },\n            { name: '', type: 'uint192' },\n        ],\n        name: 'nonceSequenceNumber',\n        outputs: [{ name: '', type: 'uint256' }],\n        stateMutability: 'view',\n        type: 'function',\n    },\n    {\n        inputs: [{ name: 'interfaceId', type: 'bytes4' }],\n        name: 'supportsInterface',\n        outputs: [{ name: '', type: 'bool' }],\n        stateMutability: 'view',\n        type: 'function',\n    },\n    {\n        inputs: [],\n        name: 'unlockStake',\n        outputs: [],\n        stateMutability: 'nonpayable',\n        type: 'function',\n    },\n    {\n        inputs: [\n            {\n                name: 'withdrawAddress',\n                type: 'address',\n            },\n        ],\n        name: 'withdrawStake',\n        outputs: [],\n        stateMutability: 'nonpayable',\n        type: 'function',\n    },\n    {\n        inputs: [\n            {\n                name: 'withdrawAddress',\n                type: 'address',\n            },\n            { name: 'withdrawAmount', type: 'uint256' },\n        ],\n        name: 'withdrawTo',\n        outputs: [],\n        stateMutability: 'nonpayable',\n        type: 'function',\n    },\n    { stateMutability: 'payable', type: 'receive' },\n];\nexport const entryPoint08Abi = [\n    { inputs: [], stateMutability: 'nonpayable', type: 'constructor' },\n    {\n        inputs: [\n            { internalType: 'bool', name: 'success', type: 'bool' },\n            { internalType: 'bytes', name: 'ret', type: 'bytes' },\n        ],\n        name: 'DelegateAndRevert',\n        type: 'error',\n    },\n    {\n        inputs: [\n            { internalType: 'uint256', name: 'opIndex', type: 'uint256' },\n            { internalType: 'string', name: 'reason', type: 'string' },\n        ],\n        name: 'FailedOp',\n        type: 'error',\n    },\n    {\n        inputs: [\n            { internalType: 'uint256', name: 'opIndex', type: 'uint256' },\n            { internalType: 'string', name: 'reason', type: 'string' },\n            { internalType: 'bytes', name: 'inner', type: 'bytes' },\n        ],\n        name: 'FailedOpWithRevert',\n        type: 'error',\n    },\n    { inputs: [], name: 'InvalidShortString', type: 'error' },\n    {\n        inputs: [{ internalType: 'bytes', name: 'returnData', type: 'bytes' }],\n        name: 'PostOpReverted',\n        type: 'error',\n    },\n    { inputs: [], name: 'ReentrancyGuardReentrantCall', type: 'error' },\n    {\n        inputs: [{ internalType: 'address', name: 'sender', type: 'address' }],\n        name: 'SenderAddressResult',\n        type: 'error',\n    },\n    {\n        inputs: [{ internalType: 'address', name: 'aggregator', type: 'address' }],\n        name: 'SignatureValidationFailed',\n        type: 'error',\n    },\n    {\n        inputs: [{ internalType: 'string', name: 'str', type: 'string' }],\n        name: 'StringTooLong',\n        type: 'error',\n    },\n    {\n        anonymous: false,\n        inputs: [\n            {\n                indexed: true,\n                internalType: 'bytes32',\n                name: 'userOpHash',\n                type: 'bytes32',\n            },\n            {\n                indexed: true,\n                internalType: 'address',\n                name: 'sender',\n                type: 'address',\n            },\n            {\n                indexed: false,\n                internalType: 'address',\n                name: 'factory',\n                type: 'address',\n            },\n            {\n                indexed: false,\n                internalType: 'address',\n                name: 'paymaster',\n                type: 'address',\n            },\n        ],\n        name: 'AccountDeployed',\n        type: 'event',\n    },\n    { anonymous: false, inputs: [], name: 'BeforeExecution', type: 'event' },\n    {\n        anonymous: false,\n        inputs: [\n            {\n                indexed: true,\n                internalType: 'address',\n                name: 'account',\n                type: 'address',\n            },\n            {\n                indexed: false,\n                internalType: 'uint256',\n                name: 'totalDeposit',\n                type: 'uint256',\n            },\n        ],\n        name: 'Deposited',\n        type: 'event',\n    },\n    { anonymous: false, inputs: [], name: 'EIP712DomainChanged', type: 'event' },\n    {\n        anonymous: false,\n        inputs: [\n            {\n                indexed: true,\n                internalType: 'bytes32',\n                name: 'userOpHash',\n                type: 'bytes32',\n            },\n            {\n                indexed: true,\n                internalType: 'address',\n                name: 'sender',\n                type: 'address',\n            },\n            {\n                indexed: false,\n                internalType: 'uint256',\n                name: 'nonce',\n                type: 'uint256',\n            },\n            {\n                indexed: false,\n                internalType: 'bytes',\n                name: 'revertReason',\n                type: 'bytes',\n            },\n        ],\n        name: 'PostOpRevertReason',\n        type: 'event',\n    },\n    {\n        anonymous: false,\n        inputs: [\n            {\n                indexed: true,\n                internalType: 'address',\n                name: 'aggregator',\n                type: 'address',\n            },\n        ],\n        name: 'SignatureAggregatorChanged',\n        type: 'event',\n    },\n    {\n        anonymous: false,\n        inputs: [\n            {\n                indexed: true,\n                internalType: 'address',\n                name: 'account',\n                type: 'address',\n            },\n            {\n                indexed: false,\n                internalType: 'uint256',\n                name: 'totalStaked',\n                type: 'uint256',\n            },\n            {\n                indexed: false,\n                internalType: 'uint256',\n                name: 'unstakeDelaySec',\n                type: 'uint256',\n            },\n        ],\n        name: 'StakeLocked',\n        type: 'event',\n    },\n    {\n        anonymous: false,\n        inputs: [\n            {\n                indexed: true,\n                internalType: 'address',\n                name: 'account',\n                type: 'address',\n            },\n            {\n                indexed: false,\n                internalType: 'uint256',\n                name: 'withdrawTime',\n                type: 'uint256',\n            },\n        ],\n        name: 'StakeUnlocked',\n        type: 'event',\n    },\n    {\n        anonymous: false,\n        inputs: [\n            {\n                indexed: true,\n                internalType: 'address',\n                name: 'account',\n                type: 'address',\n            },\n            {\n                indexed: false,\n                internalType: 'address',\n                name: 'withdrawAddress',\n                type: 'address',\n            },\n            {\n                indexed: false,\n                internalType: 'uint256',\n                name: 'amount',\n                type: 'uint256',\n            },\n        ],\n        name: 'StakeWithdrawn',\n        type: 'event',\n    },\n    {\n        anonymous: false,\n        inputs: [\n            {\n                indexed: true,\n                internalType: 'bytes32',\n                name: 'userOpHash',\n                type: 'bytes32',\n            },\n            {\n                indexed: true,\n                internalType: 'address',\n                name: 'sender',\n                type: 'address',\n            },\n            {\n                indexed: true,\n                internalType: 'address',\n                name: 'paymaster',\n                type: 'address',\n            },\n            {\n                indexed: false,\n                internalType: 'uint256',\n                name: 'nonce',\n                type: 'uint256',\n            },\n            { indexed: false, internalType: 'bool', name: 'success', type: 'bool' },\n            {\n                indexed: false,\n                internalType: 'uint256',\n                name: 'actualGasCost',\n                type: 'uint256',\n            },\n            {\n                indexed: false,\n                internalType: 'uint256',\n                name: 'actualGasUsed',\n                type: 'uint256',\n            },\n        ],\n        name: 'UserOperationEvent',\n        type: 'event',\n    },\n    {\n        anonymous: false,\n        inputs: [\n            {\n                indexed: true,\n                internalType: 'bytes32',\n                name: 'userOpHash',\n                type: 'bytes32',\n            },\n            {\n                indexed: true,\n                internalType: 'address',\n                name: 'sender',\n                type: 'address',\n            },\n            {\n                indexed: false,\n                internalType: 'uint256',\n                name: 'nonce',\n                type: 'uint256',\n            },\n        ],\n        name: 'UserOperationPrefundTooLow',\n        type: 'event',\n    },\n    {\n        anonymous: false,\n        inputs: [\n            {\n                indexed: true,\n                internalType: 'bytes32',\n                name: 'userOpHash',\n                type: 'bytes32',\n            },\n            {\n                indexed: true,\n                internalType: 'address',\n                name: 'sender',\n                type: 'address',\n            },\n            {\n                indexed: false,\n                internalType: 'uint256',\n                name: 'nonce',\n                type: 'uint256',\n            },\n            {\n                indexed: false,\n                internalType: 'bytes',\n                name: 'revertReason',\n                type: 'bytes',\n            },\n        ],\n        name: 'UserOperationRevertReason',\n        type: 'event',\n    },\n    {\n        anonymous: false,\n        inputs: [\n            {\n                indexed: true,\n                internalType: 'address',\n                name: 'account',\n                type: 'address',\n            },\n            {\n                indexed: false,\n                internalType: 'address',\n                name: 'withdrawAddress',\n                type: 'address',\n            },\n            {\n                indexed: false,\n                internalType: 'uint256',\n                name: 'amount',\n                type: 'uint256',\n            },\n        ],\n        name: 'Withdrawn',\n        type: 'event',\n    },\n    {\n        inputs: [\n            { internalType: 'uint32', name: 'unstakeDelaySec', type: 'uint32' },\n        ],\n        name: 'addStake',\n        outputs: [],\n        stateMutability: 'payable',\n        type: 'function',\n    },\n    {\n        inputs: [{ internalType: 'address', name: 'account', type: 'address' }],\n        name: 'balanceOf',\n        outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n        stateMutability: 'view',\n        type: 'function',\n    },\n    {\n        inputs: [\n            { internalType: 'address', name: 'target', type: 'address' },\n            { internalType: 'bytes', name: 'data', type: 'bytes' },\n        ],\n        name: 'delegateAndRevert',\n        outputs: [],\n        stateMutability: 'nonpayable',\n        type: 'function',\n    },\n    {\n        inputs: [{ internalType: 'address', name: 'account', type: 'address' }],\n        name: 'depositTo',\n        outputs: [],\n        stateMutability: 'payable',\n        type: 'function',\n    },\n    {\n        inputs: [],\n        name: 'eip712Domain',\n        outputs: [\n            { internalType: 'bytes1', name: 'fields', type: 'bytes1' },\n            { internalType: 'string', name: 'name', type: 'string' },\n            { internalType: 'string', name: 'version', type: 'string' },\n            { internalType: 'uint256', name: 'chainId', type: 'uint256' },\n            { internalType: 'address', name: 'verifyingContract', type: 'address' },\n            { internalType: 'bytes32', name: 'salt', type: 'bytes32' },\n            { internalType: 'uint256[]', name: 'extensions', type: 'uint256[]' },\n        ],\n        stateMutability: 'view',\n        type: 'function',\n    },\n    {\n        inputs: [{ internalType: 'address', name: 'account', type: 'address' }],\n        name: 'getDepositInfo',\n        outputs: [\n            {\n                components: [\n                    { internalType: 'uint256', name: 'deposit', type: 'uint256' },\n                    { internalType: 'bool', name: 'staked', type: 'bool' },\n                    { internalType: 'uint112', name: 'stake', type: 'uint112' },\n                    { internalType: 'uint32', name: 'unstakeDelaySec', type: 'uint32' },\n                    { internalType: 'uint48', name: 'withdrawTime', type: 'uint48' },\n                ],\n                internalType: 'struct IStakeManager.DepositInfo',\n                name: 'info',\n                type: 'tuple',\n            },\n        ],\n        stateMutability: 'view',\n        type: 'function',\n    },\n    {\n        inputs: [],\n        name: 'getDomainSeparatorV4',\n        outputs: [{ internalType: 'bytes32', name: '', type: 'bytes32' }],\n        stateMutability: 'view',\n        type: 'function',\n    },\n    {\n        inputs: [\n            { internalType: 'address', name: 'sender', type: 'address' },\n            { internalType: 'uint192', name: 'key', type: 'uint192' },\n        ],\n        name: 'getNonce',\n        outputs: [{ internalType: 'uint256', name: 'nonce', type: 'uint256' }],\n        stateMutability: 'view',\n        type: 'function',\n    },\n    {\n        inputs: [],\n        name: 'getPackedUserOpTypeHash',\n        outputs: [{ internalType: 'bytes32', name: '', type: 'bytes32' }],\n        stateMutability: 'pure',\n        type: 'function',\n    },\n    {\n        inputs: [{ internalType: 'bytes', name: 'initCode', type: 'bytes' }],\n        name: 'getSenderAddress',\n        outputs: [],\n        stateMutability: 'nonpayable',\n        type: 'function',\n    },\n    {\n        inputs: [\n            {\n                components: [\n                    { internalType: 'address', name: 'sender', type: 'address' },\n                    { internalType: 'uint256', name: 'nonce', type: 'uint256' },\n                    { internalType: 'bytes', name: 'initCode', type: 'bytes' },\n                    { internalType: 'bytes', name: 'callData', type: 'bytes' },\n                    {\n                        internalType: 'bytes32',\n                        name: 'accountGasLimits',\n                        type: 'bytes32',\n                    },\n                    {\n                        internalType: 'uint256',\n                        name: 'preVerificationGas',\n                        type: 'uint256',\n                    },\n                    { internalType: 'bytes32', name: 'gasFees', type: 'bytes32' },\n                    { internalType: 'bytes', name: 'paymasterAndData', type: 'bytes' },\n                    { internalType: 'bytes', name: 'signature', type: 'bytes' },\n                ],\n                internalType: 'struct PackedUserOperation',\n                name: 'userOp',\n                type: 'tuple',\n            },\n        ],\n        name: 'getUserOpHash',\n        outputs: [{ internalType: 'bytes32', name: '', type: 'bytes32' }],\n        stateMutability: 'view',\n        type: 'function',\n    },\n    {\n        inputs: [\n            {\n                components: [\n                    {\n                        components: [\n                            { internalType: 'address', name: 'sender', type: 'address' },\n                            { internalType: 'uint256', name: 'nonce', type: 'uint256' },\n                            { internalType: 'bytes', name: 'initCode', type: 'bytes' },\n                            { internalType: 'bytes', name: 'callData', type: 'bytes' },\n                            {\n                                internalType: 'bytes32',\n                                name: 'accountGasLimits',\n                                type: 'bytes32',\n                            },\n                            {\n                                internalType: 'uint256',\n                                name: 'preVerificationGas',\n                                type: 'uint256',\n                            },\n                            { internalType: 'bytes32', name: 'gasFees', type: 'bytes32' },\n                            {\n                                internalType: 'bytes',\n                                name: 'paymasterAndData',\n                                type: 'bytes',\n                            },\n                            { internalType: 'bytes', name: 'signature', type: 'bytes' },\n                        ],\n                        internalType: 'struct PackedUserOperation[]',\n                        name: 'userOps',\n                        type: 'tuple[]',\n                    },\n                    {\n                        internalType: 'contract IAggregator',\n                        name: 'aggregator',\n                        type: 'address',\n                    },\n                    { internalType: 'bytes', name: 'signature', type: 'bytes' },\n                ],\n                internalType: 'struct IEntryPoint.UserOpsPerAggregator[]',\n                name: 'opsPerAggregator',\n                type: 'tuple[]',\n            },\n            { internalType: 'address payable', name: 'beneficiary', type: 'address' },\n        ],\n        name: 'handleAggregatedOps',\n        outputs: [],\n        stateMutability: 'nonpayable',\n        type: 'function',\n    },\n    {\n        inputs: [\n            {\n                components: [\n                    { internalType: 'address', name: 'sender', type: 'address' },\n                    { internalType: 'uint256', name: 'nonce', type: 'uint256' },\n                    { internalType: 'bytes', name: 'initCode', type: 'bytes' },\n                    { internalType: 'bytes', name: 'callData', type: 'bytes' },\n                    {\n                        internalType: 'bytes32',\n                        name: 'accountGasLimits',\n                        type: 'bytes32',\n                    },\n                    {\n                        internalType: 'uint256',\n                        name: 'preVerificationGas',\n                        type: 'uint256',\n                    },\n                    { internalType: 'bytes32', name: 'gasFees', type: 'bytes32' },\n                    { internalType: 'bytes', name: 'paymasterAndData', type: 'bytes' },\n                    { internalType: 'bytes', name: 'signature', type: 'bytes' },\n                ],\n                internalType: 'struct PackedUserOperation[]',\n                name: 'ops',\n                type: 'tuple[]',\n            },\n            { internalType: 'address payable', name: 'beneficiary', type: 'address' },\n        ],\n        name: 'handleOps',\n        outputs: [],\n        stateMutability: 'nonpayable',\n        type: 'function',\n    },\n    {\n        inputs: [{ internalType: 'uint192', name: 'key', type: 'uint192' }],\n        name: 'incrementNonce',\n        outputs: [],\n        stateMutability: 'nonpayable',\n        type: 'function',\n    },\n    {\n        inputs: [\n            { internalType: 'bytes', name: 'callData', type: 'bytes' },\n            {\n                components: [\n                    {\n                        components: [\n                            { internalType: 'address', name: 'sender', type: 'address' },\n                            { internalType: 'uint256', name: 'nonce', type: 'uint256' },\n                            {\n                                internalType: 'uint256',\n                                name: 'verificationGasLimit',\n                                type: 'uint256',\n                            },\n                            {\n                                internalType: 'uint256',\n                                name: 'callGasLimit',\n                                type: 'uint256',\n                            },\n                            {\n                                internalType: 'uint256',\n                                name: 'paymasterVerificationGasLimit',\n                                type: 'uint256',\n                            },\n                            {\n                                internalType: 'uint256',\n                                name: 'paymasterPostOpGasLimit',\n                                type: 'uint256',\n                            },\n                            {\n                                internalType: 'uint256',\n                                name: 'preVerificationGas',\n                                type: 'uint256',\n                            },\n                            { internalType: 'address', name: 'paymaster', type: 'address' },\n                            {\n                                internalType: 'uint256',\n                                name: 'maxFeePerGas',\n                                type: 'uint256',\n                            },\n                            {\n                                internalType: 'uint256',\n                                name: 'maxPriorityFeePerGas',\n                                type: 'uint256',\n                            },\n                        ],\n                        internalType: 'struct EntryPoint.MemoryUserOp',\n                        name: 'mUserOp',\n                        type: 'tuple',\n                    },\n                    { internalType: 'bytes32', name: 'userOpHash', type: 'bytes32' },\n                    { internalType: 'uint256', name: 'prefund', type: 'uint256' },\n                    { internalType: 'uint256', name: 'contextOffset', type: 'uint256' },\n                    { internalType: 'uint256', name: 'preOpGas', type: 'uint256' },\n                ],\n                internalType: 'struct EntryPoint.UserOpInfo',\n                name: 'opInfo',\n                type: 'tuple',\n            },\n            { internalType: 'bytes', name: 'context', type: 'bytes' },\n        ],\n        name: 'innerHandleOp',\n        outputs: [\n            { internalType: 'uint256', name: 'actualGasCost', type: 'uint256' },\n        ],\n        stateMutability: 'nonpayable',\n        type: 'function',\n    },\n    {\n        inputs: [\n            { internalType: 'address', name: '', type: 'address' },\n            { internalType: 'uint192', name: '', type: 'uint192' },\n        ],\n        name: 'nonceSequenceNumber',\n        outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n        stateMutability: 'view',\n        type: 'function',\n    },\n    {\n        inputs: [],\n        name: 'senderCreator',\n        outputs: [\n            { internalType: 'contract ISenderCreator', name: '', type: 'address' },\n        ],\n        stateMutability: 'view',\n        type: 'function',\n    },\n    {\n        inputs: [{ internalType: 'bytes4', name: 'interfaceId', type: 'bytes4' }],\n        name: 'supportsInterface',\n        outputs: [{ internalType: 'bool', name: '', type: 'bool' }],\n        stateMutability: 'view',\n        type: 'function',\n    },\n    {\n        inputs: [],\n        name: 'unlockStake',\n        outputs: [],\n        stateMutability: 'nonpayable',\n        type: 'function',\n    },\n    {\n        inputs: [\n            {\n                internalType: 'address payable',\n                name: 'withdrawAddress',\n                type: 'address',\n            },\n        ],\n        name: 'withdrawStake',\n        outputs: [],\n        stateMutability: 'nonpayable',\n        type: 'function',\n    },\n    {\n        inputs: [\n            {\n                internalType: 'address payable',\n                name: 'withdrawAddress',\n                type: 'address',\n            },\n            { internalType: 'uint256', name: 'withdrawAmount', type: 'uint256' },\n        ],\n        name: 'withdrawTo',\n        outputs: [],\n        stateMutability: 'nonpayable',\n        type: 'function',\n    },\n    { stateMutability: 'payable', type: 'receive' },\n];\n//# sourceMappingURL=abis.js.map","import { concat } from '../../../utils/data/concat.js';\nexport function getInitCode(userOperation) {\n    const { authorization, factory, factoryData } = userOperation;\n    if (factory === '0x7702' ||\n        factory === '0x7702000000000000000000000000000000000000') {\n        if (!authorization)\n            return '0x7702000000000000000000000000000000000000';\n        const delegation = authorization.address;\n        return concat([delegation, factoryData ?? '0x']);\n    }\n    if (!factory)\n        return '0x';\n    return concat([factory, factoryData ?? '0x']);\n}\n//# sourceMappingURL=getInitCode.js.map","export async function wait(time) {\n    return new Promise((res) => setTimeout(res, time));\n}\n//# sourceMappingURL=wait.js.map","import { InvalidAddressError, } from '../../errors/address.js';\nimport { isAddress } from './isAddress.js';\nexport function isAddressEqual(a, b) {\n    if (!isAddress(a, { strict: false }))\n        throw new InvalidAddressError({ address: a });\n    if (!isAddress(b, { strict: false }))\n        throw new InvalidAddressError({ address: b });\n    return a.toLowerCase() === b.toLowerCase();\n}\n//# sourceMappingURL=isAddressEqual.js.map","import { concatHex } from '../data/concat.js';\nimport { hexToBytes } from '../encoding/toBytes.js';\nimport { numberToHex } from '../encoding/toHex.js';\nimport { toRlp } from '../encoding/toRlp.js';\nimport { keccak256 } from '../hash/keccak256.js';\n/**\n * Computes an Authorization hash in [EIP-7702 format](https://eips.ethereum.org/EIPS/eip-7702): `keccak256('0x05' || rlp([chain_id, address, nonce]))`.\n */\nexport function hashAuthorization(parameters) {\n    const { chainId, nonce, to } = parameters;\n    const address = parameters.contractAddress ?? parameters.address;\n    const hash = keccak256(concatHex([\n        '0x05',\n        toRlp([\n            chainId ? numberToHex(chainId) : '0x',\n            address,\n            nonce ? numberToHex(nonce) : '0x',\n        ]),\n    ]));\n    if (to === 'bytes')\n        return hexToBytes(hash);\n    return hash;\n}\n//# sourceMappingURL=hashAuthorization.js.map","import { checksumAddress, } from '../../utils/address/getAddress.js';\nimport { keccak256, } from '../../utils/hash/keccak256.js';\n/**\n * @description Converts an ECDSA public key to an address.\n *\n * @param publicKey The public key to convert.\n *\n * @returns The address.\n */\nexport function publicKeyToAddress(publicKey) {\n    const address = keccak256(`0x${publicKey.substring(4)}`).substring(26);\n    return checksumAddress(`0x${address}`);\n}\n//# sourceMappingURL=publicKeyToAddress.js.map","import { isHex } from '../data/isHex.js';\nimport { size } from '../data/size.js';\nimport { hexToBigInt, hexToNumber, } from '../encoding/fromHex.js';\nimport { toHex } from '../encoding/toHex.js';\nexport async function recoverPublicKey({ hash, signature, }) {\n    const hashHex = isHex(hash) ? hash : toHex(hash);\n    const { secp256k1 } = await import('@noble/curves/secp256k1');\n    const signature_ = (() => {\n        // typeof signature: `Signature`\n        if (typeof signature === 'object' && 'r' in signature && 's' in signature) {\n            const { r, s, v, yParity } = signature;\n            const yParityOrV = Number(yParity ?? v);\n            const recoveryBit = toRecoveryBit(yParityOrV);\n            return new secp256k1.Signature(hexToBigInt(r), hexToBigInt(s)).addRecoveryBit(recoveryBit);\n        }\n        // typeof signature: `Hex | ByteArray`\n        const signatureHex = isHex(signature) ? signature : toHex(signature);\n        if (size(signatureHex) !== 65)\n            throw new Error('invalid signature length');\n        const yParityOrV = hexToNumber(`0x${signatureHex.slice(130)}`);\n        const recoveryBit = toRecoveryBit(yParityOrV);\n        return secp256k1.Signature.fromCompact(signatureHex.substring(2, 130)).addRecoveryBit(recoveryBit);\n    })();\n    const publicKey = signature_\n        .recoverPublicKey(hashHex.substring(2))\n        .toHex(false);\n    return `0x${publicKey}`;\n}\nfunction toRecoveryBit(yParityOrV) {\n    if (yParityOrV === 0 || yParityOrV === 1)\n        return yParityOrV;\n    if (yParityOrV === 27)\n        return 0;\n    if (yParityOrV === 28)\n        return 1;\n    throw new Error('Invalid yParityOrV value');\n}\n//# sourceMappingURL=recoverPublicKey.js.map","import { publicKeyToAddress } from '../../accounts/utils/publicKeyToAddress.js';\nimport { recoverPublicKey } from './recoverPublicKey.js';\nexport async function recoverAddress({ hash, signature, }) {\n    return publicKeyToAddress(await recoverPublicKey({ hash, signature }));\n}\n//# sourceMappingURL=recoverAddress.js.map","import { recoverAddress, } from '../signature/recoverAddress.js';\nimport { hashAuthorization, } from './hashAuthorization.js';\nexport async function recoverAuthorizationAddress(parameters) {\n    const { authorization, signature } = parameters;\n    return recoverAddress({\n        hash: hashAuthorization(authorization),\n        signature: (signature ?? authorization),\n    });\n}\n//# sourceMappingURL=recoverAuthorizationAddress.js.map","import { formatEther } from '../utils/unit/formatEther.js';\nimport { formatGwei } from '../utils/unit/formatGwei.js';\nimport { BaseError } from './base.js';\nimport { prettyPrint } from './transaction.js';\nexport class EstimateGasExecutionError extends BaseError {\n    constructor(cause, { account, docsPath, chain, data, gas, gasPrice, maxFeePerGas, maxPriorityFeePerGas, nonce, to, value, }) {\n        const prettyArgs = prettyPrint({\n            from: account?.address,\n            to,\n            value: typeof value !== 'undefined' &&\n                `${formatEther(value)} ${chain?.nativeCurrency?.symbol || 'ETH'}`,\n            data,\n            gas,\n            gasPrice: typeof gasPrice !== 'undefined' && `${formatGwei(gasPrice)} gwei`,\n            maxFeePerGas: typeof maxFeePerGas !== 'undefined' &&\n                `${formatGwei(maxFeePerGas)} gwei`,\n            maxPriorityFeePerGas: typeof maxPriorityFeePerGas !== 'undefined' &&\n                `${formatGwei(maxPriorityFeePerGas)} gwei`,\n            nonce,\n        });\n        super(cause.shortMessage, {\n            cause,\n            docsPath,\n            metaMessages: [\n                ...(cause.metaMessages ? [...cause.metaMessages, ' '] : []),\n                'Estimate Gas Arguments:',\n                prettyArgs,\n            ].filter(Boolean),\n            name: 'EstimateGasExecutionError',\n        });\n        Object.defineProperty(this, \"cause\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        this.cause = cause;\n    }\n}\n//# sourceMappingURL=estimateGas.js.map","import { EstimateGasExecutionError, } from '../../errors/estimateGas.js';\nimport { UnknownNodeError } from '../../errors/node.js';\nimport { getNodeError, } from './getNodeError.js';\nexport function getEstimateGasError(err, { docsPath, ...args }) {\n    const cause = (() => {\n        const cause = getNodeError(err, args);\n        if (cause instanceof UnknownNodeError)\n            return err;\n        return cause;\n    })();\n    return new EstimateGasExecutionError(cause, {\n        docsPath,\n        ...args,\n    });\n}\n//# sourceMappingURL=getEstimateGasError.js.map","import { UnknownNodeError } from '../../errors/node.js';\nimport { TransactionExecutionError, } from '../../errors/transaction.js';\nimport { getNodeError, } from './getNodeError.js';\nexport function getTransactionError(err, { docsPath, ...args }) {\n    const cause = (() => {\n        const cause = getNodeError(err, args);\n        if (cause instanceof UnknownNodeError)\n            return err;\n        return cause;\n    })();\n    return new TransactionExecutionError(cause, {\n        docsPath,\n        ...args,\n    });\n}\n//# sourceMappingURL=getTransactionError.js.map","export const erc6492MagicBytes = '0x6492649264926492649264926492649264926492649264926492649264926492';\nexport const zeroHash = '0x0000000000000000000000000000000000000000000000000000000000000000';\n//# sourceMappingURL=bytes.js.map","import { erc6492MagicBytes } from '../../constants/bytes.js';\nimport { encodeAbiParameters } from '../abi/encodeAbiParameters.js';\nimport { concatHex } from '../data/concat.js';\nimport { hexToBytes } from '../encoding/toBytes.js';\n/**\n * @description Serializes a ERC-6492 flavoured signature into hex format.\n *\n * @param signature ERC-6492 signature in object format.\n * @returns ERC-6492 signature in hex format.\n *\n * @example\n * serializeSignature({ address: '0x...', data: '0x...', signature: '0x...' })\n * // '0x000000000000000000000000cafebabecafebabecafebabecafebabecafebabe000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000004deadbeef000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041a461f509887bd19e312c0c58467ce8ff8e300d3c1a90b608a760c5b80318eaf15fe57c96f9175d6cd4daad4663763baa7e78836e067d0163e9a2ccf2ff753f5b1b000000000000000000000000000000000000000000000000000000000000006492649264926492649264926492649264926492649264926492649264926492'\n */\nexport function serializeErc6492Signature(parameters) {\n    const { address, data, signature, to = 'hex' } = parameters;\n    const signature_ = concatHex([\n        encodeAbiParameters([{ type: 'address' }, { type: 'bytes' }, { type: 'bytes' }], [address, data, signature]),\n        erc6492MagicBytes,\n    ]);\n    if (to === 'hex')\n        return signature_;\n    return hexToBytes(signature_);\n}\n//# sourceMappingURL=serializeErc6492Signature.js.map","import { hexToNumber, } from '../../utils/encoding/fromHex.js';\nimport { numberToHex, } from '../../utils/encoding/toHex.js';\n/**\n * Returns the number of [Transactions](https://viem.sh/docs/glossary/terms#transaction) an Account has sent.\n *\n * - Docs: https://viem.sh/docs/actions/public/getTransactionCount\n * - JSON-RPC Methods: [`eth_getTransactionCount`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_gettransactioncount)\n *\n * @param client - Client to use\n * @param parameters - {@link GetTransactionCountParameters}\n * @returns The number of transactions an account has sent. {@link GetTransactionCountReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getTransactionCount } from 'viem/public'\n *\n * const client = createPublicClient({\n *   chain: mainnet,\n *   transport: http(),\n * })\n * const transactionCount = await getTransactionCount(client, {\n *   address: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n * })\n */\nexport async function getTransactionCount(client, { address, blockTag = 'latest', blockNumber }) {\n    const count = await client.request({\n        method: 'eth_getTransactionCount',\n        params: [\n            address,\n            typeof blockNumber === 'bigint' ? numberToHex(blockNumber) : blockTag,\n        ],\n    }, {\n        dedupe: Boolean(blockNumber),\n    });\n    return hexToNumber(count);\n}\n//# sourceMappingURL=getTransactionCount.js.map","import { getTransactionCount } from '../actions/public/getTransactionCount.js';\nimport { LruMap } from './lru.js';\n/**\n * Creates a nonce manager for auto-incrementing transaction nonces.\n *\n * - Docs: https://viem.sh/docs/accounts/createNonceManager\n *\n * @example\n * ```ts\n * const nonceManager = createNonceManager({\n *   source: jsonRpc(),\n * })\n * ```\n */\nexport function createNonceManager(parameters) {\n    const { source } = parameters;\n    const deltaMap = new Map();\n    const nonceMap = new LruMap(8192);\n    const promiseMap = new Map();\n    const getKey = ({ address, chainId }) => `${address}.${chainId}`;\n    return {\n        async consume({ address, chainId, client }) {\n            const key = getKey({ address, chainId });\n            const promise = this.get({ address, chainId, client });\n            this.increment({ address, chainId });\n            const nonce = await promise;\n            await source.set({ address, chainId }, nonce);\n            nonceMap.set(key, nonce);\n            return nonce;\n        },\n        async increment({ address, chainId }) {\n            const key = getKey({ address, chainId });\n            const delta = deltaMap.get(key) ?? 0;\n            deltaMap.set(key, delta + 1);\n        },\n        async get({ address, chainId, client }) {\n            const key = getKey({ address, chainId });\n            let promise = promiseMap.get(key);\n            if (!promise) {\n                promise = (async () => {\n                    try {\n                        const nonce = await source.get({ address, chainId, client });\n                        const previousNonce = nonceMap.get(key) ?? 0;\n                        if (previousNonce > 0 && nonce <= previousNonce)\n                            return previousNonce + 1;\n                        nonceMap.delete(key);\n                        return nonce;\n                    }\n                    finally {\n                        this.reset({ address, chainId });\n                    }\n                })();\n                promiseMap.set(key, promise);\n            }\n            const delta = deltaMap.get(key) ?? 0;\n            return delta + (await promise);\n        },\n        reset({ address, chainId }) {\n            const key = getKey({ address, chainId });\n            deltaMap.delete(key);\n            promiseMap.delete(key);\n        },\n    };\n}\n/** JSON-RPC source for a nonce manager. */\nexport function jsonRpc() {\n    return {\n        async get(parameters) {\n            const { address, client } = parameters;\n            return getTransactionCount(client, {\n                address,\n                blockTag: 'pending',\n            });\n        },\n        set() { },\n    };\n}\n////////////////////////////////////////////////////////////////////////////////////////////\n// Default\n/** Default Nonce Manager with a JSON-RPC source. */\nexport const nonceManager = /*#__PURE__*/ createNonceManager({\n    source: jsonRpc(),\n});\n//# sourceMappingURL=nonceManager.js.map","import { concat } from '../../../utils/data/concat.js';\nimport { pad } from '../../../utils/data/pad.js';\nimport { numberToHex } from '../../../utils/index.js';\nimport { getInitCode } from './getInitCode.js';\nexport function toPackedUserOperation(userOperation) {\n    const { callGasLimit, callData, maxPriorityFeePerGas, maxFeePerGas, paymaster, paymasterData, paymasterPostOpGasLimit, paymasterVerificationGasLimit, sender, signature = '0x', verificationGasLimit, } = userOperation;\n    const accountGasLimits = concat([\n        pad(numberToHex(verificationGasLimit || 0n), { size: 16 }),\n        pad(numberToHex(callGasLimit || 0n), { size: 16 }),\n    ]);\n    const initCode = getInitCode(userOperation);\n    const gasFees = concat([\n        pad(numberToHex(maxPriorityFeePerGas || 0n), { size: 16 }),\n        pad(numberToHex(maxFeePerGas || 0n), { size: 16 }),\n    ]);\n    const nonce = userOperation.nonce ?? 0n;\n    const paymasterAndData = paymaster\n        ? concat([\n            paymaster,\n            pad(numberToHex(paymasterVerificationGasLimit || 0n), {\n                size: 16,\n            }),\n            pad(numberToHex(paymasterPostOpGasLimit || 0n), {\n                size: 16,\n            }),\n            paymasterData || '0x',\n        ])\n        : '0x';\n    const preVerificationGas = userOperation.preVerificationGas ?? 0n;\n    return {\n        accountGasLimits,\n        callData,\n        initCode,\n        gasFees,\n        nonce,\n        paymasterAndData,\n        preVerificationGas,\n        sender,\n        signature,\n    };\n}\n//# sourceMappingURL=toPackedUserOperation.js.map","import { toPackedUserOperation } from './toPackedUserOperation.js';\nconst types = {\n    PackedUserOperation: [\n        { type: 'address', name: 'sender' },\n        { type: 'uint256', name: 'nonce' },\n        { type: 'bytes', name: 'initCode' },\n        { type: 'bytes', name: 'callData' },\n        { type: 'bytes32', name: 'accountGasLimits' },\n        { type: 'uint256', name: 'preVerificationGas' },\n        { type: 'bytes32', name: 'gasFees' },\n        { type: 'bytes', name: 'paymasterAndData' },\n    ],\n};\nexport function getUserOperationTypedData(parameters) {\n    const { chainId, entryPointAddress, userOperation } = parameters;\n    const packedUserOp = toPackedUserOperation(userOperation);\n    return {\n        types,\n        primaryType: 'PackedUserOperation',\n        domain: {\n            name: 'ERC4337',\n            version: '1',\n            chainId,\n            verifyingContract: entryPointAddress,\n        },\n        message: packedUserOp,\n    };\n}\n//# sourceMappingURL=getUserOperationTypedData.js.map","import { encodeAbiParameters } from '../../../utils/abi/encodeAbiParameters.js';\nimport { keccak256 } from '../../../utils/hash/keccak256.js';\nimport { hashTypedData } from '../../../utils/signature/hashTypedData.js';\nimport { getInitCode } from './getInitCode.js';\nimport { getUserOperationTypedData } from './getUserOperationTypedData.js';\nimport { toPackedUserOperation } from './toPackedUserOperation.js';\nexport function getUserOperationHash(parameters) {\n    const { chainId, entryPointAddress, entryPointVersion } = parameters;\n    const userOperation = parameters.userOperation;\n    const { authorization, callData = '0x', callGasLimit, maxFeePerGas, maxPriorityFeePerGas, nonce, paymasterAndData = '0x', preVerificationGas, sender, verificationGasLimit, } = userOperation;\n    if (entryPointVersion === '0.8')\n        return hashTypedData(getUserOperationTypedData({\n            chainId,\n            entryPointAddress,\n            userOperation,\n        }));\n    const packedUserOp = (() => {\n        if (entryPointVersion === '0.6') {\n            const factory = userOperation.initCode?.slice(0, 42);\n            const factoryData = userOperation.initCode?.slice(42);\n            const initCode = getInitCode({\n                authorization,\n                factory,\n                factoryData,\n            });\n            return encodeAbiParameters([\n                { type: 'address' },\n                { type: 'uint256' },\n                { type: 'bytes32' },\n                { type: 'bytes32' },\n                { type: 'uint256' },\n                { type: 'uint256' },\n                { type: 'uint256' },\n                { type: 'uint256' },\n                { type: 'uint256' },\n                { type: 'bytes32' },\n            ], [\n                sender,\n                nonce,\n                keccak256(initCode),\n                keccak256(callData),\n                callGasLimit,\n                verificationGasLimit,\n                preVerificationGas,\n                maxFeePerGas,\n                maxPriorityFeePerGas,\n                keccak256(paymasterAndData),\n            ]);\n        }\n        if (entryPointVersion === '0.7') {\n            const packedUserOp = toPackedUserOperation(userOperation);\n            return encodeAbiParameters([\n                { type: 'address' },\n                { type: 'uint256' },\n                { type: 'bytes32' },\n                { type: 'bytes32' },\n                { type: 'bytes32' },\n                { type: 'uint256' },\n                { type: 'bytes32' },\n                { type: 'bytes32' },\n            ], [\n                packedUserOp.sender,\n                packedUserOp.nonce,\n                keccak256(packedUserOp.initCode),\n                keccak256(packedUserOp.callData),\n                packedUserOp.accountGasLimits,\n                packedUserOp.preVerificationGas,\n                packedUserOp.gasFees,\n                keccak256(packedUserOp.paymasterAndData),\n            ]);\n        }\n        throw new Error(`entryPointVersion \"${entryPointVersion}\" not supported.`);\n    })();\n    return keccak256(encodeAbiParameters([{ type: 'bytes32' }, { type: 'address' }, { type: 'uint256' }], [keccak256(packedUserOp), entryPointAddress, BigInt(chainId)]));\n}\n//# sourceMappingURL=getUserOperationHash.js.map","import { numberToHex, } from '../../utils/encoding/toHex.js';\n/**\n * Retrieves the bytecode at an address.\n *\n * - Docs: https://viem.sh/docs/contract/getCode\n * - JSON-RPC Methods: [`eth_getCode`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getcode)\n *\n * @param client - Client to use\n * @param parameters - {@link GetCodeParameters}\n * @returns The contract's bytecode. {@link GetCodeReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getCode } from 'viem/contract'\n *\n * const client = createPublicClient({\n *   chain: mainnet,\n *   transport: http(),\n * })\n * const code = await getCode(client, {\n *   address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',\n * })\n */\nexport async function getCode(client, { address, blockNumber, blockTag = 'latest' }) {\n    const blockNumberHex = blockNumber !== undefined ? numberToHex(blockNumber) : undefined;\n    const hex = await client.request({\n        method: 'eth_getCode',\n        params: [address, blockNumberHex || blockTag],\n    }, { dedupe: Boolean(blockNumberHex) });\n    if (hex === '0x')\n        return undefined;\n    return hex;\n}\n//# sourceMappingURL=getCode.js.map","import { parseAbi } from 'abitype';\nimport { getCode } from '../../actions/public/getCode.js';\nimport { readContract } from '../../actions/public/readContract.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { createNonceManager } from '../../utils/nonceManager.js';\nimport { serializeErc6492Signature } from '../../utils/signature/serializeErc6492Signature.js';\n/**\n * @description Creates a Smart Account with a provided account implementation.\n *\n * @param parameters - {@link ToSmartAccountParameters}\n * @returns A Smart Account. {@link ToSmartAccountReturnType}\n */\nexport async function toSmartAccount(implementation) {\n    const { extend, nonceKeyManager = createNonceManager({\n        source: {\n            get() {\n                return Date.now();\n            },\n            set() { },\n        },\n    }), ...rest } = implementation;\n    let deployed = false;\n    const address = await implementation.getAddress();\n    return {\n        ...extend,\n        ...rest,\n        address,\n        async getFactoryArgs() {\n            if ('isDeployed' in this && (await this.isDeployed()))\n                return { factory: undefined, factoryData: undefined };\n            return implementation.getFactoryArgs();\n        },\n        async getNonce(parameters) {\n            const key = parameters?.key ??\n                BigInt(await nonceKeyManager.consume({\n                    address,\n                    chainId: implementation.client.chain.id,\n                    client: implementation.client,\n                }));\n            if (implementation.getNonce)\n                return await implementation.getNonce({ ...parameters, key });\n            const nonce = await readContract(implementation.client, {\n                abi: parseAbi([\n                    'function getNonce(address, uint192) pure returns (uint256)',\n                ]),\n                address: implementation.entryPoint.address,\n                functionName: 'getNonce',\n                args: [address, key],\n            });\n            return nonce;\n        },\n        async isDeployed() {\n            if (deployed)\n                return true;\n            const code = await getAction(implementation.client, getCode, 'getCode')({\n                address,\n            });\n            deployed = Boolean(code);\n            return deployed;\n        },\n        ...(implementation.sign\n            ? {\n                async sign(parameters) {\n                    const [{ factory, factoryData }, signature] = await Promise.all([\n                        this.getFactoryArgs(),\n                        implementation.sign(parameters),\n                    ]);\n                    if (factory && factoryData)\n                        return serializeErc6492Signature({\n                            address: factory,\n                            data: factoryData,\n                            signature,\n                        });\n                    return signature;\n                },\n            }\n            : {}),\n        async signMessage(parameters) {\n            const [{ factory, factoryData }, signature] = await Promise.all([\n                this.getFactoryArgs(),\n                implementation.signMessage(parameters),\n            ]);\n            if (factory && factoryData && factory !== '0x7702')\n                return serializeErc6492Signature({\n                    address: factory,\n                    data: factoryData,\n                    signature,\n                });\n            return signature;\n        },\n        async signTypedData(parameters) {\n            const [{ factory, factoryData }, signature] = await Promise.all([\n                this.getFactoryArgs(),\n                implementation.signTypedData(parameters),\n            ]);\n            if (factory && factoryData && factory !== '0x7702')\n                return serializeErc6492Signature({\n                    address: factory,\n                    data: factoryData,\n                    signature,\n                });\n            return signature;\n        },\n        type: 'smart',\n    };\n}\n//# sourceMappingURL=toSmartAccount.js.map","import { parseAccount, } from '../../accounts/utils/parseAccount.js';\nimport { AccountNotFoundError } from '../../errors/account.js';\nimport { stringToHex, toHex, } from '../../utils/encoding/toHex.js';\n/**\n * Calculates an Ethereum-specific signature in [EIP-191 format](https://eips.ethereum.org/EIPS/eip-191): `keccak256(\"\\x19Ethereum Signed Message:\\n\" + len(message) + message))`.\n *\n * - Docs: https://viem.sh/docs/actions/wallet/signMessage\n * - JSON-RPC Methods:\n *   - JSON-RPC Accounts: [`personal_sign`](https://docs.metamask.io/guide/signing-data#personal-sign)\n *   - Local Accounts: Signs locally. No JSON-RPC request.\n *\n * With the calculated signature, you can:\n * - use [`verifyMessage`](https://viem.sh/docs/utilities/verifyMessage) to verify the signature,\n * - use [`recoverMessageAddress`](https://viem.sh/docs/utilities/recoverMessageAddress) to recover the signing address from a signature.\n *\n * @param client - Client to use\n * @param parameters - {@link SignMessageParameters}\n * @returns The signed message. {@link SignMessageReturnType}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { signMessage } from 'viem/wallet'\n *\n * const client = createWalletClient({\n *   chain: mainnet,\n *   transport: custom(window.ethereum),\n * })\n * const signature = await signMessage(client, {\n *   account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n *   message: 'hello world',\n * })\n *\n * @example\n * // Account Hoisting\n * import { createWalletClient, custom } from 'viem'\n * import { privateKeyToAccount } from 'viem/accounts'\n * import { mainnet } from 'viem/chains'\n * import { signMessage } from 'viem/wallet'\n *\n * const client = createWalletClient({\n *   account: privateKeyToAccount('0x…'),\n *   chain: mainnet,\n *   transport: custom(window.ethereum),\n * })\n * const signature = await signMessage(client, {\n *   message: 'hello world',\n * })\n */\nexport async function signMessage(client, { account: account_ = client.account, message, }) {\n    if (!account_)\n        throw new AccountNotFoundError({\n            docsPath: '/docs/actions/wallet/signMessage',\n        });\n    const account = parseAccount(account_);\n    if (account.signMessage)\n        return account.signMessage({ message });\n    const message_ = (() => {\n        if (typeof message === 'string')\n            return stringToHex(message);\n        if (message.raw instanceof Uint8Array)\n            return toHex(message.raw);\n        return message.raw;\n    })();\n    return client.request({\n        method: 'personal_sign',\n        params: [message_, account.address],\n    }, { retryCount: 0 });\n}\n//# sourceMappingURL=signMessage.js.map","import { parseAccount, } from '../../accounts/utils/parseAccount.js';\nimport { AccountNotFoundError, } from '../../errors/account.js';\nimport { getTypesForEIP712Domain, serializeTypedData, validateTypedData, } from '../../utils/typedData.js';\n/**\n * Signs typed data and calculates an Ethereum-specific signature in [https://eips.ethereum.org/EIPS/eip-712](https://eips.ethereum.org/EIPS/eip-712): `sign(keccak256(\"\\x19\\x01\" ‖ domainSeparator ‖ hashStruct(message)))`\n *\n * - Docs: https://viem.sh/docs/actions/wallet/signTypedData\n * - JSON-RPC Methods:\n *   - JSON-RPC Accounts: [`eth_signTypedData_v4`](https://docs.metamask.io/guide/signing-data#signtypeddata-v4)\n *   - Local Accounts: Signs locally. No JSON-RPC request.\n *\n * @param client - Client to use\n * @param parameters - {@link SignTypedDataParameters}\n * @returns The signed data. {@link SignTypedDataReturnType}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { signTypedData } from 'viem/wallet'\n *\n * const client = createWalletClient({\n *   chain: mainnet,\n *   transport: custom(window.ethereum),\n * })\n * const signature = await signTypedData(client, {\n *   account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n *   domain: {\n *     name: 'Ether Mail',\n *     version: '1',\n *     chainId: 1,\n *     verifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',\n *   },\n *   types: {\n *     Person: [\n *       { name: 'name', type: 'string' },\n *       { name: 'wallet', type: 'address' },\n *     ],\n *     Mail: [\n *       { name: 'from', type: 'Person' },\n *       { name: 'to', type: 'Person' },\n *       { name: 'contents', type: 'string' },\n *     ],\n *   },\n *   primaryType: 'Mail',\n *   message: {\n *     from: {\n *       name: 'Cow',\n *       wallet: '0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826',\n *     },\n *     to: {\n *       name: 'Bob',\n *       wallet: '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB',\n *     },\n *     contents: 'Hello, Bob!',\n *   },\n * })\n *\n * @example\n * // Account Hoisting\n * import { createWalletClient, http } from 'viem'\n * import { privateKeyToAccount } from 'viem/accounts'\n * import { mainnet } from 'viem/chains'\n * import { signTypedData } from 'viem/wallet'\n *\n * const client = createWalletClient({\n *   account: privateKeyToAccount('0x…'),\n *   chain: mainnet,\n *   transport: http(),\n * })\n * const signature = await signTypedData(client, {\n *   domain: {\n *     name: 'Ether Mail',\n *     version: '1',\n *     chainId: 1,\n *     verifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',\n *   },\n *   types: {\n *     Person: [\n *       { name: 'name', type: 'string' },\n *       { name: 'wallet', type: 'address' },\n *     ],\n *     Mail: [\n *       { name: 'from', type: 'Person' },\n *       { name: 'to', type: 'Person' },\n *       { name: 'contents', type: 'string' },\n *     ],\n *   },\n *   primaryType: 'Mail',\n *   message: {\n *     from: {\n *       name: 'Cow',\n *       wallet: '0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826',\n *     },\n *     to: {\n *       name: 'Bob',\n *       wallet: '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB',\n *     },\n *     contents: 'Hello, Bob!',\n *   },\n * })\n */\nexport async function signTypedData(client, parameters) {\n    const { account: account_ = client.account, domain, message, primaryType, } = parameters;\n    if (!account_)\n        throw new AccountNotFoundError({\n            docsPath: '/docs/actions/wallet/signTypedData',\n        });\n    const account = parseAccount(account_);\n    const types = {\n        EIP712Domain: getTypesForEIP712Domain({ domain }),\n        ...parameters.types,\n    };\n    // Need to do a runtime validation check on addresses, byte ranges, integer ranges, etc\n    // as we can't statically check this with TypeScript.\n    validateTypedData({ domain, message, primaryType, types });\n    if (account.signTypedData)\n        return account.signTypedData({ domain, message, primaryType, types });\n    const typedData = serializeTypedData({ domain, message, primaryType, types });\n    return client.request({\n        method: 'eth_signTypedData_v4',\n        params: [account.address, typedData],\n    }, { retryCount: 0 });\n}\n//# sourceMappingURL=signTypedData.js.map","// TODO(v3): Rename to `toLocalAccount` + add `source` property to define source (privateKey, mnemonic, hdKey, etc).\nimport { InvalidAddressError, } from '../errors/address.js';\nimport { isAddress, } from '../utils/address/isAddress.js';\n/**\n * @description Creates an Account from a custom signing implementation.\n *\n * @returns A Local Account.\n */\nexport function toAccount(source) {\n    if (typeof source === 'string') {\n        if (!isAddress(source, { strict: false }))\n            throw new InvalidAddressError({ address: source });\n        return {\n            address: source,\n            type: 'json-rpc',\n        };\n    }\n    if (!isAddress(source.address, { strict: false }))\n        throw new InvalidAddressError({ address: source.address });\n    return {\n        address: source.address,\n        nonceManager: source.nonceManager,\n        sign: source.sign,\n        signAuthorization: source.signAuthorization,\n        signMessage: source.signMessage,\n        signTransaction: source.signTransaction,\n        signTypedData: source.signTypedData,\n        source: 'custom',\n        type: 'local',\n    };\n}\n//# sourceMappingURL=toAccount.js.map","import { secp256k1 } from '@noble/curves/secp256k1';\nimport { hexToBigInt } from '../encoding/fromHex.js';\nimport { hexToBytes } from '../encoding/toBytes.js';\n/**\n * @description Converts a signature into hex format.\n *\n * @param signature The signature to convert.\n * @returns The signature in hex format.\n *\n * @example\n * serializeSignature({\n *   r: '0x6e100a352ec6ad1b70802290e18aeed190704973570f3b8ed42cb9808e2ea6bf',\n *   s: '0x4a90a229a244495b41890987806fcbd2d5d23fc0dbe5f5256c2613c039d76db8',\n *   yParity: 1\n * })\n * // \"0x6e100a352ec6ad1b70802290e18aeed190704973570f3b8ed42cb9808e2ea6bf4a90a229a244495b41890987806fcbd2d5d23fc0dbe5f5256c2613c039d76db81c\"\n */\nexport function serializeSignature({ r, s, to = 'hex', v, yParity, }) {\n    const yParity_ = (() => {\n        if (yParity === 0 || yParity === 1)\n            return yParity;\n        if (v && (v === 27n || v === 28n || v >= 35n))\n            return v % 2n === 0n ? 1 : 0;\n        throw new Error('Invalid `v` or `yParity` value');\n    })();\n    const signature = `0x${new secp256k1.Signature(hexToBigInt(r), hexToBigInt(s)).toCompactHex()}${yParity_ === 0 ? '1b' : '1c'}`;\n    if (to === 'hex')\n        return signature;\n    return hexToBytes(signature);\n}\n//# sourceMappingURL=serializeSignature.js.map","// TODO(v3): Convert to sync.\nimport { secp256k1 } from '@noble/curves/secp256k1';\nimport { numberToHex, } from '../../utils/encoding/toHex.js';\nimport { serializeSignature } from '../../utils/signature/serializeSignature.js';\nlet extraEntropy = false;\n/**\n * Sets extra entropy for signing functions.\n */\nexport function setSignEntropy(entropy) {\n    if (!entropy)\n        throw new Error('must be a `true` or a hex value.');\n    extraEntropy = entropy;\n}\n/**\n * @description Signs a hash with a given private key.\n *\n * @param hash The hash to sign.\n * @param privateKey The private key to sign with.\n *\n * @returns The signature.\n */\nexport async function sign({ hash, privateKey, to = 'object', }) {\n    const { r, s, recovery } = secp256k1.sign(hash.slice(2), privateKey.slice(2), { lowS: true, extraEntropy });\n    const signature = {\n        r: numberToHex(r, { size: 32 }),\n        s: numberToHex(s, { size: 32 }),\n        v: recovery ? 28n : 27n,\n        yParity: recovery,\n    };\n    return (() => {\n        if (to === 'bytes' || to === 'hex')\n            return serializeSignature({ ...signature, to });\n        return signature;\n    })();\n}\n//# sourceMappingURL=sign.js.map","import { hashAuthorization, } from '../../utils/authorization/hashAuthorization.js';\nimport { sign, } from './sign.js';\n/**\n * Signs an Authorization hash in [EIP-7702 format](https://eips.ethereum.org/EIPS/eip-7702): `keccak256('0x05' || rlp([chain_id, address, nonce]))`.\n */\nexport async function signAuthorization(parameters) {\n    const { chainId, nonce, privateKey, to = 'object' } = parameters;\n    const address = parameters.contractAddress ?? parameters.address;\n    const signature = await sign({\n        hash: hashAuthorization({ address, chainId, nonce }),\n        privateKey,\n        to,\n    });\n    if (to === 'object')\n        return {\n            address,\n            chainId,\n            nonce,\n            ...signature,\n        };\n    return signature;\n}\n//# sourceMappingURL=signAuthorization.js.map","import { hashMessage, } from '../../utils/signature/hashMessage.js';\nimport { sign } from './sign.js';\n/**\n * @description Calculates an Ethereum-specific signature in [EIP-191 format](https://eips.ethereum.org/EIPS/eip-191):\n * `keccak256(\"\\x19Ethereum Signed Message:\\n\" + len(message) + message))`.\n *\n * @returns The signature.\n */\nexport async function signMessage({ message, privateKey, }) {\n    return await sign({ hash: hashMessage(message), privateKey, to: 'hex' });\n}\n//# sourceMappingURL=signMessage.js.map","import { keccak256, } from '../../utils/hash/keccak256.js';\nimport { serializeTransaction, } from '../../utils/transaction/serializeTransaction.js';\nimport { sign } from './sign.js';\nexport async function signTransaction(parameters) {\n    const { privateKey, transaction, serializer = serializeTransaction, } = parameters;\n    const signableTransaction = (() => {\n        // For EIP-4844 Transactions, we want to sign the transaction payload body (tx_payload_body) without the sidecars (ie. without the network wrapper).\n        // See: https://github.com/ethereum/EIPs/blob/e00f4daa66bd56e2dbd5f1d36d09fd613811a48b/EIPS/eip-4844.md#networking\n        if (transaction.type === 'eip4844')\n            return {\n                ...transaction,\n                sidecars: false,\n            };\n        return transaction;\n    })();\n    const signature = await sign({\n        hash: keccak256(serializer(signableTransaction)),\n        privateKey,\n    });\n    return serializer(transaction, signature);\n}\n//# sourceMappingURL=signTransaction.js.map","import { hashTypedData, } from '../../utils/signature/hashTypedData.js';\nimport { sign } from './sign.js';\n/**\n * @description Signs typed data and calculates an Ethereum-specific signature in [EIP-191 format](https://eips.ethereum.org/EIPS/eip-191):\n * `keccak256(\"\\x19Ethereum Signed Message:\\n\" + len(message) + message))`.\n *\n * @returns The signature.\n */\nexport async function signTypedData(parameters) {\n    const { privateKey, ...typedData } = parameters;\n    return await sign({\n        hash: hashTypedData(typedData),\n        privateKey,\n        to: 'hex',\n    });\n}\n//# sourceMappingURL=signTypedData.js.map","import { secp256k1 } from '@noble/curves/secp256k1';\nimport { toHex } from '../utils/encoding/toHex.js';\nimport { toAccount } from './toAccount.js';\nimport { publicKeyToAddress, } from './utils/publicKeyToAddress.js';\nimport { sign } from './utils/sign.js';\nimport { signAuthorization } from './utils/signAuthorization.js';\nimport { signMessage } from './utils/signMessage.js';\nimport { signTransaction, } from './utils/signTransaction.js';\nimport { signTypedData, } from './utils/signTypedData.js';\n/**\n * @description Creates an Account from a private key.\n *\n * @returns A Private Key Account.\n */\nexport function privateKeyToAccount(privateKey, options = {}) {\n    const { nonceManager } = options;\n    const publicKey = toHex(secp256k1.getPublicKey(privateKey.slice(2), false));\n    const address = publicKeyToAddress(publicKey);\n    const account = toAccount({\n        address,\n        nonceManager,\n        async sign({ hash }) {\n            return sign({ hash, privateKey, to: 'hex' });\n        },\n        async signAuthorization(authorization) {\n            return signAuthorization({ ...authorization, privateKey });\n        },\n        async signMessage({ message }) {\n            return signMessage({ message, privateKey });\n        },\n        async signTransaction(transaction, { serializer } = {}) {\n            return signTransaction({ privateKey, transaction, serializer });\n        },\n        async signTypedData(typedData) {\n            return signTypedData({ ...typedData, privateKey });\n        },\n    });\n    return {\n        ...account,\n        publicKey,\n        source: 'privateKey',\n    };\n}\n//# sourceMappingURL=privateKeyToAccount.js.map","import { BaseError } from '../../errors/base.js';\nexport class AccountNotDeployedError extends BaseError {\n    constructor({ cause, }) {\n        super('Smart Account is not deployed.', {\n            cause,\n            metaMessages: [\n                'This could arise when:',\n                '- No `factory`/`factoryData` or `initCode` properties are provided for Smart Account deployment.',\n                '- An incorrect `sender` address is provided.',\n            ],\n            name: 'AccountNotDeployedError',\n        });\n    }\n}\nObject.defineProperty(AccountNotDeployedError, \"message\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: /aa20/\n});\nexport class ExecutionRevertedError extends BaseError {\n    constructor({ cause, data, message, } = {}) {\n        const reason = message\n            ?.replace('execution reverted: ', '')\n            ?.replace('execution reverted', '');\n        super(`Execution reverted ${reason ? `with reason: ${reason}` : 'for an unknown reason'}.`, {\n            cause,\n            name: 'ExecutionRevertedError',\n        });\n        Object.defineProperty(this, \"data\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        this.data = data;\n    }\n}\nObject.defineProperty(ExecutionRevertedError, \"code\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: -32521\n});\nObject.defineProperty(ExecutionRevertedError, \"message\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: /execution reverted/\n});\nexport class FailedToSendToBeneficiaryError extends BaseError {\n    constructor({ cause, }) {\n        super('Failed to send funds to beneficiary.', {\n            cause,\n            name: 'FailedToSendToBeneficiaryError',\n        });\n    }\n}\nObject.defineProperty(FailedToSendToBeneficiaryError, \"message\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: /aa91/\n});\nexport class GasValuesOverflowError extends BaseError {\n    constructor({ cause, }) {\n        super('Gas value overflowed.', {\n            cause,\n            metaMessages: [\n                'This could arise when:',\n                '- one of the gas values exceeded 2**120 (uint120)',\n            ].filter(Boolean),\n            name: 'GasValuesOverflowError',\n        });\n    }\n}\nObject.defineProperty(GasValuesOverflowError, \"message\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: /aa94/\n});\nexport class HandleOpsOutOfGasError extends BaseError {\n    constructor({ cause, }) {\n        super('The `handleOps` function was called by the Bundler with a gas limit too low.', {\n            cause,\n            name: 'HandleOpsOutOfGasError',\n        });\n    }\n}\nObject.defineProperty(HandleOpsOutOfGasError, \"message\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: /aa95/\n});\nexport class InitCodeFailedError extends BaseError {\n    constructor({ cause, factory, factoryData, initCode, }) {\n        super('Failed to simulate deployment for Smart Account.', {\n            cause,\n            metaMessages: [\n                'This could arise when:',\n                '- Invalid `factory`/`factoryData` or `initCode` properties are present',\n                '- Smart Account deployment execution ran out of gas (low `verificationGasLimit` value)',\n                '- Smart Account deployment execution reverted with an error\\n',\n                factory && `factory: ${factory}`,\n                factoryData && `factoryData: ${factoryData}`,\n                initCode && `initCode: ${initCode}`,\n            ].filter(Boolean),\n            name: 'InitCodeFailedError',\n        });\n    }\n}\nObject.defineProperty(InitCodeFailedError, \"message\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: /aa13/\n});\nexport class InitCodeMustCreateSenderError extends BaseError {\n    constructor({ cause, factory, factoryData, initCode, }) {\n        super('Smart Account initialization implementation did not create an account.', {\n            cause,\n            metaMessages: [\n                'This could arise when:',\n                '- `factory`/`factoryData` or `initCode` properties are invalid',\n                '- Smart Account initialization implementation is incorrect\\n',\n                factory && `factory: ${factory}`,\n                factoryData && `factoryData: ${factoryData}`,\n                initCode && `initCode: ${initCode}`,\n            ].filter(Boolean),\n            name: 'InitCodeMustCreateSenderError',\n        });\n    }\n}\nObject.defineProperty(InitCodeMustCreateSenderError, \"message\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: /aa15/\n});\nexport class InitCodeMustReturnSenderError extends BaseError {\n    constructor({ cause, factory, factoryData, initCode, sender, }) {\n        super('Smart Account initialization implementation does not return the expected sender.', {\n            cause,\n            metaMessages: [\n                'This could arise when:',\n                'Smart Account initialization implementation does not return a sender address\\n',\n                factory && `factory: ${factory}`,\n                factoryData && `factoryData: ${factoryData}`,\n                initCode && `initCode: ${initCode}`,\n                sender && `sender: ${sender}`,\n            ].filter(Boolean),\n            name: 'InitCodeMustReturnSenderError',\n        });\n    }\n}\nObject.defineProperty(InitCodeMustReturnSenderError, \"message\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: /aa14/\n});\nexport class InsufficientPrefundError extends BaseError {\n    constructor({ cause, }) {\n        super('Smart Account does not have sufficient funds to execute the User Operation.', {\n            cause,\n            metaMessages: [\n                'This could arise when:',\n                '- the Smart Account does not have sufficient funds to cover the required prefund, or',\n                '- a Paymaster was not provided',\n            ].filter(Boolean),\n            name: 'InsufficientPrefundError',\n        });\n    }\n}\nObject.defineProperty(InsufficientPrefundError, \"message\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: /aa21/\n});\nexport class InternalCallOnlyError extends BaseError {\n    constructor({ cause, }) {\n        super('Bundler attempted to call an invalid function on the EntryPoint.', {\n            cause,\n            name: 'InternalCallOnlyError',\n        });\n    }\n}\nObject.defineProperty(InternalCallOnlyError, \"message\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: /aa92/\n});\nexport class InvalidAggregatorError extends BaseError {\n    constructor({ cause, }) {\n        super('Bundler used an invalid aggregator for handling aggregated User Operations.', {\n            cause,\n            name: 'InvalidAggregatorError',\n        });\n    }\n}\nObject.defineProperty(InvalidAggregatorError, \"message\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: /aa96/\n});\nexport class InvalidAccountNonceError extends BaseError {\n    constructor({ cause, nonce, }) {\n        super('Invalid Smart Account nonce used for User Operation.', {\n            cause,\n            metaMessages: [nonce && `nonce: ${nonce}`].filter(Boolean),\n            name: 'InvalidAccountNonceError',\n        });\n    }\n}\nObject.defineProperty(InvalidAccountNonceError, \"message\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: /aa25/\n});\nexport class InvalidBeneficiaryError extends BaseError {\n    constructor({ cause, }) {\n        super('Bundler has not set a beneficiary address.', {\n            cause,\n            name: 'InvalidBeneficiaryError',\n        });\n    }\n}\nObject.defineProperty(InvalidBeneficiaryError, \"message\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: /aa90/\n});\nexport class InvalidFieldsError extends BaseError {\n    constructor({ cause, }) {\n        super('Invalid fields set on User Operation.', {\n            cause,\n            name: 'InvalidFieldsError',\n        });\n    }\n}\nObject.defineProperty(InvalidFieldsError, \"code\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: -32602\n});\nexport class InvalidPaymasterAndDataError extends BaseError {\n    constructor({ cause, paymasterAndData, }) {\n        super('Paymaster properties provided are invalid.', {\n            cause,\n            metaMessages: [\n                'This could arise when:',\n                '- the `paymasterAndData` property is of an incorrect length\\n',\n                paymasterAndData && `paymasterAndData: ${paymasterAndData}`,\n            ].filter(Boolean),\n            name: 'InvalidPaymasterAndDataError',\n        });\n    }\n}\nObject.defineProperty(InvalidPaymasterAndDataError, \"message\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: /aa93/\n});\nexport class PaymasterDepositTooLowError extends BaseError {\n    constructor({ cause, }) {\n        super('Paymaster deposit for the User Operation is too low.', {\n            cause,\n            metaMessages: [\n                'This could arise when:',\n                '- the Paymaster has deposited less than the expected amount via the `deposit` function',\n            ].filter(Boolean),\n            name: 'PaymasterDepositTooLowError',\n        });\n    }\n}\nObject.defineProperty(PaymasterDepositTooLowError, \"code\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: -32508\n});\nObject.defineProperty(PaymasterDepositTooLowError, \"message\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: /aa31/\n});\nexport class PaymasterFunctionRevertedError extends BaseError {\n    constructor({ cause, }) {\n        super('The `validatePaymasterUserOp` function on the Paymaster reverted.', {\n            cause,\n            name: 'PaymasterFunctionRevertedError',\n        });\n    }\n}\nObject.defineProperty(PaymasterFunctionRevertedError, \"message\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: /aa33/\n});\nexport class PaymasterNotDeployedError extends BaseError {\n    constructor({ cause, }) {\n        super('The Paymaster contract has not been deployed.', {\n            cause,\n            name: 'PaymasterNotDeployedError',\n        });\n    }\n}\nObject.defineProperty(PaymasterNotDeployedError, \"message\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: /aa30/\n});\nexport class PaymasterRateLimitError extends BaseError {\n    constructor({ cause }) {\n        super('UserOperation rejected because paymaster (or signature aggregator) is throttled/banned.', {\n            cause,\n            name: 'PaymasterRateLimitError',\n        });\n    }\n}\nObject.defineProperty(PaymasterRateLimitError, \"code\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: -32504\n});\nexport class PaymasterStakeTooLowError extends BaseError {\n    constructor({ cause }) {\n        super('UserOperation rejected because paymaster (or signature aggregator) is throttled/banned.', {\n            cause,\n            name: 'PaymasterStakeTooLowError',\n        });\n    }\n}\nObject.defineProperty(PaymasterStakeTooLowError, \"code\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: -32505\n});\nexport class PaymasterPostOpFunctionRevertedError extends BaseError {\n    constructor({ cause, }) {\n        super('Paymaster `postOp` function reverted.', {\n            cause,\n            name: 'PaymasterPostOpFunctionRevertedError',\n        });\n    }\n}\nObject.defineProperty(PaymasterPostOpFunctionRevertedError, \"message\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: /aa50/\n});\nexport class SenderAlreadyConstructedError extends BaseError {\n    constructor({ cause, factory, factoryData, initCode, }) {\n        super('Smart Account has already been deployed.', {\n            cause,\n            metaMessages: [\n                'Remove the following properties and try again:',\n                factory && '`factory`',\n                factoryData && '`factoryData`',\n                initCode && '`initCode`',\n            ].filter(Boolean),\n            name: 'SenderAlreadyConstructedError',\n        });\n    }\n}\nObject.defineProperty(SenderAlreadyConstructedError, \"message\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: /aa10/\n});\nexport class SignatureCheckFailedError extends BaseError {\n    constructor({ cause }) {\n        super('UserOperation rejected because account signature check failed (or paymaster signature, if the paymaster uses its data as signature).', {\n            cause,\n            name: 'SignatureCheckFailedError',\n        });\n    }\n}\nObject.defineProperty(SignatureCheckFailedError, \"code\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: -32507\n});\nexport class SmartAccountFunctionRevertedError extends BaseError {\n    constructor({ cause, }) {\n        super('The `validateUserOp` function on the Smart Account reverted.', {\n            cause,\n            name: 'SmartAccountFunctionRevertedError',\n        });\n    }\n}\nObject.defineProperty(SmartAccountFunctionRevertedError, \"message\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: /aa23/\n});\nexport class UnsupportedSignatureAggregatorError extends BaseError {\n    constructor({ cause }) {\n        super('UserOperation rejected because account specified unsupported signature aggregator.', {\n            cause,\n            name: 'UnsupportedSignatureAggregatorError',\n        });\n    }\n}\nObject.defineProperty(UnsupportedSignatureAggregatorError, \"code\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: -32506\n});\nexport class UserOperationExpiredError extends BaseError {\n    constructor({ cause, }) {\n        super('User Operation expired.', {\n            cause,\n            metaMessages: [\n                'This could arise when:',\n                '- the `validAfter` or `validUntil` values returned from `validateUserOp` on the Smart Account are not satisfied',\n            ].filter(Boolean),\n            name: 'UserOperationExpiredError',\n        });\n    }\n}\nObject.defineProperty(UserOperationExpiredError, \"message\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: /aa22/\n});\nexport class UserOperationPaymasterExpiredError extends BaseError {\n    constructor({ cause, }) {\n        super('Paymaster for User Operation expired.', {\n            cause,\n            metaMessages: [\n                'This could arise when:',\n                '- the `validAfter` or `validUntil` values returned from `validatePaymasterUserOp` on the Paymaster are not satisfied',\n            ].filter(Boolean),\n            name: 'UserOperationPaymasterExpiredError',\n        });\n    }\n}\nObject.defineProperty(UserOperationPaymasterExpiredError, \"message\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: /aa32/\n});\nexport class UserOperationSignatureError extends BaseError {\n    constructor({ cause, }) {\n        super('Signature provided for the User Operation is invalid.', {\n            cause,\n            metaMessages: [\n                'This could arise when:',\n                '- the `signature` for the User Operation is incorrectly computed, and unable to be verified by the Smart Account',\n            ].filter(Boolean),\n            name: 'UserOperationSignatureError',\n        });\n    }\n}\nObject.defineProperty(UserOperationSignatureError, \"message\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: /aa24/\n});\nexport class UserOperationPaymasterSignatureError extends BaseError {\n    constructor({ cause, }) {\n        super('Signature provided for the User Operation is invalid.', {\n            cause,\n            metaMessages: [\n                'This could arise when:',\n                '- the `signature` for the User Operation is incorrectly computed, and unable to be verified by the Paymaster',\n            ].filter(Boolean),\n            name: 'UserOperationPaymasterSignatureError',\n        });\n    }\n}\nObject.defineProperty(UserOperationPaymasterSignatureError, \"message\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: /aa34/\n});\nexport class UserOperationRejectedByEntryPointError extends BaseError {\n    constructor({ cause }) {\n        super(\"User Operation rejected by EntryPoint's `simulateValidation` during account creation or validation.\", {\n            cause,\n            name: 'UserOperationRejectedByEntryPointError',\n        });\n    }\n}\nObject.defineProperty(UserOperationRejectedByEntryPointError, \"code\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: -32500\n});\nexport class UserOperationRejectedByPaymasterError extends BaseError {\n    constructor({ cause }) {\n        super(\"User Operation rejected by Paymaster's `validatePaymasterUserOp`.\", {\n            cause,\n            name: 'UserOperationRejectedByPaymasterError',\n        });\n    }\n}\nObject.defineProperty(UserOperationRejectedByPaymasterError, \"code\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: -32501\n});\nexport class UserOperationRejectedByOpCodeError extends BaseError {\n    constructor({ cause }) {\n        super('User Operation rejected with op code validation error.', {\n            cause,\n            name: 'UserOperationRejectedByOpCodeError',\n        });\n    }\n}\nObject.defineProperty(UserOperationRejectedByOpCodeError, \"code\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: -32502\n});\nexport class UserOperationOutOfTimeRangeError extends BaseError {\n    constructor({ cause }) {\n        super('UserOperation out of time-range: either wallet or paymaster returned a time-range, and it is already expired (or will expire soon).', {\n            cause,\n            name: 'UserOperationOutOfTimeRangeError',\n        });\n    }\n}\nObject.defineProperty(UserOperationOutOfTimeRangeError, \"code\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: -32503\n});\nexport class UnknownBundlerError extends BaseError {\n    constructor({ cause }) {\n        super(`An error occurred while executing user operation: ${cause?.shortMessage}`, {\n            cause,\n            name: 'UnknownBundlerError',\n        });\n    }\n}\nexport class VerificationGasLimitExceededError extends BaseError {\n    constructor({ cause, }) {\n        super('User Operation verification gas limit exceeded.', {\n            cause,\n            metaMessages: [\n                'This could arise when:',\n                '- the gas used for verification exceeded the `verificationGasLimit`',\n            ].filter(Boolean),\n            name: 'VerificationGasLimitExceededError',\n        });\n    }\n}\nObject.defineProperty(VerificationGasLimitExceededError, \"message\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: /aa40/\n});\nexport class VerificationGasLimitTooLowError extends BaseError {\n    constructor({ cause, }) {\n        super('User Operation verification gas limit is too low.', {\n            cause,\n            metaMessages: [\n                'This could arise when:',\n                '- the `verificationGasLimit` is too low to verify the User Operation',\n            ].filter(Boolean),\n            name: 'VerificationGasLimitTooLowError',\n        });\n    }\n}\nObject.defineProperty(VerificationGasLimitTooLowError, \"message\", {\n    enumerable: true,\n    configurable: true,\n    writable: true,\n    value: /aa41/\n});\n//# sourceMappingURL=bundler.js.map","import { BaseError } from '../../errors/base.js';\nimport { prettyPrint } from '../../errors/transaction.js';\nimport { formatGwei } from '../../utils/index.js';\nexport class UserOperationExecutionError extends BaseError {\n    constructor(cause, { callData, callGasLimit, docsPath, factory, factoryData, initCode, maxFeePerGas, maxPriorityFeePerGas, nonce, paymaster, paymasterAndData, paymasterData, paymasterPostOpGasLimit, paymasterVerificationGasLimit, preVerificationGas, sender, signature, verificationGasLimit, }) {\n        const prettyArgs = prettyPrint({\n            callData,\n            callGasLimit,\n            factory,\n            factoryData,\n            initCode,\n            maxFeePerGas: typeof maxFeePerGas !== 'undefined' &&\n                `${formatGwei(maxFeePerGas)} gwei`,\n            maxPriorityFeePerGas: typeof maxPriorityFeePerGas !== 'undefined' &&\n                `${formatGwei(maxPriorityFeePerGas)} gwei`,\n            nonce,\n            paymaster,\n            paymasterAndData,\n            paymasterData,\n            paymasterPostOpGasLimit,\n            paymasterVerificationGasLimit,\n            preVerificationGas,\n            sender,\n            signature,\n            verificationGasLimit,\n        });\n        super(cause.shortMessage, {\n            cause,\n            docsPath,\n            metaMessages: [\n                ...(cause.metaMessages ? [...cause.metaMessages, ' '] : []),\n                'Request Arguments:',\n                prettyArgs,\n            ].filter(Boolean),\n            name: 'UserOperationExecutionError',\n        });\n        Object.defineProperty(this, \"cause\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: void 0\n        });\n        this.cause = cause;\n    }\n}\nexport class UserOperationReceiptNotFoundError extends BaseError {\n    constructor({ hash }) {\n        super(`User Operation receipt with hash \"${hash}\" could not be found. The User Operation may not have been processed yet.`, { name: 'UserOperationReceiptNotFoundError' });\n    }\n}\nexport class UserOperationNotFoundError extends BaseError {\n    constructor({ hash }) {\n        super(`User Operation with hash \"${hash}\" could not be found.`, {\n            name: 'UserOperationNotFoundError',\n        });\n    }\n}\nexport class WaitForUserOperationReceiptTimeoutError extends BaseError {\n    constructor({ hash }) {\n        super(`Timed out while waiting for User Operation with hash \"${hash}\" to be confirmed.`, { name: 'WaitForUserOperationReceiptTimeoutError' });\n    }\n}\n//# sourceMappingURL=userOperation.js.map","import { AccountNotDeployedError, ExecutionRevertedError, FailedToSendToBeneficiaryError, GasValuesOverflowError, HandleOpsOutOfGasError, InitCodeFailedError, InitCodeMustCreateSenderError, InitCodeMustReturnSenderError, InsufficientPrefundError, InternalCallOnlyError, InvalidAccountNonceError, InvalidAggregatorError, InvalidBeneficiaryError, InvalidFieldsError, InvalidPaymasterAndDataError, PaymasterDepositTooLowError, PaymasterFunctionRevertedError, PaymasterNotDeployedError, PaymasterPostOpFunctionRevertedError, PaymasterRateLimitError, PaymasterStakeTooLowError, SenderAlreadyConstructedError, SignatureCheckFailedError, SmartAccountFunctionRevertedError, UnknownBundlerError, UnsupportedSignatureAggregatorError, UserOperationExpiredError, UserOperationOutOfTimeRangeError, UserOperationPaymasterExpiredError, UserOperationPaymasterSignatureError, UserOperationRejectedByEntryPointError, UserOperationRejectedByOpCodeError, UserOperationRejectedByPaymasterError, UserOperationSignatureError, VerificationGasLimitExceededError, VerificationGasLimitTooLowError, } from '../../errors/bundler.js';\nconst bundlerErrors = [\n    ExecutionRevertedError,\n    InvalidFieldsError,\n    PaymasterDepositTooLowError,\n    PaymasterRateLimitError,\n    PaymasterStakeTooLowError,\n    SignatureCheckFailedError,\n    UnsupportedSignatureAggregatorError,\n    UserOperationOutOfTimeRangeError,\n    UserOperationRejectedByEntryPointError,\n    UserOperationRejectedByPaymasterError,\n    UserOperationRejectedByOpCodeError,\n];\nexport function getBundlerError(err, args) {\n    const message = (err.details || '').toLowerCase();\n    if (AccountNotDeployedError.message.test(message))\n        return new AccountNotDeployedError({\n            cause: err,\n        });\n    if (FailedToSendToBeneficiaryError.message.test(message))\n        return new FailedToSendToBeneficiaryError({\n            cause: err,\n        });\n    if (GasValuesOverflowError.message.test(message))\n        return new GasValuesOverflowError({\n            cause: err,\n        });\n    if (HandleOpsOutOfGasError.message.test(message))\n        return new HandleOpsOutOfGasError({\n            cause: err,\n        });\n    if (InitCodeFailedError.message.test(message))\n        return new InitCodeFailedError({\n            cause: err,\n            factory: args.factory,\n            factoryData: args.factoryData,\n            initCode: args.initCode,\n        });\n    if (InitCodeMustCreateSenderError.message.test(message))\n        return new InitCodeMustCreateSenderError({\n            cause: err,\n            factory: args.factory,\n            factoryData: args.factoryData,\n            initCode: args.initCode,\n        });\n    if (InitCodeMustReturnSenderError.message.test(message))\n        return new InitCodeMustReturnSenderError({\n            cause: err,\n            factory: args.factory,\n            factoryData: args.factoryData,\n            initCode: args.initCode,\n            sender: args.sender,\n        });\n    if (InsufficientPrefundError.message.test(message))\n        return new InsufficientPrefundError({\n            cause: err,\n        });\n    if (InternalCallOnlyError.message.test(message))\n        return new InternalCallOnlyError({\n            cause: err,\n        });\n    if (InvalidAccountNonceError.message.test(message))\n        return new InvalidAccountNonceError({\n            cause: err,\n            nonce: args.nonce,\n        });\n    if (InvalidAggregatorError.message.test(message))\n        return new InvalidAggregatorError({\n            cause: err,\n        });\n    if (InvalidBeneficiaryError.message.test(message))\n        return new InvalidBeneficiaryError({\n            cause: err,\n        });\n    if (InvalidPaymasterAndDataError.message.test(message))\n        return new InvalidPaymasterAndDataError({\n            cause: err,\n        });\n    if (PaymasterDepositTooLowError.message.test(message))\n        return new PaymasterDepositTooLowError({\n            cause: err,\n        });\n    if (PaymasterFunctionRevertedError.message.test(message))\n        return new PaymasterFunctionRevertedError({\n            cause: err,\n        });\n    if (PaymasterNotDeployedError.message.test(message))\n        return new PaymasterNotDeployedError({\n            cause: err,\n        });\n    if (PaymasterPostOpFunctionRevertedError.message.test(message))\n        return new PaymasterPostOpFunctionRevertedError({\n            cause: err,\n        });\n    if (SmartAccountFunctionRevertedError.message.test(message))\n        return new SmartAccountFunctionRevertedError({\n            cause: err,\n        });\n    if (SenderAlreadyConstructedError.message.test(message))\n        return new SenderAlreadyConstructedError({\n            cause: err,\n            factory: args.factory,\n            factoryData: args.factoryData,\n            initCode: args.initCode,\n        });\n    if (UserOperationExpiredError.message.test(message))\n        return new UserOperationExpiredError({\n            cause: err,\n        });\n    if (UserOperationPaymasterExpiredError.message.test(message))\n        return new UserOperationPaymasterExpiredError({\n            cause: err,\n        });\n    if (UserOperationPaymasterSignatureError.message.test(message))\n        return new UserOperationPaymasterSignatureError({\n            cause: err,\n        });\n    if (UserOperationSignatureError.message.test(message))\n        return new UserOperationSignatureError({\n            cause: err,\n        });\n    if (VerificationGasLimitExceededError.message.test(message))\n        return new VerificationGasLimitExceededError({\n            cause: err,\n        });\n    if (VerificationGasLimitTooLowError.message.test(message))\n        return new VerificationGasLimitTooLowError({\n            cause: err,\n        });\n    const error = err.walk((e) => bundlerErrors.some((error) => error.code === e.code));\n    if (error) {\n        if (error.code === ExecutionRevertedError.code)\n            return new ExecutionRevertedError({\n                cause: err,\n                data: error.data,\n                message: error.details,\n            });\n        if (error.code === InvalidFieldsError.code)\n            return new InvalidFieldsError({\n                cause: err,\n            });\n        if (error.code === PaymasterDepositTooLowError.code)\n            return new PaymasterDepositTooLowError({\n                cause: err,\n            });\n        if (error.code === PaymasterRateLimitError.code)\n            return new PaymasterRateLimitError({\n                cause: err,\n            });\n        if (error.code === PaymasterStakeTooLowError.code)\n            return new PaymasterStakeTooLowError({\n                cause: err,\n            });\n        if (error.code === SignatureCheckFailedError.code)\n            return new SignatureCheckFailedError({\n                cause: err,\n            });\n        if (error.code === UnsupportedSignatureAggregatorError.code)\n            return new UnsupportedSignatureAggregatorError({\n                cause: err,\n            });\n        if (error.code === UserOperationOutOfTimeRangeError.code)\n            return new UserOperationOutOfTimeRangeError({\n                cause: err,\n            });\n        if (error.code === UserOperationRejectedByEntryPointError.code)\n            return new UserOperationRejectedByEntryPointError({\n                cause: err,\n            });\n        if (error.code === UserOperationRejectedByPaymasterError.code)\n            return new UserOperationRejectedByPaymasterError({\n                cause: err,\n            });\n        if (error.code === UserOperationRejectedByOpCodeError.code)\n            return new UserOperationRejectedByOpCodeError({\n                cause: err,\n            });\n    }\n    return new UnknownBundlerError({\n        cause: err,\n    });\n}\n//# sourceMappingURL=getBundlerError.js.map","import { BaseError } from '../../../errors/base.js';\nimport { ContractFunctionExecutionError, ContractFunctionRevertedError, ContractFunctionZeroDataError, } from '../../../errors/contract.js';\nimport { decodeErrorResult } from '../../../utils/abi/decodeErrorResult.js';\nimport { ExecutionRevertedError } from '../../errors/bundler.js';\nimport { UserOperationExecutionError, } from '../../errors/userOperation.js';\nimport { getBundlerError, } from './getBundlerError.js';\nexport function getUserOperationError(err, { calls, docsPath, ...args }) {\n    const cause = (() => {\n        const cause = getBundlerError(err, args);\n        if (calls && cause instanceof ExecutionRevertedError) {\n            const revertData = getRevertData(cause);\n            const contractCalls = calls?.filter((call) => call.abi);\n            if (revertData && contractCalls.length > 0)\n                return getContractError({ calls: contractCalls, revertData });\n        }\n        return cause;\n    })();\n    return new UserOperationExecutionError(cause, {\n        docsPath,\n        ...args,\n    });\n}\n/////////////////////////////////////////////////////////////////////////////////\nfunction getRevertData(error) {\n    let revertData;\n    error.walk((e) => {\n        const error = e;\n        if (typeof error.data === 'string' ||\n            typeof error.data?.revertData === 'string' ||\n            (!(error instanceof BaseError) && typeof error.message === 'string')) {\n            const match = (error.data?.revertData ||\n                error.data ||\n                error.message).match?.(/(0x[A-Za-z0-9]*)/);\n            if (match) {\n                revertData = match[1];\n                return true;\n            }\n        }\n        return false;\n    });\n    return revertData;\n}\nfunction getContractError(parameters) {\n    const { calls, revertData } = parameters;\n    const { abi, functionName, args, to } = (() => {\n        const contractCalls = calls?.filter((call) => Boolean(call.abi));\n        if (contractCalls.length === 1)\n            return contractCalls[0];\n        const compatContractCalls = contractCalls.filter((call) => {\n            try {\n                return Boolean(decodeErrorResult({\n                    abi: call.abi,\n                    data: revertData,\n                }));\n            }\n            catch {\n                return false;\n            }\n        });\n        if (compatContractCalls.length === 1)\n            return compatContractCalls[0];\n        return {\n            abi: [],\n            functionName: contractCalls.reduce((acc, call) => `${acc ? `${acc} | ` : ''}${call.functionName}`, ''),\n            args: undefined,\n            to: undefined,\n        };\n    })();\n    const cause = (() => {\n        if (revertData === '0x')\n            return new ContractFunctionZeroDataError({ functionName });\n        return new ContractFunctionRevertedError({\n            abi,\n            data: revertData,\n            functionName,\n        });\n    })();\n    return new ContractFunctionExecutionError(cause, {\n        abi,\n        args,\n        contractAddress: to,\n        functionName,\n    });\n}\n//# sourceMappingURL=getUserOperationError.js.map","export function formatUserOperationGas(parameters) {\n    const gas = {};\n    if (parameters.callGasLimit)\n        gas.callGasLimit = BigInt(parameters.callGasLimit);\n    if (parameters.preVerificationGas)\n        gas.preVerificationGas = BigInt(parameters.preVerificationGas);\n    if (parameters.verificationGasLimit)\n        gas.verificationGasLimit = BigInt(parameters.verificationGasLimit);\n    if (parameters.paymasterPostOpGasLimit)\n        gas.paymasterPostOpGasLimit = BigInt(parameters.paymasterPostOpGasLimit);\n    if (parameters.paymasterVerificationGasLimit)\n        gas.paymasterVerificationGasLimit = BigInt(parameters.paymasterVerificationGasLimit);\n    return gas;\n}\n//# sourceMappingURL=userOperationGas.js.map","import { numberToHex } from '../../../utils/encoding/toHex.js';\nimport { pad } from '../../../utils/index.js';\nexport function formatUserOperationRequest(request) {\n    const rpcRequest = {};\n    if (typeof request.callData !== 'undefined')\n        rpcRequest.callData = request.callData;\n    if (typeof request.callGasLimit !== 'undefined')\n        rpcRequest.callGasLimit = numberToHex(request.callGasLimit);\n    if (typeof request.factory !== 'undefined')\n        rpcRequest.factory = request.factory;\n    if (typeof request.factoryData !== 'undefined')\n        rpcRequest.factoryData = request.factoryData;\n    if (typeof request.initCode !== 'undefined')\n        rpcRequest.initCode = request.initCode;\n    if (typeof request.maxFeePerGas !== 'undefined')\n        rpcRequest.maxFeePerGas = numberToHex(request.maxFeePerGas);\n    if (typeof request.maxPriorityFeePerGas !== 'undefined')\n        rpcRequest.maxPriorityFeePerGas = numberToHex(request.maxPriorityFeePerGas);\n    if (typeof request.nonce !== 'undefined')\n        rpcRequest.nonce = numberToHex(request.nonce);\n    if (typeof request.paymaster !== 'undefined')\n        rpcRequest.paymaster = request.paymaster;\n    if (typeof request.paymasterAndData !== 'undefined')\n        rpcRequest.paymasterAndData = request.paymasterAndData || '0x';\n    if (typeof request.paymasterData !== 'undefined')\n        rpcRequest.paymasterData = request.paymasterData;\n    if (typeof request.paymasterPostOpGasLimit !== 'undefined')\n        rpcRequest.paymasterPostOpGasLimit = numberToHex(request.paymasterPostOpGasLimit);\n    if (typeof request.paymasterVerificationGasLimit !== 'undefined')\n        rpcRequest.paymasterVerificationGasLimit = numberToHex(request.paymasterVerificationGasLimit);\n    if (typeof request.preVerificationGas !== 'undefined')\n        rpcRequest.preVerificationGas = numberToHex(request.preVerificationGas);\n    if (typeof request.sender !== 'undefined')\n        rpcRequest.sender = request.sender;\n    if (typeof request.signature !== 'undefined')\n        rpcRequest.signature = request.signature;\n    if (typeof request.verificationGasLimit !== 'undefined')\n        rpcRequest.verificationGasLimit = numberToHex(request.verificationGasLimit);\n    if (typeof request.authorization !== 'undefined')\n        rpcRequest.eip7702Auth = formatAuthorization(request.authorization);\n    return rpcRequest;\n}\nfunction formatAuthorization(authorization) {\n    return {\n        address: authorization.address,\n        chainId: numberToHex(authorization.chainId),\n        nonce: numberToHex(authorization.nonce),\n        r: authorization.r\n            ? numberToHex(BigInt(authorization.r), { size: 32 })\n            : pad('0x', { size: 32 }),\n        s: authorization.s\n            ? numberToHex(BigInt(authorization.s), { size: 32 })\n            : pad('0x', { size: 32 }),\n        yParity: authorization.yParity\n            ? numberToHex(authorization.yParity, { size: 1 })\n            : pad('0x', { size: 32 }),\n    };\n}\n//# sourceMappingURL=userOperationRequest.js.map","import { hexToNumber, } from '../../utils/encoding/fromHex.js';\n/**\n * Returns the chain ID associated with the current network.\n *\n * - Docs: https://viem.sh/docs/actions/public/getChainId\n * - JSON-RPC Methods: [`eth_chainId`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_chainid)\n *\n * @param client - Client to use\n * @returns The current chain ID. {@link GetChainIdReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getChainId } from 'viem/public'\n *\n * const client = createPublicClient({\n *   chain: mainnet,\n *   transport: http(),\n * })\n * const chainId = await getChainId(client)\n * // 1\n */\nexport async function getChainId(client) {\n    const chainIdHex = await client.request({\n        method: 'eth_chainId',\n    }, { dedupe: true });\n    return hexToNumber(chainIdHex);\n}\n//# sourceMappingURL=getChainId.js.map","import { formatGwei } from '../utils/unit/formatGwei.js';\nimport { BaseError } from './base.js';\nexport class BaseFeeScalarError extends BaseError {\n    constructor() {\n        super('`baseFeeMultiplier` must be greater than 1.', {\n            name: 'BaseFeeScalarError',\n        });\n    }\n}\nexport class Eip1559FeesNotSupportedError extends BaseError {\n    constructor() {\n        super('Chain does not support EIP-1559 fees.', {\n            name: 'Eip1559FeesNotSupportedError',\n        });\n    }\n}\nexport class MaxFeePerGasTooLowError extends BaseError {\n    constructor({ maxPriorityFeePerGas }) {\n        super(`\\`maxFeePerGas\\` cannot be less than the \\`maxPriorityFeePerGas\\` (${formatGwei(maxPriorityFeePerGas)} gwei).`, { name: 'MaxFeePerGasTooLowError' });\n    }\n}\n//# sourceMappingURL=fee.js.map","import { BaseError } from './base.js';\nexport class BlockNotFoundError extends BaseError {\n    constructor({ blockHash, blockNumber, }) {\n        let identifier = 'Block';\n        if (blockHash)\n            identifier = `Block at hash \"${blockHash}\"`;\n        if (blockNumber)\n            identifier = `Block at number \"${blockNumber}\"`;\n        super(`${identifier} could not be found.`, { name: 'BlockNotFoundError' });\n    }\n}\n//# sourceMappingURL=block.js.map","import { BlockNotFoundError, } from '../../errors/block.js';\nimport { numberToHex, } from '../../utils/encoding/toHex.js';\nimport { formatBlock, } from '../../utils/formatters/block.js';\n/**\n * Returns information about a block at a block number, hash, or tag.\n *\n * - Docs: https://viem.sh/docs/actions/public/getBlock\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/blocks_fetching-blocks\n * - JSON-RPC Methods:\n *   - Calls [`eth_getBlockByNumber`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getblockbynumber) for `blockNumber` & `blockTag`.\n *   - Calls [`eth_getBlockByHash`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getblockbyhash) for `blockHash`.\n *\n * @param client - Client to use\n * @param parameters - {@link GetBlockParameters}\n * @returns Information about the block. {@link GetBlockReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getBlock } from 'viem/public'\n *\n * const client = createPublicClient({\n *   chain: mainnet,\n *   transport: http(),\n * })\n * const block = await getBlock(client)\n */\nexport async function getBlock(client, { blockHash, blockNumber, blockTag: blockTag_, includeTransactions: includeTransactions_, } = {}) {\n    const blockTag = blockTag_ ?? 'latest';\n    const includeTransactions = includeTransactions_ ?? false;\n    const blockNumberHex = blockNumber !== undefined ? numberToHex(blockNumber) : undefined;\n    let block = null;\n    if (blockHash) {\n        block = await client.request({\n            method: 'eth_getBlockByHash',\n            params: [blockHash, includeTransactions],\n        }, { dedupe: true });\n    }\n    else {\n        block = await client.request({\n            method: 'eth_getBlockByNumber',\n            params: [blockNumberHex || blockTag, includeTransactions],\n        }, { dedupe: Boolean(blockNumberHex) });\n    }\n    if (!block)\n        throw new BlockNotFoundError({ blockHash, blockNumber });\n    const format = client.chain?.formatters?.block?.format || formatBlock;\n    return format(block);\n}\n//# sourceMappingURL=getBlock.js.map","/**\n * Returns the current price of gas (in wei).\n *\n * - Docs: https://viem.sh/docs/actions/public/getGasPrice\n * - JSON-RPC Methods: [`eth_gasPrice`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_gasprice)\n *\n * @param client - Client to use\n * @returns The gas price (in wei). {@link GetGasPriceReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getGasPrice } from 'viem/public'\n *\n * const client = createPublicClient({\n *   chain: mainnet,\n *   transport: http(),\n * })\n * const gasPrice = await getGasPrice(client)\n */\nexport async function getGasPrice(client) {\n    const gasPrice = await client.request({\n        method: 'eth_gasPrice',\n    });\n    return BigInt(gasPrice);\n}\n//# sourceMappingURL=getGasPrice.js.map","import { Eip1559FeesNotSupportedError, } from '../../errors/fee.js';\nimport { hexToBigInt, } from '../../utils/encoding/fromHex.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { getBlock } from './getBlock.js';\nimport { getGasPrice } from './getGasPrice.js';\n/**\n * Returns an estimate for the max priority fee per gas (in wei) for a\n * transaction to be likely included in the next block.\n * Defaults to [`chain.fees.defaultPriorityFee`](/docs/clients/chains#fees-defaultpriorityfee) if set.\n *\n * - Docs: https://viem.sh/docs/actions/public/estimateMaxPriorityFeePerGas\n *\n * @param client - Client to use\n * @returns An estimate (in wei) for the max priority fee per gas. {@link EstimateMaxPriorityFeePerGasReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { estimateMaxPriorityFeePerGas } from 'viem/actions'\n *\n * const client = createPublicClient({\n *   chain: mainnet,\n *   transport: http(),\n * })\n * const maxPriorityFeePerGas = await estimateMaxPriorityFeePerGas(client)\n * // 10000000n\n */\nexport async function estimateMaxPriorityFeePerGas(client, args) {\n    return internal_estimateMaxPriorityFeePerGas(client, args);\n}\nexport async function internal_estimateMaxPriorityFeePerGas(client, args) {\n    const { block: block_, chain = client.chain, request } = args || {};\n    try {\n        const maxPriorityFeePerGas = chain?.fees?.maxPriorityFeePerGas ?? chain?.fees?.defaultPriorityFee;\n        if (typeof maxPriorityFeePerGas === 'function') {\n            const block = block_ || (await getAction(client, getBlock, 'getBlock')({}));\n            const maxPriorityFeePerGas_ = await maxPriorityFeePerGas({\n                block,\n                client,\n                request,\n            });\n            if (maxPriorityFeePerGas_ === null)\n                throw new Error();\n            return maxPriorityFeePerGas_;\n        }\n        if (typeof maxPriorityFeePerGas !== 'undefined')\n            return maxPriorityFeePerGas;\n        const maxPriorityFeePerGasHex = await client.request({\n            method: 'eth_maxPriorityFeePerGas',\n        });\n        return hexToBigInt(maxPriorityFeePerGasHex);\n    }\n    catch {\n        // If the RPC Provider does not support `eth_maxPriorityFeePerGas`\n        // fall back to calculating it manually via `gasPrice - baseFeePerGas`.\n        // See: https://github.com/ethereum/pm/issues/328#:~:text=eth_maxPriorityFeePerGas%20after%20London%20will%20effectively%20return%20eth_gasPrice%20%2D%20baseFee\n        const [block, gasPrice] = await Promise.all([\n            block_\n                ? Promise.resolve(block_)\n                : getAction(client, getBlock, 'getBlock')({}),\n            getAction(client, getGasPrice, 'getGasPrice')({}),\n        ]);\n        if (typeof block.baseFeePerGas !== 'bigint')\n            throw new Eip1559FeesNotSupportedError();\n        const maxPriorityFeePerGas = gasPrice - block.baseFeePerGas;\n        if (maxPriorityFeePerGas < 0n)\n            return 0n;\n        return maxPriorityFeePerGas;\n    }\n}\n//# sourceMappingURL=estimateMaxPriorityFeePerGas.js.map","import { BaseFeeScalarError, Eip1559FeesNotSupportedError, } from '../../errors/fee.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { internal_estimateMaxPriorityFeePerGas, } from './estimateMaxPriorityFeePerGas.js';\nimport { getBlock } from './getBlock.js';\nimport { getGasPrice } from './getGasPrice.js';\n/**\n * Returns an estimate for the fees per gas (in wei) for a\n * transaction to be likely included in the next block.\n * Defaults to [`chain.fees.estimateFeesPerGas`](/docs/clients/chains#fees-estimatefeespergas) if set.\n *\n * - Docs: https://viem.sh/docs/actions/public/estimateFeesPerGas\n *\n * @param client - Client to use\n * @param parameters - {@link EstimateFeesPerGasParameters}\n * @returns An estimate (in wei) for the fees per gas. {@link EstimateFeesPerGasReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { estimateFeesPerGas } from 'viem/actions'\n *\n * const client = createPublicClient({\n *   chain: mainnet,\n *   transport: http(),\n * })\n * const maxPriorityFeePerGas = await estimateFeesPerGas(client)\n * // { maxFeePerGas: ..., maxPriorityFeePerGas: ... }\n */\nexport async function estimateFeesPerGas(client, args) {\n    return internal_estimateFeesPerGas(client, args);\n}\nexport async function internal_estimateFeesPerGas(client, args) {\n    const { block: block_, chain = client.chain, request, type = 'eip1559', } = args || {};\n    const baseFeeMultiplier = await (async () => {\n        if (typeof chain?.fees?.baseFeeMultiplier === 'function')\n            return chain.fees.baseFeeMultiplier({\n                block: block_,\n                client,\n                request,\n            });\n        return chain?.fees?.baseFeeMultiplier ?? 1.2;\n    })();\n    if (baseFeeMultiplier < 1)\n        throw new BaseFeeScalarError();\n    const decimals = baseFeeMultiplier.toString().split('.')[1]?.length ?? 0;\n    const denominator = 10 ** decimals;\n    const multiply = (base) => (base * BigInt(Math.ceil(baseFeeMultiplier * denominator))) /\n        BigInt(denominator);\n    const block = block_\n        ? block_\n        : await getAction(client, getBlock, 'getBlock')({});\n    if (typeof chain?.fees?.estimateFeesPerGas === 'function') {\n        const fees = (await chain.fees.estimateFeesPerGas({\n            block: block_,\n            client,\n            multiply,\n            request,\n            type,\n        }));\n        if (fees !== null)\n            return fees;\n    }\n    if (type === 'eip1559') {\n        if (typeof block.baseFeePerGas !== 'bigint')\n            throw new Eip1559FeesNotSupportedError();\n        const maxPriorityFeePerGas = typeof request?.maxPriorityFeePerGas === 'bigint'\n            ? request.maxPriorityFeePerGas\n            : await internal_estimateMaxPriorityFeePerGas(client, {\n                block: block,\n                chain,\n                request,\n            });\n        const baseFeePerGas = multiply(block.baseFeePerGas);\n        const maxFeePerGas = request?.maxFeePerGas ?? baseFeePerGas + maxPriorityFeePerGas;\n        return {\n            maxFeePerGas,\n            maxPriorityFeePerGas,\n        };\n    }\n    const gasPrice = request?.gasPrice ??\n        multiply(await getAction(client, getGasPrice, 'getGasPrice')({}));\n    return {\n        gasPrice,\n    };\n}\n//# sourceMappingURL=estimateFeesPerGas.js.map","import { numberToHex, } from '../../utils/encoding/toHex.js';\n/**\n * Returns the balance of an address in wei.\n *\n * - Docs: https://viem.sh/docs/actions/public/getBalance\n * - JSON-RPC Methods: [`eth_getBalance`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getbalance)\n *\n * You can convert the balance to ether units with [`formatEther`](https://viem.sh/docs/utilities/formatEther).\n *\n * ```ts\n * const balance = await getBalance(client, {\n *   address: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n *   blockTag: 'safe'\n * })\n * const balanceAsEther = formatEther(balance)\n * // \"6.942\"\n * ```\n *\n * @param client - Client to use\n * @param parameters - {@link GetBalanceParameters}\n * @returns The balance of the address in wei. {@link GetBalanceReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getBalance } from 'viem/public'\n *\n * const client = createPublicClient({\n *   chain: mainnet,\n *   transport: http(),\n * })\n * const balance = await getBalance(client, {\n *   address: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n * })\n * // 10000000000000000000000n (wei)\n */\nexport async function getBalance(client, { address, blockNumber, blockTag = 'latest' }) {\n    const blockNumberHex = typeof blockNumber === 'bigint' ? numberToHex(blockNumber) : undefined;\n    const balance = await client.request({\n        method: 'eth_getBalance',\n        params: [address, blockNumberHex || blockTag],\n    });\n    return BigInt(balance);\n}\n//# sourceMappingURL=getBalance.js.map","import { parseAccount, } from '../../accounts/utils/parseAccount.js';\nimport { BaseError } from '../../errors/base.js';\nimport { recoverAuthorizationAddress, } from '../../utils/authorization/recoverAuthorizationAddress.js';\nimport { numberToHex, } from '../../utils/encoding/toHex.js';\nimport { getEstimateGasError, } from '../../utils/errors/getEstimateGasError.js';\nimport { extract } from '../../utils/formatters/extract.js';\nimport { formatTransactionRequest, } from '../../utils/formatters/transactionRequest.js';\nimport { serializeStateOverride } from '../../utils/stateOverride.js';\nimport { assertRequest, } from '../../utils/transaction/assertRequest.js';\nimport { prepareTransactionRequest, } from '../wallet/prepareTransactionRequest.js';\nimport { getBalance } from './getBalance.js';\n/**\n * Estimates the gas necessary to complete a transaction without submitting it to the network.\n *\n * - Docs: https://viem.sh/docs/actions/public/estimateGas\n * - JSON-RPC Methods: [`eth_estimateGas`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_estimategas)\n *\n * @param client - Client to use\n * @param parameters - {@link EstimateGasParameters}\n * @returns The gas estimate (in gas units). {@link EstimateGasReturnType}\n *\n * @example\n * import { createPublicClient, http, parseEther } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { estimateGas } from 'viem/public'\n *\n * const client = createPublicClient({\n *   chain: mainnet,\n *   transport: http(),\n * })\n * const gasEstimate = await estimateGas(client, {\n *   account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n *   to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',\n *   value: parseEther('1'),\n * })\n */\nexport async function estimateGas(client, args) {\n    const { account: account_ = client.account } = args;\n    const account = account_ ? parseAccount(account_) : undefined;\n    try {\n        const { accessList, authorizationList, blobs, blobVersionedHashes, blockNumber, blockTag, data, gas, gasPrice, maxFeePerBlobGas, maxFeePerGas, maxPriorityFeePerGas, nonce, value, stateOverride, ...rest } = (await prepareTransactionRequest(client, {\n            ...args,\n            parameters: \n            // Some RPC Providers do not compute versioned hashes from blobs. We will need\n            // to compute them.\n            account?.type === 'local' ? undefined : ['blobVersionedHashes'],\n        }));\n        const blockNumberHex = typeof blockNumber === 'bigint' ? numberToHex(blockNumber) : undefined;\n        const block = blockNumberHex || blockTag;\n        const rpcStateOverride = serializeStateOverride(stateOverride);\n        const to = await (async () => {\n            // If `to` exists on the parameters, use that.\n            if (rest.to)\n                return rest.to;\n            // If no `to` exists, and we are sending a EIP-7702 transaction, use the\n            // address of the first authorization in the list.\n            if (authorizationList && authorizationList.length > 0)\n                return await recoverAuthorizationAddress({\n                    authorization: authorizationList[0],\n                }).catch(() => {\n                    throw new BaseError('`to` is required. Could not infer from `authorizationList`');\n                });\n            // Otherwise, we are sending a deployment transaction.\n            return undefined;\n        })();\n        assertRequest(args);\n        const chainFormat = client.chain?.formatters?.transactionRequest?.format;\n        const format = chainFormat || formatTransactionRequest;\n        const request = format({\n            // Pick out extra data that might exist on the chain's transaction request type.\n            ...extract(rest, { format: chainFormat }),\n            from: account?.address,\n            accessList,\n            authorizationList,\n            blobs,\n            blobVersionedHashes,\n            data,\n            gas,\n            gasPrice,\n            maxFeePerBlobGas,\n            maxFeePerGas,\n            maxPriorityFeePerGas,\n            nonce,\n            to,\n            value,\n        });\n        function estimateGas_rpc(parameters) {\n            const { block, request, rpcStateOverride } = parameters;\n            return client.request({\n                method: 'eth_estimateGas',\n                params: rpcStateOverride\n                    ? [request, block ?? 'latest', rpcStateOverride]\n                    : block\n                        ? [request, block]\n                        : [request],\n            });\n        }\n        let estimate = BigInt(await estimateGas_rpc({ block, request, rpcStateOverride }));\n        // TODO(7702): Remove this once https://github.com/ethereum/execution-apis/issues/561 is resolved.\n        //       Authorization list schema is not implemented on JSON-RPC spec yet, so we need to\n        //       manually estimate the gas.\n        if (authorizationList) {\n            const value = await getBalance(client, { address: request.from });\n            const estimates = await Promise.all(authorizationList.map(async (authorization) => {\n                const { address } = authorization;\n                const estimate = await estimateGas_rpc({\n                    block,\n                    request: {\n                        authorizationList: undefined,\n                        data,\n                        from: account?.address,\n                        to: address,\n                        value: numberToHex(value),\n                    },\n                    rpcStateOverride,\n                }).catch(() => 100000n);\n                return 2n * BigInt(estimate);\n            }));\n            estimate += estimates.reduce((acc, curr) => acc + curr, 0n);\n        }\n        return estimate;\n    }\n    catch (err) {\n        throw getEstimateGasError(err, {\n            ...args,\n            account,\n            chain: client.chain,\n        });\n    }\n}\n//# sourceMappingURL=estimateGas.js.map","import { parseAccount, } from '../../accounts/utils/parseAccount.js';\nimport { internal_estimateFeesPerGas, } from '../../actions/public/estimateFeesPerGas.js';\nimport { estimateGas, } from '../../actions/public/estimateGas.js';\nimport { getBlock as getBlock_, } from '../../actions/public/getBlock.js';\nimport { getTransactionCount, } from '../../actions/public/getTransactionCount.js';\nimport { Eip1559FeesNotSupportedError, MaxFeePerGasTooLowError, } from '../../errors/fee.js';\nimport { blobsToCommitments } from '../../utils/blob/blobsToCommitments.js';\nimport { blobsToProofs } from '../../utils/blob/blobsToProofs.js';\nimport { commitmentsToVersionedHashes } from '../../utils/blob/commitmentsToVersionedHashes.js';\nimport { toBlobSidecars } from '../../utils/blob/toBlobSidecars.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { assertRequest, } from '../../utils/transaction/assertRequest.js';\nimport { getTransactionType, } from '../../utils/transaction/getTransactionType.js';\nimport { getChainId as getChainId_ } from '../public/getChainId.js';\nexport const defaultParameters = [\n    'blobVersionedHashes',\n    'chainId',\n    'fees',\n    'gas',\n    'nonce',\n    'type',\n];\n/** @internal */\nexport const eip1559NetworkCache = /*#__PURE__*/ new Map();\n/**\n * Prepares a transaction request for signing.\n *\n * - Docs: https://viem.sh/docs/actions/wallet/prepareTransactionRequest\n *\n * @param args - {@link PrepareTransactionRequestParameters}\n * @returns The transaction request. {@link PrepareTransactionRequestReturnType}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { prepareTransactionRequest } from 'viem/actions'\n *\n * const client = createWalletClient({\n *   chain: mainnet,\n *   transport: custom(window.ethereum),\n * })\n * const request = await prepareTransactionRequest(client, {\n *   account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n *   to: '0x0000000000000000000000000000000000000000',\n *   value: 1n,\n * })\n *\n * @example\n * // Account Hoisting\n * import { createWalletClient, http } from 'viem'\n * import { privateKeyToAccount } from 'viem/accounts'\n * import { mainnet } from 'viem/chains'\n * import { prepareTransactionRequest } from 'viem/actions'\n *\n * const client = createWalletClient({\n *   account: privateKeyToAccount('0x…'),\n *   chain: mainnet,\n *   transport: custom(window.ethereum),\n * })\n * const request = await prepareTransactionRequest(client, {\n *   to: '0x0000000000000000000000000000000000000000',\n *   value: 1n,\n * })\n */\nexport async function prepareTransactionRequest(client, args) {\n    const { account: account_ = client.account, blobs, chain, gas, kzg, nonce, nonceManager, parameters = defaultParameters, type, } = args;\n    const account = account_ ? parseAccount(account_) : account_;\n    const request = { ...args, ...(account ? { from: account?.address } : {}) };\n    let block;\n    async function getBlock() {\n        if (block)\n            return block;\n        block = await getAction(client, getBlock_, 'getBlock')({ blockTag: 'latest' });\n        return block;\n    }\n    let chainId;\n    async function getChainId() {\n        if (chainId)\n            return chainId;\n        if (chain)\n            return chain.id;\n        if (typeof args.chainId !== 'undefined')\n            return args.chainId;\n        const chainId_ = await getAction(client, getChainId_, 'getChainId')({});\n        chainId = chainId_;\n        return chainId;\n    }\n    if (parameters.includes('nonce') && typeof nonce === 'undefined' && account) {\n        if (nonceManager) {\n            const chainId = await getChainId();\n            request.nonce = await nonceManager.consume({\n                address: account.address,\n                chainId,\n                client,\n            });\n        }\n        else {\n            request.nonce = await getAction(client, getTransactionCount, 'getTransactionCount')({\n                address: account.address,\n                blockTag: 'pending',\n            });\n        }\n    }\n    if ((parameters.includes('blobVersionedHashes') ||\n        parameters.includes('sidecars')) &&\n        blobs &&\n        kzg) {\n        const commitments = blobsToCommitments({ blobs, kzg });\n        if (parameters.includes('blobVersionedHashes')) {\n            const versionedHashes = commitmentsToVersionedHashes({\n                commitments,\n                to: 'hex',\n            });\n            request.blobVersionedHashes = versionedHashes;\n        }\n        if (parameters.includes('sidecars')) {\n            const proofs = blobsToProofs({ blobs, commitments, kzg });\n            const sidecars = toBlobSidecars({\n                blobs,\n                commitments,\n                proofs,\n                to: 'hex',\n            });\n            request.sidecars = sidecars;\n        }\n    }\n    if (parameters.includes('chainId'))\n        request.chainId = await getChainId();\n    if ((parameters.includes('fees') || parameters.includes('type')) &&\n        typeof type === 'undefined') {\n        try {\n            request.type = getTransactionType(request);\n        }\n        catch {\n            let isEip1559Network = eip1559NetworkCache.get(client.uid);\n            if (typeof isEip1559Network === 'undefined') {\n                const block = await getBlock();\n                isEip1559Network = typeof block?.baseFeePerGas === 'bigint';\n                eip1559NetworkCache.set(client.uid, isEip1559Network);\n            }\n            request.type = isEip1559Network ? 'eip1559' : 'legacy';\n        }\n    }\n    if (parameters.includes('fees')) {\n        // TODO(4844): derive blob base fees once https://github.com/ethereum/execution-apis/pull/486 is merged.\n        if (request.type !== 'legacy' && request.type !== 'eip2930') {\n            // EIP-1559 fees\n            if (typeof request.maxFeePerGas === 'undefined' ||\n                typeof request.maxPriorityFeePerGas === 'undefined') {\n                const block = await getBlock();\n                const { maxFeePerGas, maxPriorityFeePerGas } = await internal_estimateFeesPerGas(client, {\n                    block: block,\n                    chain,\n                    request: request,\n                });\n                if (typeof args.maxPriorityFeePerGas === 'undefined' &&\n                    args.maxFeePerGas &&\n                    args.maxFeePerGas < maxPriorityFeePerGas)\n                    throw new MaxFeePerGasTooLowError({\n                        maxPriorityFeePerGas,\n                    });\n                request.maxPriorityFeePerGas = maxPriorityFeePerGas;\n                request.maxFeePerGas = maxFeePerGas;\n            }\n        }\n        else {\n            // Legacy fees\n            if (typeof args.maxFeePerGas !== 'undefined' ||\n                typeof args.maxPriorityFeePerGas !== 'undefined')\n                throw new Eip1559FeesNotSupportedError();\n            if (typeof args.gasPrice === 'undefined') {\n                const block = await getBlock();\n                const { gasPrice: gasPrice_ } = await internal_estimateFeesPerGas(client, {\n                    block: block,\n                    chain,\n                    request: request,\n                    type: 'legacy',\n                });\n                request.gasPrice = gasPrice_;\n            }\n        }\n    }\n    if (parameters.includes('gas') && typeof gas === 'undefined')\n        request.gas = await getAction(client, estimateGas, 'estimateGas')({\n            ...request,\n            account: account\n                ? { address: account.address, type: 'json-rpc' }\n                : account,\n        });\n    assertRequest(request);\n    delete request.parameters;\n    return request;\n}\n//# sourceMappingURL=prepareTransactionRequest.js.map","/**\n * Sends a **signed** transaction to the network\n *\n * - Docs: https://viem.sh/docs/actions/wallet/sendRawTransaction\n * - JSON-RPC Method: [`eth_sendRawTransaction`](https://ethereum.github.io/execution-apis/api-documentation/)\n *\n * @param client - Client to use\n * @param parameters - {@link SendRawTransactionParameters}\n * @returns The transaction hash. {@link SendRawTransactionReturnType}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { sendRawTransaction } from 'viem/wallet'\n *\n * const client = createWalletClient({\n *   chain: mainnet,\n *   transport: custom(window.ethereum),\n * })\n *\n * const hash = await sendRawTransaction(client, {\n *   serializedTransaction: '0x02f850018203118080825208808080c080a04012522854168b27e5dc3d5839bab5e6b39e1a0ffd343901ce1622e3d64b48f1a04e00902ae0502c4728cbf12156290df99c3ed7de85b1dbfe20b5c36931733a33'\n * })\n */\nexport async function sendRawTransaction(client, { serializedTransaction }) {\n    return client.request({\n        method: 'eth_sendRawTransaction',\n        params: [serializedTransaction],\n    }, { retryCount: 0 });\n}\n//# sourceMappingURL=sendRawTransaction.js.map","import { parseAccount, } from '../../accounts/utils/parseAccount.js';\nimport { AccountNotFoundError, AccountTypeNotSupportedError, } from '../../errors/account.js';\nimport { BaseError } from '../../errors/base.js';\nimport { recoverAuthorizationAddress, } from '../../utils/authorization/recoverAuthorizationAddress.js';\nimport { assertCurrentChain, } from '../../utils/chain/assertCurrentChain.js';\nimport { getTransactionError, } from '../../utils/errors/getTransactionError.js';\nimport { extract } from '../../utils/formatters/extract.js';\nimport { formatTransactionRequest, } from '../../utils/formatters/transactionRequest.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { LruMap } from '../../utils/lru.js';\nimport { assertRequest, } from '../../utils/transaction/assertRequest.js';\nimport { getChainId } from '../public/getChainId.js';\nimport { defaultParameters, prepareTransactionRequest, } from './prepareTransactionRequest.js';\nimport { sendRawTransaction, } from './sendRawTransaction.js';\nconst supportsWalletNamespace = new LruMap(128);\n/**\n * Creates, signs, and sends a new transaction to the network.\n *\n * - Docs: https://viem.sh/docs/actions/wallet/sendTransaction\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/transactions_sending-transactions\n * - JSON-RPC Methods:\n *   - JSON-RPC Accounts: [`eth_sendTransaction`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sendtransaction)\n *   - Local Accounts: [`eth_sendRawTransaction`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sendrawtransaction)\n *\n * @param client - Client to use\n * @param parameters - {@link SendTransactionParameters}\n * @returns The [Transaction](https://viem.sh/docs/glossary/terms#transaction) hash. {@link SendTransactionReturnType}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { sendTransaction } from 'viem/wallet'\n *\n * const client = createWalletClient({\n *   chain: mainnet,\n *   transport: custom(window.ethereum),\n * })\n * const hash = await sendTransaction(client, {\n *   account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n *   to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',\n *   value: 1000000000000000000n,\n * })\n *\n * @example\n * // Account Hoisting\n * import { createWalletClient, http } from 'viem'\n * import { privateKeyToAccount } from 'viem/accounts'\n * import { mainnet } from 'viem/chains'\n * import { sendTransaction } from 'viem/wallet'\n *\n * const client = createWalletClient({\n *   account: privateKeyToAccount('0x…'),\n *   chain: mainnet,\n *   transport: http(),\n * })\n * const hash = await sendTransaction(client, {\n *   to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',\n *   value: 1000000000000000000n,\n * })\n */\nexport async function sendTransaction(client, parameters) {\n    const { account: account_ = client.account, chain = client.chain, accessList, authorizationList, blobs, data, gas, gasPrice, maxFeePerBlobGas, maxFeePerGas, maxPriorityFeePerGas, nonce, type, value, ...rest } = parameters;\n    if (typeof account_ === 'undefined')\n        throw new AccountNotFoundError({\n            docsPath: '/docs/actions/wallet/sendTransaction',\n        });\n    const account = account_ ? parseAccount(account_) : null;\n    try {\n        assertRequest(parameters);\n        const to = await (async () => {\n            // If `to` exists on the parameters, use that.\n            if (parameters.to)\n                return parameters.to;\n            // If `to` is null, we are sending a deployment transaction.\n            if (parameters.to === null)\n                return undefined;\n            // If no `to` exists, and we are sending a EIP-7702 transaction, use the\n            // address of the first authorization in the list.\n            if (authorizationList && authorizationList.length > 0)\n                return await recoverAuthorizationAddress({\n                    authorization: authorizationList[0],\n                }).catch(() => {\n                    throw new BaseError('`to` is required. Could not infer from `authorizationList`.');\n                });\n            // Otherwise, we are sending a deployment transaction.\n            return undefined;\n        })();\n        if (account?.type === 'json-rpc' || account === null) {\n            let chainId;\n            if (chain !== null) {\n                chainId = await getAction(client, getChainId, 'getChainId')({});\n                assertCurrentChain({\n                    currentChainId: chainId,\n                    chain,\n                });\n            }\n            const chainFormat = client.chain?.formatters?.transactionRequest?.format;\n            const format = chainFormat || formatTransactionRequest;\n            const request = format({\n                // Pick out extra data that might exist on the chain's transaction request type.\n                ...extract(rest, { format: chainFormat }),\n                accessList,\n                authorizationList,\n                blobs,\n                chainId,\n                data,\n                from: account?.address,\n                gas,\n                gasPrice,\n                maxFeePerBlobGas,\n                maxFeePerGas,\n                maxPriorityFeePerGas,\n                nonce,\n                to,\n                type,\n                value,\n            });\n            const isWalletNamespaceSupported = supportsWalletNamespace.get(client.uid);\n            const method = isWalletNamespaceSupported\n                ? 'wallet_sendTransaction'\n                : 'eth_sendTransaction';\n            try {\n                return await client.request({\n                    method,\n                    params: [request],\n                }, { retryCount: 0 });\n            }\n            catch (e) {\n                if (isWalletNamespaceSupported === false)\n                    throw e;\n                const error = e;\n                // If the transport does not support the method or input, attempt to use the\n                // `wallet_sendTransaction` method.\n                if (error.name === 'InvalidInputRpcError' ||\n                    error.name === 'InvalidParamsRpcError' ||\n                    error.name === 'MethodNotFoundRpcError' ||\n                    error.name === 'MethodNotSupportedRpcError') {\n                    return await client\n                        .request({\n                        method: 'wallet_sendTransaction',\n                        params: [request],\n                    }, { retryCount: 0 })\n                        .then((hash) => {\n                        supportsWalletNamespace.set(client.uid, true);\n                        return hash;\n                    })\n                        .catch((e) => {\n                        const walletNamespaceError = e;\n                        if (walletNamespaceError.name === 'MethodNotFoundRpcError' ||\n                            walletNamespaceError.name === 'MethodNotSupportedRpcError') {\n                            supportsWalletNamespace.set(client.uid, false);\n                            throw error;\n                        }\n                        throw walletNamespaceError;\n                    });\n                }\n                throw error;\n            }\n        }\n        if (account?.type === 'local') {\n            // Prepare the request for signing (assign appropriate fees, etc.)\n            const request = await getAction(client, prepareTransactionRequest, 'prepareTransactionRequest')({\n                account,\n                accessList,\n                authorizationList,\n                blobs,\n                chain,\n                data,\n                gas,\n                gasPrice,\n                maxFeePerBlobGas,\n                maxFeePerGas,\n                maxPriorityFeePerGas,\n                nonce,\n                nonceManager: account.nonceManager,\n                parameters: [...defaultParameters, 'sidecars'],\n                type,\n                value,\n                ...rest,\n                to,\n            });\n            const serializer = chain?.serializers?.transaction;\n            const serializedTransaction = (await account.signTransaction(request, {\n                serializer,\n            }));\n            return await getAction(client, sendRawTransaction, 'sendRawTransaction')({\n                serializedTransaction,\n            });\n        }\n        if (account?.type === 'smart')\n            throw new AccountTypeNotSupportedError({\n                metaMessages: [\n                    'Consider using the `sendUserOperation` Action instead.',\n                ],\n                docsPath: '/docs/actions/bundler/sendUserOperation',\n                type: 'smart',\n            });\n        throw new AccountTypeNotSupportedError({\n            docsPath: '/docs/actions/wallet/sendTransaction',\n            type: account?.type,\n        });\n    }\n    catch (err) {\n        if (err instanceof AccountTypeNotSupportedError)\n            throw err;\n        throw getTransactionError(err, {\n            ...parameters,\n            account,\n            chain: parameters.chain || undefined,\n        });\n    }\n}\n//# sourceMappingURL=sendTransaction.js.map","/** @internal */\nexport const listenersCache = /*#__PURE__*/ new Map();\n/** @internal */\nexport const cleanupCache = /*#__PURE__*/ new Map();\nlet callbackCount = 0;\n/**\n * @description Sets up an observer for a given function. If another function\n * is set up under the same observer id, the function will only be called once\n * for both instances of the observer.\n */\nexport function observe(observerId, callbacks, fn) {\n    const callbackId = ++callbackCount;\n    const getListeners = () => listenersCache.get(observerId) || [];\n    const unsubscribe = () => {\n        const listeners = getListeners();\n        listenersCache.set(observerId, listeners.filter((cb) => cb.id !== callbackId));\n    };\n    const unwatch = () => {\n        const listeners = getListeners();\n        if (!listeners.some((cb) => cb.id === callbackId))\n            return;\n        const cleanup = cleanupCache.get(observerId);\n        if (listeners.length === 1 && cleanup) {\n            const p = cleanup();\n            if (p instanceof Promise)\n                p.catch(() => { });\n        }\n        unsubscribe();\n    };\n    const listeners = getListeners();\n    listenersCache.set(observerId, [\n        ...listeners,\n        { id: callbackId, fns: callbacks },\n    ]);\n    if (listeners && listeners.length > 0)\n        return unwatch;\n    const emit = {};\n    for (const key in callbacks) {\n        emit[key] = ((...args) => {\n            const listeners = getListeners();\n            if (listeners.length === 0)\n                return;\n            for (const listener of listeners)\n                listener.fns[key]?.(...args);\n        });\n    }\n    const cleanup = fn(emit);\n    if (typeof cleanup === 'function')\n        cleanupCache.set(observerId, cleanup);\n    return unwatch;\n}\n//# sourceMappingURL=observe.js.map","import { wait } from './wait.js';\n/**\n * @description Polls a function at a specified interval.\n */\nexport function poll(fn, { emitOnBegin, initialWaitTime, interval }) {\n    let active = true;\n    const unwatch = () => (active = false);\n    const watch = async () => {\n        let data = undefined;\n        if (emitOnBegin)\n            data = await fn({ unpoll: unwatch });\n        const initialWait = (await initialWaitTime?.(data)) ?? interval;\n        await wait(initialWait);\n        const poll = async () => {\n            if (!active)\n                return;\n            await fn({ unpoll: unwatch });\n            await wait(interval);\n            poll();\n        };\n        poll();\n    };\n    watch();\n    return unwatch;\n}\n//# sourceMappingURL=poll.js.map","import { parseAccount, } from '../../accounts/utils/parseAccount.js';\nimport { AccountNotFoundError, } from '../../errors/account.js';\nimport { isAddressEqual } from '../../utils/address/isAddressEqual.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { getChainId } from '../public/getChainId.js';\nimport { getTransactionCount } from '../public/getTransactionCount.js';\n/**\n * Prepares an [EIP-7702 Authorization](https://eips.ethereum.org/EIPS/eip-7702) object for signing.\n * This Action will fill the required fields of the Authorization object if they are not provided (e.g. `nonce` and `chainId`).\n *\n * With the prepared Authorization object, you can use [`signAuthorization`](https://viem.sh/docs/eip7702/signAuthorization) to sign over the Authorization object.\n *\n * @param client - Client to use\n * @param parameters - {@link PrepareAuthorizationParameters}\n * @returns The prepared Authorization object. {@link PrepareAuthorizationReturnType}\n *\n * @example\n * import { createClient, http } from 'viem'\n * import { privateKeyToAccount } from 'viem/accounts'\n * import { mainnet } from 'viem/chains'\n * import { prepareAuthorization } from 'viem/experimental'\n *\n * const client = createClient({\n *   chain: mainnet,\n *   transport: http(),\n * })\n * const authorization = await prepareAuthorization(client, {\n *   account: privateKeyToAccount('0x..'),\n *   contractAddress: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n * })\n *\n * @example\n * // Account Hoisting\n * import { createClient, http } from 'viem'\n * import { privateKeyToAccount } from 'viem/accounts'\n * import { mainnet } from 'viem/chains'\n * import { prepareAuthorization } from 'viem/experimental'\n *\n * const client = createClient({\n *   account: privateKeyToAccount('0x…'),\n *   chain: mainnet,\n *   transport: http(),\n * })\n * const authorization = await prepareAuthorization(client, {\n *   contractAddress: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n * })\n */\nexport async function prepareAuthorization(client, parameters) {\n    const { account: account_ = client.account, chainId, nonce } = parameters;\n    if (!account_)\n        throw new AccountNotFoundError({\n            docsPath: '/docs/eip7702/prepareAuthorization',\n        });\n    const account = parseAccount(account_);\n    const executor = (() => {\n        if (!parameters.executor)\n            return undefined;\n        if (parameters.executor === 'self')\n            return parameters.executor;\n        return parseAccount(parameters.executor);\n    })();\n    const authorization = {\n        address: parameters.contractAddress ?? parameters.address,\n        chainId,\n        nonce,\n    };\n    if (typeof authorization.chainId === 'undefined')\n        authorization.chainId =\n            client.chain?.id ??\n                (await getAction(client, getChainId, 'getChainId')({}));\n    if (typeof authorization.nonce === 'undefined') {\n        authorization.nonce = await getAction(client, getTransactionCount, 'getTransactionCount')({\n            address: account.address,\n            blockTag: 'pending',\n        });\n        if (executor === 'self' ||\n            (executor?.address && isAddressEqual(executor.address, account.address)))\n            authorization.nonce += 1;\n    }\n    return authorization;\n}\n//# sourceMappingURL=prepareAuthorization.js.map","import { parseAccount, } from '../../accounts/utils/parseAccount.js';\nimport { AccountNotFoundError, AccountTypeNotSupportedError, } from '../../errors/account.js';\nimport { prepareAuthorization, } from './prepareAuthorization.js';\n/**\n * Signs an [EIP-7702 Authorization](https://eips.ethereum.org/EIPS/eip-7702) object.\n *\n * With the calculated signature, you can:\n * - use [`verifyAuthorization`](https://viem.sh/docs/eip7702/verifyAuthorization) to verify the signed Authorization object,\n * - use [`recoverAuthorizationAddress`](https://viem.sh/docs/eip7702/recoverAuthorizationAddress) to recover the signing address from the signed Authorization object.\n *\n * @param client - Client to use\n * @param parameters - {@link SignAuthorizationParameters}\n * @returns The signed Authorization object. {@link SignAuthorizationReturnType}\n *\n * @example\n * import { createClient, http } from 'viem'\n * import { privateKeyToAccount } from 'viem/accounts'\n * import { mainnet } from 'viem/chains'\n * import { signAuthorization } from 'viem/experimental'\n *\n * const client = createClient({\n *   chain: mainnet,\n *   transport: http(),\n * })\n * const signature = await signAuthorization(client, {\n *   account: privateKeyToAccount('0x..'),\n *   contractAddress: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n * })\n *\n * @example\n * // Account Hoisting\n * import { createClient, http } from 'viem'\n * import { privateKeyToAccount } from 'viem/accounts'\n * import { mainnet } from 'viem/chains'\n * import { signAuthorization } from 'viem/experimental'\n *\n * const client = createClient({\n *   account: privateKeyToAccount('0x…'),\n *   chain: mainnet,\n *   transport: http(),\n * })\n * const signature = await signAuthorization(client, {\n *   contractAddress: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n * })\n */\nexport async function signAuthorization(client, parameters) {\n    const { account: account_ = client.account } = parameters;\n    if (!account_)\n        throw new AccountNotFoundError({\n            docsPath: '/docs/eip7702/signAuthorization',\n        });\n    const account = parseAccount(account_);\n    if (!account.signAuthorization)\n        throw new AccountTypeNotSupportedError({\n            docsPath: '/docs/eip7702/signAuthorization',\n            metaMessages: [\n                'The `signAuthorization` Action does not support JSON-RPC Accounts.',\n            ],\n            type: account.type,\n        });\n    const authorization = await prepareAuthorization(client, parameters);\n    return account.signAuthorization(authorization);\n}\n//# sourceMappingURL=signAuthorization.js.map","import { parseAccount, } from '../../accounts/utils/parseAccount.js';\nimport { decodeFunctionResult, } from '../../utils/abi/decodeFunctionResult.js';\nimport { encodeFunctionData, } from '../../utils/abi/encodeFunctionData.js';\nimport { getContractError, } from '../../utils/errors/getContractError.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { call } from './call.js';\n/**\n * Simulates/validates a contract interaction. This is useful for retrieving **return data** and **revert reasons** of contract write functions.\n *\n * - Docs: https://viem.sh/docs/contract/simulateContract\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/contracts_writing-to-contracts\n *\n * This function does not require gas to execute and _**does not**_ change the state of the blockchain. It is almost identical to [`readContract`](https://viem.sh/docs/contract/readContract), but also supports contract write functions.\n *\n * Internally, uses a [Public Client](https://viem.sh/docs/clients/public) to call the [`call` action](https://viem.sh/docs/actions/public/call) with [ABI-encoded `data`](https://viem.sh/docs/contract/encodeFunctionData).\n *\n * @param client - Client to use\n * @param parameters - {@link SimulateContractParameters}\n * @returns The simulation result and write request. {@link SimulateContractReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { simulateContract } from 'viem/contract'\n *\n * const client = createPublicClient({\n *   chain: mainnet,\n *   transport: http(),\n * })\n * const result = await simulateContract(client, {\n *   address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',\n *   abi: parseAbi(['function mint(uint32) view returns (uint32)']),\n *   functionName: 'mint',\n *   args: ['69420'],\n *   account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n * })\n */\nexport async function simulateContract(client, parameters) {\n    const { abi, address, args, dataSuffix, functionName, ...callRequest } = parameters;\n    const account = callRequest.account\n        ? parseAccount(callRequest.account)\n        : client.account;\n    const calldata = encodeFunctionData({ abi, args, functionName });\n    try {\n        const { data } = await getAction(client, call, 'call')({\n            batch: false,\n            data: `${calldata}${dataSuffix ? dataSuffix.replace('0x', '') : ''}`,\n            to: address,\n            ...callRequest,\n            account,\n        });\n        const result = decodeFunctionResult({\n            abi,\n            args,\n            functionName,\n            data: data || '0x',\n        });\n        const minimizedAbi = abi.filter((abiItem) => 'name' in abiItem && abiItem.name === parameters.functionName);\n        return {\n            result,\n            request: {\n                abi: minimizedAbi,\n                address,\n                args,\n                dataSuffix,\n                functionName,\n                ...callRequest,\n                account,\n            },\n        };\n    }\n    catch (error) {\n        throw getContractError(error, {\n            abi,\n            address,\n            args,\n            docsPath: '/docs/contract/simulateContract',\n            functionName,\n            sender: account?.address,\n        });\n    }\n}\n//# sourceMappingURL=simulateContract.js.map","import { hexToBigInt } from '../../../utils/encoding/fromHex.js';\nimport { numberToHex } from '../../../utils/encoding/toHex.js';\nimport { formatUserOperationRequest, } from '../../utils/formatters/userOperationRequest.js';\n/**\n * Retrieves paymaster-related User Operation properties to be used for sending the User Operation.\n *\n * - Docs: https://viem.sh/account-abstraction/actions/paymaster/getPaymasterData\n *\n * @param client - Client to use\n * @param parameters - {@link GetPaymasterDataParameters}\n * @returns Paymaster-related User Operation properties. {@link GetPaymasterDataReturnType}\n *\n * @example\n * import { http } from 'viem'\n * import { createPaymasterClient, getPaymasterData } from 'viem/account-abstraction'\n *\n * const paymasterClient = createPaymasterClient({\n *   transport: http('https://...'),\n * })\n *\n * const userOperation = { ... }\n *\n * const values = await getPaymasterData(paymasterClient, {\n *   chainId: 1,\n *   entryPointAddress: '0x...',\n *   ...userOperation,\n * })\n */\nexport async function getPaymasterData(client, parameters) {\n    const { chainId, entryPointAddress, context, ...userOperation } = parameters;\n    const request = formatUserOperationRequest(userOperation);\n    const { paymasterPostOpGasLimit, paymasterVerificationGasLimit, ...rest } = await client.request({\n        method: 'pm_getPaymasterData',\n        params: [\n            {\n                ...request,\n                callGasLimit: request.callGasLimit ?? '0x0',\n                verificationGasLimit: request.verificationGasLimit ?? '0x0',\n                preVerificationGas: request.preVerificationGas ?? '0x0',\n            },\n            entryPointAddress,\n            numberToHex(chainId),\n            context,\n        ],\n    });\n    return {\n        ...rest,\n        ...(paymasterPostOpGasLimit && {\n            paymasterPostOpGasLimit: hexToBigInt(paymasterPostOpGasLimit),\n        }),\n        ...(paymasterVerificationGasLimit && {\n            paymasterVerificationGasLimit: hexToBigInt(paymasterVerificationGasLimit),\n        }),\n    };\n}\n//# sourceMappingURL=getPaymasterData.js.map","import { hexToBigInt } from '../../../utils/encoding/fromHex.js';\nimport { numberToHex } from '../../../utils/encoding/toHex.js';\nimport { formatUserOperationRequest, } from '../../utils/formatters/userOperationRequest.js';\n/**\n * Retrieves paymaster-related User Operation properties to be used for gas estimation.\n *\n * - Docs: https://viem.sh/account-abstraction/actions/paymaster/getPaymasterStubData\n *\n * @param client - Client to use\n * @param parameters - {@link GetPaymasterStubDataParameters}\n * @returns Paymaster-related User Operation properties. {@link GetPaymasterStubDataReturnType}\n *\n * @example\n * import { http } from 'viem'\n * import { createPaymasterClient, getPaymasterStubData } from 'viem/account-abstraction'\n *\n * const paymasterClient = createPaymasterClient({\n *   transport: http('https://...'),\n * })\n *\n * const userOperation = { ... }\n *\n * const values = await getPaymasterStubData(paymasterClient, {\n *   chainId: 1,\n *   entryPointAddress: '0x...',\n *   ...userOperation,\n * })\n */\nexport async function getPaymasterStubData(client, parameters) {\n    const { chainId, entryPointAddress, context, ...userOperation } = parameters;\n    const request = formatUserOperationRequest(userOperation);\n    const { paymasterPostOpGasLimit, paymasterVerificationGasLimit, ...rest } = await client.request({\n        method: 'pm_getPaymasterStubData',\n        params: [\n            {\n                ...request,\n                callGasLimit: request.callGasLimit ?? '0x0',\n                verificationGasLimit: request.verificationGasLimit ?? '0x0',\n                preVerificationGas: request.preVerificationGas ?? '0x0',\n            },\n            entryPointAddress,\n            numberToHex(chainId),\n            context,\n        ],\n    });\n    return {\n        ...rest,\n        ...(paymasterPostOpGasLimit && {\n            paymasterPostOpGasLimit: hexToBigInt(paymasterPostOpGasLimit),\n        }),\n        ...(paymasterVerificationGasLimit && {\n            paymasterVerificationGasLimit: hexToBigInt(paymasterVerificationGasLimit),\n        }),\n    };\n}\n//# sourceMappingURL=getPaymasterStubData.js.map","import { parseAccount, } from '../../../accounts/utils/parseAccount.js';\nimport { prepareAuthorization } from '../../../actions/index.js';\nimport { estimateFeesPerGas, } from '../../../actions/public/estimateFeesPerGas.js';\nimport { getChainId as getChainId_ } from '../../../actions/public/getChainId.js';\nimport { AccountNotFoundError } from '../../../errors/account.js';\nimport { encodeFunctionData, } from '../../../utils/abi/encodeFunctionData.js';\nimport { concat } from '../../../utils/data/concat.js';\nimport { getAction } from '../../../utils/getAction.js';\nimport { getPaymasterData as getPaymasterData_, } from '../paymaster/getPaymasterData.js';\nimport { getPaymasterStubData as getPaymasterStubData_, } from '../paymaster/getPaymasterStubData.js';\nimport { estimateUserOperationGas, } from './estimateUserOperationGas.js';\nconst defaultParameters = [\n    'factory',\n    'fees',\n    'gas',\n    'paymaster',\n    'nonce',\n    'signature',\n    'authorization',\n];\n/**\n * Prepares a User Operation and fills in missing properties.\n *\n * - Docs: https://viem.sh/actions/bundler/prepareUserOperation\n *\n * @param args - {@link PrepareUserOperationParameters}\n * @returns The User Operation. {@link PrepareUserOperationReturnType}\n *\n * @example\n * import { createBundlerClient, http } from 'viem'\n * import { toSmartAccount } from 'viem/accounts'\n * import { mainnet } from 'viem/chains'\n * import { prepareUserOperation } from 'viem/actions'\n *\n * const account = await toSmartAccount({ ... })\n *\n * const client = createBundlerClient({\n *   chain: mainnet,\n *   transport: http(),\n * })\n *\n * const request = await prepareUserOperation(client, {\n *   account,\n *   calls: [{ to: '0x...', value: parseEther('1') }],\n * })\n */\nexport async function prepareUserOperation(client, parameters_) {\n    const parameters = parameters_;\n    const { account: account_ = client.account, parameters: properties = defaultParameters, stateOverride, } = parameters;\n    ////////////////////////////////////////////////////////////////////////////////\n    // Assert that an Account is defined.\n    ////////////////////////////////////////////////////////////////////////////////\n    if (!account_)\n        throw new AccountNotFoundError();\n    const account = parseAccount(account_);\n    ////////////////////////////////////////////////////////////////////////////////\n    // Declare typed Bundler Client.\n    ////////////////////////////////////////////////////////////////////////////////\n    const bundlerClient = client;\n    ////////////////////////////////////////////////////////////////////////////////\n    // Declare Paymaster properties.\n    ////////////////////////////////////////////////////////////////////////////////\n    const paymaster = parameters.paymaster ?? bundlerClient?.paymaster;\n    const paymasterAddress = typeof paymaster === 'string' ? paymaster : undefined;\n    const { getPaymasterStubData, getPaymasterData } = (() => {\n        // If `paymaster: true`, we will assume the Bundler Client supports Paymaster Actions.\n        if (paymaster === true)\n            return {\n                getPaymasterStubData: (parameters) => getAction(bundlerClient, getPaymasterStubData_, 'getPaymasterStubData')(parameters),\n                getPaymasterData: (parameters) => getAction(bundlerClient, getPaymasterData_, 'getPaymasterData')(parameters),\n            };\n        // If Actions are passed to `paymaster` (via Paymaster Client or directly), we will use them.\n        if (typeof paymaster === 'object') {\n            const { getPaymasterStubData, getPaymasterData } = paymaster;\n            return {\n                getPaymasterStubData: (getPaymasterData && getPaymasterStubData\n                    ? getPaymasterStubData\n                    : getPaymasterData),\n                getPaymasterData: getPaymasterData && getPaymasterStubData\n                    ? getPaymasterData\n                    : undefined,\n            };\n        }\n        // No Paymaster functions.\n        return {\n            getPaymasterStubData: undefined,\n            getPaymasterData: undefined,\n        };\n    })();\n    const paymasterContext = parameters.paymasterContext\n        ? parameters.paymasterContext\n        : bundlerClient?.paymasterContext;\n    ////////////////////////////////////////////////////////////////////////////////\n    // Set up the User Operation request.\n    ////////////////////////////////////////////////////////////////////////////////\n    let request = {\n        ...parameters,\n        paymaster: paymasterAddress,\n        sender: account.address,\n    };\n    ////////////////////////////////////////////////////////////////////////////////\n    // Concurrently prepare properties required to fill the User Operation.\n    ////////////////////////////////////////////////////////////////////////////////\n    const [callData, factory, fees, nonce, authorization] = await Promise.all([\n        (async () => {\n            if (parameters.calls)\n                return account.encodeCalls(parameters.calls.map((call_) => {\n                    const call = call_;\n                    if (call.abi)\n                        return {\n                            data: encodeFunctionData(call),\n                            to: call.to,\n                            value: call.value,\n                        };\n                    return call;\n                }));\n            return parameters.callData;\n        })(),\n        (async () => {\n            if (!properties.includes('factory'))\n                return undefined;\n            if (parameters.initCode)\n                return { initCode: parameters.initCode };\n            if (parameters.factory && parameters.factoryData) {\n                return {\n                    factory: parameters.factory,\n                    factoryData: parameters.factoryData,\n                };\n            }\n            const { factory, factoryData } = await account.getFactoryArgs();\n            if (account.entryPoint.version === '0.6')\n                return {\n                    initCode: factory && factoryData ? concat([factory, factoryData]) : undefined,\n                };\n            return {\n                factory,\n                factoryData,\n            };\n        })(),\n        (async () => {\n            if (!properties.includes('fees'))\n                return undefined;\n            // If we have sufficient properties for fees, return them.\n            if (typeof parameters.maxFeePerGas === 'bigint' &&\n                typeof parameters.maxPriorityFeePerGas === 'bigint')\n                return request;\n            // If the Bundler Client has a `estimateFeesPerGas` hook, run it.\n            if (bundlerClient?.userOperation?.estimateFeesPerGas) {\n                const fees = await bundlerClient.userOperation.estimateFeesPerGas({\n                    account,\n                    bundlerClient,\n                    userOperation: request,\n                });\n                return {\n                    ...request,\n                    ...fees,\n                };\n            }\n            // Otherwise, we will need to estimate the fees to fill the fee properties.\n            try {\n                const client_ = bundlerClient.client ?? client;\n                const fees = await getAction(client_, estimateFeesPerGas, 'estimateFeesPerGas')({\n                    chain: client_.chain,\n                    type: 'eip1559',\n                });\n                return {\n                    maxFeePerGas: typeof parameters.maxFeePerGas === 'bigint'\n                        ? parameters.maxFeePerGas\n                        : BigInt(\n                        // Bundlers unfortunately have strict rules on fee prechecks – we will need to set a generous buffer.\n                        2n * fees.maxFeePerGas),\n                    maxPriorityFeePerGas: typeof parameters.maxPriorityFeePerGas === 'bigint'\n                        ? parameters.maxPriorityFeePerGas\n                        : BigInt(\n                        // Bundlers unfortunately have strict rules on fee prechecks – we will need to set a generous buffer.\n                        2n * fees.maxPriorityFeePerGas),\n                };\n            }\n            catch {\n                return undefined;\n            }\n        })(),\n        (async () => {\n            if (!properties.includes('nonce'))\n                return undefined;\n            if (typeof parameters.nonce === 'bigint')\n                return parameters.nonce;\n            return account.getNonce();\n        })(),\n        (async () => {\n            if (!properties.includes('authorization'))\n                return undefined;\n            if (typeof parameters.authorization === 'object')\n                return parameters.authorization;\n            if (account.authorization && !(await account.isDeployed())) {\n                const authorization = await prepareAuthorization(account.client, account.authorization);\n                return {\n                    ...authorization,\n                    r: '0xfffffffffffffffffffffffffffffff000000000000000000000000000000000',\n                    s: '0x7aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',\n                    yParity: 1,\n                };\n            }\n            return undefined;\n        })(),\n    ]);\n    ////////////////////////////////////////////////////////////////////////////////\n    // Fill User Operation with the prepared properties from above.\n    ////////////////////////////////////////////////////////////////////////////////\n    if (typeof callData !== 'undefined')\n        request.callData = callData;\n    if (typeof factory !== 'undefined')\n        request = { ...request, ...factory };\n    if (typeof fees !== 'undefined')\n        request = { ...request, ...fees };\n    if (typeof nonce !== 'undefined')\n        request.nonce = nonce;\n    if (typeof authorization !== 'undefined')\n        request.authorization = authorization;\n    ////////////////////////////////////////////////////////////////////////////////\n    // Fill User Operation with the `signature` property.\n    ////////////////////////////////////////////////////////////////////////////////\n    if (properties.includes('signature')) {\n        if (typeof parameters.signature !== 'undefined')\n            request.signature = parameters.signature;\n        else\n            request.signature = await account.getStubSignature(request);\n    }\n    ////////////////////////////////////////////////////////////////////////////////\n    // `initCode` is required to be filled with EntryPoint 0.6.\n    ////////////////////////////////////////////////////////////////////////////////\n    // If no `initCode` is provided, we use an empty bytes string.\n    if (account.entryPoint.version === '0.6' && !request.initCode)\n        request.initCode = '0x';\n    ////////////////////////////////////////////////////////////////////////////////\n    // Fill User Operation with paymaster-related properties for **gas estimation**.\n    ////////////////////////////////////////////////////////////////////////////////\n    let chainId;\n    async function getChainId() {\n        if (chainId)\n            return chainId;\n        if (client.chain)\n            return client.chain.id;\n        const chainId_ = await getAction(client, getChainId_, 'getChainId')({});\n        chainId = chainId_;\n        return chainId;\n    }\n    // If the User Operation is intended to be sponsored, we will need to fill the paymaster-related\n    // User Operation properties required to estimate the User Operation gas.\n    let isPaymasterPopulated = false;\n    if (properties.includes('paymaster') &&\n        getPaymasterStubData &&\n        !paymasterAddress &&\n        !parameters.paymasterAndData) {\n        const { isFinal = false, sponsor, ...paymasterArgs } = await getPaymasterStubData({\n            chainId: await getChainId(),\n            entryPointAddress: account.entryPoint.address,\n            context: paymasterContext,\n            ...request,\n        });\n        isPaymasterPopulated = isFinal;\n        request = {\n            ...request,\n            ...paymasterArgs,\n        };\n    }\n    ////////////////////////////////////////////////////////////////////////////////\n    // `paymasterAndData` is required to be filled with EntryPoint 0.6.\n    ////////////////////////////////////////////////////////////////////////////////\n    // If no `paymasterAndData` is provided, we use an empty bytes string.\n    if (account.entryPoint.version === '0.6' && !request.paymasterAndData)\n        request.paymasterAndData = '0x';\n    ////////////////////////////////////////////////////////////////////////////////\n    // Fill User Operation with gas-related properties.\n    ////////////////////////////////////////////////////////////////////////////////\n    if (properties.includes('gas')) {\n        // If the Account has opinionated gas estimation logic, run the `estimateGas` hook and\n        // fill the request with the prepared gas properties.\n        if (account.userOperation?.estimateGas) {\n            const gas = await account.userOperation.estimateGas(request);\n            request = {\n                ...request,\n                ...gas,\n            };\n        }\n        // If not all the gas properties are already populated, we will need to estimate the gas\n        // to fill the gas properties.\n        if (typeof request.callGasLimit === 'undefined' ||\n            typeof request.preVerificationGas === 'undefined' ||\n            typeof request.verificationGasLimit === 'undefined' ||\n            (request.paymaster &&\n                typeof request.paymasterPostOpGasLimit === 'undefined') ||\n            (request.paymaster &&\n                typeof request.paymasterVerificationGasLimit === 'undefined')) {\n            const gas = await getAction(bundlerClient, estimateUserOperationGas, 'estimateUserOperationGas')({\n                account,\n                // Some Bundlers fail if nullish gas values are provided for gas estimation :') –\n                // so we will need to set a default zeroish value.\n                callGasLimit: 0n,\n                preVerificationGas: 0n,\n                verificationGasLimit: 0n,\n                stateOverride,\n                ...(request.paymaster\n                    ? {\n                        paymasterPostOpGasLimit: 0n,\n                        paymasterVerificationGasLimit: 0n,\n                    }\n                    : {}),\n                ...request,\n            });\n            request = {\n                ...request,\n                callGasLimit: request.callGasLimit ?? gas.callGasLimit,\n                preVerificationGas: request.preVerificationGas ?? gas.preVerificationGas,\n                verificationGasLimit: request.verificationGasLimit ?? gas.verificationGasLimit,\n                paymasterPostOpGasLimit: request.paymasterPostOpGasLimit ?? gas.paymasterPostOpGasLimit,\n                paymasterVerificationGasLimit: request.paymasterVerificationGasLimit ??\n                    gas.paymasterVerificationGasLimit,\n            };\n        }\n    }\n    ////////////////////////////////////////////////////////////////////////////////\n    // Fill User Operation with paymaster-related properties for **sending** the User Operation.\n    ////////////////////////////////////////////////////////////////////////////////\n    // If the User Operation is intended to be sponsored, we will need to fill the paymaster-related\n    // User Operation properties required to send the User Operation.\n    if (properties.includes('paymaster') &&\n        getPaymasterData &&\n        !paymasterAddress &&\n        !parameters.paymasterAndData &&\n        !isPaymasterPopulated) {\n        // Retrieve paymaster-related User Operation properties to be used for **sending** the User Operation.\n        const paymaster = await getPaymasterData({\n            chainId: await getChainId(),\n            entryPointAddress: account.entryPoint.address,\n            context: paymasterContext,\n            ...request,\n        });\n        request = {\n            ...request,\n            ...paymaster,\n        };\n    }\n    ////////////////////////////////////////////////////////////////////////////////\n    // Remove redundant properties that do not conform to the User Operation schema.\n    ////////////////////////////////////////////////////////////////////////////////\n    delete request.calls;\n    delete request.parameters;\n    delete request.paymasterContext;\n    if (typeof request.paymaster !== 'string')\n        delete request.paymaster;\n    ////////////////////////////////////////////////////////////////////////////////\n    return request;\n}\n//# sourceMappingURL=prepareUserOperation.js.map","import { parseAccount, } from '../../../accounts/utils/parseAccount.js';\nimport { AccountNotFoundError } from '../../../errors/account.js';\nimport { getAction } from '../../../utils/getAction.js';\nimport { serializeStateOverride } from '../../../utils/stateOverride.js';\nimport { getUserOperationError } from '../../utils/errors/getUserOperationError.js';\nimport { formatUserOperationGas, } from '../../utils/formatters/userOperationGas.js';\nimport { formatUserOperationRequest, } from '../../utils/formatters/userOperationRequest.js';\nimport { prepareUserOperation, } from './prepareUserOperation.js';\n/**\n * Returns an estimate of gas values necessary to execute the User Operation.\n *\n * - Docs: https://viem.sh/actions/bundler/estimateUserOperationGas\n *\n * @param client - Client to use\n * @param parameters - {@link EstimateUserOperationGasParameters}\n * @returns The gas estimate (in wei). {@link EstimateUserOperationGasReturnType}\n *\n * @example\n * import { createBundlerClient, http, parseEther } from 'viem'\n * import { toSmartAccount } from 'viem/accounts'\n * import { mainnet } from 'viem/chains'\n * import { estimateUserOperationGas } from 'viem/actions'\n *\n * const account = await toSmartAccount({ ... })\n *\n * const bundlerClient = createBundlerClient({\n *   chain: mainnet,\n *   transport: http(),\n * })\n *\n * const values = await estimateUserOperationGas(bundlerClient, {\n *   account,\n *   calls: [{ to: '0x...', value: parseEther('1') }],\n * })\n */\nexport async function estimateUserOperationGas(client, parameters) {\n    const { account: account_ = client.account, entryPointAddress, stateOverride, } = parameters;\n    if (!account_ && !parameters.sender)\n        throw new AccountNotFoundError();\n    const account = account_ ? parseAccount(account_) : undefined;\n    const rpcStateOverride = serializeStateOverride(stateOverride);\n    const request = account\n        ? await getAction(client, prepareUserOperation, 'prepareUserOperation')({\n            ...parameters,\n            parameters: [\n                'authorization',\n                'factory',\n                'nonce',\n                'paymaster',\n                'signature',\n            ],\n        })\n        : parameters;\n    try {\n        const params = [\n            formatUserOperationRequest(request),\n            (entryPointAddress ?? account?.entryPoint?.address),\n        ];\n        const result = await client.request({\n            method: 'eth_estimateUserOperationGas',\n            params: rpcStateOverride ? [...params, rpcStateOverride] : [...params],\n        });\n        return formatUserOperationGas(result);\n    }\n    catch (error) {\n        const calls = parameters.calls;\n        throw getUserOperationError(error, {\n            ...request,\n            ...(calls ? { calls } : {}),\n        });\n    }\n}\n//# sourceMappingURL=estimateUserOperationGas.js.map","/**\n * Returns the EntryPoints that the bundler supports.\n *\n * - Docs: https://viem.sh/actions/bundler/getSupportedEntryPoints\n *\n * @param client - Client to use\n * @param parameters - {@link GetSupportedEntryPointsParameters}\n * @returns Supported Entry Points. {@link GetSupportedEntryPointsReturnType}\n *\n * @example\n * import { createBundlerClient, http, parseEther } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getSupportedEntryPoints } from 'viem/actions'\n *\n * const bundlerClient = createBundlerClient({\n *   chain: mainnet,\n *   transport: http(),\n * })\n *\n * const addresses = await getSupportedEntryPoints(bundlerClient)\n */\nexport function getSupportedEntryPoints(client) {\n    return client.request({ method: 'eth_supportedEntryPoints' });\n}\n//# sourceMappingURL=getSupportedEntryPoints.js.map","export function formatUserOperation(parameters) {\n    const userOperation = { ...parameters };\n    if (parameters.callGasLimit)\n        userOperation.callGasLimit = BigInt(parameters.callGasLimit);\n    if (parameters.maxFeePerGas)\n        userOperation.maxFeePerGas = BigInt(parameters.maxFeePerGas);\n    if (parameters.maxPriorityFeePerGas)\n        userOperation.maxPriorityFeePerGas = BigInt(parameters.maxPriorityFeePerGas);\n    if (parameters.nonce)\n        userOperation.nonce = BigInt(parameters.nonce);\n    if (parameters.paymasterPostOpGasLimit)\n        userOperation.paymasterPostOpGasLimit = BigInt(parameters.paymasterPostOpGasLimit);\n    if (parameters.paymasterVerificationGasLimit)\n        userOperation.paymasterVerificationGasLimit = BigInt(parameters.paymasterVerificationGasLimit);\n    if (parameters.preVerificationGas)\n        userOperation.preVerificationGas = BigInt(parameters.preVerificationGas);\n    if (parameters.verificationGasLimit)\n        userOperation.verificationGasLimit = BigInt(parameters.verificationGasLimit);\n    return userOperation;\n}\n//# sourceMappingURL=userOperation.js.map","import { UserOperationNotFoundError, } from '../../errors/userOperation.js';\nimport { formatUserOperation } from '../../utils/formatters/userOperation.js';\n/**\n * Retrieves information about a User Operation given a hash.\n *\n * - Docs: https://viem.sh/account-abstraction/actions/bundler/getUserOperation\n *\n * @param client - Client to use\n * @param parameters - {@link GetUserOperationParameters}\n * @returns The receipt. {@link GetUserOperationReturnType}\n *\n * @example\n * import { createBundlerClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getUserOperation } from 'viem/actions\n *\n * const client = createBundlerClient({\n *   chain: mainnet,\n *   transport: http(),\n * })\n *\n * const receipt = await getUserOperation(client, {\n *   hash: '0x4ca7ee652d57678f26e887c149ab0735f41de37bcad58c9f6d3ed5824f15b74d',\n * })\n */\nexport async function getUserOperation(client, { hash }) {\n    const result = await client.request({\n        method: 'eth_getUserOperationByHash',\n        params: [hash],\n    }, { dedupe: true });\n    if (!result)\n        throw new UserOperationNotFoundError({ hash });\n    const { blockHash, blockNumber, entryPoint, transactionHash, userOperation } = result;\n    return {\n        blockHash,\n        blockNumber: BigInt(blockNumber),\n        entryPoint,\n        transactionHash,\n        userOperation: formatUserOperation(userOperation),\n    };\n}\n//# sourceMappingURL=getUserOperation.js.map","import { formatLog } from '../../../utils/formatters/log.js';\nimport { formatTransactionReceipt } from '../../../utils/formatters/transactionReceipt.js';\nexport function formatUserOperationReceipt(parameters) {\n    const receipt = { ...parameters };\n    if (parameters.actualGasCost)\n        receipt.actualGasCost = BigInt(parameters.actualGasCost);\n    if (parameters.actualGasUsed)\n        receipt.actualGasUsed = BigInt(parameters.actualGasUsed);\n    if (parameters.logs)\n        receipt.logs = parameters.logs.map((log) => formatLog(log));\n    if (parameters.receipt)\n        receipt.receipt = formatTransactionReceipt(receipt.receipt);\n    return receipt;\n}\n//# sourceMappingURL=userOperationReceipt.js.map","import { UserOperationReceiptNotFoundError, } from '../../errors/userOperation.js';\nimport { formatUserOperationReceipt } from '../../utils/formatters/userOperationReceipt.js';\n/**\n * Returns the User Operation Receipt given a User Operation hash.\n *\n * - Docs: https://viem.sh/docs/actions/bundler/getUserOperationReceipt\n *\n * @param client - Client to use\n * @param parameters - {@link GetUserOperationReceiptParameters}\n * @returns The receipt. {@link GetUserOperationReceiptReturnType}\n *\n * @example\n * import { createBundlerClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getUserOperationReceipt } from 'viem/actions\n *\n * const client = createBundlerClient({\n *   chain: mainnet,\n *   transport: http(),\n * })\n *\n * const receipt = await getUserOperationReceipt(client, {\n *   hash: '0x4ca7ee652d57678f26e887c149ab0735f41de37bcad58c9f6d3ed5824f15b74d',\n * })\n */\nexport async function getUserOperationReceipt(client, { hash }) {\n    const receipt = await client.request({\n        method: 'eth_getUserOperationReceipt',\n        params: [hash],\n    }, { dedupe: true });\n    if (!receipt)\n        throw new UserOperationReceiptNotFoundError({ hash });\n    return formatUserOperationReceipt(receipt);\n}\n//# sourceMappingURL=getUserOperationReceipt.js.map","import { parseAccount } from '../../../accounts/utils/parseAccount.js';\nimport { AccountNotFoundError } from '../../../errors/account.js';\nimport { getAction } from '../../../utils/getAction.js';\nimport { getUserOperationError } from '../../utils/errors/getUserOperationError.js';\nimport { formatUserOperationRequest, } from '../../utils/formatters/userOperationRequest.js';\nimport { prepareUserOperation, } from './prepareUserOperation.js';\n/**\n * Broadcasts a User Operation to the Bundler.\n *\n * - Docs: https://viem.sh/actions/bundler/sendUserOperation\n *\n * @param client - Client to use\n * @param parameters - {@link SendUserOperationParameters}\n * @returns The User Operation hash. {@link SendUserOperationReturnType}\n *\n * @example\n * import { createBundlerClient, http, parseEther } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { toSmartAccount } from 'viem/accounts'\n * import { sendUserOperation } from 'viem/actions'\n *\n * const account = await toSmartAccount({ ... })\n *\n * const bundlerClient = createBundlerClient({\n *   chain: mainnet,\n *   transport: http(),\n * })\n *\n * const values = await sendUserOperation(bundlerClient, {\n *   account,\n *   calls: [{ to: '0x...', value: parseEther('1') }],\n * })\n */\nexport async function sendUserOperation(client, parameters) {\n    const { account: account_ = client.account, entryPointAddress } = parameters;\n    if (!account_ && !parameters.sender)\n        throw new AccountNotFoundError();\n    const account = account_ ? parseAccount(account_) : undefined;\n    const request = account\n        ? await getAction(client, prepareUserOperation, 'prepareUserOperation')(parameters)\n        : parameters;\n    const signature = (parameters.signature ||\n        (await account?.signUserOperation?.(request)));\n    const rpcParameters = formatUserOperationRequest({\n        ...request,\n        signature,\n    });\n    try {\n        return await client.request({\n            method: 'eth_sendUserOperation',\n            params: [\n                rpcParameters,\n                (entryPointAddress ?? account?.entryPoint?.address),\n            ],\n        }, { retryCount: 0 });\n    }\n    catch (error) {\n        const calls = parameters.calls;\n        throw getUserOperationError(error, {\n            ...request,\n            ...(calls ? { calls } : {}),\n            signature,\n        });\n    }\n}\n//# sourceMappingURL=sendUserOperation.js.map","import { getAction } from '../../../utils/getAction.js';\nimport { observe } from '../../../utils/observe.js';\nimport { poll } from '../../../utils/poll.js';\nimport { stringify } from '../../../utils/stringify.js';\nimport { WaitForUserOperationReceiptTimeoutError, } from '../../errors/userOperation.js';\nimport { getUserOperationReceipt, } from './getUserOperationReceipt.js';\n/**\n * Waits for the User Operation to be included on a [Block](https://viem.sh/docs/glossary/terms#block) (one confirmation), and then returns the User Operation receipt.\n *\n * - Docs: https://viem.sh/docs/actions/bundler/waitForUserOperationReceipt\n *\n * @param client - Client to use\n * @param parameters - {@link WaitForUserOperationReceiptParameters}\n * @returns The receipt. {@link WaitForUserOperationReceiptReturnType}\n *\n * @example\n * import { createBundlerClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { waitForUserOperationReceipt } from 'viem/actions'\n *\n * const client = createBundlerClient({\n *   chain: mainnet,\n *   transport: http(),\n * })\n *\n * const receipt = await waitForUserOperationReceipt(client, {\n *   hash: '0x4ca7ee652d57678f26e887c149ab0735f41de37bcad58c9f6d3ed5824f15b74d',\n * })\n */\nexport function waitForUserOperationReceipt(client, parameters) {\n    const { hash, pollingInterval = client.pollingInterval, retryCount, timeout = 120_000, } = parameters;\n    let count = 0;\n    const observerId = stringify([\n        'waitForUserOperationReceipt',\n        client.uid,\n        hash,\n    ]);\n    return new Promise((resolve, reject) => {\n        const unobserve = observe(observerId, { resolve, reject }, (emit) => {\n            const done = (fn) => {\n                unpoll();\n                fn();\n                unobserve();\n            };\n            const unpoll = poll(async () => {\n                if (retryCount && count >= retryCount)\n                    done(() => emit.reject(new WaitForUserOperationReceiptTimeoutError({ hash })));\n                try {\n                    const receipt = await getAction(client, getUserOperationReceipt, 'getUserOperationReceipt')({ hash });\n                    done(() => emit.resolve(receipt));\n                }\n                catch (err) {\n                    const error = err;\n                    if (error.name !== 'UserOperationReceiptNotFoundError')\n                        done(() => emit.reject(error));\n                }\n                count++;\n            }, {\n                emitOnBegin: true,\n                interval: pollingInterval,\n            });\n            if (timeout)\n                setTimeout(() => done(() => emit.reject(new WaitForUserOperationReceiptTimeoutError({ hash }))), timeout);\n            return unpoll;\n        });\n    });\n}\n//# sourceMappingURL=waitForUserOperationReceipt.js.map","import { getChainId, } from '../../../actions/public/getChainId.js';\nimport { estimateUserOperationGas, } from '../../actions/bundler/estimateUserOperationGas.js';\nimport { getSupportedEntryPoints, } from '../../actions/bundler/getSupportedEntryPoints.js';\nimport { getUserOperation, } from '../../actions/bundler/getUserOperation.js';\nimport { getUserOperationReceipt, } from '../../actions/bundler/getUserOperationReceipt.js';\nimport { prepareUserOperation, } from '../../actions/bundler/prepareUserOperation.js';\nimport { sendUserOperation, } from '../../actions/bundler/sendUserOperation.js';\nimport { waitForUserOperationReceipt, } from '../../actions/bundler/waitForUserOperationReceipt.js';\nexport function bundlerActions(client) {\n    return {\n        estimateUserOperationGas: (parameters) => estimateUserOperationGas(client, parameters),\n        getChainId: () => getChainId(client),\n        getSupportedEntryPoints: () => getSupportedEntryPoints(client),\n        getUserOperation: (parameters) => getUserOperation(client, parameters),\n        getUserOperationReceipt: (parameters) => getUserOperationReceipt(client, parameters),\n        prepareUserOperation: (parameters) => prepareUserOperation(client, parameters),\n        sendUserOperation: (parameters) => sendUserOperation(client, parameters),\n        waitForUserOperationReceipt: (parameters) => waitForUserOperationReceipt(client, parameters),\n    };\n}\n//# sourceMappingURL=bundler.js.map","import { getPaymasterData, } from '../../actions/paymaster/getPaymasterData.js';\nimport { getPaymasterStubData, } from '../../actions/paymaster/getPaymasterStubData.js';\nexport function paymasterActions(client) {\n    return {\n        getPaymasterData: (parameters) => getPaymasterData(client, parameters),\n        getPaymasterStubData: (parameters) => getPaymasterStubData(client, parameters),\n    };\n}\n//# sourceMappingURL=paymaster.js.map","const size = 256;\nlet index = size;\nlet buffer;\nexport function uid(length = 11) {\n    if (!buffer || index + length > size * 2) {\n        buffer = '';\n        index = 0;\n        for (let i = 0; i < size; i++) {\n            buffer += ((256 + Math.random() * 256) | 0).toString(16).substring(1);\n        }\n    }\n    return buffer.substring(index, index++ + length);\n}\n//# sourceMappingURL=uid.js.map","import { parseAccount, } from '../accounts/utils/parseAccount.js';\nimport { uid } from '../utils/uid.js';\nexport function createClient(parameters) {\n    const { batch, chain, ccipRead, key = 'base', name = 'Base Client', type = 'base', } = parameters;\n    const blockTime = chain?.blockTime ?? 12_000;\n    const defaultPollingInterval = Math.min(Math.max(Math.floor(blockTime / 2), 500), 4_000);\n    const pollingInterval = parameters.pollingInterval ?? defaultPollingInterval;\n    const cacheTime = parameters.cacheTime ?? pollingInterval;\n    const account = parameters.account\n        ? parseAccount(parameters.account)\n        : undefined;\n    const { config, request, value } = parameters.transport({\n        chain,\n        pollingInterval,\n    });\n    const transport = { ...config, ...value };\n    const client = {\n        account,\n        batch,\n        cacheTime,\n        ccipRead,\n        chain,\n        key,\n        name,\n        pollingInterval,\n        request,\n        transport,\n        type,\n        uid: uid(),\n    };\n    function extend(base) {\n        return (extendFn) => {\n            const extended = extendFn(base);\n            for (const key in client)\n                delete extended[key];\n            const combined = { ...base, ...extended };\n            return Object.assign(combined, { extend: extend(combined) });\n        };\n    }\n    return Object.assign(client, { extend: extend(client) });\n}\n/**\n * Defines a typed JSON-RPC schema for the client.\n * Note: This is a runtime noop function.\n */\nexport function rpcSchema() {\n    return null;\n}\n//# sourceMappingURL=createClient.js.map","import { createClient, } from '../../clients/createClient.js';\nimport { paymasterActions, } from './decorators/paymaster.js';\nexport function createPaymasterClient(parameters) {\n    const { key = 'bundler', name = 'Bundler Client', transport } = parameters;\n    const client = createClient({\n        ...parameters,\n        key,\n        name,\n        transport,\n        type: 'PaymasterClient',\n    });\n    return client.extend(paymasterActions);\n}\n//# sourceMappingURL=createPaymasterClient.js.map","export const entryPoint06Address = '0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789';\nexport const entryPoint07Address = '0x0000000071727De22E5E9d8BAf0edAc6f37da032';\nexport const entryPoint08Address = '0x4337084D9E255Ff0702461CF8895CE9E3b5Ff108';\n//# sourceMappingURL=address.js.map","// Copied from: https://github.com/pimlicolabs/permissionless.js/blob/main/packages/permissionless/actions/public/getAccountNonce.ts\nimport { readContract } from \"viem/actions\";\nimport { getAction } from \"viem/utils\";\n/**\n * Returns the nonce of the account with the entry point.\n *\n * - Docs: https://docs.pimlico.io/permissionless/reference/public-actions/getAccountNonce\n *\n * @param client {@link client} that you created using viem's createPublicClient.\n * @param args {@link GetAccountNonceParams} address, entryPoint & key\n * @returns bigint nonce\n *\n * @example\n * import { createPublicClient } from \"viem\"\n * import { getAccountNonce } from \"permissionless/actions\"\n *\n * const client = createPublicClient({\n *      chain: goerli,\n *      transport: http(\"https://goerli.infura.io/v3/your-infura-key\")\n * })\n *\n * const nonce = await getAccountNonce(client, {\n *      address,\n *      entryPoint,\n *      key\n * })\n *\n * // Return 0n\n */\nexport const getAccountNonce = async (client, args) => {\n    const { address, entryPointAddress, key = BigInt(0) } = args;\n    return await getAction(client, readContract, \"readContract\")({\n        address: entryPointAddress,\n        abi: [\n            {\n                inputs: [\n                    {\n                        name: \"sender\",\n                        type: \"address\"\n                    },\n                    {\n                        name: \"key\",\n                        type: \"uint192\"\n                    }\n                ],\n                name: \"getNonce\",\n                outputs: [\n                    {\n                        name: \"nonce\",\n                        type: \"uint256\"\n                    }\n                ],\n                stateMutability: \"view\",\n                type: \"function\"\n            }\n        ],\n        functionName: \"getNonce\",\n        args: [address, key]\n    });\n};\n//# sourceMappingURL=getAccountNonce.js.map","// Copied from: https://github.com/pimlicolabs/permissionless.js/blob/main/packages/permissionless/actions/public/getSenderAddress.ts\nimport { BaseError, ContractFunctionRevertedError, InvalidInputRpcError, RawContractError, RpcRequestError, UnknownRpcError, concat, decodeErrorResult } from \"viem\";\nimport { simulateContract } from \"viem/actions\";\nimport { getAction } from \"viem/utils\";\nexport class InvalidEntryPointError extends BaseError {\n    constructor({ cause, entryPointAddress } = {}) {\n        super(`The entry point address (\\`entryPoint\\`${entryPointAddress ? ` = ${entryPointAddress}` : \"\"}) is not a valid entry point. getSenderAddress did not revert with a SenderAddressResult error.`, {\n            cause\n        });\n        Object.defineProperty(this, \"name\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: \"InvalidEntryPointError\"\n        });\n    }\n}\n/**\n * Returns the address of the account that will be deployed with the given init code.\n *\n * - Docs: https://docs.pimlico.io/permissionless/reference/public-actions/getSenderAddress\n *\n * @param client {@link Client} that you created using viem's createPublicClient.\n * @param args {@link GetSenderAddressParams} initCode & entryPoint\n * @returns Sender's Address\n *\n * @example\n * import { createPublicClient } from \"viem\"\n * import { getSenderAddress } from \"permissionless/actions\"\n *\n * const publicClient = createPublicClient({\n *      chain: goerli,\n *      transport: http(\"https://goerli.infura.io/v3/your-infura-key\")\n * })\n *\n * const senderAddress = await getSenderAddress(publicClient, {\n *      initCode,\n *      entryPoint\n * })\n *\n * // Return '0x7a88a206ba40b37a8c07a2b5688cf8b287318b63'\n */\nexport const getSenderAddress = async (client, args) => {\n    const { initCode, entryPointAddress, factory, factoryData } = args;\n    if (!initCode && !factory && !factoryData) {\n        throw new Error(\"Either `initCode` or `factory` and `factoryData` must be provided\");\n    }\n    try {\n        await getAction(client, simulateContract, \"simulateContract\")({\n            address: entryPointAddress,\n            abi: [\n                {\n                    inputs: [\n                        {\n                            internalType: \"address\",\n                            name: \"sender\",\n                            type: \"address\"\n                        }\n                    ],\n                    name: \"SenderAddressResult\",\n                    type: \"error\"\n                },\n                {\n                    inputs: [\n                        {\n                            internalType: \"bytes\",\n                            name: \"initCode\",\n                            type: \"bytes\"\n                        }\n                    ],\n                    name: \"getSenderAddress\",\n                    outputs: [],\n                    stateMutability: \"nonpayable\",\n                    type: \"function\"\n                }\n            ],\n            functionName: \"getSenderAddress\",\n            args: [initCode || concat([factory, factoryData])]\n        });\n    }\n    catch (e) {\n        const revertError = e.walk((err) => err instanceof ContractFunctionRevertedError ||\n            err instanceof RpcRequestError ||\n            err instanceof InvalidInputRpcError ||\n            err instanceof UnknownRpcError);\n        if (!revertError) {\n            // biome-ignore lint/suspicious/noExplicitAny:\n            const cause = e.cause;\n            const errorName = cause?.data?.errorName ?? \"\";\n            if (errorName === \"SenderAddressResult\" &&\n                cause?.data?.args &&\n                cause?.data?.args[0]) {\n                return cause.data?.args[0];\n            }\n        }\n        if (revertError instanceof ContractFunctionRevertedError) {\n            const errorName = revertError.data?.errorName ?? \"\";\n            if (errorName === \"SenderAddressResult\" &&\n                revertError.data?.args &&\n                revertError.data?.args[0]) {\n                return revertError.data?.args[0];\n            }\n        }\n        if (revertError instanceof RpcRequestError) {\n            const hexStringRegex = /0x[a-fA-F0-9]+/;\n            // biome-ignore lint/suspicious/noExplicitAny:\n            const match = revertError.cause.data.match(hexStringRegex);\n            if (!match) {\n                throw new Error(\"Failed to parse revert bytes from RPC response\");\n            }\n            const data = match[0];\n            const error = decodeErrorResult({\n                abi: [\n                    {\n                        inputs: [\n                            {\n                                internalType: \"address\",\n                                name: \"sender\",\n                                type: \"address\"\n                            }\n                        ],\n                        name: \"SenderAddressResult\",\n                        type: \"error\"\n                    }\n                ],\n                data\n            });\n            return error.args[0];\n        }\n        if (revertError instanceof InvalidInputRpcError) {\n            const { data: data_ } = (e instanceof RawContractError\n                ? e\n                : e instanceof BaseError\n                    ? e.walk((err) => \"data\" in err) || e.walk()\n                    : {});\n            const data = typeof data_ === \"string\" ? data_ : data_?.data;\n            if (data === undefined) {\n                throw new Error(\"Failed to parse revert bytes from RPC response\");\n            }\n            const error = decodeErrorResult({\n                abi: [\n                    {\n                        inputs: [\n                            {\n                                internalType: \"address\",\n                                name: \"sender\",\n                                type: \"address\"\n                            }\n                        ],\n                        name: \"SenderAddressResult\",\n                        type: \"error\"\n                    }\n                ],\n                data\n            });\n            return error.args[0];\n        }\n        if (revertError instanceof UnknownRpcError) {\n            const parsedBody = JSON.parse(\n            // biome-ignore lint/suspicious/noExplicitAny:\n            revertError.cause.body);\n            const revertData = parsedBody.error.data;\n            const hexStringRegex = /0x[a-fA-F0-9]+/;\n            const match = revertData.match(hexStringRegex);\n            if (!match) {\n                throw new Error(\"Failed to parse revert bytes from RPC response\");\n            }\n            const data = match[0];\n            const error = decodeErrorResult({\n                abi: [\n                    {\n                        inputs: [\n                            {\n                                internalType: \"address\",\n                                name: \"sender\",\n                                type: \"address\"\n                            }\n                        ],\n                        name: \"SenderAddressResult\",\n                        type: \"error\"\n                    }\n                ],\n                data\n            });\n            return error.args[0];\n        }\n        throw e;\n    }\n    throw new InvalidEntryPointError({ entryPointAddress });\n};\n//# sourceMappingURL=getSenderAddress.js.map","import { zeroAddress } from \"viem\";\nimport { entryPoint06Address, entryPoint07Address } from \"viem/account-abstraction\";\nexport const DUMMY_ECDSA_SIG = \"0xfffffffffffffffffffffffffffffff0000000000000000000000000000000007aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1c\";\nexport const MAGIC_VALUE_SIG_REPLAYABLE = \"0x0555ad2729e8da1777a4e5020806f8bf7601c3db6bfe402f410a34958363a95a\";\n// export const KernelImplToVersionMap: { [key: Address]: string } = {\n//     \"0x8dD4DBB54d8A8Cf0DE6F9CCC4609470A30EfF18C\": \"0.2.2\",\n//     \"0x0DA6a956B9488eD4dd761E59f52FDc6c8068E6B5\": \"0.2.2\",\n//     \"0xD3F582F6B4814E989Ee8E96bc3175320B5A540ab\": \"0.2.3\",\n//     \"0x5FC0236D6c88a65beD32EECDC5D60a5CAb377717\": \"0.2.3\",\n//     \"0xd3082872F8B06073A021b4602e022d5A070d7cfC\": \"0.2.4\",\n//     \"0x94F097E1ebEB4ecA3AAE54cabb08905B239A7D27\": \"0.3.0\"\n// }\nexport const FACTORY_ADDRESS_V0_6 = \"0x5de4839a76cf55d0c90e2061ef4386d962E15ae3\";\nexport const FACTORY_ADDRESS_V0_6_INIT_CODE_HASH = \"0xee9d8350bd899dd261db689aafd87eb8a30f085adbaff48152399438ff4eed73\";\nexport const KernelVersionToAddressesMap = {\n    \"0.0.2\": {\n        accountImplementationAddress: zeroAddress,\n        factoryAddress: \"0xaee9762ce625e0a8f7b184670fb57c37bfe1d0f1\"\n    },\n    \"0.2.2\": {\n        accountImplementationAddress: \"0x0DA6a956B9488eD4dd761E59f52FDc6c8068E6B5\",\n        factoryAddress: FACTORY_ADDRESS_V0_6,\n        initCodeHash: FACTORY_ADDRESS_V0_6_INIT_CODE_HASH\n    },\n    \"0.2.3\": {\n        accountImplementationAddress: \"0xD3F582F6B4814E989Ee8E96bc3175320B5A540ab\",\n        factoryAddress: FACTORY_ADDRESS_V0_6,\n        initCodeHash: FACTORY_ADDRESS_V0_6_INIT_CODE_HASH\n    },\n    \"0.2.4\": {\n        accountImplementationAddress: \"0xd3082872F8B06073A021b4602e022d5A070d7cfC\",\n        factoryAddress: FACTORY_ADDRESS_V0_6,\n        initCodeHash: FACTORY_ADDRESS_V0_6_INIT_CODE_HASH\n    },\n    \"0.3.0\": {\n        accountImplementationAddress: \"0x94F097E1ebEB4ecA3AAE54cabb08905B239A7D27\",\n        factoryAddress: \"0x6723b44Abeec4E71eBE3232BD5B455805baDD22f\",\n        metaFactoryAddress: \"0xd703aaE79538628d27099B8c4f621bE4CCd142d5\",\n        initCodeHash: \"0x6fe6e6ea30eddce942b9618033ab8429f9ddac594053bec8a6744fffc71976e2\"\n    },\n    \"0.3.1\": {\n        accountImplementationAddress: \"0xBAC849bB641841b44E965fB01A4Bf5F074f84b4D\",\n        factoryAddress: \"0xaac5D4240AF87249B3f71BC8E4A2cae074A3E419\",\n        metaFactoryAddress: \"0xd703aaE79538628d27099B8c4f621bE4CCd142d5\",\n        initCodeHash: \"0x85d96aa1c9a65886d094915d76ccae85f14027a02c1647dde659f869460f03e6\"\n    },\n    \"0.3.2\": {\n        accountImplementationAddress: \"0xD830D15D3dc0C269F3dBAa0F3e8626d33CFdaBe1\",\n        factoryAddress: \"0x7a1dBAB750f12a90EB1B60D2Ae3aD17D4D81EfFe\",\n        metaFactoryAddress: \"0xd703aaE79538628d27099B8c4f621bE4CCd142d5\",\n        initCodeHash: \"0xc7c48c9dd12de68b8a4689b6f8c8c07b61d4d6fa4ddecdd86a6980d045fa67eb\"\n    },\n    \"0.3.3\": {\n        accountImplementationAddress: \"0xd6CEDDe84be40893d153Be9d467CD6aD37875b28\",\n        factoryAddress: \"0x2577507b78c2008Ff367261CB6285d44ba5eF2E9\",\n        metaFactoryAddress: \"0xd703aaE79538628d27099B8c4f621bE4CCd142d5\",\n        initCodeHash: \"0xc452397f1e7518f8cea0566ac057e243bb1643f6298aba8eec8cdee78ee3b3dd\"\n        //\"0x1fefe62c5b9c14c4661af2e04e4a2fa10205066cae5f629d304d483f5fa9e5fc\"\n    }\n};\nexport const KERNEL_V0_2 = \"0.0.2\";\nexport const KERNEL_V2_2 = \"0.2.2\";\nexport const KERNEL_V2_3 = \"0.2.3\";\nexport const KERNEL_V2_4 = \"0.2.4\";\nexport const KERNEL_V3_0 = \"0.3.0\";\nexport const KERNEL_V3_1 = \"0.3.1\";\nexport const KERNEL_V3_2 = \"0.3.2\";\nexport const KERNEL_V3_3_BETA = \"0.3.3\";\nexport const KERNEL_V3_3 = \"0.3.3\";\nexport const TOKEN_ACTION = \"0x2087C7FfD0d0DAE80a00EE74325aBF3449e0eaf1\";\nexport const ONLY_ENTRYPOINT_HOOK_ADDRESS = \"0xb230f0A1C7C95fa11001647383c8C7a8F316b900\";\nexport const KERNEL_NAME = \"Kernel\";\nexport const VALIDATOR_TYPE = {\n    SUDO: \"0x00\",\n    SECONDARY: \"0x01\",\n    PERMISSION: \"0x02\"\n};\nexport var VALIDATOR_MODE;\n(function (VALIDATOR_MODE) {\n    VALIDATOR_MODE[\"DEFAULT\"] = \"0x00\";\n    VALIDATOR_MODE[\"ENABLE\"] = \"0x01\";\n})(VALIDATOR_MODE || (VALIDATOR_MODE = {}));\nexport var CALL_TYPE;\n(function (CALL_TYPE) {\n    CALL_TYPE[\"SINGLE\"] = \"0x00\";\n    CALL_TYPE[\"BATCH\"] = \"0x01\";\n    CALL_TYPE[\"DELEGATE_CALL\"] = \"0xFF\";\n})(CALL_TYPE || (CALL_TYPE = {}));\nexport var EXEC_TYPE;\n(function (EXEC_TYPE) {\n    EXEC_TYPE[\"DEFAULT\"] = \"0x00\";\n    EXEC_TYPE[\"TRY_EXEC\"] = \"0x01\";\n})(EXEC_TYPE || (EXEC_TYPE = {}));\nexport const PLUGIN_TYPE = {\n    VALIDATOR: 1,\n    EXECUTOR: 2,\n    FALLBACK: 3,\n    HOOK: 4,\n    POLICY: 5,\n    SIGNER: 6\n};\n// Safe's library for create and create2: https://github.com/safe-global/safe-contracts/blob/0acdd35a203299585438f53885df630f9d486a86/contracts/libraries/CreateCall.sol\n// Address was found here: https://github.com/safe-global/safe-deployments/blob/926ec6bbe2ebcac3aa2c2c6c0aff74aa590cbc6a/src/assets/v1.4.1/create_call.json\nexport const safeCreateCallAddress = \"0x9b35Af71d77eaf8d7e40252370304687390A1A52\";\nexport const KernelFactoryToInitCodeHashMap = {\n    \"0x5de4839a76cf55d0c90e2061ef4386d962E15ae3\": \"0xee9d8350bd899dd261db689aafd87eb8a30f085adbaff48152399438ff4eed73\",\n    \"0x6723b44Abeec4E71eBE3232BD5B455805baDD22f\": \"0x6fe6e6ea30eddce942b9618033ab8429f9ddac594053bec8a6744fffc71976e2\"\n};\nexport const KERNEL_IMPLEMENTATION_SLOT = \"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc\";\nexport const getEntryPoint = (entryPointVersion) => {\n    if (entryPointVersion === \"0.6\")\n        return {\n            address: entryPoint06Address,\n            version: entryPointVersion\n        };\n    return {\n        address: entryPoint07Address,\n        version: entryPointVersion\n    };\n};\nexport const KERNEL_7702_DELEGATION_ADDRESS = \"0xd6CEDDe84be40893d153Be9d467CD6aD37875b28\";\n//# sourceMappingURL=constants.js.map","export const KernelModuleIsInitializedAbi = [\n    {\n        type: \"function\",\n        name: \"isInitialized\",\n        inputs: [\n            { name: \"smartAccount\", type: \"address\", internalType: \"address\" }\n        ],\n        outputs: [{ name: \"\", type: \"bool\", internalType: \"bool\" }],\n        stateMutability: \"view\"\n    }\n];\nexport const KernelModuleInstallAbi = [\n    {\n        inputs: [\n            {\n                internalType: \"uint256\",\n                name: \"moduleType\",\n                type: \"uint256\"\n            },\n            { internalType: \"address\", name: \"module\", type: \"address\" },\n            { internalType: \"bytes\", name: \"initData\", type: \"bytes\" }\n        ],\n        stateMutability: \"payable\",\n        type: \"function\",\n        name: \"installModule\"\n    }\n];\nexport const KernelModuleIsModuleInstalledAbi = [\n    {\n        inputs: [\n            {\n                internalType: \"uint256\",\n                name: \"moduleType\",\n                type: \"uint256\"\n            },\n            { internalType: \"address\", name: \"module\", type: \"address\" },\n            {\n                internalType: \"bytes\",\n                name: \"additionalContext\",\n                type: \"bytes\"\n            }\n        ],\n        stateMutability: \"view\",\n        type: \"function\",\n        name: \"isModuleInstalled\",\n        outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }]\n    }\n];\n//# sourceMappingURL=KernelModuleAbi.js.map","import { readContract } from \"viem/actions\";\nimport { getAction } from \"viem/utils\";\nimport { KernelModuleIsModuleInstalledAbi } from \"../../accounts/kernel/abi/kernel_v_3_0_0/KernelModuleAbi.js\";\n/**\n * Returns whether a plugin is installed on the account.\n *\n * @param client - Client to use\n * @param args - {@link IsPluginInstalledParams} address and plugin details\n * @returns boolean indicating if plugin is installed\n *\n * @example\n * import { createPublicClient } from \"viem\"\n * import { isPluginInstalled } from \"@zerodev/sdk\"\n *\n * const client = createPublicClient({\n *      chain: mainnet,\n *      transport: http()\n * })\n *\n * const isInstalled = await isPluginInstalled(client, {\n *      address: accountAddress,\n *      plugin: {\n *          type: PLUGIN_TYPE.VALIDATOR,\n *          address: validatorAddress,\n *          data: \"0x\"\n *      }\n * })\n */\nexport const isPluginInstalled = async (client, args) => {\n    const { address, plugin } = args;\n    const { type, address: pluginAddress, data = \"0x\" } = plugin;\n    try {\n        return await getAction(client, readContract, \"readContract\")({\n            address,\n            abi: KernelModuleIsModuleInstalledAbi,\n            functionName: \"isModuleInstalled\",\n            args: [BigInt(type), pluginAddress, data]\n        });\n    }\n    catch (error) {\n        return false;\n    }\n};\n//# sourceMappingURL=isPluginInstalled.js.map","'use strict'\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\nconst debug = (\n  typeof process === 'object' &&\n  process.env &&\n  process.env.NODE_DEBUG &&\n  /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n  : () => {}\n\nmodule.exports = debug\n","'use strict'\n\nconst {\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 safeSrc = exports.safeSrc = []\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  safeSrc[index] = safe\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// Non-numberic identifiers include numberic identifiers but can be longer.\n// Therefore non-numberic identifiers must go first.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NONNUMERICIDENTIFIER]\n}|${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NONNUMERICIDENTIFIER]\n}|${src[t.NUMERICIDENTIFIERLOOSE]})`)\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('COERCEPLAIN', `${'(^|[^\\\\d])' +\n              '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n              `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n              `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`)\ncreateToken('COERCE', `${src[t.COERCEPLAIN]}(?:$|[^\\\\d])`)\ncreateToken('COERCEFULL', src[t.COERCEPLAIN] +\n              `(?:${src[t.PRERELEASE]})?` +\n              `(?:${src[t.BUILD]})?` +\n              `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\ncreateToken('COERCERTLFULL', src[t.COERCEFULL], 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'\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","'use strict'\n\nconst 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","'use strict'\n\nconst 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('build 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    if (release.startsWith('pre')) {\n      if (!identifier && identifierBase === false) {\n        throw new Error('invalid increment argument: identifier is empty')\n      }\n      // Avoid an invalid semver results\n      if (identifier) {\n        const match = `-${identifier}`.match(this.options.loose ? re[t.PRERELEASELOOSE] : re[t.PRERELEASE])\n        if (!match || match[1] !== identifier) {\n          throw new Error(`invalid identifier: ${identifier}`)\n        }\n      }\n    }\n\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      case 'release':\n        if (this.prerelease.length === 0) {\n          throw new Error(`version ${this.raw} is not a prerelease`)\n        }\n        this.prerelease.length = 0\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 (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'\n\nconst 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","'use strict'\n\nconst 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'\n\nconst parse = require('./parse')\nconst clean = (version, options) => {\n  const s = parse(version.trim().replace(/^[=v]+/, ''), options)\n  return s ? s.version : null\n}\nmodule.exports = clean\n","'use strict'\n\nconst 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","'use strict'\n\nconst parse = require('./parse.js')\n\nconst diff = (version1, version2) => {\n  const v1 = parse(version1, null, true)\n  const v2 = parse(version2, null, true)\n  const comparison = v1.compare(v2)\n\n  if (comparison === 0) {\n    return null\n  }\n\n  const v1Higher = comparison > 0\n  const highVersion = v1Higher ? v1 : v2\n  const lowVersion = v1Higher ? v2 : v1\n  const highHasPre = !!highVersion.prerelease.length\n  const lowHasPre = !!lowVersion.prerelease.length\n\n  if (lowHasPre && !highHasPre) {\n    // Going from prerelease -> no prerelease requires some special casing\n\n    // If the low version has only a major, then it will always be a major\n    // Some examples:\n    // 1.0.0-1 -> 1.0.0\n    // 1.0.0-1 -> 1.1.1\n    // 1.0.0-1 -> 2.0.0\n    if (!lowVersion.patch && !lowVersion.minor) {\n      return 'major'\n    }\n\n    // If the main part has no difference\n    if (lowVersion.compareMain(highVersion) === 0) {\n      if (lowVersion.minor && !lowVersion.patch) {\n        return 'minor'\n      }\n      return 'patch'\n    }\n  }\n\n  // add the `pre` prefix if we are going to a prerelease version\n  const prefix = highHasPre ? 'pre' : ''\n\n  if (v1.major !== v2.major) {\n    return prefix + 'major'\n  }\n\n  if (v1.minor !== v2.minor) {\n    return prefix + 'minor'\n  }\n\n  if (v1.patch !== v2.patch) {\n    return prefix + 'patch'\n  }\n\n  // high and low are preleases\n  return 'prerelease'\n}\n\nmodule.exports = diff\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst minor = (a, loose) => new SemVer(a, loose).minor\nmodule.exports = minor\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n","'use strict'\n\nconst 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","'use strict'\n\nconst 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'\n\nconst compare = require('./compare')\nconst rcompare = (a, b, loose) => compare(b, a, loose)\nmodule.exports = rcompare\n","'use strict'\n\nconst compare = require('./compare')\nconst compareLoose = (a, b) => compare(a, b, true)\nmodule.exports = compareLoose\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst compareBuild = (a, b, loose) => {\n  const versionA = new SemVer(a, loose)\n  const versionB = new SemVer(b, loose)\n  return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\nmodule.exports = compareBuild\n","'use strict'\n\nconst compareBuild = require('./compare-build')\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n","'use strict'\n\nconst compareBuild = require('./compare-build')\nconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))\nmodule.exports = rsort\n","'use strict'\n\nconst compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n","'use strict'\n\nconst compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n","'use strict'\n\nconst compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n","'use strict'\n\nconst compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n","'use strict'\n\nconst compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n","'use strict'\n\nconst compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n","'use strict'\n\nconst 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'\n\nconst 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(options.includePrerelease ? re[t.COERCEFULL] : 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    // With includePrerelease option set, '1.2.3.4-rc' wants to coerce '2.3.4-rc', not '2.3.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    const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL]\n    let next\n    while ((next = coerceRtlRegex.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      coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length\n    }\n    // leave it in a clean state\n    coerceRtlRegex.lastIndex = -1\n  }\n\n  if (match === null) {\n    return null\n  }\n\n  const major = match[2]\n  const minor = match[3] || '0'\n  const patch = match[4] || '0'\n  const prerelease = options.includePrerelease && match[5] ? `-${match[5]}` : ''\n  const build = options.includePrerelease && match[6] ? `+${match[6]}` : ''\n\n  return parse(`${major}.${minor}.${patch}${prerelease}${build}`, options)\n}\nmodule.exports = coerce\n","'use strict'\n\nclass LRUCache {\n  constructor () {\n    this.max = 1000\n    this.map = new Map()\n  }\n\n  get (key) {\n    const value = this.map.get(key)\n    if (value === undefined) {\n      return undefined\n    } else {\n      // Remove the key from the map and add it to the end\n      this.map.delete(key)\n      this.map.set(key, value)\n      return value\n    }\n  }\n\n  delete (key) {\n    return this.map.delete(key)\n  }\n\n  set (key, value) {\n    const deleted = this.delete(key)\n\n    if (!deleted && value !== undefined) {\n      // If cache is full, delete the least recently used item\n      if (this.map.size >= this.max) {\n        const firstKey = this.map.keys().next().value\n        this.delete(firstKey)\n      }\n\n      this.map.set(key, value)\n    }\n\n    return this\n  }\n}\n\nmodule.exports = LRUCache\n","'use strict'\n\nconst SPACE_CHARACTERS = /\\s+/g\n\n// hoisted class for cyclic dependency\nclass Range {\n  constructor (range, options) {\n    options = parseOptions(options)\n\n    if (range instanceof Range) {\n      if (\n        range.loose === !!options.loose &&\n        range.includePrerelease === !!options.includePrerelease\n      ) {\n        return range\n      } else {\n        return new Range(range.raw, options)\n      }\n    }\n\n    if (range instanceof Comparator) {\n      // just put it in the set and return\n      this.raw = range.value\n      this.set = [[range]]\n      this.formatted = undefined\n      return this\n    }\n\n    this.options = options\n    this.loose = !!options.loose\n    this.includePrerelease = !!options.includePrerelease\n\n    // First reduce all whitespace as much as possible so we do not have to rely\n    // on potentially slow regexes like \\s*. This is then stored and used for\n    // future error messages as well.\n    this.raw = range.trim().replace(SPACE_CHARACTERS, ' ')\n\n    // First, split on ||\n    this.set = this.raw\n      .split('||')\n      // map the range to a 2d array of comparators\n      .map(r => this.parseRange(r.trim()))\n      // throw out any comparator lists that are empty\n      // this generally means that it was not a valid range, which is allowed\n      // in loose mode, but will still throw if the WHOLE range is invalid.\n      .filter(c => c.length)\n\n    if (!this.set.length) {\n      throw new TypeError(`Invalid SemVer Range: ${this.raw}`)\n    }\n\n    // if we have any that are not the null set, throw out null sets.\n    if (this.set.length > 1) {\n      // keep the first one, in case they're all null sets\n      const first = this.set[0]\n      this.set = this.set.filter(c => !isNullSet(c[0]))\n      if (this.set.length === 0) {\n        this.set = [first]\n      } else if (this.set.length > 1) {\n        // if we have any that are *, then the range is just *\n        for (const c of this.set) {\n          if (c.length === 1 && isAny(c[0])) {\n            this.set = [c]\n            break\n          }\n        }\n      }\n    }\n\n    this.formatted = undefined\n  }\n\n  get range () {\n    if (this.formatted === undefined) {\n      this.formatted = ''\n      for (let i = 0; i < this.set.length; i++) {\n        if (i > 0) {\n          this.formatted += '||'\n        }\n        const comps = this.set[i]\n        for (let k = 0; k < comps.length; k++) {\n          if (k > 0) {\n            this.formatted += ' '\n          }\n          this.formatted += comps[k].toString().trim()\n        }\n      }\n    }\n    return this.formatted\n  }\n\n  format () {\n    return this.range\n  }\n\n  toString () {\n    return this.range\n  }\n\n  parseRange (range) {\n    // memoize range parsing for performance.\n    // this is a very hot path, and fully deterministic.\n    const memoOpts =\n      (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) |\n      (this.options.loose && FLAG_LOOSE)\n    const memoKey = memoOpts + ':' + range\n    const cached = cache.get(memoKey)\n    if (cached) {\n      return cached\n    }\n\n    const loose = this.options.loose\n    // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n    const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n    range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n    debug('hyphen replace', range)\n\n    // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n    range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n    debug('comparator trim', range)\n\n    // `~ 1.2.3` => `~1.2.3`\n    range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n    debug('tilde trim', range)\n\n    // `^ 1.2.3` => `^1.2.3`\n    range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n    debug('caret trim', range)\n\n    // At this point, the range is completely trimmed and\n    // ready to be split into comparators.\n\n    let rangeList = range\n      .split(' ')\n      .map(comp => parseComparator(comp, this.options))\n      .join(' ')\n      .split(/\\s+/)\n      // >=0.0.0 is equivalent to *\n      .map(comp => replaceGTE0(comp, this.options))\n\n    if (loose) {\n      // in loose mode, throw out any that are not valid comparators\n      rangeList = rangeList.filter(comp => {\n        debug('loose invalid filter', comp, this.options)\n        return !!comp.match(re[t.COMPARATORLOOSE])\n      })\n    }\n    debug('range list', rangeList)\n\n    // if any comparators are the null set, then replace with JUST null set\n    // if more than one comparator, remove any * comparators\n    // also, don't include the same comparator more than once\n    const rangeMap = new Map()\n    const comparators = rangeList.map(comp => new Comparator(comp, this.options))\n    for (const comp of comparators) {\n      if (isNullSet(comp)) {\n        return [comp]\n      }\n      rangeMap.set(comp.value, comp)\n    }\n    if (rangeMap.size > 1 && rangeMap.has('')) {\n      rangeMap.delete('')\n    }\n\n    const result = [...rangeMap.values()]\n    cache.set(memoKey, result)\n    return result\n  }\n\n  intersects (range, options) {\n    if (!(range instanceof Range)) {\n      throw new TypeError('a Range is required')\n    }\n\n    return this.set.some((thisComparators) => {\n      return (\n        isSatisfiable(thisComparators, options) &&\n        range.set.some((rangeComparators) => {\n          return (\n            isSatisfiable(rangeComparators, options) &&\n            thisComparators.every((thisComparator) => {\n              return rangeComparators.every((rangeComparator) => {\n                return thisComparator.intersects(rangeComparator, options)\n              })\n            })\n          )\n        })\n      )\n    })\n  }\n\n  // if ANY of the sets match ALL of its comparators, then pass\n  test (version) {\n    if (!version) {\n      return false\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    for (let i = 0; i < this.set.length; i++) {\n      if (testSet(this.set[i], version, this.options)) {\n        return true\n      }\n    }\n    return false\n  }\n}\n\nmodule.exports = Range\n\nconst LRU = require('../internal/lrucache')\nconst cache = new LRU()\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n  safeRe: re,\n  t,\n  comparatorTrimReplace,\n  tildeTrimReplace,\n  caretTrimReplace,\n} = require('../internal/re')\nconst { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n  let result = true\n  const remainingComparators = comparators.slice()\n  let testComparator = remainingComparators.pop()\n\n  while (result && remainingComparators.length) {\n    result = remainingComparators.every((otherComparator) => {\n      return testComparator.intersects(otherComparator, options)\n    })\n\n    testComparator = remainingComparators.pop()\n  }\n\n  return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n  debug('comp', comp, options)\n  comp = replaceCarets(comp, options)\n  debug('caret', comp)\n  comp = replaceTildes(comp, options)\n  debug('tildes', comp)\n  comp = replaceXRanges(comp, options)\n  debug('xrange', comp)\n  comp = replaceStars(comp, options)\n  debug('stars', comp)\n  return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nconst replaceTildes = (comp, options) => {\n  return comp\n    .trim()\n    .split(/\\s+/)\n    .map((c) => replaceTilde(c, options))\n    .join(' ')\n}\n\nconst replaceTilde = (comp, options) => {\n  const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n  return comp.replace(r, (_, M, m, p, pr) => {\n    debug('tilde', comp, _, M, m, p, pr)\n    let ret\n\n    if (isX(M)) {\n      ret = ''\n    } else if (isX(m)) {\n      ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n    } else if (isX(p)) {\n      // ~1.2 == >=1.2.0 <1.3.0-0\n      ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n    } else if (pr) {\n      debug('replaceTilde pr', pr)\n      ret = `>=${M}.${m}.${p}-${pr\n      } <${M}.${+m + 1}.0-0`\n    } else {\n      // ~1.2.3 == >=1.2.3 <1.3.0-0\n      ret = `>=${M}.${m}.${p\n      } <${M}.${+m + 1}.0-0`\n    }\n\n    debug('tilde return', ret)\n    return ret\n  })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nconst replaceCarets = (comp, options) => {\n  return comp\n    .trim()\n    .split(/\\s+/)\n    .map((c) => replaceCaret(c, options))\n    .join(' ')\n}\n\nconst replaceCaret = (comp, options) => {\n  debug('caret', comp, options)\n  const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n  const z = options.includePrerelease ? '-0' : ''\n  return comp.replace(r, (_, M, m, p, pr) => {\n    debug('caret', comp, _, M, m, p, pr)\n    let ret\n\n    if (isX(M)) {\n      ret = ''\n    } else if (isX(m)) {\n      ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n    } else if (isX(p)) {\n      if (M === '0') {\n        ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n      } else {\n        ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n      }\n    } else if (pr) {\n      debug('replaceCaret pr', pr)\n      if (M === '0') {\n        if (m === '0') {\n          ret = `>=${M}.${m}.${p}-${pr\n          } <${M}.${m}.${+p + 1}-0`\n        } else {\n          ret = `>=${M}.${m}.${p}-${pr\n          } <${M}.${+m + 1}.0-0`\n        }\n      } else {\n        ret = `>=${M}.${m}.${p}-${pr\n        } <${+M + 1}.0.0-0`\n      }\n    } else {\n      debug('no pr')\n      if (M === '0') {\n        if (m === '0') {\n          ret = `>=${M}.${m}.${p\n          }${z} <${M}.${m}.${+p + 1}-0`\n        } else {\n          ret = `>=${M}.${m}.${p\n          }${z} <${M}.${+m + 1}.0-0`\n        }\n      } else {\n        ret = `>=${M}.${m}.${p\n        } <${+M + 1}.0.0-0`\n      }\n    }\n\n    debug('caret return', ret)\n    return ret\n  })\n}\n\nconst replaceXRanges = (comp, options) => {\n  debug('replaceXRanges', comp, options)\n  return comp\n    .split(/\\s+/)\n    .map((c) => replaceXRange(c, options))\n    .join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n  comp = comp.trim()\n  const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n  return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n    debug('xRange', comp, ret, gtlt, M, m, p, pr)\n    const xM = isX(M)\n    const xm = xM || isX(m)\n    const xp = xm || isX(p)\n    const anyX = xp\n\n    if (gtlt === '=' && anyX) {\n      gtlt = ''\n    }\n\n    // if we're including prereleases in the match, then we need\n    // to fix this to -0, the lowest possible prerelease value\n    pr = options.includePrerelease ? '-0' : ''\n\n    if (xM) {\n      if (gtlt === '>' || gtlt === '<') {\n        // nothing is allowed\n        ret = '<0.0.0-0'\n      } else {\n        // nothing is forbidden\n        ret = '*'\n      }\n    } else if (gtlt && anyX) {\n      // we know patch is an x, because we have any x at all.\n      // replace X with 0\n      if (xm) {\n        m = 0\n      }\n      p = 0\n\n      if (gtlt === '>') {\n        // >1 => >=2.0.0\n        // >1.2 => >=1.3.0\n        gtlt = '>='\n        if (xm) {\n          M = +M + 1\n          m = 0\n          p = 0\n        } else {\n          m = +m + 1\n          p = 0\n        }\n      } else if (gtlt === '<=') {\n        // <=0.7.x is actually <0.8.0, since any 0.7.x should\n        // pass.  Similarly, <=7.x is actually <8.0.0, etc.\n        gtlt = '<'\n        if (xm) {\n          M = +M + 1\n        } else {\n          m = +m + 1\n        }\n      }\n\n      if (gtlt === '<') {\n        pr = '-0'\n      }\n\n      ret = `${gtlt + M}.${m}.${p}${pr}`\n    } else if (xm) {\n      ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n    } else if (xp) {\n      ret = `>=${M}.${m}.0${pr\n      } <${M}.${+m + 1}.0-0`\n    }\n\n    debug('xRange return', ret)\n\n    return ret\n  })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n  debug('replaceStars', comp, options)\n  // Looseness is ignored here.  star is always as loose as it gets!\n  return comp\n    .trim()\n    .replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n  debug('replaceGTE0', comp, options)\n  return comp\n    .trim()\n    .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\n// TODO build?\nconst hyphenReplace = incPr => ($0,\n  from, fM, fm, fp, fpr, fb,\n  to, tM, tm, tp, tpr) => {\n  if (isX(fM)) {\n    from = ''\n  } else if (isX(fm)) {\n    from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n  } else if (isX(fp)) {\n    from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n  } else if (fpr) {\n    from = `>=${from}`\n  } else {\n    from = `>=${from}${incPr ? '-0' : ''}`\n  }\n\n  if (isX(tM)) {\n    to = ''\n  } else if (isX(tm)) {\n    to = `<${+tM + 1}.0.0-0`\n  } else if (isX(tp)) {\n    to = `<${tM}.${+tm + 1}.0-0`\n  } else if (tpr) {\n    to = `<=${tM}.${tm}.${tp}-${tpr}`\n  } else if (incPr) {\n    to = `<${tM}.${tm}.${+tp + 1}-0`\n  } else {\n    to = `<=${to}`\n  }\n\n  return `${from} ${to}`.trim()\n}\n\nconst testSet = (set, version, options) => {\n  for (let i = 0; i < set.length; i++) {\n    if (!set[i].test(version)) {\n      return false\n    }\n  }\n\n  if (version.prerelease.length && !options.includePrerelease) {\n    // Find the set of versions that are allowed to have prereleases\n    // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n    // That should allow `1.2.3-pr.2` to pass.\n    // However, `1.2.4-alpha.notready` should NOT be allowed,\n    // even though it's within the range set by the comparators.\n    for (let i = 0; i < set.length; i++) {\n      debug(set[i].semver)\n      if (set[i].semver === Comparator.ANY) {\n        continue\n      }\n\n      if (set[i].semver.prerelease.length > 0) {\n        const allowed = set[i].semver\n        if (allowed.major === version.major &&\n            allowed.minor === version.minor &&\n            allowed.patch === version.patch) {\n          return true\n        }\n      }\n    }\n\n    // Version has a -pre, but it's not one of the ones we like.\n    return false\n  }\n\n  return true\n}\n","'use strict'\n\nconst 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","'use strict'\n\nconst Range = require('../classes/range')\nconst satisfies = (version, range, options) => {\n  try {\n    range = new Range(range, options)\n  } catch (er) {\n    return false\n  }\n  return range.test(version)\n}\nmodule.exports = satisfies\n","'use strict'\n\nconst 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","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\n\nconst maxSatisfying = (versions, range, options) => {\n  let max = null\n  let maxSV = 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 (!max || maxSV.compare(v) === -1) {\n        // compare(max, v, true)\n        max = v\n        maxSV = new SemVer(max, options)\n      }\n    }\n  })\n  return max\n}\nmodule.exports = maxSatisfying\n","'use strict'\n\nconst 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\nconst SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst gt = require('../functions/gt')\n\nconst minVersion = (range, loose) => {\n  range = new Range(range, loose)\n\n  let minver = new SemVer('0.0.0')\n  if (range.test(minver)) {\n    return minver\n  }\n\n  minver = new SemVer('0.0.0-0')\n  if (range.test(minver)) {\n    return minver\n  }\n\n  minver = null\n  for (let i = 0; i < range.set.length; ++i) {\n    const comparators = range.set[i]\n\n    let setMin = null\n    comparators.forEach((comparator) => {\n      // Clone to avoid manipulating the comparator's semver object.\n      const compver = new SemVer(comparator.semver.version)\n      switch (comparator.operator) {\n        case '>':\n          if (compver.prerelease.length === 0) {\n            compver.patch++\n          } else {\n            compver.prerelease.push(0)\n          }\n          compver.raw = compver.format()\n          /* fallthrough */\n        case '':\n        case '>=':\n          if (!setMin || gt(compver, setMin)) {\n            setMin = compver\n          }\n          break\n        case '<':\n        case '<=':\n          /* Ignore maximum versions */\n          break\n        /* istanbul ignore next */\n        default:\n          throw new Error(`Unexpected operation: ${comparator.operator}`)\n      }\n    })\n    if (setMin && (!minver || gt(minver, setMin))) {\n      minver = setMin\n    }\n  }\n\n  if (minver && range.test(minver)) {\n    return minver\n  }\n\n  return null\n}\nmodule.exports = minVersion\n","'use strict'\n\nconst 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","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Comparator = require('../classes/comparator')\nconst { ANY } = Comparator\nconst Range = require('../classes/range')\nconst satisfies = require('../functions/satisfies')\nconst gt = require('../functions/gt')\nconst lt = require('../functions/lt')\nconst lte = require('../functions/lte')\nconst gte = require('../functions/gte')\n\nconst outside = (version, range, hilo, options) => {\n  version = new SemVer(version, options)\n  range = new Range(range, options)\n\n  let gtfn, ltefn, ltfn, comp, ecomp\n  switch (hilo) {\n    case '>':\n      gtfn = gt\n      ltefn = lte\n      ltfn = lt\n      comp = '>'\n      ecomp = '>='\n      break\n    case '<':\n      gtfn = lt\n      ltefn = gte\n      ltfn = gt\n      comp = '<'\n      ecomp = '<='\n      break\n    default:\n      throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n  }\n\n  // If it satisfies the range it is not outside\n  if (satisfies(version, range, options)) {\n    return false\n  }\n\n  // From now on, variable terms are as if we're in \"gtr\" mode.\n  // but note that everything is flipped for the \"ltr\" function.\n\n  for (let i = 0; i < range.set.length; ++i) {\n    const comparators = range.set[i]\n\n    let high = null\n    let low = null\n\n    comparators.forEach((comparator) => {\n      if (comparator.semver === ANY) {\n        comparator = new Comparator('>=0.0.0')\n      }\n      high = high || comparator\n      low = low || comparator\n      if (gtfn(comparator.semver, high.semver, options)) {\n        high = comparator\n      } else if (ltfn(comparator.semver, low.semver, options)) {\n        low = comparator\n      }\n    })\n\n    // If the edge version comparator has a operator then our version\n    // isn't outside it\n    if (high.operator === comp || high.operator === ecomp) {\n      return false\n    }\n\n    // If the lowest version comparator has an operator and our version\n    // is less than it then it isn't higher than the range\n    if ((!low.operator || low.operator === comp) &&\n        ltefn(version, low.semver)) {\n      return false\n    } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n      return false\n    }\n  }\n  return true\n}\n\nmodule.exports = outside\n","'use strict'\n\n// Determine if version is greater than all the versions possible in the range.\nconst outside = require('./outside')\nconst gtr = (version, range, options) => outside(version, range, '>', options)\nmodule.exports = gtr\n","'use strict'\n\nconst 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'\n\nconst 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","'use strict'\n\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'\n\nconst Range = require('../classes/range.js')\nconst Comparator = require('../classes/comparator.js')\nconst { ANY } = Comparator\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\n\n// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:\n// - Every simple range `r1, r2, ...` is a null set, OR\n// - Every simple range `r1, r2, ...` which is not a null set is a subset of\n//   some `R1, R2, ...`\n//\n// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:\n// - If c is only the ANY comparator\n//   - If C is only the ANY comparator, return true\n//   - Else if in prerelease mode, return false\n//   - else replace c with `[>=0.0.0]`\n// - If C is only the ANY comparator\n//   - if in prerelease mode, return true\n//   - else replace C with `[>=0.0.0]`\n// - Let EQ be the set of = comparators in c\n// - If EQ is more than one, return true (null set)\n// - Let GT be the highest > or >= comparator in c\n// - Let LT be the lowest < or <= comparator in c\n// - If GT and LT, and GT.semver > LT.semver, return true (null set)\n// - If any C is a = range, and GT or LT are set, return false\n// - If EQ\n//   - If GT, and EQ does not satisfy GT, return true (null set)\n//   - If LT, and EQ does not satisfy LT, return true (null set)\n//   - If EQ satisfies every C, return true\n//   - Else return false\n// - If GT\n//   - If GT.semver is lower than any > or >= comp in C, return false\n//   - If GT is >=, and GT.semver does not satisfy every C, return false\n//   - If GT.semver has a prerelease, and not in prerelease mode\n//     - If no C has a prerelease and the GT.semver tuple, return false\n// - If LT\n//   - If LT.semver is greater than any < or <= comp in C, return false\n//   - If LT is <=, and LT.semver does not satisfy every C, return false\n//   - If GT.semver has a prerelease, and not in prerelease mode\n//     - If no C has a prerelease and the LT.semver tuple, return false\n// - Else return true\n\nconst subset = (sub, dom, options = {}) => {\n  if (sub === dom) {\n    return true\n  }\n\n  sub = new Range(sub, options)\n  dom = new Range(dom, options)\n  let sawNonNull = false\n\n  OUTER: for (const simpleSub of sub.set) {\n    for (const simpleDom of dom.set) {\n      const isSub = simpleSubset(simpleSub, simpleDom, options)\n      sawNonNull = sawNonNull || isSub !== null\n      if (isSub) {\n        continue OUTER\n      }\n    }\n    // the null set is a subset of everything, but null simple ranges in\n    // a complex range should be ignored.  so if we saw a non-null range,\n    // then we know this isn't a subset, but if EVERY simple range was null,\n    // then it is a subset.\n    if (sawNonNull) {\n      return false\n    }\n  }\n  return true\n}\n\nconst minimumVersionWithPreRelease = [new Comparator('>=0.0.0-0')]\nconst minimumVersion = [new Comparator('>=0.0.0')]\n\nconst simpleSubset = (sub, dom, options) => {\n  if (sub === dom) {\n    return true\n  }\n\n  if (sub.length === 1 && sub[0].semver === ANY) {\n    if (dom.length === 1 && dom[0].semver === ANY) {\n      return true\n    } else if (options.includePrerelease) {\n      sub = minimumVersionWithPreRelease\n    } else {\n      sub = minimumVersion\n    }\n  }\n\n  if (dom.length === 1 && dom[0].semver === ANY) {\n    if (options.includePrerelease) {\n      return true\n    } else {\n      dom = minimumVersion\n    }\n  }\n\n  const eqSet = new Set()\n  let gt, lt\n  for (const c of sub) {\n    if (c.operator === '>' || c.operator === '>=') {\n      gt = higherGT(gt, c, options)\n    } else if (c.operator === '<' || c.operator === '<=') {\n      lt = lowerLT(lt, c, options)\n    } else {\n      eqSet.add(c.semver)\n    }\n  }\n\n  if (eqSet.size > 1) {\n    return null\n  }\n\n  let gtltComp\n  if (gt && lt) {\n    gtltComp = compare(gt.semver, lt.semver, options)\n    if (gtltComp > 0) {\n      return null\n    } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) {\n      return null\n    }\n  }\n\n  // will iterate one or zero times\n  for (const eq of eqSet) {\n    if (gt && !satisfies(eq, String(gt), options)) {\n      return null\n    }\n\n    if (lt && !satisfies(eq, String(lt), options)) {\n      return null\n    }\n\n    for (const c of dom) {\n      if (!satisfies(eq, String(c), options)) {\n        return false\n      }\n    }\n\n    return true\n  }\n\n  let higher, lower\n  let hasDomLT, hasDomGT\n  // if the subset has a prerelease, we need a comparator in the superset\n  // with the same tuple and a prerelease, or it's not a subset\n  let needDomLTPre = lt &&\n    !options.includePrerelease &&\n    lt.semver.prerelease.length ? lt.semver : false\n  let needDomGTPre = gt &&\n    !options.includePrerelease &&\n    gt.semver.prerelease.length ? gt.semver : false\n  // exception: <1.2.3-0 is the same as <1.2.3\n  if (needDomLTPre && needDomLTPre.prerelease.length === 1 &&\n      lt.operator === '<' && needDomLTPre.prerelease[0] === 0) {\n    needDomLTPre = false\n  }\n\n  for (const c of dom) {\n    hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='\n    hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='\n    if (gt) {\n      if (needDomGTPre) {\n        if (c.semver.prerelease && c.semver.prerelease.length &&\n            c.semver.major === needDomGTPre.major &&\n            c.semver.minor === needDomGTPre.minor &&\n            c.semver.patch === needDomGTPre.patch) {\n          needDomGTPre = false\n        }\n      }\n      if (c.operator === '>' || c.operator === '>=') {\n        higher = higherGT(gt, c, options)\n        if (higher === c && higher !== gt) {\n          return false\n        }\n      } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) {\n        return false\n      }\n    }\n    if (lt) {\n      if (needDomLTPre) {\n        if (c.semver.prerelease && c.semver.prerelease.length &&\n            c.semver.major === needDomLTPre.major &&\n            c.semver.minor === needDomLTPre.minor &&\n            c.semver.patch === needDomLTPre.patch) {\n          needDomLTPre = false\n        }\n      }\n      if (c.operator === '<' || c.operator === '<=') {\n        lower = lowerLT(lt, c, options)\n        if (lower === c && lower !== lt) {\n          return false\n        }\n      } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) {\n        return false\n      }\n    }\n    if (!c.operator && (lt || gt) && gtltComp !== 0) {\n      return false\n    }\n  }\n\n  // if there was a < or >, and nothing in the dom, then must be false\n  // UNLESS it was limited by another range in the other direction.\n  // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0\n  if (gt && hasDomLT && !lt && gtltComp !== 0) {\n    return false\n  }\n\n  if (lt && hasDomGT && !gt && gtltComp !== 0) {\n    return false\n  }\n\n  // we needed a prerelease range in a specific tuple, but didn't get one\n  // then this isn't a subset.  eg >=1.2.3-pre is not a subset of >=1.0.0,\n  // because it includes prereleases in the 1.2.3 tuple\n  if (needDomGTPre || needDomLTPre) {\n    return false\n  }\n\n  return true\n}\n\n// >=1.2.3 is lower than >1.2.3\nconst higherGT = (a, b, options) => {\n  if (!a) {\n    return b\n  }\n  const comp = compare(a.semver, b.semver, options)\n  return comp > 0 ? a\n    : comp < 0 ? b\n    : b.operator === '>' && a.operator === '>=' ? b\n    : a\n}\n\n// <=1.2.3 is higher than <1.2.3\nconst lowerLT = (a, b, options) => {\n  if (!a) {\n    return b\n  }\n  const comp = compare(a.semver, b.semver, options)\n  return comp < 0 ? a\n    : comp > 0 ? b\n    : b.operator === '<' && a.operator === '<=' ? b\n    : a\n}\n\nmodule.exports = subset\n","'use strict'\n\n// just pre-load all the stuff that index.js lazily exports\nconst internalRe = require('./internal/re')\nconst constants = require('./internal/constants')\nconst SemVer = require('./classes/semver')\nconst identifiers = require('./internal/identifiers')\nconst parse = require('./functions/parse')\nconst valid = require('./functions/valid')\nconst clean = require('./functions/clean')\nconst inc = require('./functions/inc')\nconst diff = require('./functions/diff')\nconst major = require('./functions/major')\nconst minor = require('./functions/minor')\nconst patch = require('./functions/patch')\nconst prerelease = require('./functions/prerelease')\nconst compare = require('./functions/compare')\nconst rcompare = require('./functions/rcompare')\nconst compareLoose = require('./functions/compare-loose')\nconst compareBuild = require('./functions/compare-build')\nconst sort = require('./functions/sort')\nconst rsort = require('./functions/rsort')\nconst gt = require('./functions/gt')\nconst lt = require('./functions/lt')\nconst eq = require('./functions/eq')\nconst neq = require('./functions/neq')\nconst gte = require('./functions/gte')\nconst lte = require('./functions/lte')\nconst cmp = require('./functions/cmp')\nconst coerce = require('./functions/coerce')\nconst Comparator = require('./classes/comparator')\nconst Range = require('./classes/range')\nconst satisfies = require('./functions/satisfies')\nconst toComparators = require('./ranges/to-comparators')\nconst maxSatisfying = require('./ranges/max-satisfying')\nconst minSatisfying = require('./ranges/min-satisfying')\nconst minVersion = require('./ranges/min-version')\nconst validRange = require('./ranges/valid')\nconst outside = require('./ranges/outside')\nconst gtr = require('./ranges/gtr')\nconst ltr = require('./ranges/ltr')\nconst intersects = require('./ranges/intersects')\nconst simplifyRange = require('./ranges/simplify')\nconst subset = require('./ranges/subset')\nmodule.exports = {\n  parse,\n  valid,\n  clean,\n  inc,\n  diff,\n  major,\n  minor,\n  patch,\n  prerelease,\n  compare,\n  rcompare,\n  compareLoose,\n  compareBuild,\n  sort,\n  rsort,\n  gt,\n  lt,\n  eq,\n  neq,\n  gte,\n  lte,\n  cmp,\n  coerce,\n  Comparator,\n  Range,\n  satisfies,\n  toComparators,\n  maxSatisfying,\n  minSatisfying,\n  minVersion,\n  validRange,\n  outside,\n  gtr,\n  ltr,\n  intersects,\n  simplifyRange,\n  subset,\n  SemVer,\n  re: internalRe.re,\n  src: internalRe.src,\n  tokens: internalRe.t,\n  SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,\n  RELEASE_TYPES: constants.RELEASE_TYPES,\n  compareIdentifiers: identifiers.compareIdentifiers,\n  rcompareIdentifiers: identifiers.rcompareIdentifiers,\n}\n","import { satisfies } from \"semver\";\nimport { concatHex, encodeFunctionData, erc20Abi, hexToSignature, isHex, pad, signatureToHex, toHex } from \"viem\";\nexport var KERNEL_FEATURES;\n(function (KERNEL_FEATURES) {\n    KERNEL_FEATURES[\"ERC1271_SIG_WRAPPER\"] = \"ERC1271_SIG_WRAPPER\";\n    KERNEL_FEATURES[\"ERC1271_WITH_VALIDATOR\"] = \"ERC1271_WITH_VALIDATOR\";\n    KERNEL_FEATURES[\"ERC1271_SIG_WRAPPER_WITH_WRAPPED_HASH\"] = \"ERC1271_SIG_WRAPPER_WITH_WRAPPED_HASH\";\n    KERNEL_FEATURES[\"ERC1271_REPLAYABLE\"] = \"ERC1271_REPLAYABLE\";\n})(KERNEL_FEATURES || (KERNEL_FEATURES = {}));\nexport const KERNEL_FEATURES_BY_VERSION = {\n    [KERNEL_FEATURES.ERC1271_SIG_WRAPPER]: \">=0.2.3 || >=0.3.0-beta\",\n    [KERNEL_FEATURES.ERC1271_WITH_VALIDATOR]: \">=0.3.0-beta\",\n    [KERNEL_FEATURES.ERC1271_SIG_WRAPPER_WITH_WRAPPED_HASH]: \">=0.3.0-beta\",\n    [KERNEL_FEATURES.ERC1271_REPLAYABLE]: \">=0.3.2\"\n};\nexport const hasKernelFeature = (feature, version) => {\n    if (!(feature in KERNEL_FEATURES_BY_VERSION)) {\n        return false;\n    }\n    return satisfies(version, KERNEL_FEATURES_BY_VERSION[feature]);\n};\nexport const getERC20PaymasterApproveCall = async (client, { gasToken, approveAmount, entryPoint }) => {\n    const response = await client.request({\n        method: \"zd_pm_accounts\",\n        params: [\n            {\n                chainId: client.chain?.id,\n                entryPointAddress: entryPoint.address\n            }\n        ]\n    });\n    return {\n        to: gasToken,\n        data: encodeFunctionData({\n            abi: erc20Abi,\n            functionName: \"approve\",\n            args: [response[0], approveAmount]\n        }),\n        value: 0n\n    };\n};\nexport const fixSignedData = (sig) => {\n    let signature = sig;\n    if (!isHex(signature)) {\n        signature = `0x${signature}`;\n        if (!isHex(signature)) {\n            throw new Error(`Invalid signed data ${sig}`);\n        }\n    }\n    let { r, s, v } = hexToSignature(signature);\n    if (v === 0n || v === 1n)\n        v += 27n;\n    // biome-ignore lint/style/noNonNullAssertion: <explanation>\n    const joined = signatureToHex({ r, s, v: v });\n    return joined;\n};\nexport const getExecMode = ({ callType, execType }) => {\n    return concatHex([\n        callType, // 1 byte\n        execType, // 1 byte\n        \"0x00000000\", // 4 bytes\n        \"0x00000000\", // 4 bytes\n        pad(\"0x00000000\", { size: 22 })\n    ]);\n};\nexport const validateKernelVersionWithEntryPoint = (entryPointVersion, kernelVersion) => {\n    if ((entryPointVersion === \"0.6\" &&\n        !satisfies(kernelVersion, \">=0.2.2 || <=0.2.4\")) ||\n        (entryPointVersion === \"0.7\" && !satisfies(kernelVersion, \">=0.3.0\"))) {\n        throw new Error(\"KernelVersion should be >= 0.2.2 and <= 0.2.4 for EntryPointV0.6 and >= 0.3.0 for EntryPointV0.7\");\n    }\n};\nexport const satisfiesRange = (version, range) => {\n    return satisfies(version, range);\n};\n// biome-ignore lint/suspicious/noExplicitAny: it's a recursive function, so it's hard to type\nexport function deepHexlify(obj) {\n    if (typeof obj === \"function\") {\n        return undefined;\n    }\n    if (obj == null || typeof obj === \"string\" || typeof obj === \"boolean\") {\n        return obj;\n    }\n    if (typeof obj === \"bigint\") {\n        return toHex(obj);\n    }\n    if (obj._isBigNumber != null || typeof obj !== \"object\") {\n        return toHex(obj).replace(/^0x0/, \"0x\");\n    }\n    if (Array.isArray(obj)) {\n        return obj.map((member) => deepHexlify(member));\n    }\n    return Object.keys(obj).reduce(\n    // biome-ignore lint/suspicious/noExplicitAny: it's a recursive function, so it's hard to type\n    (set, key) => {\n        set[key] = deepHexlify(obj[key]);\n        return set;\n    }, {});\n}\n//# sourceMappingURL=utils.js.map","// Copied from: https://github.com/pimlicolabs/permissionless.js/blob/main/packages/permissionless/utils/toOwner.ts\nimport { createWalletClient, custom } from \"viem\";\nimport { toAccount } from \"viem/accounts\";\nimport { signAuthorization, signMessage, signTypedData } from \"viem/actions\";\nexport async function toSigner({ signer, address }) {\n    if (\"type\" in signer && signer.type === \"local\") {\n        return signer;\n    }\n    let walletClient = undefined;\n    if (\"request\" in signer && !signer?.account) {\n        if (!address) {\n            address = (await Promise.any([\n                signer.request({\n                    method: \"eth_requestAccounts\"\n                }),\n                signer.request({\n                    method: \"eth_accounts\"\n                })\n            ]))[0];\n        }\n        if (!address) {\n            // For TS to be happy\n            throw new Error(\"address is required\");\n        }\n        walletClient = createWalletClient({\n            account: address,\n            transport: custom(signer)\n        });\n    }\n    if (!walletClient) {\n        walletClient = signer;\n    }\n    return toAccount({\n        address: walletClient.account.address,\n        async signMessage({ message }) {\n            return signMessage(walletClient, { message });\n        },\n        async signTypedData(typedData) {\n            const { primaryType, domain, message, types } = typedData;\n            return signTypedData(walletClient, {\n                primaryType,\n                domain,\n                message,\n                types\n            });\n        },\n        async signTransaction(_) {\n            throw new Error(\"Smart account signer doesn't need to sign transactions\");\n        },\n        async signAuthorization(authorization) {\n            return signAuthorization(walletClient, authorization);\n        }\n    });\n}\n//# sourceMappingURL=toSigner.js.map","/**\n * The exeute abi, used to execute a transaction on the kernel smart account\n */\nexport const KernelExecuteAbi = [\n    {\n        inputs: [\n            {\n                internalType: \"address\",\n                name: \"to\",\n                type: \"address\"\n            },\n            {\n                internalType: \"uint256\",\n                name: \"value\",\n                type: \"uint256\"\n            },\n            {\n                internalType: \"bytes\",\n                name: \"data\",\n                type: \"bytes\"\n            },\n            {\n                internalType: \"enum Operation\",\n                name: \"\",\n                type: \"uint8\"\n            }\n        ],\n        name: \"execute\",\n        outputs: [],\n        stateMutability: \"payable\",\n        type: \"function\"\n    },\n    {\n        inputs: [\n            {\n                components: [\n                    {\n                        internalType: \"address\",\n                        name: \"to\",\n                        type: \"address\"\n                    },\n                    {\n                        internalType: \"uint256\",\n                        name: \"value\",\n                        type: \"uint256\"\n                    },\n                    {\n                        internalType: \"bytes\",\n                        name: \"data\",\n                        type: \"bytes\"\n                    }\n                ],\n                internalType: \"struct Call[]\",\n                name: \"calls\",\n                type: \"tuple[]\"\n            }\n        ],\n        name: \"executeBatch\",\n        outputs: [],\n        stateMutability: \"payable\",\n        type: \"function\"\n    },\n    {\n        inputs: [\n            {\n                internalType: \"address\",\n                name: \"to\",\n                type: \"address\"\n            },\n            {\n                internalType: \"bytes\",\n                name: \"data\",\n                type: \"bytes\"\n            }\n        ],\n        name: \"executeDelegateCall\",\n        outputs: [],\n        stateMutability: \"payable\",\n        type: \"function\"\n    }\n];\n/**\n * The init abi, used to initialise kernel account\n */\nexport const KernelInitAbi = [\n    {\n        inputs: [\n            {\n                internalType: \"contract IKernelValidator\",\n                name: \"_defaultValidator\",\n                type: \"address\"\n            },\n            {\n                internalType: \"bytes\",\n                name: \"_data\",\n                type: \"bytes\"\n            }\n        ],\n        name: \"initialize\",\n        outputs: [],\n        stateMutability: \"payable\",\n        type: \"function\"\n    }\n];\nexport const KernelAccountAbi = [\n    {\n        inputs: [\n            {\n                internalType: \"contract IEntryPoint\",\n                name: \"_entryPoint\",\n                type: \"address\"\n            }\n        ],\n        stateMutability: \"nonpayable\",\n        type: \"constructor\"\n    },\n    {\n        inputs: [],\n        name: \"AlreadyInitialized\",\n        type: \"error\"\n    },\n    {\n        inputs: [],\n        name: \"DisabledMode\",\n        type: \"error\"\n    },\n    {\n        inputs: [],\n        name: \"NotAuthorizedCaller\",\n        type: \"error\"\n    },\n    {\n        inputs: [],\n        name: \"NotEntryPoint\",\n        type: \"error\"\n    },\n    {\n        anonymous: false,\n        inputs: [\n            {\n                indexed: true,\n                internalType: \"address\",\n                name: \"oldValidator\",\n                type: \"address\"\n            },\n            {\n                indexed: true,\n                internalType: \"address\",\n                name: \"newValidator\",\n                type: \"address\"\n            }\n        ],\n        name: \"DefaultValidatorChanged\",\n        type: \"event\"\n    },\n    {\n        anonymous: false,\n        inputs: [\n            {\n                indexed: true,\n                internalType: \"bytes4\",\n                name: \"selector\",\n                type: \"bytes4\"\n            },\n            {\n                indexed: true,\n                internalType: \"address\",\n                name: \"executor\",\n                type: \"address\"\n            },\n            {\n                indexed: true,\n                internalType: \"address\",\n                name: \"validator\",\n                type: \"address\"\n            }\n        ],\n        name: \"ExecutionChanged\",\n        type: \"event\"\n    },\n    {\n        anonymous: false,\n        inputs: [\n            {\n                indexed: false,\n                internalType: \"address\",\n                name: \"sender\",\n                type: \"address\"\n            },\n            {\n                indexed: false,\n                internalType: \"uint256\",\n                name: \"amount\",\n                type: \"uint256\"\n            }\n        ],\n        name: \"Received\",\n        type: \"event\"\n    },\n    {\n        anonymous: false,\n        inputs: [\n            {\n                indexed: true,\n                internalType: \"address\",\n                name: \"newImplementation\",\n                type: \"address\"\n            }\n        ],\n        name: \"Upgraded\",\n        type: \"event\"\n    },\n    {\n        stateMutability: \"payable\",\n        type: \"fallback\"\n    },\n    {\n        inputs: [\n            {\n                internalType: \"bytes4\",\n                name: \"_disableFlag\",\n                type: \"bytes4\"\n            }\n        ],\n        name: \"disableMode\",\n        outputs: [],\n        stateMutability: \"payable\",\n        type: \"function\"\n    },\n    {\n        inputs: [],\n        name: \"eip712Domain\",\n        outputs: [\n            {\n                internalType: \"bytes1\",\n                name: \"fields\",\n                type: \"bytes1\"\n            },\n            {\n                internalType: \"string\",\n                name: \"name\",\n                type: \"string\"\n            },\n            {\n                internalType: \"string\",\n                name: \"version\",\n                type: \"string\"\n            },\n            {\n                internalType: \"uint256\",\n                name: \"chainId\",\n                type: \"uint256\"\n            },\n            {\n                internalType: \"address\",\n                name: \"verifyingContract\",\n                type: \"address\"\n            },\n            {\n                internalType: \"bytes32\",\n                name: \"salt\",\n                type: \"bytes32\"\n            },\n            {\n                internalType: \"uint256[]\",\n                name: \"extensions\",\n                type: \"uint256[]\"\n            }\n        ],\n        stateMutability: \"view\",\n        type: \"function\"\n    },\n    {\n        inputs: [],\n        name: \"entryPoint\",\n        outputs: [\n            {\n                internalType: \"contract IEntryPoint\",\n                name: \"\",\n                type: \"address\"\n            }\n        ],\n        stateMutability: \"view\",\n        type: \"function\"\n    },\n    {\n        inputs: [\n            {\n                internalType: \"address\",\n                name: \"to\",\n                type: \"address\"\n            },\n            {\n                internalType: \"uint256\",\n                name: \"value\",\n                type: \"uint256\"\n            },\n            {\n                internalType: \"bytes\",\n                name: \"data\",\n                type: \"bytes\"\n            },\n            {\n                internalType: \"enum Operation\",\n                name: \"\",\n                type: \"uint8\"\n            }\n        ],\n        name: \"execute\",\n        outputs: [],\n        stateMutability: \"payable\",\n        type: \"function\"\n    },\n    {\n        inputs: [\n            {\n                components: [\n                    {\n                        internalType: \"address\",\n                        name: \"to\",\n                        type: \"address\"\n                    },\n                    {\n                        internalType: \"uint256\",\n                        name: \"value\",\n                        type: \"uint256\"\n                    },\n                    {\n                        internalType: \"bytes\",\n                        name: \"data\",\n                        type: \"bytes\"\n                    }\n                ],\n                internalType: \"struct Call[]\",\n                name: \"calls\",\n                type: \"tuple[]\"\n            }\n        ],\n        name: \"executeBatch\",\n        outputs: [],\n        stateMutability: \"payable\",\n        type: \"function\"\n    },\n    {\n        inputs: [\n            {\n                internalType: \"address\",\n                name: \"to\",\n                type: \"address\"\n            },\n            {\n                internalType: \"bytes\",\n                name: \"data\",\n                type: \"bytes\"\n            }\n        ],\n        name: \"executeDelegateCall\",\n        outputs: [],\n        stateMutability: \"payable\",\n        type: \"function\"\n    },\n    {\n        inputs: [],\n        name: \"getDefaultValidator\",\n        outputs: [\n            {\n                internalType: \"contract IKernelValidator\",\n                name: \"validator\",\n                type: \"address\"\n            }\n        ],\n        stateMutability: \"view\",\n        type: \"function\"\n    },\n    {\n        inputs: [],\n        name: \"getDisabledMode\",\n        outputs: [\n            {\n                internalType: \"bytes4\",\n                name: \"disabled\",\n                type: \"bytes4\"\n            }\n        ],\n        stateMutability: \"view\",\n        type: \"function\"\n    },\n    {\n        inputs: [\n            {\n                internalType: \"bytes4\",\n                name: \"_selector\",\n                type: \"bytes4\"\n            }\n        ],\n        name: \"getExecution\",\n        outputs: [\n            {\n                components: [\n                    {\n                        internalType: \"ValidAfter\",\n                        name: \"validAfter\",\n                        type: \"uint48\"\n                    },\n                    {\n                        internalType: \"ValidUntil\",\n                        name: \"validUntil\",\n                        type: \"uint48\"\n                    },\n                    {\n                        internalType: \"address\",\n                        name: \"executor\",\n                        type: \"address\"\n                    },\n                    {\n                        internalType: \"contract IKernelValidator\",\n                        name: \"validator\",\n                        type: \"address\"\n                    }\n                ],\n                internalType: \"struct ExecutionDetail\",\n                name: \"\",\n                type: \"tuple\"\n            }\n        ],\n        stateMutability: \"view\",\n        type: \"function\"\n    },\n    {\n        inputs: [],\n        name: \"getLastDisabledTime\",\n        outputs: [\n            {\n                internalType: \"uint48\",\n                name: \"\",\n                type: \"uint48\"\n            }\n        ],\n        stateMutability: \"view\",\n        type: \"function\"\n    },\n    {\n        inputs: [\n            {\n                internalType: \"uint192\",\n                name: \"key\",\n                type: \"uint192\"\n            }\n        ],\n        name: \"getNonce\",\n        outputs: [\n            {\n                internalType: \"uint256\",\n                name: \"\",\n                type: \"uint256\"\n            }\n        ],\n        stateMutability: \"view\",\n        type: \"function\"\n    },\n    {\n        inputs: [],\n        name: \"getNonce\",\n        outputs: [\n            {\n                internalType: \"uint256\",\n                name: \"\",\n                type: \"uint256\"\n            }\n        ],\n        stateMutability: \"view\",\n        type: \"function\"\n    },\n    {\n        inputs: [\n            {\n                internalType: \"contract IKernelValidator\",\n                name: \"_defaultValidator\",\n                type: \"address\"\n            },\n            {\n                internalType: \"bytes\",\n                name: \"_data\",\n                type: \"bytes\"\n            }\n        ],\n        name: \"initialize\",\n        outputs: [],\n        stateMutability: \"payable\",\n        type: \"function\"\n    },\n    {\n        inputs: [\n            {\n                internalType: \"bytes32\",\n                name: \"hash\",\n                type: \"bytes32\"\n            },\n            {\n                internalType: \"bytes\",\n                name: \"signature\",\n                type: \"bytes\"\n            }\n        ],\n        name: \"isValidSignature\",\n        outputs: [\n            {\n                internalType: \"bytes4\",\n                name: \"\",\n                type: \"bytes4\"\n            }\n        ],\n        stateMutability: \"view\",\n        type: \"function\"\n    },\n    {\n        inputs: [],\n        name: \"name\",\n        outputs: [\n            {\n                internalType: \"string\",\n                name: \"\",\n                type: \"string\"\n            }\n        ],\n        stateMutability: \"view\",\n        type: \"function\"\n    },\n    {\n        inputs: [\n            {\n                internalType: \"address\",\n                name: \"\",\n                type: \"address\"\n            },\n            {\n                internalType: \"address\",\n                name: \"\",\n                type: \"address\"\n            },\n            {\n                internalType: \"uint256[]\",\n                name: \"\",\n                type: \"uint256[]\"\n            },\n            {\n                internalType: \"uint256[]\",\n                name: \"\",\n                type: \"uint256[]\"\n            },\n            {\n                internalType: \"bytes\",\n                name: \"\",\n                type: \"bytes\"\n            }\n        ],\n        name: \"onERC1155BatchReceived\",\n        outputs: [\n            {\n                internalType: \"bytes4\",\n                name: \"\",\n                type: \"bytes4\"\n            }\n        ],\n        stateMutability: \"pure\",\n        type: \"function\"\n    },\n    {\n        inputs: [\n            {\n                internalType: \"address\",\n                name: \"\",\n                type: \"address\"\n            },\n            {\n                internalType: \"address\",\n                name: \"\",\n                type: \"address\"\n            },\n            {\n                internalType: \"uint256\",\n                name: \"\",\n                type: \"uint256\"\n            },\n            {\n                internalType: \"uint256\",\n                name: \"\",\n                type: \"uint256\"\n            },\n            {\n                internalType: \"bytes\",\n                name: \"\",\n                type: \"bytes\"\n            }\n        ],\n        name: \"onERC1155Received\",\n        outputs: [\n            {\n                internalType: \"bytes4\",\n                name: \"\",\n                type: \"bytes4\"\n            }\n        ],\n        stateMutability: \"pure\",\n        type: \"function\"\n    },\n    {\n        inputs: [\n            {\n                internalType: \"address\",\n                name: \"\",\n                type: \"address\"\n            },\n            {\n                internalType: \"address\",\n                name: \"\",\n                type: \"address\"\n            },\n            {\n                internalType: \"uint256\",\n                name: \"\",\n                type: \"uint256\"\n            },\n            {\n                internalType: \"bytes\",\n                name: \"\",\n                type: \"bytes\"\n            }\n        ],\n        name: \"onERC721Received\",\n        outputs: [\n            {\n                internalType: \"bytes4\",\n                name: \"\",\n                type: \"bytes4\"\n            }\n        ],\n        stateMutability: \"pure\",\n        type: \"function\"\n    },\n    {\n        inputs: [\n            {\n                internalType: \"contract IKernelValidator\",\n                name: \"_defaultValidator\",\n                type: \"address\"\n            },\n            {\n                internalType: \"bytes\",\n                name: \"_data\",\n                type: \"bytes\"\n            }\n        ],\n        name: \"setDefaultValidator\",\n        outputs: [],\n        stateMutability: \"payable\",\n        type: \"function\"\n    },\n    {\n        inputs: [\n            {\n                internalType: \"bytes4\",\n                name: \"_selector\",\n                type: \"bytes4\"\n            },\n            {\n                internalType: \"address\",\n                name: \"_executor\",\n                type: \"address\"\n            },\n            {\n                internalType: \"contract IKernelValidator\",\n                name: \"_validator\",\n                type: \"address\"\n            },\n            {\n                internalType: \"ValidUntil\",\n                name: \"_validUntil\",\n                type: \"uint48\"\n            },\n            {\n                internalType: \"ValidAfter\",\n                name: \"_validAfter\",\n                type: \"uint48\"\n            },\n            {\n                internalType: \"bytes\",\n                name: \"_enableData\",\n                type: \"bytes\"\n            }\n        ],\n        name: \"setExecution\",\n        outputs: [],\n        stateMutability: \"payable\",\n        type: \"function\"\n    },\n    {\n        inputs: [\n            {\n                internalType: \"address\",\n                name: \"_newImplementation\",\n                type: \"address\"\n            }\n        ],\n        name: \"upgradeTo\",\n        outputs: [],\n        stateMutability: \"payable\",\n        type: \"function\"\n    },\n    {\n        inputs: [\n            {\n                components: [\n                    {\n                        internalType: \"address\",\n                        name: \"sender\",\n                        type: \"address\"\n                    },\n                    {\n                        internalType: \"uint256\",\n                        name: \"nonce\",\n                        type: \"uint256\"\n                    },\n                    {\n                        internalType: \"bytes\",\n                        name: \"initCode\",\n                        type: \"bytes\"\n                    },\n                    {\n                        internalType: \"bytes\",\n                        name: \"callData\",\n                        type: \"bytes\"\n                    },\n                    {\n                        internalType: \"uint256\",\n                        name: \"callGasLimit\",\n                        type: \"uint256\"\n                    },\n                    {\n                        internalType: \"uint256\",\n                        name: \"verificationGasLimit\",\n                        type: \"uint256\"\n                    },\n                    {\n                        internalType: \"uint256\",\n                        name: \"preVerificationGas\",\n                        type: \"uint256\"\n                    },\n                    {\n                        internalType: \"uint256\",\n                        name: \"maxFeePerGas\",\n                        type: \"uint256\"\n                    },\n                    {\n                        internalType: \"uint256\",\n                        name: \"maxPriorityFeePerGas\",\n                        type: \"uint256\"\n                    },\n                    {\n                        internalType: \"bytes\",\n                        name: \"paymasterAndData\",\n                        type: \"bytes\"\n                    },\n                    {\n                        internalType: \"bytes\",\n                        name: \"signature\",\n                        type: \"bytes\"\n                    }\n                ],\n                internalType: \"struct UserOperation\",\n                name: \"_userOp\",\n                type: \"tuple\"\n            },\n            {\n                internalType: \"bytes32\",\n                name: \"userOpHash\",\n                type: \"bytes32\"\n            },\n            {\n                internalType: \"uint256\",\n                name: \"missingAccountFunds\",\n                type: \"uint256\"\n            }\n        ],\n        name: \"validateUserOp\",\n        outputs: [\n            {\n                internalType: \"ValidationData\",\n                name: \"validationData\",\n                type: \"uint256\"\n            }\n        ],\n        stateMutability: \"payable\",\n        type: \"function\"\n    },\n    {\n        inputs: [],\n        name: \"version\",\n        outputs: [\n            {\n                internalType: \"string\",\n                name: \"\",\n                type: \"string\"\n            }\n        ],\n        stateMutability: \"view\",\n        type: \"function\"\n    },\n    {\n        stateMutability: \"payable\",\n        type: \"receive\"\n    }\n];\n//# sourceMappingURL=KernelAccountAbi.js.map","import { encodeFunctionData } from \"viem\";\nimport { KernelExecuteAbi } from \"../../abi/KernelAccountAbi.js\";\nexport const encodeExecuteBatchCall = (args) => {\n    return encodeFunctionData({\n        abi: KernelExecuteAbi,\n        functionName: \"executeBatch\",\n        args: [\n            args.map((arg) => {\n                return {\n                    to: arg.to,\n                    value: arg.value || 0n,\n                    data: arg.data || \"0x\"\n                };\n            })\n        ]\n    });\n};\n//# sourceMappingURL=encodeExecuteBatchCall.js.map","import { encodeFunctionData } from \"viem\";\nimport { KernelExecuteAbi } from \"../../abi/KernelAccountAbi.js\";\nexport const encodeExecuteDelegateCall = (args) => {\n    return encodeFunctionData({\n        abi: KernelExecuteAbi,\n        functionName: \"executeDelegateCall\",\n        args: [args.to, args.data || \"0x\"]\n    });\n};\n//# sourceMappingURL=encodeExecuteDelegateCall.js.map","import { encodeFunctionData } from \"viem\";\nimport { KernelExecuteAbi } from \"../../abi/KernelAccountAbi.js\";\nexport const encodeExecuteSingleCall = (args) => {\n    return encodeFunctionData({\n        abi: KernelExecuteAbi,\n        functionName: \"execute\",\n        args: [args.to, args.value || 0n, args.data || \"0x\", 0]\n    });\n};\n//# sourceMappingURL=encodeExecuteSingleCall.js.map","import { encodeExecuteBatchCall } from \"../../ep0_6/encodeExecuteBatchCall.js\";\nimport { encodeExecuteDelegateCall } from \"../../ep0_6/encodeExecuteDelegateCall.js\";\nimport { encodeExecuteSingleCall } from \"../../ep0_6/encodeExecuteSingleCall.js\";\nexport const encodeCallData = async (calls, callType) => {\n    if (calls.length > 1) {\n        if (callType === \"delegatecall\") {\n            throw new Error(\"Cannot batch delegatecall\");\n        }\n        return encodeExecuteBatchCall(calls);\n    }\n    const call = calls.length === 0 ? undefined : calls[0];\n    if (!call) {\n        throw new Error(\"No calls to encode\");\n    }\n    // Default to `call`\n    if (!callType || callType === \"call\") {\n        return encodeExecuteSingleCall(call);\n    }\n    if (callType === \"delegatecall\") {\n        return encodeExecuteDelegateCall({\n            to: call.to,\n            data: call.data\n        });\n    }\n    throw new Error(\"Invalid call type\");\n};\n//# sourceMappingURL=encodeCallData.js.map","import { encodeFunctionData } from \"viem\";\nimport { KernelAccountAbi } from \"../../../abi/KernelAccountAbi.js\";\nimport { encodeCallData } from \"./encodeCallData.js\";\nexport const encodeModuleInstallCallData = async ({ accountAddress, enableData, executor, selector, validAfter, validUntil, validator }) => {\n    return encodeCallData([\n        {\n            to: accountAddress,\n            value: 0n,\n            data: encodeFunctionData({\n                abi: KernelAccountAbi,\n                functionName: \"setExecution\",\n                args: [\n                    selector,\n                    executor,\n                    validator,\n                    validUntil,\n                    validAfter,\n                    enableData\n                ]\n            })\n        }\n    ], \"call\");\n};\n//# sourceMappingURL=encodeModuleInstallCallData.js.map","export var ValidatorMode;\n(function (ValidatorMode) {\n    ValidatorMode[\"sudo\"] = \"0x00000000\";\n    ValidatorMode[\"plugin\"] = \"0x00000001\";\n    ValidatorMode[\"enable\"] = \"0x00000002\";\n})(ValidatorMode || (ValidatorMode = {}));\n//# sourceMappingURL=kernel.js.map","export const KernelV3InitAbi = [\n    {\n        type: \"function\",\n        name: \"initialize\",\n        inputs: [\n            {\n                name: \"_rootValidator\",\n                type: \"bytes21\",\n                internalType: \"ValidationId\"\n            },\n            { name: \"hook\", type: \"address\", internalType: \"contract IHook\" },\n            { name: \"validatorData\", type: \"bytes\", internalType: \"bytes\" },\n            { name: \"hookData\", type: \"bytes\", internalType: \"bytes\" }\n        ],\n        outputs: [],\n        stateMutability: \"nonpayable\"\n    }\n];\nexport const KernelV3ExecuteAbi = [\n    {\n        type: \"function\",\n        name: \"execute\",\n        inputs: [\n            { name: \"execMode\", type: \"bytes32\", internalType: \"ExecMode\" },\n            { name: \"executionCalldata\", type: \"bytes\", internalType: \"bytes\" }\n        ],\n        outputs: [],\n        stateMutability: \"payable\"\n    },\n    {\n        type: \"function\",\n        name: \"executeFromExecutor\",\n        inputs: [\n            { name: \"execMode\", type: \"bytes32\", internalType: \"ExecMode\" },\n            { name: \"executionCalldata\", type: \"bytes\", internalType: \"bytes\" }\n        ],\n        outputs: [\n            { name: \"returnData\", type: \"bytes[]\", internalType: \"bytes[]\" }\n        ],\n        stateMutability: \"payable\"\n    },\n    {\n        type: \"function\",\n        name: \"executeUserOp\",\n        inputs: [\n            {\n                name: \"userOp\",\n                type: \"tuple\",\n                internalType: \"struct PackedUserOperation\",\n                components: [\n                    {\n                        name: \"sender\",\n                        type: \"address\",\n                        internalType: \"address\"\n                    },\n                    { name: \"nonce\", type: \"uint256\", internalType: \"uint256\" },\n                    { name: \"initCode\", type: \"bytes\", internalType: \"bytes\" },\n                    { name: \"callData\", type: \"bytes\", internalType: \"bytes\" },\n                    {\n                        name: \"accountGasLimits\",\n                        type: \"bytes32\",\n                        internalType: \"bytes32\"\n                    },\n                    {\n                        name: \"preVerificationGas\",\n                        type: \"uint256\",\n                        internalType: \"uint256\"\n                    },\n                    {\n                        name: \"gasFees\",\n                        type: \"bytes32\",\n                        internalType: \"bytes32\"\n                    },\n                    {\n                        name: \"paymasterAndData\",\n                        type: \"bytes\",\n                        internalType: \"bytes\"\n                    },\n                    { name: \"signature\", type: \"bytes\", internalType: \"bytes\" }\n                ]\n            },\n            { name: \"userOpHash\", type: \"bytes32\", internalType: \"bytes32\" }\n        ],\n        outputs: [],\n        stateMutability: \"payable\"\n    }\n];\nexport const KernelV3AccountAbi = [\n    {\n        type: \"constructor\",\n        inputs: [\n            {\n                name: \"_entrypoint\",\n                type: \"address\",\n                internalType: \"contract IEntryPoint\"\n            }\n        ],\n        stateMutability: \"nonpayable\"\n    },\n    { type: \"fallback\", stateMutability: \"payable\" },\n    { type: \"receive\", stateMutability: \"payable\" },\n    {\n        type: \"function\",\n        name: \"accountId\",\n        inputs: [],\n        outputs: [\n            {\n                name: \"accountImplementationId\",\n                type: \"string\",\n                internalType: \"string\"\n            }\n        ],\n        stateMutability: \"pure\"\n    },\n    {\n        type: \"function\",\n        name: \"currentNonce\",\n        inputs: [],\n        outputs: [{ name: \"\", type: \"uint32\", internalType: \"uint32\" }],\n        stateMutability: \"view\"\n    },\n    {\n        type: \"function\",\n        name: \"eip712Domain\",\n        inputs: [],\n        outputs: [\n            { name: \"fields\", type: \"bytes1\", internalType: \"bytes1\" },\n            { name: \"name\", type: \"string\", internalType: \"string\" },\n            { name: \"version\", type: \"string\", internalType: \"string\" },\n            { name: \"chainId\", type: \"uint256\", internalType: \"uint256\" },\n            {\n                name: \"verifyingContract\",\n                type: \"address\",\n                internalType: \"address\"\n            },\n            { name: \"salt\", type: \"bytes32\", internalType: \"bytes32\" },\n            { name: \"extensions\", type: \"uint256[]\", internalType: \"uint256[]\" }\n        ],\n        stateMutability: \"view\"\n    },\n    {\n        type: \"function\",\n        name: \"entrypoint\",\n        inputs: [],\n        outputs: [\n            { name: \"\", type: \"address\", internalType: \"contract IEntryPoint\" }\n        ],\n        stateMutability: \"view\"\n    },\n    {\n        type: \"function\",\n        name: \"execute\",\n        inputs: [\n            { name: \"execMode\", type: \"bytes32\", internalType: \"ExecMode\" },\n            { name: \"executionCalldata\", type: \"bytes\", internalType: \"bytes\" }\n        ],\n        outputs: [],\n        stateMutability: \"payable\"\n    },\n    {\n        type: \"function\",\n        name: \"executeFromExecutor\",\n        inputs: [\n            { name: \"execMode\", type: \"bytes32\", internalType: \"ExecMode\" },\n            { name: \"executionCalldata\", type: \"bytes\", internalType: \"bytes\" }\n        ],\n        outputs: [\n            { name: \"returnData\", type: \"bytes[]\", internalType: \"bytes[]\" }\n        ],\n        stateMutability: \"payable\"\n    },\n    {\n        type: \"function\",\n        name: \"executeUserOp\",\n        inputs: [\n            {\n                name: \"userOp\",\n                type: \"tuple\",\n                internalType: \"struct PackedUserOperation\",\n                components: [\n                    {\n                        name: \"sender\",\n                        type: \"address\",\n                        internalType: \"address\"\n                    },\n                    { name: \"nonce\", type: \"uint256\", internalType: \"uint256\" },\n                    { name: \"initCode\", type: \"bytes\", internalType: \"bytes\" },\n                    { name: \"callData\", type: \"bytes\", internalType: \"bytes\" },\n                    {\n                        name: \"accountGasLimits\",\n                        type: \"bytes32\",\n                        internalType: \"bytes32\"\n                    },\n                    {\n                        name: \"preVerificationGas\",\n                        type: \"uint256\",\n                        internalType: \"uint256\"\n                    },\n                    {\n                        name: \"gasFees\",\n                        type: \"bytes32\",\n                        internalType: \"bytes32\"\n                    },\n                    {\n                        name: \"paymasterAndData\",\n                        type: \"bytes\",\n                        internalType: \"bytes\"\n                    },\n                    { name: \"signature\", type: \"bytes\", internalType: \"bytes\" }\n                ]\n            },\n            { name: \"userOpHash\", type: \"bytes32\", internalType: \"bytes32\" }\n        ],\n        outputs: [],\n        stateMutability: \"payable\"\n    },\n    {\n        type: \"function\",\n        name: \"executorConfig\",\n        inputs: [\n            {\n                name: \"executor\",\n                type: \"address\",\n                internalType: \"contract IExecutor\"\n            }\n        ],\n        outputs: [\n            {\n                name: \"\",\n                type: \"tuple\",\n                internalType: \"struct ExecutorManager.ExecutorConfig\",\n                components: [\n                    {\n                        name: \"hook\",\n                        type: \"address\",\n                        internalType: \"contract IHook\"\n                    }\n                ]\n            }\n        ],\n        stateMutability: \"view\"\n    },\n    {\n        type: \"function\",\n        name: \"initialize\",\n        inputs: [\n            {\n                name: \"_rootValidator\",\n                type: \"bytes21\",\n                internalType: \"ValidationId\"\n            },\n            { name: \"hook\", type: \"address\", internalType: \"contract IHook\" },\n            { name: \"validatorData\", type: \"bytes\", internalType: \"bytes\" },\n            { name: \"hookData\", type: \"bytes\", internalType: \"bytes\" }\n        ],\n        outputs: [],\n        stateMutability: \"nonpayable\"\n    },\n    {\n        type: \"function\",\n        name: \"installModule\",\n        inputs: [\n            { name: \"moduleType\", type: \"uint256\", internalType: \"uint256\" },\n            { name: \"module\", type: \"address\", internalType: \"address\" },\n            { name: \"initData\", type: \"bytes\", internalType: \"bytes\" }\n        ],\n        outputs: [],\n        stateMutability: \"payable\"\n    },\n    {\n        type: \"function\",\n        name: \"installValidations\",\n        inputs: [\n            { name: \"vIds\", type: \"bytes21[]\", internalType: \"ValidationId[]\" },\n            {\n                name: \"configs\",\n                type: \"tuple[]\",\n                internalType: \"struct ValidationManager.ValidationConfig[]\",\n                components: [\n                    { name: \"nonce\", type: \"uint32\", internalType: \"uint32\" },\n                    {\n                        name: \"hook\",\n                        type: \"address\",\n                        internalType: \"contract IHook\"\n                    }\n                ]\n            },\n            {\n                name: \"validationData\",\n                type: \"bytes[]\",\n                internalType: \"bytes[]\"\n            },\n            { name: \"hookData\", type: \"bytes[]\", internalType: \"bytes[]\" }\n        ],\n        outputs: [],\n        stateMutability: \"payable\"\n    },\n    {\n        type: \"function\",\n        name: \"invalidateNonce\",\n        inputs: [{ name: \"nonce\", type: \"uint32\", internalType: \"uint32\" }],\n        outputs: [],\n        stateMutability: \"payable\"\n    },\n    {\n        type: \"function\",\n        name: \"isAllowedSelector\",\n        inputs: [\n            { name: \"vId\", type: \"bytes21\", internalType: \"ValidationId\" },\n            { name: \"selector\", type: \"bytes4\", internalType: \"bytes4\" }\n        ],\n        outputs: [{ name: \"\", type: \"bool\", internalType: \"bool\" }],\n        stateMutability: \"view\"\n    },\n    {\n        type: \"function\",\n        name: \"isModuleInstalled\",\n        inputs: [\n            { name: \"moduleType\", type: \"uint256\", internalType: \"uint256\" },\n            { name: \"module\", type: \"address\", internalType: \"address\" },\n            { name: \"additionalContext\", type: \"bytes\", internalType: \"bytes\" }\n        ],\n        outputs: [{ name: \"\", type: \"bool\", internalType: \"bool\" }],\n        stateMutability: \"view\"\n    },\n    {\n        type: \"function\",\n        name: \"isValidSignature\",\n        inputs: [\n            { name: \"hash\", type: \"bytes32\", internalType: \"bytes32\" },\n            { name: \"signature\", type: \"bytes\", internalType: \"bytes\" }\n        ],\n        outputs: [{ name: \"\", type: \"bytes4\", internalType: \"bytes4\" }],\n        stateMutability: \"view\"\n    },\n    {\n        type: \"function\",\n        name: \"permissionConfig\",\n        inputs: [{ name: \"pId\", type: \"bytes4\", internalType: \"PermissionId\" }],\n        outputs: [\n            {\n                name: \"\",\n                type: \"tuple\",\n                internalType: \"struct ValidationManager.PermissionConfig\",\n                components: [\n                    {\n                        name: \"permissionFlag\",\n                        type: \"bytes2\",\n                        internalType: \"PassFlag\"\n                    },\n                    {\n                        name: \"signer\",\n                        type: \"address\",\n                        internalType: \"contract ISigner\"\n                    },\n                    {\n                        name: \"policyData\",\n                        type: \"bytes22[]\",\n                        internalType: \"PolicyData[]\"\n                    }\n                ]\n            }\n        ],\n        stateMutability: \"view\"\n    },\n    {\n        type: \"function\",\n        name: \"rootValidator\",\n        inputs: [],\n        outputs: [{ name: \"\", type: \"bytes21\", internalType: \"ValidationId\" }],\n        stateMutability: \"view\"\n    },\n    {\n        type: \"function\",\n        name: \"selectorConfig\",\n        inputs: [{ name: \"selector\", type: \"bytes4\", internalType: \"bytes4\" }],\n        outputs: [\n            {\n                name: \"\",\n                type: \"tuple\",\n                internalType: \"struct SelectorManager.SelectorConfig\",\n                components: [\n                    {\n                        name: \"hook\",\n                        type: \"address\",\n                        internalType: \"contract IHook\"\n                    },\n                    {\n                        name: \"target\",\n                        type: \"address\",\n                        internalType: \"address\"\n                    },\n                    {\n                        name: \"callType\",\n                        type: \"bytes1\",\n                        internalType: \"CallType\"\n                    }\n                ]\n            }\n        ],\n        stateMutability: \"view\"\n    },\n    {\n        type: \"function\",\n        name: \"supportsExecutionMode\",\n        inputs: [{ name: \"mode\", type: \"bytes32\", internalType: \"ExecMode\" }],\n        outputs: [{ name: \"\", type: \"bool\", internalType: \"bool\" }],\n        stateMutability: \"pure\"\n    },\n    {\n        type: \"function\",\n        name: \"supportsModule\",\n        inputs: [\n            { name: \"moduleTypeId\", type: \"uint256\", internalType: \"uint256\" }\n        ],\n        outputs: [{ name: \"\", type: \"bool\", internalType: \"bool\" }],\n        stateMutability: \"pure\"\n    },\n    {\n        type: \"function\",\n        name: \"uninstallModule\",\n        inputs: [\n            { name: \"moduleType\", type: \"uint256\", internalType: \"uint256\" },\n            { name: \"module\", type: \"address\", internalType: \"address\" },\n            { name: \"deInitData\", type: \"bytes\", internalType: \"bytes\" }\n        ],\n        outputs: [],\n        stateMutability: \"payable\"\n    },\n    {\n        type: \"function\",\n        name: \"uninstallValidation\",\n        inputs: [\n            { name: \"vId\", type: \"bytes21\", internalType: \"ValidationId\" },\n            { name: \"deinitData\", type: \"bytes\", internalType: \"bytes\" },\n            { name: \"hookDeinitData\", type: \"bytes\", internalType: \"bytes\" }\n        ],\n        outputs: [],\n        stateMutability: \"payable\"\n    },\n    {\n        type: \"function\",\n        name: \"upgradeTo\",\n        inputs: [\n            {\n                name: \"_newImplementation\",\n                type: \"address\",\n                internalType: \"address\"\n            }\n        ],\n        outputs: [],\n        stateMutability: \"payable\"\n    },\n    {\n        type: \"function\",\n        name: \"validNonceFrom\",\n        inputs: [],\n        outputs: [{ name: \"\", type: \"uint32\", internalType: \"uint32\" }],\n        stateMutability: \"view\"\n    },\n    {\n        type: \"function\",\n        name: \"validateUserOp\",\n        inputs: [\n            {\n                name: \"userOp\",\n                type: \"tuple\",\n                internalType: \"struct PackedUserOperation\",\n                components: [\n                    {\n                        name: \"sender\",\n                        type: \"address\",\n                        internalType: \"address\"\n                    },\n                    { name: \"nonce\", type: \"uint256\", internalType: \"uint256\" },\n                    { name: \"initCode\", type: \"bytes\", internalType: \"bytes\" },\n                    { name: \"callData\", type: \"bytes\", internalType: \"bytes\" },\n                    {\n                        name: \"accountGasLimits\",\n                        type: \"bytes32\",\n                        internalType: \"bytes32\"\n                    },\n                    {\n                        name: \"preVerificationGas\",\n                        type: \"uint256\",\n                        internalType: \"uint256\"\n                    },\n                    {\n                        name: \"gasFees\",\n                        type: \"bytes32\",\n                        internalType: \"bytes32\"\n                    },\n                    {\n                        name: \"paymasterAndData\",\n                        type: \"bytes\",\n                        internalType: \"bytes\"\n                    },\n                    { name: \"signature\", type: \"bytes\", internalType: \"bytes\" }\n                ]\n            },\n            { name: \"userOpHash\", type: \"bytes32\", internalType: \"bytes32\" },\n            {\n                name: \"missingAccountFunds\",\n                type: \"uint256\",\n                internalType: \"uint256\"\n            }\n        ],\n        outputs: [\n            {\n                name: \"validationData\",\n                type: \"uint256\",\n                internalType: \"ValidationData\"\n            }\n        ],\n        stateMutability: \"payable\"\n    },\n    {\n        type: \"function\",\n        name: \"validationConfig\",\n        inputs: [\n            { name: \"vId\", type: \"bytes21\", internalType: \"ValidationId\" }\n        ],\n        outputs: [\n            {\n                name: \"\",\n                type: \"tuple\",\n                internalType: \"struct ValidationManager.ValidationConfig\",\n                components: [\n                    { name: \"nonce\", type: \"uint32\", internalType: \"uint32\" },\n                    {\n                        name: \"hook\",\n                        type: \"address\",\n                        internalType: \"contract IHook\"\n                    }\n                ]\n            }\n        ],\n        stateMutability: \"view\"\n    },\n    {\n        type: \"event\",\n        name: \"ModuleInstalled\",\n        inputs: [\n            {\n                name: \"moduleTypeId\",\n                type: \"uint256\",\n                indexed: false,\n                internalType: \"uint256\"\n            },\n            {\n                name: \"module\",\n                type: \"address\",\n                indexed: false,\n                internalType: \"address\"\n            }\n        ],\n        anonymous: false\n    },\n    {\n        type: \"event\",\n        name: \"ModuleUninstallResult\",\n        inputs: [\n            {\n                name: \"module\",\n                type: \"address\",\n                indexed: false,\n                internalType: \"address\"\n            },\n            {\n                name: \"result\",\n                type: \"bool\",\n                indexed: false,\n                internalType: \"bool\"\n            }\n        ],\n        anonymous: false\n    },\n    {\n        type: \"event\",\n        name: \"ModuleUninstalled\",\n        inputs: [\n            {\n                name: \"moduleTypeId\",\n                type: \"uint256\",\n                indexed: false,\n                internalType: \"uint256\"\n            },\n            {\n                name: \"module\",\n                type: \"address\",\n                indexed: false,\n                internalType: \"address\"\n            }\n        ],\n        anonymous: false\n    },\n    {\n        type: \"event\",\n        name: \"NonceInvalidated\",\n        inputs: [\n            {\n                name: \"nonce\",\n                type: \"uint32\",\n                indexed: false,\n                internalType: \"uint32\"\n            }\n        ],\n        anonymous: false\n    },\n    {\n        type: \"event\",\n        name: \"PermissionInstalled\",\n        inputs: [\n            {\n                name: \"permission\",\n                type: \"bytes4\",\n                indexed: false,\n                internalType: \"PermissionId\"\n            },\n            {\n                name: \"nonce\",\n                type: \"uint32\",\n                indexed: false,\n                internalType: \"uint32\"\n            }\n        ],\n        anonymous: false\n    },\n    {\n        type: \"event\",\n        name: \"PermissionUninstalled\",\n        inputs: [\n            {\n                name: \"permission\",\n                type: \"bytes4\",\n                indexed: false,\n                internalType: \"PermissionId\"\n            }\n        ],\n        anonymous: false\n    },\n    {\n        type: \"event\",\n        name: \"Received\",\n        inputs: [\n            {\n                name: \"sender\",\n                type: \"address\",\n                indexed: false,\n                internalType: \"address\"\n            },\n            {\n                name: \"amount\",\n                type: \"uint256\",\n                indexed: false,\n                internalType: \"uint256\"\n            }\n        ],\n        anonymous: false\n    },\n    {\n        type: \"event\",\n        name: \"RootValidatorUpdated\",\n        inputs: [\n            {\n                name: \"rootValidator\",\n                type: \"bytes21\",\n                indexed: false,\n                internalType: \"ValidationId\"\n            }\n        ],\n        anonymous: false\n    },\n    {\n        type: \"event\",\n        name: \"SelectorSet\",\n        inputs: [\n            {\n                name: \"selector\",\n                type: \"bytes4\",\n                indexed: false,\n                internalType: \"bytes4\"\n            },\n            {\n                name: \"vId\",\n                type: \"bytes21\",\n                indexed: false,\n                internalType: \"ValidationId\"\n            },\n            {\n                name: \"allowed\",\n                type: \"bool\",\n                indexed: false,\n                internalType: \"bool\"\n            }\n        ],\n        anonymous: false\n    },\n    {\n        type: \"event\",\n        name: \"TryExecuteUnsuccessful\",\n        inputs: [\n            {\n                name: \"batchExecutionindex\",\n                type: \"uint256\",\n                indexed: false,\n                internalType: \"uint256\"\n            },\n            {\n                name: \"result\",\n                type: \"bytes\",\n                indexed: false,\n                internalType: \"bytes\"\n            }\n        ],\n        anonymous: false\n    },\n    {\n        type: \"event\",\n        name: \"Upgraded\",\n        inputs: [\n            {\n                name: \"implementation\",\n                type: \"address\",\n                indexed: true,\n                internalType: \"address\"\n            }\n        ],\n        anonymous: false\n    },\n    {\n        type: \"event\",\n        name: \"ValidatorInstalled\",\n        inputs: [\n            {\n                name: \"validator\",\n                type: \"address\",\n                indexed: false,\n                internalType: \"contract IValidator\"\n            },\n            {\n                name: \"nonce\",\n                type: \"uint32\",\n                indexed: false,\n                internalType: \"uint32\"\n            }\n        ],\n        anonymous: false\n    },\n    {\n        type: \"event\",\n        name: \"ValidatorUninstalled\",\n        inputs: [\n            {\n                name: \"validator\",\n                type: \"address\",\n                indexed: false,\n                internalType: \"contract IValidator\"\n            }\n        ],\n        anonymous: false\n    },\n    { type: \"error\", name: \"EnableNotApproved\", inputs: [] },\n    { type: \"error\", name: \"ExecutionReverted\", inputs: [] },\n    { type: \"error\", name: \"InvalidCallType\", inputs: [] },\n    { type: \"error\", name: \"InvalidCaller\", inputs: [] },\n    { type: \"error\", name: \"InvalidExecutor\", inputs: [] },\n    { type: \"error\", name: \"InvalidFallback\", inputs: [] },\n    { type: \"error\", name: \"InvalidMode\", inputs: [] },\n    { type: \"error\", name: \"InvalidModuleType\", inputs: [] },\n    { type: \"error\", name: \"InvalidNonce\", inputs: [] },\n    { type: \"error\", name: \"InvalidSelector\", inputs: [] },\n    { type: \"error\", name: \"InvalidSignature\", inputs: [] },\n    { type: \"error\", name: \"InvalidValidationType\", inputs: [] },\n    { type: \"error\", name: \"InvalidValidator\", inputs: [] },\n    { type: \"error\", name: \"NonceInvalidationError\", inputs: [] },\n    { type: \"error\", name: \"NotSupportedCallType\", inputs: [] },\n    { type: \"error\", name: \"OnlyExecuteUserOp\", inputs: [] },\n    { type: \"error\", name: \"PermissionDataLengthMismatch\", inputs: [] },\n    { type: \"error\", name: \"PermissionNotAlllowedForSignature\", inputs: [] },\n    { type: \"error\", name: \"PermissionNotAlllowedForUserOp\", inputs: [] },\n    { type: \"error\", name: \"PolicyDataTooLarge\", inputs: [] },\n    {\n        type: \"error\",\n        name: \"PolicyFailed\",\n        inputs: [{ name: \"i\", type: \"uint256\", internalType: \"uint256\" }]\n    },\n    { type: \"error\", name: \"PolicySignatureOrderError\", inputs: [] },\n    { type: \"error\", name: \"RootValidatorCannotBeRemoved\", inputs: [] },\n    { type: \"error\", name: \"SignerPrefixNotPresent\", inputs: [] }\n];\n//# sourceMappingURL=KernelAccountAbi.js.map","import { readContract } from \"viem/actions\";\nimport { getAction } from \"viem/utils\";\nimport { KernelV3AccountAbi } from \"../../../abi/kernel_v_3_0_0/KernelAccountAbi.js\";\nexport const getKernelV3Nonce = async (client, accountAddress) => {\n    try {\n        const nonce = await getAction(client, readContract, \"readContract\")({\n            abi: KernelV3AccountAbi,\n            address: accountAddress,\n            functionName: \"currentNonce\",\n            args: []\n        });\n        return nonce === 0 ? 1 : nonce;\n    }\n    catch (error) {\n        return 1;\n    }\n};\n//# sourceMappingURL=getKernelV3Nonce.js.map","export const EIP1271Abi = [\n    {\n        type: \"function\",\n        name: \"eip712Domain\",\n        inputs: [],\n        outputs: [\n            { name: \"fields\", type: \"bytes1\", internalType: \"bytes1\" },\n            { name: \"name\", type: \"string\", internalType: \"string\" },\n            { name: \"version\", type: \"string\", internalType: \"string\" },\n            { name: \"chainId\", type: \"uint256\", internalType: \"uint256\" },\n            {\n                name: \"verifyingContract\",\n                type: \"address\",\n                internalType: \"address\"\n            },\n            { name: \"salt\", type: \"bytes32\", internalType: \"bytes32\" },\n            { name: \"extensions\", type: \"uint256[]\", internalType: \"uint256[]\" }\n        ],\n        stateMutability: \"view\"\n    },\n    {\n        type: \"function\",\n        name: \"isValidSignature\",\n        inputs: [\n            { name: \"data\", type: \"bytes32\", internalType: \"bytes32\" },\n            { name: \"signature\", type: \"bytes\", internalType: \"bytes\" }\n        ],\n        outputs: [\n            { name: \"magicValue\", type: \"bytes4\", internalType: \"bytes4\" }\n        ],\n        stateMutability: \"view\"\n    }\n];\n//# sourceMappingURL=EIP1271Abi.js.map","import { decodeFunctionResult, encodeFunctionData, publicActions } from \"viem\";\nimport { KERNEL_NAME } from \"../../../../constants.js\";\nimport { EIP1271Abi } from \"../../abi/EIP1271Abi.js\";\nexport const accountMetadata = async (client, accountAddress, kernelVersion, chainId) => {\n    try {\n        const domain = await client.request({\n            method: \"eth_call\",\n            params: [\n                {\n                    to: accountAddress,\n                    data: encodeFunctionData({\n                        abi: EIP1271Abi,\n                        functionName: \"eip712Domain\"\n                    })\n                },\n                \"latest\"\n            ]\n        });\n        if (domain !== \"0x\") {\n            const decoded = decodeFunctionResult({\n                abi: [...EIP1271Abi],\n                functionName: \"eip712Domain\",\n                data: domain\n            });\n            return {\n                name: decoded[1],\n                version: decoded[2],\n                chainId: decoded[3]\n            };\n        }\n    }\n    catch (error) { }\n    return {\n        name: KERNEL_NAME,\n        version: kernelVersion === \"0.3.0\"\n            ? \"0.3.0-beta\"\n            : // TODO: remove this once 0.3.3 is released\n                kernelVersion === \"0.3.3\"\n                    ? \"0.3.2\"\n                    : kernelVersion,\n        chainId: BigInt(chainId ??\n            (client.chain\n                ? client.chain.id\n                : await client.extend(publicActions).getChainId()))\n    };\n};\n//# sourceMappingURL=accountMetadata.js.map","import { getAbiItem, toFunctionSelector } from \"viem\";\nimport { KernelAccountAbi } from \"../../abi/KernelAccountAbi.js\";\nimport { KernelV3AccountAbi } from \"../../abi/kernel_v_3_0_0/KernelAccountAbi.js\";\nexport const getActionSelector = (entryPointVersion) => {\n    if (entryPointVersion === \"0.6\") {\n        return toFunctionSelector(getAbiItem({ abi: KernelAccountAbi, name: \"execute\" }));\n    }\n    else if (entryPointVersion === \"0.7\") {\n        return toFunctionSelector(getAbiItem({ abi: KernelV3AccountAbi, name: \"execute\" }));\n    }\n    else {\n        throw new Error(\"Unsupported entry point version\");\n    }\n};\n//# sourceMappingURL=getActionSelector.js.map","import { concat, pad, toHex } from \"viem\";\nimport { ValidatorMode } from \"../../../../../types/index.js\";\nexport const getEncodedPluginsData = async ({ accountAddress, enableSignature, action, validator, validUntil, validAfter }) => {\n    const enableData = await validator.getEnableData(accountAddress);\n    const enableDataLength = enableData.length / 2 - 1;\n    return concat([\n        ValidatorMode.enable,\n        pad(toHex(validUntil, { size: 6 }), { size: 6 }), // 6 bytes 4 - 10\n        pad(toHex(validAfter), { size: 6 }), // 6 bytes 10 - 16\n        pad(validator.address, { size: 20 }), // 20 bytes 16 - 36\n        pad(action.address, { size: 20 }), // 20 bytes 36 - 56\n        pad(toHex(enableDataLength), { size: 32 }), // 32 bytes 56 - 88\n        enableData, // 88 - 88 + enableData.length\n        pad(toHex(enableSignature.length / 2 - 1), { size: 32 }), // 32 bytes 88 + enableData.length - 120 + enableData.length\n        enableSignature // 120 + enableData.length - 120 + enableData.length + enableSignature.length\n    ]);\n};\n//# sourceMappingURL=getEncodedPluginsData.js.map","import { concatHex, hexToBigInt, pad, toHex } from \"viem\";\nexport const getPluginsEnableTypedData = async ({ accountAddress, chainId, kernelVersion, action, validator, validUntil, validAfter }) => {\n    return {\n        domain: {\n            name: \"Kernel\",\n            version: kernelVersion,\n            chainId,\n            verifyingContract: accountAddress\n        },\n        types: {\n            ValidatorApproved: [\n                { name: \"sig\", type: \"bytes4\" },\n                { name: \"validatorData\", type: \"uint256\" },\n                { name: \"executor\", type: \"address\" },\n                { name: \"enableData\", type: \"bytes\" }\n            ]\n        },\n        message: {\n            sig: action.selector,\n            validatorData: hexToBigInt(concatHex([\n                pad(toHex(validUntil ?? 0), {\n                    size: 6\n                }),\n                pad(toHex(validAfter ?? 0), {\n                    size: 6\n                }),\n                validator.address\n            ]), { size: 32 }),\n            executor: action.address,\n            enableData: await validator.getEnableData(accountAddress)\n        },\n        primaryType: \"ValidatorApproved\"\n    };\n};\n//# sourceMappingURL=getPluginsEnableTypedData.js.map","import { concat, encodeAbiParameters, parseAbiParameters, zeroAddress } from \"viem\";\nimport { CALL_TYPE } from \"../../../../../constants.js\";\nexport const getEncodedPluginsData = async ({ enableSignature, userOpSignature, action, enableData, hook }) => {\n    return concat([\n        hook?.getIdentifier() ?? zeroAddress, // hook address 20 bytes\n        encodeAbiParameters(parseAbiParameters(\"bytes validatorData, bytes hookData, bytes selectorData, bytes enableSig, bytes userOpSig\"), [\n            enableData,\n            (await hook?.getEnableData()) ?? \"0x\",\n            concat([\n                action.selector,\n                action.address,\n                action.hook?.address ?? zeroAddress,\n                encodeAbiParameters(parseAbiParameters(\"bytes selectorInitData, bytes hookInitData\"), \n                // [TODO]: Add support for other call_type\n                [CALL_TYPE.DELEGATE_CALL, \"0x0000\"])\n            ]),\n            enableSignature,\n            userOpSignature\n        ])\n    ]);\n};\n//# sourceMappingURL=getEncodedPluginsData.js.map","import { concat, encodeAbiParameters, pad, parseAbiParameters, zeroAddress } from \"viem\";\nimport { CALL_TYPE, VALIDATOR_TYPE } from \"../../../../../constants.js\";\nexport const getPluginsEnableTypedData = async ({ accountAddress, chainId, kernelVersion, action, hook, validator, validatorNonce }) => {\n    return {\n        domain: {\n            name: \"Kernel\",\n            version: kernelVersion === \"0.3.0\" ? \"0.3.0-beta\" : kernelVersion,\n            chainId,\n            verifyingContract: accountAddress\n        },\n        types: {\n            Enable: [\n                { name: \"validationId\", type: \"bytes21\" },\n                { name: \"nonce\", type: \"uint32\" },\n                { name: \"hook\", type: \"address\" },\n                { name: \"validatorData\", type: \"bytes\" },\n                { name: \"hookData\", type: \"bytes\" },\n                { name: \"selectorData\", type: \"bytes\" }\n            ]\n        },\n        message: {\n            validationId: concat([\n                VALIDATOR_TYPE[validator.validatorType],\n                pad(validator.getIdentifier(), { size: 20, dir: \"right\" })\n            ]),\n            nonce: validatorNonce,\n            hook: hook?.getIdentifier() ?? zeroAddress,\n            validatorData: await validator.getEnableData(accountAddress),\n            hookData: (await hook?.getEnableData(accountAddress)) ?? \"0x\",\n            selectorData: concat([\n                action.selector,\n                action.address,\n                action.hook?.address ?? zeroAddress,\n                encodeAbiParameters(parseAbiParameters(\"bytes selectorInitData, bytes hookInitData\"), [CALL_TYPE.DELEGATE_CALL, \"0x0000\"])\n            ])\n        },\n        primaryType: \"Enable\"\n    };\n};\n//# sourceMappingURL=getPluginsEnableTypedData.js.map","import { readContract } from \"viem/actions\";\nimport { getAction } from \"viem/utils\";\nimport { KernelModuleIsInitializedAbi } from \"../../../abi/kernel_v_3_0_0/KernelModuleAbi.js\";\nexport const isPluginInitialized = async (client, accountAddress, pluginAddress) => {\n    try {\n        return await getAction(client, readContract, \"readContract\")({\n            abi: KernelModuleIsInitializedAbi,\n            address: pluginAddress,\n            functionName: \"isInitialized\",\n            args: [accountAddress]\n        });\n    }\n    catch (error) { }\n    return false;\n};\n//# sourceMappingURL=isPluginInitialized.js.map","import { satisfies } from \"semver\";\nimport { concat, concatHex, maxUint16, maxUint192, pad, toHex, zeroAddress } from \"viem\";\nimport { getChainId } from \"viem/actions\";\nimport { encodeModuleInstallCallData as encodeModuleInstallCallDataEpV06 } from \"../../accounts/kernel/utils/account/ep0_6/encodeModuleInstallCallData.js\";\nimport { ONLY_ENTRYPOINT_HOOK_ADDRESS, VALIDATOR_MODE, VALIDATOR_TYPE } from \"../../constants.js\";\nimport { ValidatorMode } from \"../../types/kernel.js\";\nimport { getKernelV3Nonce } from \"../kernel/utils/account/ep0_7/getKernelV3Nonce.js\";\nimport { accountMetadata } from \"../kernel/utils/common/accountMetadata.js\";\nimport { getActionSelector } from \"../kernel/utils/common/getActionSelector.js\";\nimport { getEncodedPluginsData as getEncodedPluginsDataV1 } from \"../kernel/utils/plugins/ep0_6/getEncodedPluginsData.js\";\nimport { getPluginsEnableTypedData as getPluginsEnableTypedDataV1 } from \"../kernel/utils/plugins/ep0_6/getPluginsEnableTypedData.js\";\nimport { getEncodedPluginsData as getEncodedPluginsDataV2 } from \"../kernel/utils/plugins/ep0_7/getEncodedPluginsData.js\";\nimport { getPluginsEnableTypedData as getPluginsEnableTypedDataV2 } from \"../kernel/utils/plugins/ep0_7/getPluginsEnableTypedData.js\";\nimport { isPluginInitialized } from \"../kernel/utils/plugins/ep0_7/isPluginInitialized.js\";\nexport function isKernelPluginManager(\n// biome-ignore lint/suspicious/noExplicitAny: <explanation>\nplugin) {\n    return plugin.getPluginEnableSignature !== undefined;\n}\nexport async function toKernelPluginManager(client, { sudo, regular, hook, pluginEnableSignature, validatorInitData, action, validAfter = 0, validUntil = 0, entryPoint, kernelVersion, chainId }) {\n    if ((sudo && !satisfies(kernelVersion, sudo?.supportedKernelVersions)) ||\n        (regular && !satisfies(kernelVersion, regular?.supportedKernelVersions))) {\n        throw new Error(\"Either sudo or/and regular validator version mismatch. Update to latest plugin package and use the proper plugin version\");\n    }\n    let pluginEnabled;\n    const activeValidator = regular || sudo;\n    if (!activeValidator) {\n        throw new Error(\"One of `sudo` or `regular` validator must be set\");\n    }\n    action = {\n        selector: action?.selector ?? getActionSelector(entryPoint.version),\n        address: action?.address ?? zeroAddress\n    };\n    if (entryPoint.version === \"0.7\" &&\n        (action.address.toLowerCase() !== zeroAddress.toLowerCase() ||\n            action.selector.toLowerCase() !==\n                getActionSelector(entryPoint.version).toLowerCase()) &&\n        kernelVersion === \"0.3.0\") {\n        action.hook = {\n            address: action.hook?.address ?? ONLY_ENTRYPOINT_HOOK_ADDRESS\n        };\n    }\n    if (!action) {\n        throw new Error(\"Action data must be set\");\n    }\n    const getSignatureData = async (accountAddress, selector, userOpSignature = \"0x\") => {\n        if (!action) {\n            throw new Error(\"Action data must be set\");\n        }\n        if (entryPoint.version === \"0.6\") {\n            if (regular) {\n                if (pluginEnabled) {\n                    return ValidatorMode.plugin;\n                }\n                if (await isPluginEnabled(accountAddress, selector)) {\n                    return ValidatorMode.plugin;\n                }\n                const enableSignature = await getPluginEnableSignature(accountAddress);\n                if (!enableSignature) {\n                    throw new Error(\"Enable signature not set\");\n                }\n                return getEncodedPluginsDataV1({\n                    accountAddress,\n                    enableSignature,\n                    action,\n                    validator: regular,\n                    validUntil,\n                    validAfter\n                });\n            }\n            else if (sudo) {\n                return ValidatorMode.sudo;\n            }\n            else {\n                throw new Error(\"One of `sudo` or `regular` validator must be set\");\n            }\n        }\n        if (regular) {\n            if (pluginEnabled) {\n                return userOpSignature;\n            }\n            if (await isPluginEnabled(accountAddress, action.selector)) {\n                return userOpSignature;\n            }\n            const enableSignature = await getPluginEnableSignature(accountAddress);\n            return getEncodedPluginsDataV2({\n                enableSignature,\n                userOpSignature,\n                action,\n                enableData: await regular.getEnableData(accountAddress),\n                hook\n            });\n        }\n        else if (sudo) {\n            return userOpSignature;\n        }\n        else {\n            throw new Error(\"One of `sudo` or `regular` validator must be set\");\n        }\n    };\n    const isPluginEnabled = async (accountAddress, selector) => {\n        if (!action) {\n            throw new Error(\"Action data must be set\");\n        }\n        if (!regular)\n            throw new Error(\"regular validator not set\");\n        if (entryPoint.version === \"0.6\") {\n            return regular.isEnabled(accountAddress, selector);\n        }\n        const isEnabled = (await regular.isEnabled(accountAddress, action.selector)) ||\n            (await isPluginInitialized(client, accountAddress, regular.address));\n        if (isEnabled) {\n            pluginEnabled = true;\n        }\n        return isEnabled;\n    };\n    const getPluginEnableSignature = async (accountAddress) => {\n        if (!action) {\n            throw new Error(\"Action data must be set\");\n        }\n        if (pluginEnableSignature)\n            return pluginEnableSignature;\n        if (!sudo)\n            throw new Error(\"sudo validator not set -- need it to enable the validator\");\n        if (!regular)\n            throw new Error(\"regular validator not set\");\n        const { version } = await accountMetadata(client, accountAddress, kernelVersion);\n        if (!chainId) {\n            chainId = client.chain?.id ?? (await getChainId(client));\n        }\n        let ownerSig;\n        if (entryPoint.version === \"0.6\") {\n            const typeData = await getPluginsEnableTypedDataV1({\n                accountAddress,\n                chainId,\n                kernelVersion: version ?? kernelVersion,\n                action,\n                validator: regular,\n                validUntil,\n                validAfter\n            });\n            ownerSig = await sudo.signTypedData(typeData);\n            pluginEnableSignature = ownerSig;\n            return ownerSig;\n        }\n        const validatorNonce = await getKernelV3Nonce(client, accountAddress);\n        const typedData = await getPluginsEnableTypedDataV2({\n            accountAddress,\n            chainId,\n            kernelVersion: version,\n            action,\n            hook,\n            validator: regular,\n            validatorNonce\n        });\n        ownerSig = await sudo.signTypedData(typedData);\n        pluginEnableSignature = ownerSig;\n        return ownerSig;\n    };\n    const getIdentifier = (isSudo = false) => {\n        const validator = (isSudo ? sudo : regular) ?? activeValidator;\n        return concat([\n            VALIDATOR_TYPE[validator.validatorType],\n            validator.getIdentifier()\n        ]);\n    };\n    const getPluginsEnableTypedData = async (accountAddress) => {\n        if (!action) {\n            throw new Error(\"Action data must be set\");\n        }\n        if (!sudo)\n            throw new Error(\"sudo validator not set -- need it to enable the validator\");\n        if (!regular)\n            throw new Error(\"regular validator not set\");\n        const { version } = await accountMetadata(client, accountAddress, kernelVersion);\n        const validatorNonce = await getKernelV3Nonce(client, accountAddress);\n        if (!chainId) {\n            chainId = client.chain?.id ?? (await getChainId(client));\n        }\n        const typedData = await getPluginsEnableTypedDataV2({\n            accountAddress,\n            chainId,\n            kernelVersion: version,\n            action,\n            validator: regular,\n            validatorNonce\n        });\n        return typedData;\n    };\n    return {\n        sudoValidator: sudo,\n        regularValidator: regular,\n        activeValidatorMode: sudo && !regular ? \"sudo\" : \"regular\",\n        ...activeValidator,\n        hook,\n        getIdentifier,\n        encodeModuleInstallCallData: async (accountAddress) => {\n            if (!action) {\n                throw new Error(\"Action data must be set\");\n            }\n            if (!regular)\n                throw new Error(\"regular validator not set\");\n            if (entryPoint.version === \"0.6\") {\n                return await encodeModuleInstallCallDataEpV06({\n                    accountAddress,\n                    selector: action.selector,\n                    executor: action.address,\n                    validator: regular?.address,\n                    validUntil,\n                    validAfter,\n                    enableData: await regular.getEnableData(accountAddress)\n                });\n            }\n            throw new Error(\"EntryPoint v0.7 not supported yet\");\n        },\n        signUserOperation: async (userOperation) => {\n            const userOpSig = await activeValidator.signUserOperation(userOperation);\n            if (entryPoint.version === \"0.6\") {\n                return concatHex([\n                    await getSignatureData(userOperation.sender, userOperation.callData.toString().slice(0, 10)),\n                    userOpSig\n                ]);\n            }\n            return await getSignatureData(userOperation.sender, userOperation.callData.toString().slice(0, 10), userOpSig);\n        },\n        getAction: () => {\n            if (!action) {\n                throw new Error(\"Action data must be set\");\n            }\n            return action;\n        },\n        getValidityData: () => ({\n            validAfter,\n            validUntil\n        }),\n        getStubSignature: async (userOperation) => {\n            const userOpSig = await activeValidator.getStubSignature(userOperation);\n            if (entryPoint.version === \"0.6\") {\n                return concatHex([\n                    await getSignatureData(userOperation.sender, userOperation.callData.toString().slice(0, 10)),\n                    userOpSig\n                ]);\n            }\n            return await getSignatureData(userOperation.sender, userOperation.callData.toString().slice(0, 10), userOpSig);\n        },\n        getNonceKey: async (accountAddress = zeroAddress, customNonceKey = 0n) => {\n            if (!action) {\n                throw new Error(\"Action data must be set\");\n            }\n            if (entryPoint.version === \"0.6\") {\n                if (customNonceKey > maxUint192) {\n                    throw new Error(\"Custom nonce key must be equal or less than maxUint192 for 0.6\");\n                }\n                return await activeValidator.getNonceKey(accountAddress, customNonceKey);\n            }\n            if (customNonceKey > maxUint16)\n                throw new Error(\"Custom nonce key must be equal or less than 2 bytes(maxUint16) for v0.7\");\n            const validatorMode = !regular ||\n                (await isPluginEnabled(accountAddress, action.selector))\n                ? VALIDATOR_MODE.DEFAULT\n                : VALIDATOR_MODE.ENABLE;\n            const validatorType = regular\n                ? VALIDATOR_TYPE[regular.validatorType]\n                : VALIDATOR_TYPE.SUDO;\n            const encoding = pad(concatHex([\n                validatorMode, // 1 byte\n                validatorType, // 1 byte\n                pad(activeValidator.getIdentifier(), {\n                    size: 20,\n                    dir: \"right\"\n                }), // 20 bytes\n                pad(toHex(await activeValidator.getNonceKey(accountAddress, customNonceKey)), {\n                    size: 2\n                }) // 2 byte\n            ]), { size: 24 });\n            const encodedNonceKey = BigInt(encoding);\n            return encodedNonceKey;\n        },\n        getPluginEnableSignature,\n        getPluginsEnableTypedData,\n        getValidatorInitData: async () => {\n            if (validatorInitData)\n                return validatorInitData;\n            return {\n                validatorAddress: sudo?.address ?? activeValidator.address,\n                enableData: (await sudo?.getEnableData()) ??\n                    (await activeValidator.getEnableData()),\n                identifier: pad(getIdentifier(true), { size: 21, dir: \"right\" })\n            };\n        },\n        signUserOperationWithActiveValidator: async (userOperation) => {\n            return activeValidator.signUserOperation(userOperation);\n        }\n    };\n}\n//# sourceMappingURL=toKernelPluginManager.js.map","export const KernelV3FactoryAbi = [\n    {\n        type: \"constructor\",\n        inputs: [{ name: \"_impl\", type: \"address\", internalType: \"address\" }],\n        stateMutability: \"nonpayable\"\n    },\n    {\n        type: \"function\",\n        name: \"createAccount\",\n        inputs: [\n            { name: \"data\", type: \"bytes\", internalType: \"bytes\" },\n            { name: \"salt\", type: \"bytes32\", internalType: \"bytes32\" }\n        ],\n        outputs: [{ name: \"\", type: \"address\", internalType: \"address\" }],\n        stateMutability: \"payable\"\n    },\n    {\n        type: \"function\",\n        name: \"getAddress\",\n        inputs: [\n            { name: \"data\", type: \"bytes\", internalType: \"bytes\" },\n            { name: \"salt\", type: \"bytes32\", internalType: \"bytes32\" }\n        ],\n        outputs: [{ name: \"\", type: \"address\", internalType: \"address\" }],\n        stateMutability: \"view\"\n    },\n    {\n        type: \"function\",\n        name: \"implementation\",\n        inputs: [],\n        outputs: [{ name: \"\", type: \"address\", internalType: \"address\" }],\n        stateMutability: \"view\"\n    },\n    { type: \"error\", name: \"InitializeError\", inputs: [] }\n];\n//# sourceMappingURL=KernelFactoryAbi.js.map","export const KernelFactoryStakerAbi = [\n    {\n        type: \"constructor\",\n        inputs: [{ name: \"_owner\", type: \"address\", internalType: \"address\" }],\n        stateMutability: \"nonpayable\"\n    },\n    {\n        type: \"function\",\n        name: \"approveFactory\",\n        inputs: [\n            {\n                name: \"factory\",\n                type: \"address\",\n                internalType: \"contract KernelFactory\"\n            },\n            { name: \"approval\", type: \"bool\", internalType: \"bool\" }\n        ],\n        outputs: [],\n        stateMutability: \"payable\"\n    },\n    {\n        type: \"function\",\n        name: \"approved\",\n        inputs: [\n            {\n                name: \"\",\n                type: \"address\",\n                internalType: \"contract KernelFactory\"\n            }\n        ],\n        outputs: [{ name: \"\", type: \"bool\", internalType: \"bool\" }],\n        stateMutability: \"view\"\n    },\n    {\n        type: \"function\",\n        name: \"cancelOwnershipHandover\",\n        inputs: [],\n        outputs: [],\n        stateMutability: \"payable\"\n    },\n    {\n        type: \"function\",\n        name: \"completeOwnershipHandover\",\n        inputs: [\n            { name: \"pendingOwner\", type: \"address\", internalType: \"address\" }\n        ],\n        outputs: [],\n        stateMutability: \"payable\"\n    },\n    {\n        type: \"function\",\n        name: \"deployWithFactory\",\n        inputs: [\n            {\n                name: \"factory\",\n                type: \"address\",\n                internalType: \"contract KernelFactory\"\n            },\n            { name: \"createData\", type: \"bytes\", internalType: \"bytes\" },\n            { name: \"salt\", type: \"bytes32\", internalType: \"bytes32\" }\n        ],\n        outputs: [{ name: \"\", type: \"address\", internalType: \"address\" }],\n        stateMutability: \"payable\"\n    },\n    {\n        type: \"function\",\n        name: \"owner\",\n        inputs: [],\n        outputs: [{ name: \"result\", type: \"address\", internalType: \"address\" }],\n        stateMutability: \"view\"\n    },\n    {\n        type: \"function\",\n        name: \"ownershipHandoverExpiresAt\",\n        inputs: [\n            { name: \"pendingOwner\", type: \"address\", internalType: \"address\" }\n        ],\n        outputs: [{ name: \"result\", type: \"uint256\", internalType: \"uint256\" }],\n        stateMutability: \"view\"\n    },\n    {\n        type: \"function\",\n        name: \"renounceOwnership\",\n        inputs: [],\n        outputs: [],\n        stateMutability: \"payable\"\n    },\n    {\n        type: \"function\",\n        name: \"requestOwnershipHandover\",\n        inputs: [],\n        outputs: [],\n        stateMutability: \"payable\"\n    },\n    {\n        type: \"function\",\n        name: \"stake\",\n        inputs: [\n            {\n                name: \"entryPoint\",\n                type: \"address\",\n                internalType: \"contract IEntryPoint\"\n            },\n            { name: \"unstakeDelay\", type: \"uint32\", internalType: \"uint32\" }\n        ],\n        outputs: [],\n        stateMutability: \"payable\"\n    },\n    {\n        type: \"function\",\n        name: \"transferOwnership\",\n        inputs: [\n            { name: \"newOwner\", type: \"address\", internalType: \"address\" }\n        ],\n        outputs: [],\n        stateMutability: \"payable\"\n    },\n    {\n        type: \"function\",\n        name: \"unlockStake\",\n        inputs: [\n            {\n                name: \"entryPoint\",\n                type: \"address\",\n                internalType: \"contract IEntryPoint\"\n            }\n        ],\n        outputs: [],\n        stateMutability: \"payable\"\n    },\n    {\n        type: \"function\",\n        name: \"withdrawStake\",\n        inputs: [\n            {\n                name: \"entryPoint\",\n                type: \"address\",\n                internalType: \"contract IEntryPoint\"\n            },\n            {\n                name: \"recipient\",\n                type: \"address\",\n                internalType: \"address payable\"\n            }\n        ],\n        outputs: [],\n        stateMutability: \"payable\"\n    },\n    {\n        type: \"event\",\n        name: \"OwnershipHandoverCanceled\",\n        inputs: [\n            {\n                name: \"pendingOwner\",\n                type: \"address\",\n                indexed: true,\n                internalType: \"address\"\n            }\n        ],\n        anonymous: false\n    },\n    {\n        type: \"event\",\n        name: \"OwnershipHandoverRequested\",\n        inputs: [\n            {\n                name: \"pendingOwner\",\n                type: \"address\",\n                indexed: true,\n                internalType: \"address\"\n            }\n        ],\n        anonymous: false\n    },\n    {\n        type: \"event\",\n        name: \"OwnershipTransferred\",\n        inputs: [\n            {\n                name: \"oldOwner\",\n                type: \"address\",\n                indexed: true,\n                internalType: \"address\"\n            },\n            {\n                name: \"newOwner\",\n                type: \"address\",\n                indexed: true,\n                internalType: \"address\"\n            }\n        ],\n        anonymous: false\n    },\n    { type: \"error\", name: \"AlreadyInitialized\", inputs: [] },\n    { type: \"error\", name: \"NewOwnerIsZeroAddress\", inputs: [] },\n    { type: \"error\", name: \"NoHandoverRequest\", inputs: [] },\n    { type: \"error\", name: \"NotApprovedFactory\", inputs: [] },\n    { type: \"error\", name: \"Unauthorized\", inputs: [] }\n];\n//# sourceMappingURL=KernelFactoryStakerAbi.js.map","export const KernelV3_1AccountAbi = [\n    {\n        type: \"constructor\",\n        inputs: [\n            {\n                name: \"_entrypoint\",\n                type: \"address\",\n                internalType: \"contract IEntryPoint\"\n            }\n        ],\n        stateMutability: \"nonpayable\"\n    },\n    { type: \"fallback\", stateMutability: \"payable\" },\n    { type: \"receive\", stateMutability: \"payable\" },\n    {\n        type: \"function\",\n        name: \"accountId\",\n        inputs: [],\n        outputs: [\n            {\n                name: \"accountImplementationId\",\n                type: \"string\",\n                internalType: \"string\"\n            }\n        ],\n        stateMutability: \"pure\"\n    },\n    {\n        type: \"function\",\n        name: \"changeRootValidator\",\n        inputs: [\n            {\n                name: \"_rootValidator\",\n                type: \"bytes21\",\n                internalType: \"ValidationId\"\n            },\n            { name: \"hook\", type: \"address\", internalType: \"contract IHook\" },\n            { name: \"validatorData\", type: \"bytes\", internalType: \"bytes\" },\n            { name: \"hookData\", type: \"bytes\", internalType: \"bytes\" }\n        ],\n        outputs: [],\n        stateMutability: \"payable\"\n    },\n    {\n        type: \"function\",\n        name: \"currentNonce\",\n        inputs: [],\n        outputs: [{ name: \"\", type: \"uint32\", internalType: \"uint32\" }],\n        stateMutability: \"view\"\n    },\n    {\n        type: \"function\",\n        name: \"eip712Domain\",\n        inputs: [],\n        outputs: [\n            { name: \"fields\", type: \"bytes1\", internalType: \"bytes1\" },\n            { name: \"name\", type: \"string\", internalType: \"string\" },\n            { name: \"version\", type: \"string\", internalType: \"string\" },\n            { name: \"chainId\", type: \"uint256\", internalType: \"uint256\" },\n            {\n                name: \"verifyingContract\",\n                type: \"address\",\n                internalType: \"address\"\n            },\n            { name: \"salt\", type: \"bytes32\", internalType: \"bytes32\" },\n            {\n                name: \"extensions\",\n                type: \"uint256[]\",\n                internalType: \"uint256[]\"\n            }\n        ],\n        stateMutability: \"view\"\n    },\n    {\n        type: \"function\",\n        name: \"entrypoint\",\n        inputs: [],\n        outputs: [\n            {\n                name: \"\",\n                type: \"address\",\n                internalType: \"contract IEntryPoint\"\n            }\n        ],\n        stateMutability: \"view\"\n    },\n    {\n        type: \"function\",\n        name: \"execute\",\n        inputs: [\n            { name: \"execMode\", type: \"bytes32\", internalType: \"ExecMode\" },\n            {\n                name: \"executionCalldata\",\n                type: \"bytes\",\n                internalType: \"bytes\"\n            }\n        ],\n        outputs: [],\n        stateMutability: \"payable\"\n    },\n    {\n        type: \"function\",\n        name: \"executeFromExecutor\",\n        inputs: [\n            { name: \"execMode\", type: \"bytes32\", internalType: \"ExecMode\" },\n            {\n                name: \"executionCalldata\",\n                type: \"bytes\",\n                internalType: \"bytes\"\n            }\n        ],\n        outputs: [\n            { name: \"returnData\", type: \"bytes[]\", internalType: \"bytes[]\" }\n        ],\n        stateMutability: \"payable\"\n    },\n    {\n        type: \"function\",\n        name: \"executeUserOp\",\n        inputs: [\n            {\n                name: \"userOp\",\n                type: \"tuple\",\n                internalType: \"struct PackedUserOperation\",\n                components: [\n                    {\n                        name: \"sender\",\n                        type: \"address\",\n                        internalType: \"address\"\n                    },\n                    { name: \"nonce\", type: \"uint256\", internalType: \"uint256\" },\n                    { name: \"initCode\", type: \"bytes\", internalType: \"bytes\" },\n                    { name: \"callData\", type: \"bytes\", internalType: \"bytes\" },\n                    {\n                        name: \"accountGasLimits\",\n                        type: \"bytes32\",\n                        internalType: \"bytes32\"\n                    },\n                    {\n                        name: \"preVerificationGas\",\n                        type: \"uint256\",\n                        internalType: \"uint256\"\n                    },\n                    {\n                        name: \"gasFees\",\n                        type: \"bytes32\",\n                        internalType: \"bytes32\"\n                    },\n                    {\n                        name: \"paymasterAndData\",\n                        type: \"bytes\",\n                        internalType: \"bytes\"\n                    },\n                    { name: \"signature\", type: \"bytes\", internalType: \"bytes\" }\n                ]\n            },\n            { name: \"userOpHash\", type: \"bytes32\", internalType: \"bytes32\" }\n        ],\n        outputs: [],\n        stateMutability: \"payable\"\n    },\n    {\n        type: \"function\",\n        name: \"executorConfig\",\n        inputs: [\n            {\n                name: \"executor\",\n                type: \"address\",\n                internalType: \"contract IExecutor\"\n            }\n        ],\n        outputs: [\n            {\n                name: \"\",\n                type: \"tuple\",\n                internalType: \"struct ExecutorManager.ExecutorConfig\",\n                components: [\n                    {\n                        name: \"hook\",\n                        type: \"address\",\n                        internalType: \"contract IHook\"\n                    }\n                ]\n            }\n        ],\n        stateMutability: \"view\"\n    },\n    {\n        type: \"function\",\n        name: \"initialize\",\n        inputs: [\n            {\n                name: \"_rootValidator\",\n                type: \"bytes21\",\n                internalType: \"ValidationId\"\n            },\n            { name: \"hook\", type: \"address\", internalType: \"contract IHook\" },\n            { name: \"validatorData\", type: \"bytes\", internalType: \"bytes\" },\n            { name: \"hookData\", type: \"bytes\", internalType: \"bytes\" },\n            { name: \"initConfig\", type: \"bytes[]\", internalType: \"bytes[]\" }\n        ],\n        outputs: [],\n        stateMutability: \"nonpayable\"\n    },\n    {\n        type: \"function\",\n        name: \"installModule\",\n        inputs: [\n            { name: \"moduleType\", type: \"uint256\", internalType: \"uint256\" },\n            { name: \"module\", type: \"address\", internalType: \"address\" },\n            { name: \"initData\", type: \"bytes\", internalType: \"bytes\" }\n        ],\n        outputs: [],\n        stateMutability: \"payable\"\n    },\n    {\n        type: \"function\",\n        name: \"installValidations\",\n        inputs: [\n            {\n                name: \"vIds\",\n                type: \"bytes21[]\",\n                internalType: \"ValidationId[]\"\n            },\n            {\n                name: \"configs\",\n                type: \"tuple[]\",\n                internalType: \"struct ValidationManager.ValidationConfig[]\",\n                components: [\n                    { name: \"nonce\", type: \"uint32\", internalType: \"uint32\" },\n                    {\n                        name: \"hook\",\n                        type: \"address\",\n                        internalType: \"contract IHook\"\n                    }\n                ]\n            },\n            {\n                name: \"validationData\",\n                type: \"bytes[]\",\n                internalType: \"bytes[]\"\n            },\n            { name: \"hookData\", type: \"bytes[]\", internalType: \"bytes[]\" }\n        ],\n        outputs: [],\n        stateMutability: \"payable\"\n    },\n    {\n        type: \"function\",\n        name: \"invalidateNonce\",\n        inputs: [{ name: \"nonce\", type: \"uint32\", internalType: \"uint32\" }],\n        outputs: [],\n        stateMutability: \"payable\"\n    },\n    {\n        type: \"function\",\n        name: \"isAllowedSelector\",\n        inputs: [\n            { name: \"vId\", type: \"bytes21\", internalType: \"ValidationId\" },\n            { name: \"selector\", type: \"bytes4\", internalType: \"bytes4\" }\n        ],\n        outputs: [{ name: \"\", type: \"bool\", internalType: \"bool\" }],\n        stateMutability: \"view\"\n    },\n    {\n        type: \"function\",\n        name: \"isModuleInstalled\",\n        inputs: [\n            { name: \"moduleType\", type: \"uint256\", internalType: \"uint256\" },\n            { name: \"module\", type: \"address\", internalType: \"address\" },\n            {\n                name: \"additionalContext\",\n                type: \"bytes\",\n                internalType: \"bytes\"\n            }\n        ],\n        outputs: [{ name: \"\", type: \"bool\", internalType: \"bool\" }],\n        stateMutability: \"view\"\n    },\n    {\n        type: \"function\",\n        name: \"isValidSignature\",\n        inputs: [\n            { name: \"hash\", type: \"bytes32\", internalType: \"bytes32\" },\n            { name: \"signature\", type: \"bytes\", internalType: \"bytes\" }\n        ],\n        outputs: [{ name: \"\", type: \"bytes4\", internalType: \"bytes4\" }],\n        stateMutability: \"view\"\n    },\n    {\n        type: \"function\",\n        name: \"onERC1155BatchReceived\",\n        inputs: [\n            { name: \"\", type: \"address\", internalType: \"address\" },\n            { name: \"\", type: \"address\", internalType: \"address\" },\n            { name: \"\", type: \"uint256[]\", internalType: \"uint256[]\" },\n            { name: \"\", type: \"uint256[]\", internalType: \"uint256[]\" },\n            { name: \"\", type: \"bytes\", internalType: \"bytes\" }\n        ],\n        outputs: [{ name: \"\", type: \"bytes4\", internalType: \"bytes4\" }],\n        stateMutability: \"pure\"\n    },\n    {\n        type: \"function\",\n        name: \"onERC1155Received\",\n        inputs: [\n            { name: \"\", type: \"address\", internalType: \"address\" },\n            { name: \"\", type: \"address\", internalType: \"address\" },\n            { name: \"\", type: \"uint256\", internalType: \"uint256\" },\n            { name: \"\", type: \"uint256\", internalType: \"uint256\" },\n            { name: \"\", type: \"bytes\", internalType: \"bytes\" }\n        ],\n        outputs: [{ name: \"\", type: \"bytes4\", internalType: \"bytes4\" }],\n        stateMutability: \"pure\"\n    },\n    {\n        type: \"function\",\n        name: \"onERC721Received\",\n        inputs: [\n            { name: \"\", type: \"address\", internalType: \"address\" },\n            { name: \"\", type: \"address\", internalType: \"address\" },\n            { name: \"\", type: \"uint256\", internalType: \"uint256\" },\n            { name: \"\", type: \"bytes\", internalType: \"bytes\" }\n        ],\n        outputs: [{ name: \"\", type: \"bytes4\", internalType: \"bytes4\" }],\n        stateMutability: \"pure\"\n    },\n    {\n        type: \"function\",\n        name: \"permissionConfig\",\n        inputs: [{ name: \"pId\", type: \"bytes4\", internalType: \"PermissionId\" }],\n        outputs: [\n            {\n                name: \"\",\n                type: \"tuple\",\n                internalType: \"struct ValidationManager.PermissionConfig\",\n                components: [\n                    {\n                        name: \"permissionFlag\",\n                        type: \"bytes2\",\n                        internalType: \"PassFlag\"\n                    },\n                    {\n                        name: \"signer\",\n                        type: \"address\",\n                        internalType: \"contract ISigner\"\n                    },\n                    {\n                        name: \"policyData\",\n                        type: \"bytes22[]\",\n                        internalType: \"PolicyData[]\"\n                    }\n                ]\n            }\n        ],\n        stateMutability: \"view\"\n    },\n    {\n        type: \"function\",\n        name: \"rootValidator\",\n        inputs: [],\n        outputs: [{ name: \"\", type: \"bytes21\", internalType: \"ValidationId\" }],\n        stateMutability: \"view\"\n    },\n    {\n        type: \"function\",\n        name: \"selectorConfig\",\n        inputs: [{ name: \"selector\", type: \"bytes4\", internalType: \"bytes4\" }],\n        outputs: [\n            {\n                name: \"\",\n                type: \"tuple\",\n                internalType: \"struct SelectorManager.SelectorConfig\",\n                components: [\n                    {\n                        name: \"hook\",\n                        type: \"address\",\n                        internalType: \"contract IHook\"\n                    },\n                    {\n                        name: \"target\",\n                        type: \"address\",\n                        internalType: \"address\"\n                    },\n                    {\n                        name: \"callType\",\n                        type: \"bytes1\",\n                        internalType: \"CallType\"\n                    }\n                ]\n            }\n        ],\n        stateMutability: \"view\"\n    },\n    {\n        type: \"function\",\n        name: \"supportsExecutionMode\",\n        inputs: [{ name: \"mode\", type: \"bytes32\", internalType: \"ExecMode\" }],\n        outputs: [{ name: \"\", type: \"bool\", internalType: \"bool\" }],\n        stateMutability: \"pure\"\n    },\n    {\n        type: \"function\",\n        name: \"supportsModule\",\n        inputs: [\n            { name: \"moduleTypeId\", type: \"uint256\", internalType: \"uint256\" }\n        ],\n        outputs: [{ name: \"\", type: \"bool\", internalType: \"bool\" }],\n        stateMutability: \"pure\"\n    },\n    {\n        type: \"function\",\n        name: \"uninstallModule\",\n        inputs: [\n            { name: \"moduleType\", type: \"uint256\", internalType: \"uint256\" },\n            { name: \"module\", type: \"address\", internalType: \"address\" },\n            { name: \"deInitData\", type: \"bytes\", internalType: \"bytes\" }\n        ],\n        outputs: [],\n        stateMutability: \"payable\"\n    },\n    {\n        type: \"function\",\n        name: \"uninstallValidation\",\n        inputs: [\n            { name: \"vId\", type: \"bytes21\", internalType: \"ValidationId\" },\n            { name: \"deinitData\", type: \"bytes\", internalType: \"bytes\" },\n            { name: \"hookDeinitData\", type: \"bytes\", internalType: \"bytes\" }\n        ],\n        outputs: [],\n        stateMutability: \"payable\"\n    },\n    {\n        type: \"function\",\n        name: \"upgradeTo\",\n        inputs: [\n            {\n                name: \"_newImplementation\",\n                type: \"address\",\n                internalType: \"address\"\n            }\n        ],\n        outputs: [],\n        stateMutability: \"payable\"\n    },\n    {\n        type: \"function\",\n        name: \"validNonceFrom\",\n        inputs: [],\n        outputs: [{ name: \"\", type: \"uint32\", internalType: \"uint32\" }],\n        stateMutability: \"view\"\n    },\n    {\n        type: \"function\",\n        name: \"validateUserOp\",\n        inputs: [\n            {\n                name: \"userOp\",\n                type: \"tuple\",\n                internalType: \"struct PackedUserOperation\",\n                components: [\n                    {\n                        name: \"sender\",\n                        type: \"address\",\n                        internalType: \"address\"\n                    },\n                    { name: \"nonce\", type: \"uint256\", internalType: \"uint256\" },\n                    { name: \"initCode\", type: \"bytes\", internalType: \"bytes\" },\n                    { name: \"callData\", type: \"bytes\", internalType: \"bytes\" },\n                    {\n                        name: \"accountGasLimits\",\n                        type: \"bytes32\",\n                        internalType: \"bytes32\"\n                    },\n                    {\n                        name: \"preVerificationGas\",\n                        type: \"uint256\",\n                        internalType: \"uint256\"\n                    },\n                    {\n                        name: \"gasFees\",\n                        type: \"bytes32\",\n                        internalType: \"bytes32\"\n                    },\n                    {\n                        name: \"paymasterAndData\",\n                        type: \"bytes\",\n                        internalType: \"bytes\"\n                    },\n                    { name: \"signature\", type: \"bytes\", internalType: \"bytes\" }\n                ]\n            },\n            { name: \"userOpHash\", type: \"bytes32\", internalType: \"bytes32\" },\n            {\n                name: \"missingAccountFunds\",\n                type: \"uint256\",\n                internalType: \"uint256\"\n            }\n        ],\n        outputs: [\n            {\n                name: \"validationData\",\n                type: \"uint256\",\n                internalType: \"ValidationData\"\n            }\n        ],\n        stateMutability: \"payable\"\n    },\n    {\n        type: \"function\",\n        name: \"validationConfig\",\n        inputs: [\n            { name: \"vId\", type: \"bytes21\", internalType: \"ValidationId\" }\n        ],\n        outputs: [\n            {\n                name: \"\",\n                type: \"tuple\",\n                internalType: \"struct ValidationManager.ValidationConfig\",\n                components: [\n                    { name: \"nonce\", type: \"uint32\", internalType: \"uint32\" },\n                    {\n                        name: \"hook\",\n                        type: \"address\",\n                        internalType: \"contract IHook\"\n                    }\n                ]\n            }\n        ],\n        stateMutability: \"view\"\n    },\n    {\n        type: \"event\",\n        name: \"ModuleInstalled\",\n        inputs: [\n            {\n                name: \"moduleTypeId\",\n                type: \"uint256\",\n                indexed: false,\n                internalType: \"uint256\"\n            },\n            {\n                name: \"module\",\n                type: \"address\",\n                indexed: false,\n                internalType: \"address\"\n            }\n        ],\n        anonymous: false\n    },\n    {\n        type: \"event\",\n        name: \"ModuleUninstallResult\",\n        inputs: [\n            {\n                name: \"module\",\n                type: \"address\",\n                indexed: false,\n                internalType: \"address\"\n            },\n            {\n                name: \"result\",\n                type: \"bool\",\n                indexed: false,\n                internalType: \"bool\"\n            }\n        ],\n        anonymous: false\n    },\n    {\n        type: \"event\",\n        name: \"ModuleUninstalled\",\n        inputs: [\n            {\n                name: \"moduleTypeId\",\n                type: \"uint256\",\n                indexed: false,\n                internalType: \"uint256\"\n            },\n            {\n                name: \"module\",\n                type: \"address\",\n                indexed: false,\n                internalType: \"address\"\n            }\n        ],\n        anonymous: false\n    },\n    {\n        type: \"event\",\n        name: \"NonceInvalidated\",\n        inputs: [\n            {\n                name: \"nonce\",\n                type: \"uint32\",\n                indexed: false,\n                internalType: \"uint32\"\n            }\n        ],\n        anonymous: false\n    },\n    {\n        type: \"event\",\n        name: \"PermissionInstalled\",\n        inputs: [\n            {\n                name: \"permission\",\n                type: \"bytes4\",\n                indexed: false,\n                internalType: \"PermissionId\"\n            },\n            {\n                name: \"nonce\",\n                type: \"uint32\",\n                indexed: false,\n                internalType: \"uint32\"\n            }\n        ],\n        anonymous: false\n    },\n    {\n        type: \"event\",\n        name: \"PermissionUninstalled\",\n        inputs: [\n            {\n                name: \"permission\",\n                type: \"bytes4\",\n                indexed: false,\n                internalType: \"PermissionId\"\n            }\n        ],\n        anonymous: false\n    },\n    {\n        type: \"event\",\n        name: \"Received\",\n        inputs: [\n            {\n                name: \"sender\",\n                type: \"address\",\n                indexed: false,\n                internalType: \"address\"\n            },\n            {\n                name: \"amount\",\n                type: \"uint256\",\n                indexed: false,\n                internalType: \"uint256\"\n            }\n        ],\n        anonymous: false\n    },\n    {\n        type: \"event\",\n        name: \"RootValidatorUpdated\",\n        inputs: [\n            {\n                name: \"rootValidator\",\n                type: \"bytes21\",\n                indexed: false,\n                internalType: \"ValidationId\"\n            }\n        ],\n        anonymous: false\n    },\n    {\n        type: \"event\",\n        name: \"SelectorSet\",\n        inputs: [\n            {\n                name: \"selector\",\n                type: \"bytes4\",\n                indexed: false,\n                internalType: \"bytes4\"\n            },\n            {\n                name: \"vId\",\n                type: \"bytes21\",\n                indexed: false,\n                internalType: \"ValidationId\"\n            },\n            {\n                name: \"allowed\",\n                type: \"bool\",\n                indexed: false,\n                internalType: \"bool\"\n            }\n        ],\n        anonymous: false\n    },\n    {\n        type: \"event\",\n        name: \"TryExecuteUnsuccessful\",\n        inputs: [\n            {\n                name: \"batchExecutionindex\",\n                type: \"uint256\",\n                indexed: false,\n                internalType: \"uint256\"\n            },\n            {\n                name: \"result\",\n                type: \"bytes\",\n                indexed: false,\n                internalType: \"bytes\"\n            }\n        ],\n        anonymous: false\n    },\n    {\n        type: \"event\",\n        name: \"Upgraded\",\n        inputs: [\n            {\n                name: \"implementation\",\n                type: \"address\",\n                indexed: true,\n                internalType: \"address\"\n            }\n        ],\n        anonymous: false\n    },\n    {\n        type: \"event\",\n        name: \"ValidatorInstalled\",\n        inputs: [\n            {\n                name: \"validator\",\n                type: \"address\",\n                indexed: false,\n                internalType: \"contract IValidator\"\n            },\n            {\n                name: \"nonce\",\n                type: \"uint32\",\n                indexed: false,\n                internalType: \"uint32\"\n            }\n        ],\n        anonymous: false\n    },\n    {\n        type: \"event\",\n        name: \"ValidatorUninstalled\",\n        inputs: [\n            {\n                name: \"validator\",\n                type: \"address\",\n                indexed: false,\n                internalType: \"contract IValidator\"\n            }\n        ],\n        anonymous: false\n    },\n    { type: \"error\", name: \"EnableNotApproved\", inputs: [] },\n    { type: \"error\", name: \"ExecutionReverted\", inputs: [] },\n    {\n        type: \"error\",\n        name: \"InitConfigError\",\n        inputs: [{ name: \"idx\", type: \"uint256\", internalType: \"uint256\" }]\n    },\n    { type: \"error\", name: \"InvalidCallType\", inputs: [] },\n    { type: \"error\", name: \"InvalidCaller\", inputs: [] },\n    { type: \"error\", name: \"InvalidExecutor\", inputs: [] },\n    { type: \"error\", name: \"InvalidFallback\", inputs: [] },\n    { type: \"error\", name: \"InvalidMode\", inputs: [] },\n    { type: \"error\", name: \"InvalidModuleType\", inputs: [] },\n    { type: \"error\", name: \"InvalidNonce\", inputs: [] },\n    { type: \"error\", name: \"InvalidSelector\", inputs: [] },\n    { type: \"error\", name: \"InvalidSignature\", inputs: [] },\n    { type: \"error\", name: \"InvalidValidationType\", inputs: [] },\n    { type: \"error\", name: \"InvalidValidator\", inputs: [] },\n    { type: \"error\", name: \"NonceInvalidationError\", inputs: [] },\n    { type: \"error\", name: \"NotSupportedCallType\", inputs: [] },\n    { type: \"error\", name: \"OnlyExecuteUserOp\", inputs: [] },\n    { type: \"error\", name: \"PermissionDataLengthMismatch\", inputs: [] },\n    {\n        type: \"error\",\n        name: \"PermissionNotAlllowedForSignature\",\n        inputs: []\n    },\n    { type: \"error\", name: \"PermissionNotAlllowedForUserOp\", inputs: [] },\n    { type: \"error\", name: \"PolicyDataTooLarge\", inputs: [] },\n    {\n        type: \"error\",\n        name: \"PolicyFailed\",\n        inputs: [{ name: \"i\", type: \"uint256\", internalType: \"uint256\" }]\n    },\n    { type: \"error\", name: \"PolicySignatureOrderError\", inputs: [] },\n    { type: \"error\", name: \"RootValidatorCannotBeRemoved\", inputs: [] },\n    { type: \"error\", name: \"SignerPrefixNotPresent\", inputs: [] }\n];\n//# sourceMappingURL=KernelAccountAbi.js.map","import { parseAbi } from \"viem\";\nexport const SafeCreateCallAbi = parseAbi([\n    \"function performCreate(uint256 value, bytes memory deploymentData) public returns (address newContract)\",\n    \"function performCreate2(uint256 value, bytes memory deploymentData, bytes32 salt) public returns (address newContract)\"\n]);\n//# sourceMappingURL=SafeCreateCallAbi.js.map","import { encodeFunctionData } from \"viem\";\nimport { SafeCreateCallAbi } from \"../../abi/SafeCreateCallAbi.js\";\nexport const encodeSafeCreateCall = (args) => {\n    return encodeFunctionData({\n        abi: SafeCreateCallAbi,\n        functionName: \"performCreate\",\n        args\n    });\n};\n//# sourceMappingURL=encodeSafeCreateCall.js.map","import { encodeDeployData } from \"viem\";\nimport { safeCreateCallAddress } from \"../../../../../constants.js\";\nimport { encodeSafeCreateCall } from \"../../common/encodeSafeCreateCall.js\";\nimport { encodeExecuteDelegateCall } from \"../../ep0_6/encodeExecuteDelegateCall.js\";\nexport const encodeDeployCallData = (tx) => {\n    const deployCalldataArgs = {\n        to: safeCreateCallAddress,\n        data: encodeSafeCreateCall([0n, encodeDeployData(tx)])\n    };\n    return encodeExecuteDelegateCall(deployCalldataArgs);\n};\n//# sourceMappingURL=encodeDeployCallData.js.map","import { concatHex, encodeFunctionData, getAbiItem, toFunctionSelector, toHex } from \"viem\";\nimport { CALL_TYPE } from \"../../../../constants.js\";\nimport { getExecMode } from \"../../../../utils.js\";\nimport { KernelV3ExecuteAbi } from \"../../abi/kernel_v_3_0_0/KernelAccountAbi.js\";\nexport const encodeExecuteCall = (args, options, includeHooks = false) => {\n    let calldata;\n    if (\"calldata\" in args) {\n        calldata = args.calldata;\n    }\n    else {\n        calldata = concatHex([\n            args.to,\n            options.callType !== CALL_TYPE.DELEGATE_CALL\n                ? toHex(args.value || 0n, { size: 32 })\n                : \"0x\", // No value if delegate call\n            args.data || \"0x\"\n        ]);\n    }\n    const executeUserOpSig = toFunctionSelector(getAbiItem({ abi: KernelV3ExecuteAbi, name: \"executeUserOp\" }));\n    // The calldata using hook plugin should be as follows:\n    // [0:4] - `executeUserOp` function signature\n    // [4:8] - `execute` function signature\n    // [8:] - `execute` function arguments\n    if (includeHooks) {\n        return concatHex([\n            executeUserOpSig,\n            encodeFunctionData({\n                abi: KernelV3ExecuteAbi,\n                functionName: \"execute\",\n                args: [getExecMode(options), calldata]\n            })\n        ]);\n    }\n    return encodeFunctionData({\n        abi: KernelV3ExecuteAbi,\n        functionName: \"execute\",\n        args: [getExecMode(options), calldata]\n    });\n};\n//# sourceMappingURL=encodeExecuteCall.js.map","import { encodeAbiParameters } from \"viem\";\nimport { CALL_TYPE } from \"../../../../constants.js\";\nimport { encodeExecuteCall } from \"./encodeExecuteCall.js\";\nexport const encodeExecuteBatchCall = (args, options, includeHooks) => {\n    const calldata = encodeAbiParameters([\n        {\n            name: \"executionBatch\",\n            type: \"tuple[]\",\n            components: [\n                {\n                    name: \"target\",\n                    type: \"address\"\n                },\n                {\n                    name: \"value\",\n                    type: \"uint256\"\n                },\n                {\n                    name: \"callData\",\n                    type: \"bytes\"\n                }\n            ]\n        }\n    ], [\n        args.map((arg) => {\n            return {\n                target: arg.to,\n                value: arg.value || 0n,\n                callData: arg.data || \"0x\"\n            };\n        })\n    ]);\n    return encodeExecuteCall({ calldata }, {\n        callType: CALL_TYPE.BATCH,\n        execType: options.execType\n    }, includeHooks);\n};\n//# sourceMappingURL=encodeExecuteBatchCall.js.map","import { CALL_TYPE } from \"../../../../constants.js\";\nimport { encodeExecuteCall } from \"./encodeExecuteCall.js\";\nexport const encodeExecuteDelegateCall = (args, options, includeHooks) => {\n    return encodeExecuteCall(args, {\n        callType: CALL_TYPE.DELEGATE_CALL,\n        execType: options.execType\n    }, includeHooks);\n};\n//# sourceMappingURL=encodeExecuteDelegateCall.js.map","import { CALL_TYPE } from \"../../../../constants.js\";\nimport { encodeExecuteCall } from \"./encodeExecuteCall.js\";\nexport const encodeExecuteSingleCall = (args, options, includeHooks) => {\n    return encodeExecuteCall(args, {\n        callType: CALL_TYPE.SINGLE,\n        execType: options.execType\n    }, includeHooks);\n};\n//# sourceMappingURL=encodeExecuteSingleCall.js.map","import { EXEC_TYPE } from \"../../../../../constants.js\";\nimport { encodeExecuteBatchCall } from \"../../ep0_7/encodeExecuteBatchCall.js\";\nimport { encodeExecuteDelegateCall } from \"../../ep0_7/encodeExecuteDelegateCall.js\";\nimport { encodeExecuteSingleCall } from \"../../ep0_7/encodeExecuteSingleCall.js\";\nexport const encodeCallData = async (calls, callType, includeHooks) => {\n    if (calls.length > 1) {\n        if (callType === \"delegatecall\") {\n            throw new Error(\"Cannot batch delegatecall\");\n        }\n        // Encode a batched call\n        return encodeExecuteBatchCall(calls, {\n            execType: EXEC_TYPE.DEFAULT\n        }, includeHooks);\n    }\n    const call = calls.length === 0 ? undefined : calls[0];\n    if (!call) {\n        throw new Error(\"No calls to encode\");\n    }\n    // Default to `call`\n    if (!callType || callType === \"call\") {\n        return encodeExecuteSingleCall(call, {\n            execType: EXEC_TYPE.DEFAULT\n        }, includeHooks);\n    }\n    if (callType === \"delegatecall\") {\n        return encodeExecuteDelegateCall({ to: call.to, data: call.data }, {\n            execType: EXEC_TYPE.DEFAULT\n        }, includeHooks);\n    }\n    throw new Error(\"Invalid call type\");\n};\n//# sourceMappingURL=encodeCallData.js.map","import { encodeDeployData } from \"viem\";\nimport { EXEC_TYPE, safeCreateCallAddress } from \"../../../../../constants.js\";\nimport { encodeSafeCreateCall } from \"../../common/encodeSafeCreateCall.js\";\nimport { encodeExecuteDelegateCall } from \"../../ep0_7/encodeExecuteDelegateCall.js\";\nexport const encodeDeployCallData = (tx) => {\n    const deployCalldataArgs = {\n        to: safeCreateCallAddress,\n        data: encodeSafeCreateCall([0n, encodeDeployData(tx)])\n    };\n    return encodeExecuteDelegateCall(deployCalldataArgs, {\n        execType: EXEC_TYPE.DEFAULT\n    });\n};\n//# sourceMappingURL=encodeDeployCallData.js.map","import { encodeAbiParameters, keccak256, stringToHex } from \"viem\";\nexport const hashKernelMessageHashWrapper = (messageHash) => {\n    return keccak256(encodeAbiParameters([{ type: \"bytes32\" }, { type: \"bytes32\" }], [keccak256(stringToHex(\"Kernel(bytes32 hash)\")), messageHash]));\n};\n//# sourceMappingURL=hashKernelSignatureWrapper.js.map","import { concatHex, domainSeparator, keccak256 } from \"viem\";\nimport { KERNEL_FEATURES, hasKernelFeature } from \"../../../../utils.js\";\nimport { hashKernelMessageHashWrapper } from \"../ep0_7/hashKernelSignatureWrapper.js\";\nexport const eip712WrapHash = async (messageHash, domain, useReplayableSignature) => {\n    const { name, version, chainId, verifyingContract } = domain;\n    if (!hasKernelFeature(KERNEL_FEATURES.ERC1271_SIG_WRAPPER, version)) {\n        return messageHash;\n    }\n    const _chainId = hasKernelFeature(KERNEL_FEATURES.ERC1271_REPLAYABLE, version) &&\n        useReplayableSignature\n        ? 0\n        : chainId;\n    const _domainSeparator = domainSeparator({\n        domain: {\n            name,\n            version,\n            chainId: _chainId,\n            verifyingContract\n        }\n    });\n    let finalMessageHash = messageHash;\n    if (hasKernelFeature(KERNEL_FEATURES.ERC1271_SIG_WRAPPER_WITH_WRAPPED_HASH, version)) {\n        finalMessageHash = hashKernelMessageHashWrapper(finalMessageHash);\n    }\n    const digest = keccak256(concatHex([\"0x1901\", _domainSeparator, finalMessageHash]));\n    return digest;\n};\n//# sourceMappingURL=eip712WrapHash.js.map","import { encodeFunctionData } from \"viem\";\nimport { KernelModuleInstallAbi } from \"../../../abi/kernel_v_3_0_0/KernelModuleAbi.js\";\nexport const getPluginInstallCallData = (accountAddress, plugin) => {\n    const data = encodeFunctionData({\n        abi: KernelModuleInstallAbi,\n        functionName: \"installModule\",\n        args: [plugin.type, plugin.address, plugin.data]\n    });\n    return {\n        to: accountAddress,\n        data\n    };\n};\n//# sourceMappingURL=getPluginInstallCallData.js.map","import { http, concatHex, createNonceManager, createWalletClient, encodeFunctionData, getTypesForEIP712Domain, hashMessage, hashTypedData, isAddressEqual, toHex, validateTypedData, zeroAddress } from \"viem\";\nimport { entryPoint06Abi, entryPoint07Abi, entryPoint07Address, toSmartAccount } from \"viem/account-abstraction\";\nimport { privateKeyToAccount } from \"viem/accounts\";\nimport { getChainId, getCode, sendTransaction } from \"viem/actions\";\nimport { getAction } from \"viem/utils\";\nimport { getAccountNonce, getSenderAddress, isPluginInstalled } from \"../../actions/public/index.js\";\nimport { KernelVersionToAddressesMap, MAGIC_VALUE_SIG_REPLAYABLE } from \"../../constants.js\";\nimport { KERNEL_FEATURES, hasKernelFeature } from \"../../utils.js\";\nimport { validateKernelVersionWithEntryPoint } from \"../../utils.js\";\nimport { toSigner } from \"../../utils/toSigner.js\";\nimport { isKernelPluginManager, toKernelPluginManager } from \"../utils/toKernelPluginManager.js\";\nimport { KernelInitAbi } from \"./abi/KernelAccountAbi.js\";\nimport { KernelV3InitAbi } from \"./abi/kernel_v_3_0_0/KernelAccountAbi.js\";\nimport { KernelV3FactoryAbi } from \"./abi/kernel_v_3_0_0/KernelFactoryAbi.js\";\nimport { KernelFactoryStakerAbi } from \"./abi/kernel_v_3_0_0/KernelFactoryStakerAbi.js\";\nimport { KernelV3_1AccountAbi } from \"./abi/kernel_v_3_1/KernelAccountAbi.js\";\nimport { encodeCallData as encodeCallDataEpV06 } from \"./utils/account/ep0_6/encodeCallData.js\";\nimport { encodeDeployCallData as encodeDeployCallDataV06 } from \"./utils/account/ep0_6/encodeDeployCallData.js\";\nimport { encodeCallData as encodeCallDataEpV07 } from \"./utils/account/ep0_7/encodeCallData.js\";\nimport { encodeDeployCallData as encodeDeployCallDataV07 } from \"./utils/account/ep0_7/encodeDeployCallData.js\";\nimport { accountMetadata } from \"./utils/common/accountMetadata.js\";\nimport { eip712WrapHash } from \"./utils/common/eip712WrapHash.js\";\nimport { getPluginInstallCallData } from \"./utils/plugins/ep0_7/getPluginInstallCallData.js\";\n/**\n * The account creation ABI for a kernel smart account (from the KernelFactory)\n */\nconst createAccountAbi = [\n    {\n        inputs: [\n            {\n                internalType: \"address\",\n                name: \"_implementation\",\n                type: \"address\"\n            },\n            {\n                internalType: \"bytes\",\n                name: \"_data\",\n                type: \"bytes\"\n            },\n            {\n                internalType: \"uint256\",\n                name: \"_index\",\n                type: \"uint256\"\n            }\n        ],\n        name: \"createAccount\",\n        outputs: [\n            {\n                internalType: \"address\",\n                name: \"proxy\",\n                type: \"address\"\n            }\n        ],\n        stateMutability: \"payable\",\n        type: \"function\"\n    }\n];\n/**\n * Default addresses for kernel smart account\n */\nexport const KERNEL_ADDRESSES = {\n    ACCOUNT_LOGIC_V0_6: \"0xd3082872F8B06073A021b4602e022d5A070d7cfC\",\n    ACCOUNT_LOGIC_V0_7: \"0x94F097E1ebEB4ecA3AAE54cabb08905B239A7D27\",\n    FACTORY_ADDRESS_V0_6: \"0x5de4839a76cf55d0c90e2061ef4386d962E15ae3\",\n    FACTORY_ADDRESS_V0_7: \"0x6723b44Abeec4E71eBE3232BD5B455805baDD22f\",\n    FACTORY_STAKER: \"0xd703aaE79538628d27099B8c4f621bE4CCd142d5\"\n};\nconst getKernelInitData = async ({ entryPointVersion: _entryPointVersion, kernelPluginManager, initHook, kernelVersion, initConfig }) => {\n    const { enableData, identifier, validatorAddress, initConfig: initConfig_ } = await kernelPluginManager.getValidatorInitData();\n    if (_entryPointVersion === \"0.6\") {\n        return encodeFunctionData({\n            abi: KernelInitAbi,\n            functionName: \"initialize\",\n            args: [validatorAddress, enableData]\n        });\n    }\n    if (kernelVersion === \"0.3.0\") {\n        return encodeFunctionData({\n            abi: KernelV3InitAbi,\n            functionName: \"initialize\",\n            args: [\n                identifier,\n                initHook && kernelPluginManager.hook\n                    ? kernelPluginManager.hook?.getIdentifier()\n                    : zeroAddress,\n                enableData,\n                initHook && kernelPluginManager.hook\n                    ? await kernelPluginManager.hook?.getEnableData()\n                    : \"0x\"\n            ]\n        });\n    }\n    return encodeFunctionData({\n        abi: KernelV3_1AccountAbi,\n        functionName: \"initialize\",\n        args: [\n            identifier,\n            initHook && kernelPluginManager.hook\n                ? kernelPluginManager.hook?.getIdentifier()\n                : zeroAddress,\n            enableData,\n            initHook && kernelPluginManager.hook\n                ? await kernelPluginManager.hook?.getEnableData()\n                : \"0x\",\n            initConfig ?? initConfig_ ?? []\n        ]\n    });\n};\n/**\n * Get the account initialization code for a kernel smart account\n * @param index\n * @param factoryAddress\n * @param accountImplementationAddress\n * @param ecdsaValidatorAddress\n */\nconst getAccountInitCode = async ({ index, factoryAddress, accountImplementationAddress, entryPointVersion: _entryPointVersion, kernelPluginManager, initHook, kernelVersion, initConfig, useMetaFactory }) => {\n    // Build the account initialization data\n    const initialisationData = await getKernelInitData({\n        entryPointVersion: _entryPointVersion,\n        kernelPluginManager,\n        initHook,\n        kernelVersion,\n        initConfig\n    });\n    // Build the account init code\n    if (_entryPointVersion === \"0.6\") {\n        return encodeFunctionData({\n            abi: createAccountAbi,\n            functionName: \"createAccount\",\n            args: [accountImplementationAddress, initialisationData, index]\n        });\n    }\n    if (!useMetaFactory) {\n        return encodeFunctionData({\n            abi: KernelV3FactoryAbi,\n            functionName: \"createAccount\",\n            args: [initialisationData, toHex(index, { size: 32 })]\n        });\n    }\n    return encodeFunctionData({\n        abi: KernelFactoryStakerAbi,\n        functionName: \"deployWithFactory\",\n        args: [factoryAddress, initialisationData, toHex(index, { size: 32 })]\n    });\n};\nconst getDefaultAddresses = (entryPointVersion, kernelVersion, { accountImplementationAddress, factoryAddress, metaFactoryAddress }) => {\n    validateKernelVersionWithEntryPoint(entryPointVersion, kernelVersion);\n    const addresses = KernelVersionToAddressesMap[kernelVersion];\n    if (!addresses) {\n        throw new Error(`No addresses found for kernel version ${kernelVersion}`);\n    }\n    return {\n        accountImplementationAddress: accountImplementationAddress ??\n            addresses.accountImplementationAddress,\n        factoryAddress: factoryAddress ?? addresses.factoryAddress,\n        metaFactoryAddress: metaFactoryAddress ?? addresses.metaFactoryAddress ?? zeroAddress\n    };\n};\n/**\n * Build a kernel smart account from a private key, that use the ECDSA signer behind the scene\n * @param client\n * @param privateKey\n * @param entryPoint\n * @param index\n * @param factoryAddress\n * @param accountImplementationAddress\n * @param ecdsaValidatorAddress\n * @param address\n */\nexport async function createKernelAccount(client, { plugins, entryPoint, index = 0n, factoryAddress: _factoryAddress, accountImplementationAddress: _accountImplementationAddress, metaFactoryAddress: _metaFactoryAddress, address, kernelVersion, initConfig, useMetaFactory: _useMetaFactory = true, eip7702Auth, eip7702SponsorAccount, pluginMigrations }) {\n    let useMetaFactory = _useMetaFactory;\n    const { accountImplementationAddress, factoryAddress, metaFactoryAddress } = getDefaultAddresses(entryPoint.version, kernelVersion, {\n        accountImplementationAddress: _accountImplementationAddress,\n        factoryAddress: _factoryAddress,\n        metaFactoryAddress: _metaFactoryAddress\n    });\n    let chainId;\n    let cachedAccountMetadata;\n    const getMemoizedChainId = async () => {\n        if (chainId)\n            return chainId;\n        chainId = client.chain\n            ? client.chain.id\n            : await getAction(client, getChainId, \"getChainId\")({});\n        return chainId;\n    };\n    const getMemoizedAccountMetadata = async () => {\n        if (cachedAccountMetadata)\n            return cachedAccountMetadata;\n        cachedAccountMetadata = await accountMetadata(client, accountAddress, kernelVersion, await getMemoizedChainId());\n        return cachedAccountMetadata;\n    };\n    const kernelPluginManager = isKernelPluginManager(plugins)\n        ? plugins\n        : await toKernelPluginManager(client, {\n            sudo: plugins.sudo,\n            regular: plugins.regular,\n            hook: plugins.hook,\n            action: plugins.action,\n            pluginEnableSignature: plugins.pluginEnableSignature,\n            entryPoint,\n            kernelVersion,\n            chainId: await getMemoizedChainId()\n        });\n    // initHook flag is activated only if both the hook and sudo validator are given\n    // if the hook is given with regular plugins, then consider it as a hook for regular plugins\n    const initHook = Boolean(isKernelPluginManager(plugins)\n        ? plugins.hook &&\n            plugins.getIdentifier() ===\n                plugins.sudoValidator?.getIdentifier()\n        : plugins.hook && !plugins.regular);\n    // Helper to generate the init code for the smart account\n    const generateInitCode = async () => {\n        if (!accountImplementationAddress || !factoryAddress)\n            throw new Error(\"Missing account logic address or factory address\");\n        return getAccountInitCode({\n            index,\n            factoryAddress,\n            accountImplementationAddress,\n            entryPointVersion: entryPoint.version,\n            kernelPluginManager,\n            initHook,\n            kernelVersion,\n            initConfig,\n            useMetaFactory\n        });\n    };\n    const getFactoryArgs = async () => {\n        return {\n            factory: entryPoint.version === \"0.6\" || useMetaFactory === false\n                ? factoryAddress\n                : metaFactoryAddress,\n            factoryData: await generateInitCode()\n        };\n    };\n    // Fetch account address\n    let accountAddress = address ??\n        (await (async () => {\n            const { factory, factoryData } = await getFactoryArgs();\n            // Get the sender address based on the init code\n            return await getSenderAddress(client, {\n                factory,\n                factoryData,\n                entryPointAddress: entryPoint.address\n            });\n        })());\n    // If account is zeroAddress try without meta factory\n    if (isAddressEqual(accountAddress, zeroAddress) && useMetaFactory) {\n        useMetaFactory = false;\n        accountAddress = await getSenderAddress(client, {\n            factory: factoryAddress,\n            factoryData: await generateInitCode(),\n            entryPointAddress: entryPoint.address\n        });\n        if (isAddressEqual(accountAddress, zeroAddress)) {\n            useMetaFactory = true;\n        }\n    }\n    const _entryPoint = {\n        address: entryPoint?.address ?? entryPoint07Address,\n        abi: ((entryPoint?.version ?? \"0.7\") === \"0.6\"\n            ? entryPoint06Abi\n            : entryPoint07Abi),\n        version: entryPoint?.version ?? \"0.7\"\n    };\n    if (eip7702Auth) {\n        let code = await getCode(client, { address: accountAddress });\n        const isEip7702Authorized = code?.length && code.length > 0 && code.startsWith(\"0xef\");\n        if (!isEip7702Authorized) {\n            const sponsorAccount = eip7702SponsorAccount\n                ? await toSigner({ signer: eip7702SponsorAccount })\n                : privateKeyToAccount(\n                // NOTE: Don't worry about this private key, it's just for testing\n                \"0x688b84097239bc2bca41079d02fae599964a5844bc9e64f524206ad53a927bb9\");\n            const sponsorWalletClient = createWalletClient({\n                account: sponsorAccount,\n                chain: client.chain,\n                transport: http(client.transport.url)\n            });\n            await sendTransaction(sponsorWalletClient, {\n                to: accountAddress,\n                data: \"0x\",\n                authorizationList: [eip7702Auth],\n                chain: client.chain\n            });\n            code = await getCode(client, { address: accountAddress });\n            while (code?.length === undefined || code.length === 0) {\n                code = await getCode(client, { address: accountAddress });\n            }\n        }\n    }\n    // Cache for plugin installation status\n    const pluginCache = {\n        pendingPlugins: pluginMigrations || [],\n        allInstalled: false\n    };\n    const checkPluginInstallationStatus = async () => {\n        // Skip if no plugins or all are installed\n        if (!pluginCache.pendingPlugins.length || pluginCache.allInstalled) {\n            pluginCache.allInstalled = true;\n            return;\n        }\n        // Check all pending plugins in parallel\n        const installationResults = await Promise.all(pluginCache.pendingPlugins.map((plugin) => isPluginInstalled(client, {\n            address: accountAddress,\n            plugin\n        })));\n        // Filter out installed plugins\n        pluginCache.pendingPlugins = pluginCache.pendingPlugins.filter((_, index) => !installationResults[index]);\n        pluginCache.allInstalled = pluginCache.pendingPlugins.length === 0;\n    };\n    await checkPluginInstallationStatus();\n    return toSmartAccount({\n        eip7702Auth,\n        kernelVersion,\n        kernelPluginManager,\n        accountImplementationAddress,\n        factoryAddress: (await getFactoryArgs()).factory,\n        generateInitCode,\n        encodeModuleInstallCallData: async () => {\n            return await kernelPluginManager.encodeModuleInstallCallData(accountAddress);\n        },\n        nonceKeyManager: createNonceManager({\n            source: { get: () => 0, set: () => { } }\n        }),\n        client,\n        entryPoint: _entryPoint,\n        getFactoryArgs,\n        async getAddress() {\n            if (accountAddress)\n                return accountAddress;\n            const { factory, factoryData } = await getFactoryArgs();\n            // Get the sender address based on the init code\n            accountAddress = await getSenderAddress(client, {\n                factory,\n                factoryData,\n                entryPointAddress: entryPoint.address\n            });\n            return accountAddress;\n        },\n        // Encode the deploy call data\n        async encodeDeployCallData(_tx) {\n            if (entryPoint.version === \"0.6\") {\n                return encodeDeployCallDataV06(_tx);\n            }\n            return encodeDeployCallDataV07(_tx);\n        },\n        async encodeCalls(calls, callType) {\n            // Check plugin status only if we have pending plugins\n            await checkPluginInstallationStatus();\n            // Add plugin installation calls if needed\n            if (pluginCache.pendingPlugins.length > 0 &&\n                entryPoint.version === \"0.7\" &&\n                kernelPluginManager.activeValidatorMode === \"sudo\") {\n                // convert map into for loop\n                const pluginInstallCalls = [];\n                for (const plugin of pluginCache.pendingPlugins) {\n                    pluginInstallCalls.push(getPluginInstallCallData(accountAddress, plugin));\n                }\n                return encodeCallDataEpV07([...calls, ...pluginInstallCalls], callType, plugins.hook ? true : undefined);\n            }\n            if (calls.length === 1 &&\n                (!callType || callType === \"call\") &&\n                calls[0].to.toLowerCase() === accountAddress.toLowerCase()) {\n                return calls[0].data ?? \"0x\";\n            }\n            if (entryPoint.version === \"0.6\") {\n                return encodeCallDataEpV06(calls, callType);\n            }\n            if (plugins.hook) {\n                return encodeCallDataEpV07(calls, callType, true);\n            }\n            return encodeCallDataEpV07(calls, callType);\n        },\n        async sign({ hash }) {\n            return this.signMessage({ message: hash });\n        },\n        async signMessage({ message, useReplayableSignature }) {\n            const messageHash = hashMessage(message);\n            const { name, chainId: metadataChainId, version } = await getMemoizedAccountMetadata();\n            const wrappedMessageHash = await eip712WrapHash(messageHash, {\n                name,\n                chainId: Number(metadataChainId),\n                version,\n                verifyingContract: accountAddress\n            }, useReplayableSignature);\n            let signature = await kernelPluginManager.signMessage({\n                message: { raw: wrappedMessageHash }\n            });\n            if (!hasKernelFeature(KERNEL_FEATURES.ERC1271_WITH_VALIDATOR, version)) {\n                return signature;\n            }\n            if (useReplayableSignature &&\n                hasKernelFeature(KERNEL_FEATURES.ERC1271_REPLAYABLE, version)) {\n                signature = concatHex([MAGIC_VALUE_SIG_REPLAYABLE, signature]);\n            }\n            return concatHex([kernelPluginManager.getIdentifier(), signature]);\n        },\n        async signTypedData(typedData) {\n            const { message, primaryType, types: _types, domain } = typedData;\n            const types = {\n                EIP712Domain: getTypesForEIP712Domain({\n                    domain: domain\n                }),\n                ..._types\n            };\n            // Need to do a runtime validation check on addresses, byte ranges, integer ranges, etc\n            // as we can't statically check this with TypeScript.\n            validateTypedData({\n                domain: domain,\n                message: message,\n                primaryType: primaryType,\n                types: types\n            });\n            const typedHash = hashTypedData(typedData);\n            const { name, chainId: metadataChainId, version } = await getMemoizedAccountMetadata();\n            const wrappedMessageHash = await eip712WrapHash(typedHash, {\n                name,\n                chainId: Number(metadataChainId),\n                version,\n                verifyingContract: accountAddress\n            });\n            const signature = await kernelPluginManager.signMessage({\n                message: { raw: wrappedMessageHash }\n            });\n            if (!hasKernelFeature(KERNEL_FEATURES.ERC1271_WITH_VALIDATOR, version)) {\n                return signature;\n            }\n            return concatHex([kernelPluginManager.getIdentifier(), signature]);\n        },\n        // Get the nonce of the smart account\n        async getNonce(_args) {\n            const key = await kernelPluginManager.getNonceKey(accountAddress, _args?.key);\n            return getAccountNonce(client, {\n                address: accountAddress,\n                entryPointAddress: entryPoint.address,\n                key\n            });\n        },\n        async getStubSignature(userOperation) {\n            if (!userOperation) {\n                throw new Error(\"No user operation provided\");\n            }\n            return kernelPluginManager.getStubSignature(userOperation);\n        },\n        // Sign a user operation\n        async signUserOperation(parameters) {\n            const { chainId = await getMemoizedChainId(), ...userOperation } = parameters;\n            return kernelPluginManager.signUserOperation({\n                ...userOperation,\n                sender: userOperation.sender ?? (await this.getAddress()),\n                chainId\n            });\n        }\n    });\n}\n//# sourceMappingURL=createKernelAccount.js.map","import { toAccount } from \"viem/accounts\";\nexport function addressToEmptyAccount(address) {\n    const account = toAccount({\n        address,\n        async signMessage() {\n            throw new Error(\"Method not supported\");\n        },\n        async signTransaction(_transaction) {\n            throw new Error(\"Method not supported\");\n        },\n        async signTypedData(_typedData) {\n            throw new Error(\"Method not supported\");\n        }\n    });\n    return {\n        ...account,\n        publicKey: \"0x\",\n        source: \"empty\"\n    };\n}\n//# sourceMappingURL=addressToEmptyAccount.js.map","export const kernelVersionRangeToValidator = {\n    \"0.0.2 - 0.2.4\": \"0xd9AB5096a832b9ce79914329DAEE236f8Eea0390\",\n    \"0.3.0\": \"0x8104e3Ad430EA6d354d013A6789fDFc71E671c43\",\n    \">=0.3.1\": \"0x845ADb2C711129d4f3966735eD98a9F09fC4cE57\"\n};\n//# sourceMappingURL=constants.js.map","import { toSigner, validateKernelVersionWithEntryPoint } from \"@zerodev/sdk\";\nimport { satisfiesRange } from \"@zerodev/sdk\";\nimport { zeroAddress } from \"viem\";\nimport { getUserOperationHash } from \"viem/account-abstraction\";\nimport { toAccount } from \"viem/accounts\";\nimport { getChainId, signMessage } from \"viem/actions\";\nimport { kernelVersionRangeToValidator } from \"./constants.js\";\nexport const getValidatorAddress = (entryPoint, kernelVersion, validatorAddress) => {\n    validateKernelVersionWithEntryPoint(entryPoint.version, kernelVersion);\n    const ecdsaValidatorAddress = Object.entries(kernelVersionRangeToValidator).find(([range]) => satisfiesRange(kernelVersion, range))?.[1];\n    if (!ecdsaValidatorAddress && !validatorAddress) {\n        throw new Error(`Validator not found for Kernel version: ${kernelVersion}`);\n    }\n    return validatorAddress ?? ecdsaValidatorAddress ?? zeroAddress;\n};\nexport async function signerToEcdsaValidator(client, { signer, entryPoint, kernelVersion, validatorAddress: _validatorAddress }) {\n    const validatorAddress = getValidatorAddress(entryPoint, kernelVersion, _validatorAddress);\n    const viemSigner = await toSigner({ signer });\n    // Fetch chain id\n    const chainId = await getChainId(client);\n    // Build the EOA Signer\n    const account = toAccount({\n        address: viemSigner.address,\n        async signMessage({ message }) {\n            return signMessage(client, { account: viemSigner, message });\n        },\n        async signTransaction(_, __) {\n            throw new Error(\"Smart account signer doesn't need to sign transactions\");\n        },\n        async signTypedData(typedData) {\n            return viemSigner.signTypedData(typedData);\n        }\n    });\n    return {\n        ...account,\n        supportedKernelVersions: kernelVersion,\n        validatorType: \"SECONDARY\",\n        address: validatorAddress,\n        source: \"ECDSAValidator\",\n        getIdentifier() {\n            return validatorAddress;\n        },\n        async getEnableData() {\n            return viemSigner.address;\n        },\n        async getNonceKey(_accountAddress, customNonceKey) {\n            if (customNonceKey) {\n                return customNonceKey;\n            }\n            return 0n;\n        },\n        // Sign a user operation\n        async signUserOperation(userOperation) {\n            const hash = getUserOperationHash({\n                userOperation: {\n                    ...userOperation,\n                    signature: \"0x\"\n                },\n                entryPointAddress: entryPoint.address,\n                entryPointVersion: entryPoint.version,\n                chainId: chainId\n            });\n            const signature = await signMessage(client, {\n                account: viemSigner,\n                message: { raw: hash }\n            });\n            return signature;\n        },\n        // Get simple dummy signature\n        async getStubSignature() {\n            return \"0xfffffffffffffffffffffffffffffff0000000000000000000000000000000007aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1c\";\n        },\n        async isEnabled(_kernelAccountAddress, _selector) {\n            return false;\n        }\n    };\n}\n//# sourceMappingURL=toECDSAValidatorPlugin.js.map","import { toHex } from \"viem\";\nexport const transactionReceiptStatus = {\n    \"0x0\": \"reverted\",\n    \"0x1\": \"success\"\n};\n// biome-ignore lint/suspicious/noExplicitAny: it's a recursive function, so it's hard to type\nexport function deepHexlify(obj) {\n    if (typeof obj === \"function\") {\n        return undefined;\n    }\n    if (obj == null || typeof obj === \"string\" || typeof obj === \"boolean\") {\n        return obj;\n    }\n    if (typeof obj === \"bigint\") {\n        return toHex(obj);\n    }\n    if (obj._isBigNumber != null || typeof obj !== \"object\") {\n        return toHex(obj).replace(/^0x0/, \"0x\");\n    }\n    if (Array.isArray(obj)) {\n        return obj.map((member) => deepHexlify(member));\n    }\n    return Object.keys(obj).reduce(\n    // biome-ignore lint/suspicious/noExplicitAny: it's a recursive function, so it's hard to type\n    (set, key) => {\n        set[key] = deepHexlify(obj[key]);\n        return set;\n    }, {});\n}\n//# sourceMappingURL=deepHexlify.js.map","/**\n *\n * Returns the minimum required funds in the senders's smart account to execute the user operation.\n *\n * @param arags: {userOperation} as {@link UserOperation}\n * @returns requiredPrefund as {@link bigint}\n *\n * @example\n * import { getRequiredPrefund } from \"permissionless/utils\"\n *\n * const requiredPrefund = getRequiredPrefund({\n *     userOperation\n * })\n */\nexport const getRequiredPrefund = ({ userOperation, entryPointVersion }) => {\n    if (entryPointVersion === \"0.6\") {\n        const userOperationVersion0_6 = userOperation;\n        const multiplier = (userOperationVersion0_6.paymasterAndData?.length ?? 0) > 2\n            ? BigInt(3)\n            : BigInt(1);\n        const requiredGas = userOperationVersion0_6.callGasLimit +\n            userOperationVersion0_6.verificationGasLimit * multiplier +\n            userOperationVersion0_6.preVerificationGas;\n        return (BigInt(requiredGas) * BigInt(userOperationVersion0_6.maxFeePerGas));\n    }\n    const userOperationV07 = userOperation;\n    const requiredGas = userOperationV07.verificationGasLimit +\n        userOperationV07.callGasLimit +\n        (userOperationV07.paymasterVerificationGasLimit || 0n) +\n        (userOperationV07.paymasterPostOpGasLimit || 0n) +\n        userOperationV07.preVerificationGas;\n    return requiredGas * userOperationV07.maxFeePerGas;\n};\n//# sourceMappingURL=getRequiredPrefund.js.map","import { BaseError } from \"viem\";\nexport class AccountNotFoundError extends BaseError {\n    constructor({ docsPath } = {}) {\n        super([\n            \"Could not find an Account to execute with this Action.\",\n            \"Please provide an Account with the `account` argument on the Action, or by supplying an `account` to the Client.\"\n        ].join(\"\\n\"), {\n            docsPath,\n            docsSlug: \"account\",\n            name: \"AccountNotFoundError\"\n        });\n    }\n}\n//# sourceMappingURL=index.js.map","import { sendUserOperation, waitForUserOperationReceipt } from \"viem/account-abstraction\";\nimport { getAction, parseAccount } from \"viem/utils\";\nimport { AccountNotFoundError } from \"../../errors/index.js\";\n/**\n * Creates, signs, and sends a new transaction to the network.\n * This function also allows you to sponsor this transaction if sender is a smartAccount\n *\n * - Docs: https://viem.sh/docs/actions/wallet/sendTransaction.html\n * - Examples: https://stackblitz.com/github/wagmi-dev/viem/tree/main/examples/transactions/sending-transactions\n * - JSON-RPC Methods:\n *   - JSON-RPC Accounts: [`eth_sendTransaction`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sendtransaction)\n *   - Local Accounts: [`eth_sendRawTransaction`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sendrawtransaction)\n *\n * @param client - Client to use\n * @param parameters - {@link SendTransactionParameters}\n * @returns The [Transaction](https://viem.sh/docs/glossary/terms.html#transaction) hash.\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { sendTransaction } from 'viem/wallet'\n *\n * const client = createWalletClient({\n *   chain: mainnet,\n *   transport: custom(window.ethereum),\n * })\n * const hash = await sendTransaction(client, {\n *   account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n *   to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',\n *   value: 1000000000000000000n,\n * })\n *\n * @example\n * // Account Hoisting\n * import { createWalletClient, http } from 'viem'\n * import { privateKeyToAccount } from 'viem/accounts'\n * import { mainnet } from 'viem/chains'\n * import { sendTransaction } from 'viem/wallet'\n *\n * const client = createWalletClient({\n *   account: privateKeyToAccount('0x…'),\n *   chain: mainnet,\n *   transport: http(),\n * })\n * const hash = await sendTransaction(client, {\n *   to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',\n *   value: 1000000000000000000n,\n * })\n */\nexport async function sendTransaction(client, args) {\n    let userOpHash;\n    if (\"to\" in args) {\n        const { account: account_ = client.account, data, maxFeePerGas, maxPriorityFeePerGas, to, value, nonce } = args;\n        if (!account_) {\n            throw new AccountNotFoundError({\n                docsPath: \"/docs/actions/wallet/sendTransaction\"\n            });\n        }\n        const account = parseAccount(account_);\n        if (!to)\n            throw new Error(\"Missing to address\");\n        userOpHash = await getAction(client, sendUserOperation, \"sendUserOperation\")({\n            ...args,\n            calls: [\n                {\n                    to,\n                    value: value || BigInt(0),\n                    data: data || \"0x\"\n                }\n            ],\n            account,\n            maxFeePerGas,\n            maxPriorityFeePerGas,\n            nonce: nonce ? BigInt(nonce) : undefined\n        });\n    }\n    else {\n        userOpHash = await getAction(client, sendUserOperation, \"sendUserOperation\")({ ...args });\n    }\n    const userOperationReceipt = await getAction(client, waitForUserOperationReceipt, \"waitForUserOperationReceipt\")({\n        hash: userOpHash\n    });\n    return userOperationReceipt?.receipt.transactionHash;\n}\n//# sourceMappingURL=sendTransaction.js.map","import { parseAccount } from \"viem/utils\";\nimport { AccountNotFoundError } from \"../../errors/index.js\";\n/**\n * Calculates an Ethereum-specific signature in [EIP-191 format](https://eips.ethereum.org/EIPS/eip-191): `keccak256(\"\\x19Ethereum Signed Message:\\n\" + len(message) + message))`.\n *\n * - Docs: https://viem.sh/docs/actions/wallet/signMessage.html\n * - JSON-RPC Methods:\n *   - JSON-RPC Accounts: [`personal_sign`](https://docs.metamask.io/guide/signing-data.html#personal-sign)\n *   - Local Accounts: Signs locally. No JSON-RPC request.\n *\n * With the calculated signature, you can:\n * - use [`verifyMessage`](https://viem.sh/docs/utilities/verifyMessage.html) to verify the signature,\n * - use [`recoverMessageAddress`](https://viem.sh/docs/utilities/recoverMessageAddress.html) to recover the signing address from a signature.\n *\n * @param client - Client to use\n * @param parameters - {@link SignMessageParameters}\n * @returns The signed message. {@link SignMessageReturnType}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { signMessage } from 'viem/wallet'\n *\n * const client = createWalletClient({\n *   chain: mainnet,\n *   transport: custom(window.ethereum),\n * })\n * const signature = await signMessage(client, {\n *   account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n *   message: 'hello world',\n * })\n *\n * @example\n * // Account Hoisting\n * import { createWalletClient, custom } from 'viem'\n * import { privateKeyToAccount } from 'viem/accounts'\n * import { mainnet } from 'viem/chains'\n * import { signMessage } from 'viem/wallet'\n *\n * const client = createWalletClient({\n *   account: privateKeyToAccount('0x…'),\n *   chain: mainnet,\n *   transport: custom(window.ethereum),\n * })\n * const signature = await signMessage(client, {\n *   message: 'hello world',\n * })\n */\nexport async function signMessage(client, { account: account_ = client.account, message }) {\n    if (!account_)\n        throw new AccountNotFoundError({\n            docsPath: \"/docs/actions/wallet/signMessage\"\n        });\n    const account = parseAccount(account_);\n    return account.signMessage({ message });\n}\n//# sourceMappingURL=signMessage.js.map","import { getTypesForEIP712Domain, validateTypedData } from \"viem\";\nimport { parseAccount } from \"viem/utils\";\nimport { AccountNotFoundError } from \"../../errors/index.js\";\n/**\n * Signs typed data and calculates an Ethereum-specific signature in [https://eips.ethereum.org/EIPS/eip-712](https://eips.ethereum.org/EIPS/eip-712): `sign(keccak256(\"\\x19\\x01\" ‖ domainSeparator ‖ hashStruct(message)))`\n *\n * - Docs: https://viem.sh/docs/actions/wallet/signTypedData.html\n * - JSON-RPC Methods:\n *   - JSON-RPC Accounts: [`eth_signTypedData_v4`](https://docs.metamask.io/guide/signing-data.html#signtypeddata-v4)\n *   - Local Accounts: Signs locally. No JSON-RPC request.\n *\n * @param client - Client to use\n * @param parameters - {@link SignTypedDataParameters}\n * @returns The signed data. {@link SignTypedDataReturnType}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { signTypedData } from 'viem/wallet'\n *\n * const client = createWalletClient({\n *   chain: mainnet,\n *   transport: custom(window.ethereum),\n * })\n * const signature = await signTypedData(client, {\n *   account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n *   domain: {\n *     name: 'Ether Mail',\n *     version: '1',\n *     chainId: 1,\n *     verifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',\n *   },\n *   types: {\n *     Person: [\n *       { name: 'name', type: 'string' },\n *       { name: 'wallet', type: 'address' },\n *     ],\n *     Mail: [\n *       { name: 'from', type: 'Person' },\n *       { name: 'to', type: 'Person' },\n *       { name: 'contents', type: 'string' },\n *     ],\n *   },\n *   primaryType: 'Mail',\n *   message: {\n *     from: {\n *       name: 'Cow',\n *       wallet: '0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826',\n *     },\n *     to: {\n *       name: 'Bob',\n *       wallet: '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB',\n *     },\n *     contents: 'Hello, Bob!',\n *   },\n * })\n *\n * @example\n * // Account Hoisting\n * import { createWalletClient, http } from 'viem'\n * import { privateKeyToAccount } from 'viem/accounts'\n * import { mainnet } from 'viem/chains'\n * import { signTypedData } from 'viem/wallet'\n *\n * const client = createWalletClient({\n *   account: privateKeyToAccount('0x…'),\n *   chain: mainnet,\n *   transport: http(),\n * })\n * const signature = await signTypedData(client, {\n *   domain: {\n *     name: 'Ether Mail',\n *     version: '1',\n *     chainId: 1,\n *     verifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',\n *   },\n *   types: {\n *     Person: [\n *       { name: 'name', type: 'string' },\n *       { name: 'wallet', type: 'address' },\n *     ],\n *     Mail: [\n *       { name: 'from', type: 'Person' },\n *       { name: 'to', type: 'Person' },\n *       { name: 'contents', type: 'string' },\n *     ],\n *   },\n *   primaryType: 'Mail',\n *   message: {\n *     from: {\n *       name: 'Cow',\n *       wallet: '0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826',\n *     },\n *     to: {\n *       name: 'Bob',\n *       wallet: '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB',\n *     },\n *     contents: 'Hello, Bob!',\n *   },\n * })\n */\nexport async function signTypedData(client, { account: account_ = client.account, domain, message, primaryType, types: types_ }) {\n    if (!account_) {\n        throw new AccountNotFoundError({\n            docsPath: \"/docs/actions/wallet/signMessage\"\n        });\n    }\n    const account = parseAccount(account_);\n    const types = {\n        EIP712Domain: getTypesForEIP712Domain({ domain }),\n        ...types_\n    };\n    validateTypedData({\n        domain,\n        message,\n        primaryType,\n        types\n    });\n    return account.signTypedData({\n        domain,\n        primaryType,\n        types,\n        message\n    });\n}\n//# sourceMappingURL=signTypedData.js.map","import { encodeFunctionData } from \"viem\";\nimport { getAction } from \"viem/utils\";\nimport { sendTransaction } from \"./sendTransaction.js\";\nexport async function writeContract(client, { abi, address, args, dataSuffix, functionName, ...request }) {\n    const data = encodeFunctionData({\n        abi,\n        args,\n        functionName\n    });\n    const hash = await getAction(client, (sendTransaction), \"sendTransaction\")({\n        data: `${data}${dataSuffix ? dataSuffix.replace(\"0x\", \"\") : \"\"}`,\n        to: address,\n        ...request\n    });\n    return hash;\n}\n//# sourceMappingURL=writeContract.js.map","import { sendTransaction } from \"../../actions/smartAccount/sendTransaction.js\";\nimport { signMessage } from \"../../actions/smartAccount/signMessage.js\";\nimport { signTypedData } from \"../../actions/smartAccount/signTypedData.js\";\nimport { writeContract } from \"../../actions/smartAccount/writeContract.js\";\nexport function smartAccountActions(client) {\n    return {\n        sendTransaction: (args) => sendTransaction(client, args),\n        signMessage: (args) => signMessage(client, args),\n        signTypedData: (args) => signTypedData(client, args),\n        writeContract: (args) => writeContract(client, args)\n    };\n}\n//# sourceMappingURL=smartAccount.js.map","import { createClient } from \"viem\";\nimport { bundlerActions } from \"viem/account-abstraction\";\nimport { smartAccountActions } from \"./decorators/smartAccount.js\";\nexport function createSmartAccountClient(parameters) {\n    const { client: client_, key = \"bundler\", name = \"Bundler Client\", paymaster, paymasterContext, bundlerTransport, userOperation } = parameters;\n    const client = Object.assign(createClient({\n        ...parameters,\n        chain: parameters.chain ?? client_?.chain,\n        transport: bundlerTransport,\n        key,\n        name,\n        type: \"bundlerClient\" // TODO: is this okay?\n    }), { client: client_, paymaster, paymasterContext, userOperation });\n    if (parameters.userOperation?.prepareUserOperation) {\n        const customPrepareUserOp = parameters.userOperation.prepareUserOperation;\n        return client\n            .extend(bundlerActions)\n            .extend((client) => ({\n            prepareUserOperation: (args) => {\n                return customPrepareUserOp(client, args);\n            }\n        }))\n            .extend(bundlerActions)\n            .extend((client) => ({\n            prepareUserOperation: (args) => {\n                return customPrepareUserOp(client, args);\n            }\n        }))\n            .extend(smartAccountActions);\n    }\n    return client\n        .extend(bundlerActions)\n        .extend(smartAccountActions);\n}\n//# sourceMappingURL=createSmartAccountClient.js.map","import { ChainNotFoundError, hexToBigInt, numberToHex } from \"viem\";\n/**\n * Returns all related fields to calculate the potential cost of a userOperation in ERC-20 tokens.\n *\n * - Docs: https://docs.pimlico.io/permissionless/reference/pimlico-bundler-actions/getTokenQuotes\n *\n * @param client that you created using viem's createClient whose transport url is pointing to the Pimlico's bundler.\n * @returns slow, standard & fast values for maxFeePerGas & maxPriorityFeePerGas\n * @returns quotes, see {@link GetTokenQuotesReturnType}\n *\n */\nexport const getTokenQuotes = async (client, args) => {\n    const chainId = args.chain?.id ?? client.chain?.id;\n    if (!chainId) {\n        throw new ChainNotFoundError();\n    }\n    const res = await client.request({\n        method: \"pimlico_getTokenQuotes\",\n        params: [\n            { tokens: args.tokens },\n            args.entryPointAddress,\n            numberToHex(chainId)\n        ]\n    });\n    return res.quotes.map((quote) => ({\n        ...quote,\n        balanceSlot: quote.balanceSlot\n            ? hexToBigInt(quote.balanceSlot)\n            : undefined,\n        allowanceSlot: quote.allowanceSlot\n            ? hexToBigInt(quote.allowanceSlot)\n            : undefined,\n        postOpGas: hexToBigInt(quote.postOpGas),\n        exchangeRate: hexToBigInt(quote.exchangeRate),\n        exchangeRateNativeToUsd: hexToBigInt(quote.exchangeRateNativeToUsd)\n    }));\n};\n//# sourceMappingURL=getTokenQuotes.js.map","/**\n * Returns the live gas prices that you can use to send a user operation.\n *\n * - Docs: https://docs.pimlico.io/permissionless/reference/pimlico-actions/getUserOperationGasPrice\n *\n * @param client that you created using viem's createClient whose transport url is pointing to the Pimlico's bundler.\n * @returns slow, standard & fast values for maxFeePerGas & maxPriorityFeePerGas\n *\n *\n * @example\n * import { createClient } from \"viem\"\n * import { getUserOperationGasPrice } from \"permissionless/actions/pimlico\"\n *\n * const bundlerClient = createClient({\n *      chain: goerli,\n *      transport: http(\"https://api.pimlico.io/v2/goerli/rpc?apikey=YOUR_API_KEY_HERE\")\n * })\n *\n * await getUserOperationGasPrice(bundlerClient)\n *\n */\nexport const getUserOperationGasPrice = async (client) => {\n    const gasPrice = await client.request({\n        method: \"pimlico_getUserOperationGasPrice\",\n        params: []\n    });\n    return {\n        slow: {\n            maxFeePerGas: BigInt(gasPrice.slow.maxFeePerGas),\n            maxPriorityFeePerGas: BigInt(gasPrice.slow.maxPriorityFeePerGas)\n        },\n        standard: {\n            maxFeePerGas: BigInt(gasPrice.standard.maxFeePerGas),\n            maxPriorityFeePerGas: BigInt(gasPrice.standard.maxPriorityFeePerGas)\n        },\n        fast: {\n            maxFeePerGas: BigInt(gasPrice.fast.maxFeePerGas),\n            maxPriorityFeePerGas: BigInt(gasPrice.fast.maxPriorityFeePerGas)\n        }\n    };\n};\n//# sourceMappingURL=getUserOperationGasPrice.js.map","/**\n * Returns the status of the userOperation that is pending in the mempool.\n *\n * - Docs: https://docs.pimlico.io/permissionless/reference/pimlico-bundler-actions/getUserOperationStatus\n *\n * @param client {@link PimlicoClient} that you created using viem's createClient whose transport url is pointing to the Pimlico's bundler.\n * @param hash {@link Hash} UserOpHash that you must have received from sendUserOperation.\n * @returns status & transaction hash if included {@link GetUserOperationStatusReturnType}\n *\n *\n * @example\n * import { createClient } from \"viem\"\n * import { getUserOperationStatus } from \"permissionless/actions/pimlico\"\n * import { pimlicoBundlerActions } from 'permissionless/actions/pimlico'\n *\n * const bundlerClient = createClient({\n *      chain: goerli,\n *      transport: http(\"https://api.pimlico.io/v2/goerli/rpc?apikey=YOUR_API_KEY_HERE\")\n * }).extend(pimlicoBundlerActions)\n *\n * await getUserOperationStatus(bundlerClient, { hash: userOpHash })\n *\n */\nexport const getUserOperationStatus = async (client, { hash }) => {\n    return client.request({\n        method: \"pimlico_getUserOperationStatus\",\n        params: [hash]\n    });\n};\n//# sourceMappingURL=getUserOperationStatus.js.map","/**\n * @deprecated pimlico_sendCompressedUserOperation has been deprecated due to EIP-4844 blobs. Please use sendUserOperation instead.\n * Sends a compressed user operation to the bundler\n *\n * - Docs: https://docs.pimlico.io/permissionless/reference/pimlico-bundler-actions/sendCompressedUserOperation\n *\n * @param client {@link PimlicoBundlerClient} that you created using viem's createClient whose transport url is pointing to the Pimlico's bundler.\n * @param args {@link SendCompressedUserOperationParameters}.\n * @returns UserOpHash that you can use to track user operation as {@link Hash}.\n *\n * @example\n * import { pimlicoBundlerActions, sendCompressedUserOperation } from 'permissionless/actions/pimlico'\n * import { createClient } from \"viem\"\n *\n * const bundlerClient = createClient({\n *      chain: goerli,\n *      transport: http(\"https://api.pimlico.io/v2/goerli/rpc?apikey=YOUR_API_KEY_HERE\")\n * }).extend(pimlicoBundlerActions(entryPoint))\n *\n * const userOpHash = await sendCompressedUserOperation(bundlerClient, {\n *     compressedUserOperation,\n *     inflatorAddress,\n *     entryPoint\n * })\n * // Return '0xe9fad2cd67f9ca1d0b7a6513b2a42066784c8df938518da2b51bb8cc9a89ea34'\n */\nexport const sendCompressedUserOperation = async (client, args) => {\n    const { compressedUserOperation, inflatorAddress, entryPointAddress } = args;\n    return client.request({\n        method: \"pimlico_sendCompressedUserOperation\",\n        params: [compressedUserOperation, inflatorAddress, entryPointAddress]\n    });\n};\n//# sourceMappingURL=sendCompressedUserOperation.js.map","import { deepHexlify } from \"../../utils/deepHexlify.js\";\nexport const sponsorUserOperation = async (client, args) => {\n    const { sponsorshipPolicyId, paymasterContext, userOperation, entryPoint } = args;\n    const finalPaymasterContext = sponsorshipPolicyId !== undefined\n        ? {\n            ...(paymasterContext ?? {}),\n            sponsorshipPolicyId\n        }\n        : paymasterContext;\n    const response = await client.request({\n        method: \"pm_sponsorUserOperation\",\n        params: finalPaymasterContext\n            ? [\n                deepHexlify(userOperation),\n                entryPoint.address,\n                finalPaymasterContext\n            ]\n            : [deepHexlify(userOperation), entryPoint.address]\n    });\n    if (entryPoint.version === \"0.6\") {\n        const responseV06 = response;\n        return {\n            paymasterAndData: responseV06.paymasterAndData,\n            preVerificationGas: BigInt(responseV06.preVerificationGas),\n            verificationGasLimit: BigInt(responseV06.verificationGasLimit),\n            callGasLimit: BigInt(responseV06.callGasLimit)\n        };\n    }\n    const responseV07 = response;\n    return {\n        callGasLimit: BigInt(responseV07.callGasLimit),\n        verificationGasLimit: BigInt(responseV07.verificationGasLimit),\n        preVerificationGas: BigInt(responseV07.preVerificationGas),\n        paymaster: responseV07.paymaster,\n        paymasterVerificationGasLimit: BigInt(responseV07.paymasterVerificationGasLimit),\n        paymasterPostOpGasLimit: BigInt(responseV07.paymasterPostOpGasLimit),\n        paymasterData: responseV07.paymasterData\n    };\n};\n//# sourceMappingURL=sponsorUserOperation.js.map","import { deepHexlify } from \"../../utils/deepHexlify.js\";\n/**\n * Returns valid sponsorship policies for a userOperation from the list of ids passed\n * - Docs: https://docs.pimlico.io/permissionless/reference/pimlico-paymaster-actions/ValidateSponsorshipPolicies\n *\n * @param client {@link PimlicoBundlerClient} that you created using viem's createClient whose transport url is pointing to the Pimlico's bundler.\n * @param args {@link ValidateSponsorshipPoliciesParameters} UserOperation you want to sponsor & entryPoint.\n * @returns valid sponsorship policies, see {@link ValidateSponsorshipPolicies}\n *\n * @example\n * import { createClient } from \"viem\"\n * import { validateSponsorshipPolicies } from \"permissionless/actions/pimlico\"\n *\n * const bundlerClient = createClient({\n *   chain: goerli,\n *   transport: http(\"https://api.pimlico.io/v2/goerli/rpc?apikey=YOUR_API_KEY_HERE\")\n * })\n *\n * await validateSponsorshipPolicies(bundlerClient, {\n *   userOperation: userOperationWithDummySignature,\n *   entryPoint: entryPoint,\n *   sponsorshipPolicyIds: [\"sp_shiny_puma\"]\n * })\n * Returns\n * [\n *   {\n *     sponsorshipPolicyId: \"sp_shiny_puma\",\n *     data: {\n *       name: \"Shiny Puma\",\n *       author: \"Pimlico\",\n *       icon: \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4...\",\n *       description: \"This policy is for testing purposes only\"\n *    }\n *   }\n * ]\n */\nexport const validateSponsorshipPolicies = async (client, args) => {\n    return await client.request({\n        method: \"pm_validateSponsorshipPolicies\",\n        params: [\n            deepHexlify(args.userOperation),\n            args.entryPointAddress,\n            args.sponsorshipPolicyIds\n        ]\n    });\n};\n//# sourceMappingURL=validateSponsorshipPolicies.js.map","import { ChainNotFoundError } from \"viem\";\nimport { getAction } from \"viem/utils\";\nimport { getRequiredPrefund } from \"../../utils/getRequiredPrefund.js\";\nimport { getTokenQuotes } from \"./getTokenQuotes.js\";\n/**\n * Returns all related fields to calculate the potential cost of a userOperation in ERC-20 tokens.\n *\n * - Docs: https://docs.pimlico.io/permissionless/reference/pimlico-bundler-actions/EstimateErc20PaymasterCost\n *\n * @param client that you created using viem's createClient whose transport url is pointing to the Pimlico's bundler.\n * @returns quotes, see {@link EstimateErc20PaymasterCostReturnType}\n *\n */\nexport const estimateErc20PaymasterCost = async (client, args) => {\n    const chain = args.chain ?? client.chain;\n    if (!chain) {\n        throw new ChainNotFoundError();\n    }\n    const { entryPoint, userOperation, token } = args;\n    const quotes = await getAction(client, getTokenQuotes, \"getTokenQuotes\")({\n        tokens: [token],\n        entryPointAddress: entryPoint.address,\n        chain\n    });\n    const postOpGas = quotes[0].postOpGas;\n    const exchangeRate = quotes[0].exchangeRate;\n    const exchangeRateNativeToUsd = quotes[0].exchangeRateNativeToUsd;\n    const userOperationMaxCost = getRequiredPrefund({\n        userOperation,\n        entryPointVersion: entryPoint.version\n    });\n    // represents the userOperation's max cost in denomination of wei\n    const maxCostInWei = userOperationMaxCost + postOpGas * userOperation.maxFeePerGas;\n    // represents the userOperation's max cost in token denomination (wei)\n    const costInToken = (maxCostInWei * exchangeRate) / BigInt(1e18);\n    // represents the userOperation's max cost in usd (with 6 decimals of precision)\n    const costInUsd = (maxCostInWei * exchangeRateNativeToUsd) / 10n ** 18n;\n    return {\n        costInToken,\n        costInUsd\n    };\n};\n//# sourceMappingURL=estimateErc20PaymasterCost.js.map","import { getTokenQuotes, sendCompressedUserOperation, validateSponsorshipPolicies } from \"../../actions/pimlico.js\";\nimport { estimateErc20PaymasterCost } from \"../../actions/pimlico/estimateErc20PaymasterCost.js\";\nimport { getUserOperationGasPrice } from \"../../actions/pimlico/getUserOperationGasPrice.js\";\nimport { getUserOperationStatus } from \"../../actions/pimlico/getUserOperationStatus.js\";\nimport { sponsorUserOperation } from \"../../actions/pimlico/sponsorUserOperation.js\";\nexport const pimlicoActions = ({ entryPoint }) => (client) => ({\n    getUserOperationGasPrice: async () => getUserOperationGasPrice(client),\n    getUserOperationStatus: async (args) => getUserOperationStatus(client, args),\n    sendCompressedUserOperation: async (args) => sendCompressedUserOperation(client, {\n        ...args,\n        entryPointAddress: entryPoint.address\n    }),\n    sponsorUserOperation: async (args) => sponsorUserOperation(client, {\n        ...args,\n        entryPoint\n    }),\n    validateSponsorshipPolicies: async (args) => validateSponsorshipPolicies(client, {\n        ...args,\n        entryPointAddress: entryPoint.address\n    }),\n    getTokenQuotes: async (args) => getTokenQuotes(client, {\n        ...args,\n        chain: args.chain,\n        entryPointAddress: entryPoint.address\n    }),\n    estimateErc20PaymasterCost: async (args) => estimateErc20PaymasterCost(client, {\n        ...args,\n        entryPoint,\n        chain: args.chain\n    })\n});\n//# sourceMappingURL=pimlico.js.map","import { createClient } from \"viem\";\nimport { bundlerActions, entryPoint07Address, paymasterActions } from \"viem/account-abstraction\";\nimport { pimlicoActions } from \"./decorators/pimlico.js\";\nexport function createPimlicoClient(parameters) {\n    const { key = \"public\", name = \"Pimlico Bundler Client\", entryPoint } = parameters;\n    return createClient({\n        ...parameters,\n        key,\n        name,\n        type: \"pimlicoClient\"\n    })\n        .extend(bundlerActions)\n        .extend(paymasterActions)\n        .extend(pimlicoActions({\n        entryPoint: {\n            address: entryPoint?.address ?? entryPoint07Address,\n            version: entryPoint?.version ?? \"0.7\"\n        }\n    }));\n}\n//# sourceMappingURL=pimlico.js.map","export const ECDSA_SIGNER_CONTRACT = \"0x6A6F069E2a08c2468e7724Ab3250CdBFBA14D4FF\";\nexport const WEBAUTHN_SIGNER_CONTRACT_V0_0_1 = \"0x8AA55d4BfAE101609078681A69B5bc3181516612\";\n/**\n * @dev WEBAUTHN_SIGNER_CONTRACT_V0_0_2 updates\n * - Fixed checkSignature issue\n */\nexport const WEBAUTHN_SIGNER_CONTRACT_V0_0_2 = \"0x58625164e306242c7613223bDeb68fbe11300606\";\nexport const CALL_POLICY_CONTRACT_V0_0_1 = \"0xe4Fec84B7B002273ecC86baa65a831ddB92d30a8\";\n/**\n * @dev CALL_POLICY_CONTRACT_V0_0_2 updates\n * - Added ONE_OF condition\n * - Added native ETH transfer support\n * - Added `zeroAddress` target address support, which means you can approve any contracts with specific selector. (e.g. approve any ERC20 transfer)\n */\nexport const CALL_POLICY_CONTRACT_V0_0_2 = \"0x67Fa43ca2D689beA4d10b9F2C96828828A2Ab275\";\n/**\n * @dev CALL_POLICY_CONTRACT_V0_0_3 updates\n * - Fixed a bug with delegatecall\n */\nexport const CALL_POLICY_CONTRACT_V0_0_3 = \"0xB3CB5f502250360335614df1421f2AAbE98CE503\";\n/**\n * @dev CALL_POLICY_CONTRACT_V0_0_4 updates\n * - Fixed erc4337 storage violation with custom storage slot (Works with Alchemy now)\n */\nexport const CALL_POLICY_CONTRACT_V0_0_4 = \"0x9a52283276A0ec8740DF50bF01B28A80D880eaf2\";\nexport const GAS_POLICY_CONTRACT = \"0xaeFC5AbC67FfD258abD0A3E54f65E70326F84b23\";\nexport const RATE_LIMIT_POLICY_CONTRACT = \"0xf63d4139B25c836334edD76641356c6b74C86873\";\n/**\n * @dev RATE_LIMIT_POLICY_WITH_RESET_CONTRACT\n * - use non-standard way to deal with reset\n */\nexport const RATE_LIMIT_POLICY_WITH_RESET_CONTRACT = \"0x6a06358e6b283921deceabe7e8a3741d506cca9b\";\nexport const SIGNATURE_POLICY_CONTRACT = \"0xF6A936c88D97E6fad13b98d2FD731Ff17eeD591d\";\nexport const SUDO_POLICY_CONTRACT = \"0x67b436caD8a6D025DF6C82C5BB43fbF11fC5B9B7\";\nexport const TIMESTAMP_POLICY_CONTRACT = \"0xB9f8f524bE6EcD8C945b1b87f9ae5C192FdCE20F\";\nexport var PolicyFlags;\n(function (PolicyFlags) {\n    PolicyFlags[\"FOR_ALL_VALIDATION\"] = \"0x0000\";\n    PolicyFlags[\"NOT_FOR_VALIDATE_USEROP\"] = \"0x0001\";\n    PolicyFlags[\"NOT_FOR_VALIDATE_SIG\"] = \"0x0002\";\n})(PolicyFlags || (PolicyFlags = {}));\n//# sourceMappingURL=constants.js.map","export var CallType;\n(function (CallType) {\n    CallType[\"CALL\"] = \"0x00\";\n    CallType[\"BATCH_CALL\"] = \"0x01\";\n    CallType[\"DELEGATE_CALL\"] = \"0xff\";\n})(CallType || (CallType = {}));\nexport var ParamCondition;\n(function (ParamCondition) {\n    ParamCondition[ParamCondition[\"EQUAL\"] = 0] = \"EQUAL\";\n    ParamCondition[ParamCondition[\"GREATER_THAN\"] = 1] = \"GREATER_THAN\";\n    ParamCondition[ParamCondition[\"LESS_THAN\"] = 2] = \"LESS_THAN\";\n    ParamCondition[ParamCondition[\"GREATER_THAN_OR_EQUAL\"] = 3] = \"GREATER_THAN_OR_EQUAL\";\n    ParamCondition[ParamCondition[\"LESS_THAN_OR_EQUAL\"] = 4] = \"LESS_THAN_OR_EQUAL\";\n    ParamCondition[ParamCondition[\"NOT_EQUAL\"] = 5] = \"NOT_EQUAL\";\n    ParamCondition[ParamCondition[\"ONE_OF\"] = 6] = \"ONE_OF\";\n})(ParamCondition || (ParamCondition = {}));\n//# sourceMappingURL=types.js.map","import { encodeAbiParameters, getAbiItem, isHex, pad, toFunctionSelector, toHex } from \"viem\";\nimport { CALL_POLICY_CONTRACT_V0_0_1 } from \"../constants.js\";\nimport { ParamCondition } from \"./types.js\";\nexport function getPermissionFromABI({ abi, args, functionName, policyAddress }) {\n    if (!abi || !functionName) {\n        return {\n            selector: undefined,\n            rules: undefined\n        };\n    }\n    const abiItem = getAbiItem({\n        abi,\n        args,\n        name: functionName\n    });\n    if (abiItem?.type !== \"function\") {\n        throw Error(`${functionName} not found in abi`);\n    }\n    const functionSelector = toFunctionSelector(abiItem);\n    let paramRules = [];\n    if (args && Array.isArray(args)) {\n        paramRules = args\n            .map((arg, i) => {\n            if (!arg)\n                return null;\n            if (policyAddress === CALL_POLICY_CONTRACT_V0_0_1) {\n                if (arg.condition === ParamCondition.ONE_OF) {\n                    throw Error(\"The ONE_OF condition is only supported from CALL_POLICY_CONTRACT_V0_0_2 onwards. Please use CALL_POLICY_CONTRACT_V0_0_2 or a later version.\");\n                }\n                return {\n                    params: pad(isHex(arg.value)\n                        ? arg.value\n                        : toHex(arg.value), { size: 32 }),\n                    offset: i * 32,\n                    condition: arg.condition\n                };\n            }\n            let params;\n            if (arg.condition === ParamCondition.ONE_OF) {\n                params = arg.value.map((value) => pad(isHex(value)\n                    ? value\n                    : toHex(value), { size: 32 }));\n            }\n            else {\n                params = [\n                    pad(isHex(arg.value)\n                        ? arg.value\n                        : toHex(arg.value), { size: 32 })\n                ];\n            }\n            return {\n                params,\n                offset: i * 32,\n                condition: arg.condition\n            };\n        })\n            .filter((rule) => rule);\n    }\n    return {\n        selector: functionSelector,\n        rules: paramRules\n    };\n}\nexport const encodePermissionData = (permission, policyAddress) => {\n    const permissionParam = {\n        components: [\n            {\n                internalType: \"enum CallType\",\n                name: \"callType\",\n                type: \"bytes1\"\n            },\n            {\n                name: \"target\",\n                type: \"address\"\n            },\n            {\n                name: \"selector\",\n                type: \"bytes4\"\n            },\n            {\n                name: \"valueLimit\",\n                type: \"uint256\"\n            },\n            {\n                components: [\n                    {\n                        internalType: \"enum ParamCondition\",\n                        name: \"condition\",\n                        type: \"uint8\"\n                    },\n                    {\n                        name: \"offset\",\n                        type: \"uint64\"\n                    },\n                    {\n                        name: \"params\",\n                        type: policyAddress === CALL_POLICY_CONTRACT_V0_0_1\n                            ? \"bytes32\"\n                            : \"bytes32[]\"\n                    }\n                ],\n                name: \"rules\",\n                type: \"tuple[]\"\n            }\n        ],\n        name: \"permission\",\n        type: \"tuple[]\"\n    };\n    const params = [permissionParam];\n    const values = [permission];\n    return encodeAbiParameters(params, values);\n};\n//# sourceMappingURL=callPolicyUtils.js.map","import { concatHex, pad } from \"viem\";\nimport { CALL_POLICY_CONTRACT_V0_0_1, CALL_POLICY_CONTRACT_V0_0_2, CALL_POLICY_CONTRACT_V0_0_3, CALL_POLICY_CONTRACT_V0_0_4, PolicyFlags } from \"../constants.js\";\nimport { encodePermissionData, getPermissionFromABI } from \"./callPolicyUtils.js\";\nimport { CallType } from \"./types.js\";\nexport var CallPolicyVersion;\n(function (CallPolicyVersion) {\n    CallPolicyVersion[\"V0_0_1\"] = \"0.0.1\";\n    CallPolicyVersion[\"V0_0_2\"] = \"0.0.2\";\n    CallPolicyVersion[\"V0_0_3\"] = \"0.0.3\";\n    CallPolicyVersion[\"V0_0_4\"] = \"0.0.4\";\n})(CallPolicyVersion || (CallPolicyVersion = {}));\nexport const getCallPolicyAddress = (policyVersion, policyAddress) => {\n    if (policyAddress)\n        return policyAddress;\n    switch (policyVersion) {\n        case CallPolicyVersion.V0_0_1:\n            return CALL_POLICY_CONTRACT_V0_0_1;\n        case CallPolicyVersion.V0_0_2:\n            return CALL_POLICY_CONTRACT_V0_0_2;\n        case CallPolicyVersion.V0_0_3:\n            return CALL_POLICY_CONTRACT_V0_0_3;\n        case CallPolicyVersion.V0_0_4:\n            return CALL_POLICY_CONTRACT_V0_0_4;\n    }\n};\nexport function toCallPolicy({ policyAddress, policyFlag = PolicyFlags.FOR_ALL_VALIDATION, policyVersion, permissions = [] }) {\n    const callPolicyAddress = getCallPolicyAddress(policyVersion, policyAddress);\n    const generatedPermissionParams = permissions?.map((perm) => getPermissionFromABI({\n        abi: perm.abi,\n        functionName: perm.functionName,\n        args: perm.args,\n        policyAddress: callPolicyAddress\n    }));\n    permissions =\n        permissions?.map((perm, index) => ({\n            ...perm,\n            callType: perm.callType ?? CallType.CALL,\n            selector: perm.selector ??\n                generatedPermissionParams?.[index]?.selector ??\n                pad(\"0x\", { size: 4 }),\n            valueLimit: perm.valueLimit ?? 0n,\n            rules: perm.rules ?? generatedPermissionParams?.[index]?.rules ?? []\n        })) ?? [];\n    const encodedPermissionData = encodePermissionData(permissions, callPolicyAddress);\n    return {\n        getPolicyData: () => {\n            return encodedPermissionData;\n        },\n        getPolicyInfoInBytes: () => {\n            return concatHex([policyFlag, callPolicyAddress]);\n        },\n        policyParams: {\n            type: \"call\",\n            policyVersion,\n            policyAddress,\n            policyFlag,\n            permissions\n        }\n    };\n}\n//# sourceMappingURL=toCallPolicy.js.map","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __async = (__this, __arguments, generator) => {\n  return new Promise((resolve, reject) => {\n    var fulfilled = (value) => {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var rejected = (value) => {\n      try {\n        step(generator.throw(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n    step((generator = generator.apply(__this, __arguments)).next());\n  });\n};\n\n// src/tokens.ts\nimport { getAddress, zeroAddress } from \"viem\";\nimport {\n  arbitrum as arbitrum2,\n  base as base2,\n  bsc as bsc2,\n  mainnet as mainnet2,\n  linea,\n  optimism as optimism2,\n  polygon as polygon2\n} from \"viem/chains\";\n\n// src/chains.ts\nimport { arbitrum, base, bsc, optimism, polygon, mainnet } from \"viem/chains\";\nvar supportedChains = [\n  arbitrum,\n  base,\n  bsc,\n  mainnet,\n  optimism,\n  polygon\n];\nfunction getChainById(chainId) {\n  const chain = supportedChains.find((c) => c.id === chainId);\n  if (!chain) throw new Error(`Chain ${chainId} not supported.`);\n  return chain;\n}\nfunction getChainExplorerByChainId(chainId) {\n  switch (chainId) {\n    case arbitrum.id:\n      return \"https://arbiscan.io\";\n    case base.id:\n      return \"https://basescan.org\";\n    case bsc.id:\n      return \"https://bscscan.com\";\n    case mainnet.id:\n      return \"https://etherscan.io\";\n    case optimism.id:\n      return \"https://optimistic.etherscan.io\";\n    case polygon.id:\n      return \"https://polygonscan.com\";\n    default:\n      return void 0;\n  }\n}\n\n// src/types.ts\nvar TokenLogo = /* @__PURE__ */ ((TokenLogo2) => {\n  TokenLogo2[\"ETH\"] = \"https://api.acta.link/deposit/v1/logos/ethereum.png\";\n  TokenLogo2[\"WETH\"] = \"https://api.acta.link/deposit/v1/logos/weth.png\";\n  TokenLogo2[\"USDC\"] = \"https://api.acta.link/deposit/v1/logos/usdc.png\";\n  TokenLogo2[\"EURC\"] = \"https://api.acta.link/deposit/v1/logos/eurc.png\";\n  TokenLogo2[\"USDT\"] = \"https://api.acta.link/deposit/v1/logos/usdt.png\";\n  TokenLogo2[\"DAI\"] = \"https://api.acta.link/deposit/v1/logos/dai.png\";\n  TokenLogo2[\"POL\"] = \"https://api.acta.link/deposit/v1/logos/pol.png\";\n  TokenLogo2[\"BNB\"] = \"https://api.acta.link/deposit/v1/logos/bnb.png\";\n  return TokenLogo2;\n})(TokenLogo || {});\nvar ConnectorType = /* @__PURE__ */ ((ConnectorType2) => {\n  ConnectorType2[\"SELF_CUSTODY\"] = \"Self-Custody\";\n  ConnectorType2[\"CEX\"] = \"CEX\";\n  return ConnectorType2;\n})(ConnectorType || {});\nvar PolicyFlags = /* @__PURE__ */ ((PolicyFlags2) => {\n  PolicyFlags2[\"FOR_ALL_VALIDATION\"] = \"0x0000\";\n  PolicyFlags2[\"NOT_FOR_VALIDATE_USEROP\"] = \"0x0001\";\n  PolicyFlags2[\"NOT_FOR_VALIDATE_SIG\"] = \"0x0002\";\n  return PolicyFlags2;\n})(PolicyFlags || {});\n\n// src/tokens.ts\nvar arbitrumETH = nativeETH(arbitrum2.id);\nvar arbitrumWETH = token({\n  chainId: arbitrum2.id,\n  address: getAddress(\"0x82aF49447D8a07e3bd95BD0d56f35241523fBab1\"),\n  decimals: 18,\n  name: \"Wrapped Ether\",\n  symbol: \"WETH\",\n  logoURI: \"https://api.acta.link/deposit/v1/logos/weth.png\" /* WETH */\n});\nvar arbitrumUSDC = token({\n  chainId: arbitrum2.id,\n  address: getAddress(\"0xaf88d065e77c8cC2239327C5EDb3A432268e5831\"),\n  name: \"USD Coin\",\n  symbol: \"USDC\",\n  fiatISO: \"USD\",\n  decimals: 6,\n  logoURI: \"https://api.acta.link/deposit/v1/logos/usdc.png\" /* USDC */\n});\nvar arbitrumDAI = token({\n  chainId: arbitrum2.id,\n  address: getAddress(\"0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1\"),\n  decimals: 18,\n  fiatISO: \"USD\",\n  name: \"Dai Stablecoin\",\n  symbol: \"DAI\",\n  logoURI: \"https://api.acta.link/deposit/v1/logos/dai.png\" /* DAI */\n});\nvar arbitrumUSDT = token({\n  chainId: arbitrum2.id,\n  address: getAddress(\"0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9\"),\n  decimals: 6,\n  fiatISO: \"USD\",\n  name: \"Tether USD\",\n  symbol: \"USDT\",\n  logoURI: \"https://api.acta.link/deposit/v1/logos/usdt.png\" /* USDT */\n});\nvar arbitrumUSDCe = token({\n  chainId: arbitrum2.id,\n  address: getAddress(\"0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8\"),\n  decimals: 6,\n  fiatISO: \"USD\",\n  name: \"Bridged USD Coin\",\n  symbol: \"USDCe\",\n  logoURI: \"https://api.acta.link/deposit/v1/logos/usdc.png\" /* USDC */\n});\nvar arbitrumTokens = [arbitrumUSDC, arbitrumUSDT];\nvar baseETH = nativeETH(base2.id);\nvar baseWETH = token({\n  chainId: base2.id,\n  address: getAddress(\"0x4200000000000000000000000000000000000006\"),\n  decimals: 18,\n  name: \"Wrapped Ether\",\n  symbol: \"WETH\",\n  logoURI: \"https://api.acta.link/deposit/v1/logos/weth.png\" /* WETH */\n});\nvar baseUSDC = token({\n  chainId: base2.id,\n  address: getAddress(\"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\"),\n  name: \"USD Coin\",\n  symbol: \"USDC\",\n  fiatISO: \"USD\",\n  decimals: 6,\n  logoURI: \"https://api.acta.link/deposit/v1/logos/usdc.png\" /* USDC */\n});\nvar baseEURC = token({\n  chainId: base2.id,\n  address: getAddress(\"0x60a3E35Cc302bFA44Cb288Bc5a4F316Fdb1adb42\"),\n  decimals: 6,\n  fiatISO: \"EUR\",\n  name: \"EURC\",\n  symbol: \"EURC\",\n  logoURI: \"https://api.acta.link/deposit/v1/logos/eurc.png\" /* EURC */\n});\nvar baseUSDbC = token({\n  chainId: base2.id,\n  address: getAddress(\"0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA\"),\n  name: \"Bridged USD Coin\",\n  symbol: \"USDbC\",\n  fiatISO: \"USD\",\n  decimals: 6,\n  logoURI: \"https://api.acta.link/deposit/v1/logos/usdbc.png\"\n});\nvar baseDAI = token({\n  chainId: base2.id,\n  address: getAddress(\"0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb\"),\n  name: \"Dai Stablecoin\",\n  symbol: \"DAI\",\n  fiatISO: \"USD\",\n  decimals: 18,\n  logoURI: \"https://api.acta.link/deposit/v1/logos/dai.png\" /* DAI */\n});\nvar baseUSDT = token({\n  chainId: base2.id,\n  address: getAddress(\"0xfde4C96c8593536E31F229EA8f37b2ADa2699bb2\"),\n  name: \"Tether USD\",\n  symbol: \"USDT\",\n  fiatISO: \"USD\",\n  decimals: 6,\n  logoURI: \"https://api.acta.link/deposit/v1/logos/usdt.png\" /* USDT */\n});\nvar baseTokens = [baseUSDC, baseUSDT];\nvar bscBNB = nativeToken({\n  chainId: bsc2.id,\n  name: \"BNB\",\n  symbol: \"BNB\",\n  logoURI: \"https://api.acta.link/deposit/v1/logos/bnb.png\" /* BNB */\n});\nvar bscWBNB = token({\n  chainId: bsc2.id,\n  address: getAddress(\"0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c\"),\n  decimals: 18,\n  name: \"Wrapped BNB\",\n  symbol: \"WBNB\",\n  logoURI: \"https://api.acta.link/deposit/v1/logos/bnb.png\" /* BNB */\n});\nvar bscUSDC = token({\n  chainId: bsc2.id,\n  address: getAddress(\"0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d\"),\n  decimals: 18,\n  fiatISO: \"USD\",\n  name: \"USD Coin\",\n  symbol: \"USDC\",\n  logoURI: \"https://api.acta.link/deposit/v1/logos/usdc.png\" /* USDC */\n});\nvar bscUSDT = token({\n  chainId: bsc2.id,\n  address: getAddress(\"0x55d398326f99059fF775485246999027B3197955\"),\n  decimals: 18,\n  fiatISO: \"USD\",\n  name: \"Tether USD\",\n  symbol: \"USDT\",\n  logoURI: \"https://api.acta.link/deposit/v1/logos/usdt.png\" /* USDT */\n});\nvar bscTokens = [bscUSDT];\nvar ethereumETH = nativeETH(mainnet2.id);\nvar ethereumWETH = token({\n  chainId: mainnet2.id,\n  address: getAddress(\"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2\"),\n  decimals: 18,\n  name: \"Wrapped Ether\",\n  symbol: \"WETH\",\n  logoURI: \"https://api.acta.link/deposit/v1/logos/weth.png\" /* WETH */\n});\nvar ethereumUSDC = token({\n  chainId: mainnet2.id,\n  address: getAddress(\"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\"),\n  decimals: 6,\n  fiatISO: \"USD\",\n  name: \"USD Coin\",\n  symbol: \"USDC\",\n  logoURI: \"https://api.acta.link/deposit/v1/logos/usdc.png\" /* USDC */\n});\nvar ethereumDAI = token({\n  chainId: mainnet2.id,\n  address: getAddress(\"0x6B175474E89094C44Da98b954EedeAC495271d0F\"),\n  decimals: 18,\n  fiatISO: \"USD\",\n  name: \"Dai Stablecoin\",\n  symbol: \"DAI\",\n  logoURI: \"https://api.acta.link/deposit/v1/logos/dai.png\" /* DAI */\n});\nvar ethereumUSDT = token({\n  chainId: mainnet2.id,\n  address: getAddress(\"0xdAC17F958D2ee523a2206206994597C13D831ec7\"),\n  decimals: 6,\n  fiatISO: \"USD\",\n  name: \"Tether USD\",\n  symbol: \"USDT\",\n  logoURI: \"https://api.acta.link/deposit/v1/logos/usdt.png\" /* USDT */\n});\nvar ethereumEURC = token({\n  chainId: mainnet2.id,\n  address: getAddress(\"0x1aBaEA1f7C830bD89Acc67eC4af516284b1bC33c\"),\n  decimals: 6,\n  fiatISO: \"EUR\",\n  name: \"EURC\",\n  symbol: \"EURC\",\n  logoURI: \"https://api.acta.link/deposit/v1/logos/eurc.png\" /* EURC */\n});\nvar ethereumTokens = [ethereumUSDC, ethereumUSDT];\nvar lineaETH = nativeETH(linea.id);\nvar lineaWETH = token({\n  chainId: linea.id,\n  address: getAddress(\"0xe5d7c2a44ffddf6b295a15c148167daaaf5cf34f\"),\n  decimals: 18,\n  name: \"Wrapped Ether\",\n  symbol: \"WETH\",\n  logoURI: \"https://api.acta.link/deposit/v1/logos/weth.png\" /* WETH */\n});\nvar lineaUSDC = token({\n  chainId: linea.id,\n  address: getAddress(\"0x176211869cA2b568f2A7D4EE941E073a821EE1ff\"),\n  decimals: 6,\n  fiatISO: \"USD\",\n  name: \"USD Coin\",\n  symbol: \"USDC\",\n  logoURI: \"https://api.acta.link/deposit/v1/logos/usdc.png\" /* USDC */\n});\nvar lineaDAI = token({\n  chainId: linea.id,\n  address: getAddress(\"0x4AF15ec2A0BD43Db75dd04E62FAA3B8EF36b00d5\"),\n  decimals: 18,\n  fiatISO: \"USD\",\n  name: \"Dai Stablecoin\",\n  symbol: \"DAI\",\n  logoURI: \"https://api.acta.link/deposit/v1/logos/dai.png\" /* DAI */\n});\nvar optimismETH = nativeETH(optimism2.id);\nvar optimismWETH = token({\n  chainId: optimism2.id,\n  address: getAddress(\"0x4200000000000000000000000000000000000006\"),\n  decimals: 18,\n  name: \"Wrapped Ether\",\n  symbol: \"WETH\",\n  logoURI: \"https://api.acta.link/deposit/v1/logos/weth.png\" /* WETH */\n});\nvar optimismUSDC = token({\n  chainId: optimism2.id,\n  address: getAddress(\"0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85\"),\n  decimals: 6,\n  fiatISO: \"USD\",\n  name: \"USD Coin\",\n  symbol: \"USDC\",\n  logoURI: \"https://api.acta.link/deposit/v1/logos/usdc.png\" /* USDC */\n});\nvar optimismDAI = token({\n  chainId: optimism2.id,\n  address: getAddress(\"0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1\"),\n  decimals: 18,\n  fiatISO: \"USD\",\n  name: \"Dai Stablecoin\",\n  symbol: \"DAI\",\n  logoURI: \"https://api.acta.link/deposit/v1/logos/dai.png\" /* DAI */\n});\nvar optimismUSDT = token({\n  chainId: optimism2.id,\n  address: getAddress(\"0x94b008aA00579c1307B0EF2c499aD98a8ce58e58\"),\n  decimals: 6,\n  fiatISO: \"USD\",\n  name: \"Tether USD\",\n  symbol: \"USDT\",\n  logoURI: \"https://api.acta.link/deposit/v1/logos/usdt.png\" /* USDT */\n});\nvar optimismUSDCe = token({\n  chainId: optimism2.id,\n  address: getAddress(\"0x7F5c764cBc14f9669B88837ca1490cCa17c31607\"),\n  decimals: 6,\n  fiatISO: \"USD\",\n  name: \"Bridged USD Coin\",\n  symbol: \"USDCe\",\n  logoURI: \"https://api.acta.link/deposit/v1/logos/usdc.png\" /* USDC */\n});\nvar optimismTokens = [optimismUSDC, optimismUSDT];\nvar polygonPOL = nativeToken({\n  chainId: polygon2.id,\n  name: \"Polygon\",\n  symbol: \"POL\",\n  logoURI: \"https://api.acta.link/deposit/v1/logos/pol.png\" /* POL */\n});\nvar polygonWPOL = token({\n  chainId: polygon2.id,\n  address: getAddress(\"0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270\"),\n  decimals: 18,\n  name: \"Wrapped Polygon\",\n  symbol: \"WPOL\",\n  logoURI: \"https://api.acta.link/deposit/v1/logos/pol.png\" /* POL */\n});\nvar polygonWETH = token({\n  chainId: polygon2.id,\n  address: getAddress(\"0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619\"),\n  decimals: 18,\n  name: \"Wrapped Ether\",\n  symbol: \"WETH\",\n  logoURI: \"https://api.acta.link/deposit/v1/logos/weth.png\" /* WETH */\n});\nvar polygonUSDC = token({\n  chainId: polygon2.id,\n  address: getAddress(\"0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359\"),\n  decimals: 6,\n  fiatISO: \"USD\",\n  name: \"USD Coin\",\n  symbol: \"USDC\",\n  logoURI: \"https://api.acta.link/deposit/v1/logos/usdc.png\" /* USDC */\n});\nvar polygonDAI = token({\n  chainId: polygon2.id,\n  address: getAddress(\"0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063\"),\n  decimals: 18,\n  fiatISO: \"USD\",\n  name: \"Dai Stablecoin\",\n  symbol: \"DAI\",\n  logoURI: \"https://api.acta.link/deposit/v1/logos/dai.png\" /* DAI */\n});\nvar polygonUSDT = token({\n  chainId: polygon2.id,\n  address: getAddress(\"0xc2132D05D31c914a87C6611C10748AEb04B58e8F\"),\n  decimals: 6,\n  fiatISO: \"USD\",\n  name: \"Tether USD\",\n  symbol: \"USDT\",\n  logoURI: \"https://api.acta.link/deposit/v1/logos/usdt.png\" /* USDT */\n});\nvar polygonUSDCe = token({\n  chainId: polygon2.id,\n  address: getAddress(\"0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174\"),\n  decimals: 6,\n  fiatISO: \"USD\",\n  name: \"USD Coin (PoS)\",\n  symbol: \"USDCe\",\n  logoURI: \"https://api.acta.link/deposit/v1/logos/usdc.png\" /* USDC */\n});\nvar polygonTokens = [polygonUSDC, polygonUSDT];\nvar supportedTokensByChain = /* @__PURE__ */ new Map([\n  [arbitrum2.id, arbitrumTokens],\n  //done\n  [base2.id, baseTokens],\n  //done\n  [bsc2.id, bscTokens],\n  //done\n  [mainnet2.id, ethereumTokens],\n  //done\n  [optimism2.id, optimismTokens],\n  //done\n  [polygon2.id, polygonTokens]\n  //done\n]);\nfunction nativeETH(chainId) {\n  return nativeToken({\n    chainId,\n    name: \"Ether\",\n    symbol: \"ETH\",\n    logoURI: \"https://api.acta.link/deposit/v1/logos/ethereum.png\" /* ETH */\n  });\n}\nfunction nativeToken({\n  chainId,\n  name,\n  symbol,\n  logoURI,\n  address = zeroAddress,\n  decimals = 18\n}) {\n  return {\n    chainId,\n    address,\n    name,\n    decimals,\n    symbol,\n    logoURI,\n    logoSourceURI: logoURI\n  };\n}\nfunction token({\n  chainId,\n  address,\n  name,\n  symbol,\n  decimals,\n  fiatISO,\n  logoURI\n}) {\n  return {\n    chainId,\n    address,\n    name,\n    symbol,\n    decimals,\n    fiatISO,\n    logoURI,\n    logoSourceURI: logoURI\n  };\n}\nfunction getTokenByChainIdAndSymbol(chainId, symbol) {\n  const chain = getChainById(chainId);\n  if (!chain) throw new Error(`Chain ${chainId} not supported.`);\n  const tokens = supportedTokensByChain.get(chain.id);\n  if (!tokens) throw new Error(`Tokens not found for chain ${chainId}.`);\n  const token2 = tokens.find((t) => t.symbol === symbol);\n  if (!token2)\n    throw new Error(`Token ${symbol} not found for chain ${chainId}.`);\n  return token2;\n}\nvar tokensCommonSymbols = [\n  \"USDC\",\n  \"USDT\",\n  \"DAI\",\n  \"ETH\",\n  \"WETH\",\n  \"BNB\",\n  \"WBNB\",\n  \"USDCe\",\n  \"USDbC\",\n  \"EURC\",\n  \"POL\",\n  \"WPOL\"\n];\nfunction getTokenByChainIdAndAddress(chainId, address) {\n  const chain = getChainById(chainId);\n  if (!chain) throw new Error(`Chain ${chainId} not supported.`);\n  const tokens = supportedTokensByChain.get(chain.id);\n  if (!tokens) throw new Error(`Tokens not found for chain ${chainId}.`);\n  const token2 = tokens.find((t) => t.address === address);\n  if (!token2)\n    throw new Error(`Token ${address} not found for chain ${chainId}.`);\n  return token2;\n}\n\n// src/deposit.ts\nimport { toHex as toHex2, zeroAddress as zeroAddress4 } from \"viem\";\n\n// src/account.ts\nimport {\n  http as http2,\n  getAddress as getAddress2,\n  parseAbi as parseAbi2\n} from \"viem\";\nimport {\n  createPaymasterClient,\n  formatUserOperationRequest\n} from \"viem/account-abstraction\";\nimport { addressToEmptyAccount, createKernelAccount as createKernelAccount2 } from \"@zerodev/sdk\";\nimport { getEntryPoint, KERNEL_V3_1 } from \"@zerodev/sdk/constants\";\nimport { signerToEcdsaValidator } from \"@zerodev/ecdsa-validator\";\nimport { createSmartAccountClient } from \"permissionless\";\nimport { createPimlicoClient } from \"permissionless/clients/pimlico\";\n\n// src/rpc.ts\nfunction getRpcByChainId(chainId) {\n  switch (chainId) {\n    case 1:\n      return \"https://eth-mainnet.g.alchemy.com/v2/2uxlNSyeU1IcP7HMKteJM21td0IAHroW\";\n    case 10:\n      return \"https://opt-mainnet.g.alchemy.com/v2/2uxlNSyeU1IcP7HMKteJM21td0IAHroW\";\n    case 56:\n      return \"https://bsc-mainnet.g.alchemy.com/v2/2uxlNSyeU1IcP7HMKteJM21td0IAHroW\";\n    case 137:\n      return \"https://polygon-mainnet.g.alchemy.com/v2/2uxlNSyeU1IcP7HMKteJM21td0IAHroW\";\n    case 8453:\n      return \"https://base-mainnet.g.alchemy.com/v2/2uxlNSyeU1IcP7HMKteJM21td0IAHroW\";\n    case 42161:\n      return \"https://arbitrum-mainnet.g.alchemy.com/v2/2uxlNSyeU1IcP7HMKteJM21td0IAHroW\";\n    case 59144:\n      return \"https://linea-mainnet.g.alchemy.com/v2/2uxlNSyeU1IcP7HMKteJM21td0IAHroW\";\n    default:\n      return void 0;\n  }\n}\nfunction getPimlicoRpcByChainId(chainId) {\n  switch (chainId) {\n    case 1:\n      return `https://api.pimlico.io/v2/${chainId}/rpc?apikey=pim_Jjg9Mp3i5LPCvgSyqXKK5T`;\n    case 10:\n      return `https://api.pimlico.io/v2/${chainId}/rpc?apikey=pim_Jjg9Mp3i5LPCvgSyqXKK5T`;\n    case 56:\n      return `https://api.pimlico.io/v2/${chainId}/rpc?apikey=pim_Jjg9Mp3i5LPCvgSyqXKK5T`;\n    case 137:\n      return `https://api.pimlico.io/v2/${chainId}/rpc?apikey=pim_Jjg9Mp3i5LPCvgSyqXKK5T`;\n    case 8453:\n      return `https://api.pimlico.io/v2/${chainId}/rpc?apikey=pim_Jjg9Mp3i5LPCvgSyqXKK5T`;\n    case 42161:\n      return `https://api.pimlico.io/v2/${chainId}/rpc?apikey=pim_Jjg9Mp3i5LPCvgSyqXKK5T`;\n    case 59144:\n      return `https://api.pimlico.io/v2/${chainId}/rpc?apikey=pim_Jjg9Mp3i5LPCvgSyqXKK5T`;\n    default:\n      return void 0;\n  }\n}\n\n// src/viemClient.ts\nimport {\n  http,\n  createPublicClient,\n  parseAbi,\n  encodeFunctionData,\n  maxUint256\n} from \"viem\";\nvar ViemClient = class {\n  constructor(chainId, walletClient) {\n    this.chainId = chainId;\n    this.walletClient = walletClient;\n  }\n  publicClient() {\n    return createPublicClient({\n      chain: getChainById(this.chainId),\n      transport: http(getRpcByChainId(this.chainId))\n    });\n  }\n  checkTokenAllowance(token2, owner, spender) {\n    return __async(this, null, function* () {\n      const allowance = yield this.publicClient().readContract({\n        address: token2.address,\n        abi: parseAbi([\n          \"function allowance(address,address) view returns (uint256)\"\n        ]),\n        functionName: \"allowance\",\n        args: [owner, spender]\n      });\n      return allowance;\n    });\n  }\n  checkAndApproveToken(token2, spender, amount, allowMaxTokenApproval) {\n    return __async(this, null, function* () {\n      var _a;\n      if (this.walletClient === void 0) {\n        throw new Error(\"Wallet client is required\");\n      }\n      const signerAddress = (_a = this.walletClient.account) == null ? void 0 : _a.address;\n      console.log(\"signerAddress\", signerAddress);\n      if (signerAddress === void 0) {\n        throw new Error(\"Signer address is required\");\n      }\n      const allowance = yield this.checkTokenAllowance(\n        token2,\n        signerAddress,\n        spender\n      );\n      if (allowance < amount) {\n        const txn = yield this.walletClient.sendTransaction({\n          to: token2.address,\n          account: signerAddress,\n          chain: getChainById(token2.chainId),\n          value: BigInt(0),\n          data: encodeFunctionData({\n            abi: parseAbi([\"function approve(address,uint)\"]),\n            functionName: \"approve\",\n            args: [spender, allowMaxTokenApproval ? maxUint256 : amount]\n          })\n        });\n        const receipt = yield this.publicClient().waitForTransactionReceipt({\n          hash: txn,\n          confirmations: token2.chainId === 1 ? 1 : 5\n        });\n        return amount;\n      }\n      return allowance;\n    });\n  }\n};\n\n// src/utils.ts\nimport {\n  constants,\n  fixSignedData,\n  toSigner,\n  KernelV3AccountAbi,\n  KernelFactoryStakerAbi,\n  KernelV3FactoryAbi,\n  KernelV3_1AccountAbi,\n  createKernelAccount\n} from \"@zerodev/sdk\";\nimport {\n  toKernelPluginManager\n} from \"@zerodev/sdk/accounts\";\nimport {\n  concat,\n  encodeAbiParameters,\n  keccak256,\n  slice,\n  zeroAddress as zeroAddress2,\n  decodeFunctionData\n} from \"viem\";\nimport {\n  toAccount,\n  privateKeyToAccount\n} from \"viem/accounts\";\nimport { getChainId, readContract } from \"viem/actions\";\nimport { getAction } from \"viem/utils\";\nimport {\n  getUserOperationHash\n} from \"viem/account-abstraction\";\nimport {\n  toCallPolicy,\n  toGasPolicy,\n  toRateLimitPolicy,\n  toSignatureCallerPolicy,\n  toSudoPolicy,\n  toTimestampPolicy\n} from \"@zerodev/permissions/policies\";\nimport { coerce, gt } from \"semver\";\nvar ECDSA_SIGNER_CONTRACT = \"0x6A6F069E2a08c2468e7724Ab3250CdBFBA14D4FF\";\nvar toSignerId = (signer) => {\n  return encodeAbiParameters(\n    [{ name: \"signerData\", type: \"bytes\" }],\n    [concat([signer.signerContractAddress, signer.getSignerData()])]\n  );\n};\nfunction toECDSASigner(_0) {\n  return __async(this, arguments, function* (signer, signerContractAddress = ECDSA_SIGNER_CONTRACT) {\n    const viemSigner = yield toSigner({ signer });\n    const account = toAccount({\n      address: viemSigner.address,\n      signMessage(_02) {\n        return __async(this, arguments, function* ({ message }) {\n          return fixSignedData(yield viemSigner.signMessage({ message }));\n        });\n      },\n      signTransaction(_, __) {\n        return __async(this, null, function* () {\n          throw new Error(\"Smart account signer doesn't need to sign transactions\");\n        });\n      },\n      signTypedData(typedData) {\n        return __async(this, null, function* () {\n          return fixSignedData(\n            yield viemSigner.signTypedData(__spreadValues({}, typedData))\n          );\n        });\n      }\n    });\n    return {\n      account,\n      signerContractAddress,\n      getSignerData: () => {\n        return viemSigner.address;\n      },\n      getDummySignature: () => constants.DUMMY_ECDSA_SIG\n    };\n  });\n}\nvar toPolicyId = (policies) => {\n  return encodeAbiParameters(\n    [{ name: \"policiesData\", type: \"bytes[]\" }],\n    [\n      policies.map(\n        (policy) => concat([policy.getPolicyInfoInBytes(), policy.getPolicyData()])\n      )\n    ]\n  );\n};\nfunction toPermissionValidator(_0, _1) {\n  return __async(this, arguments, function* (client, {\n    signer,\n    policies,\n    entryPoint,\n    kernelVersion: _,\n    flag = \"0x0000\" /* FOR_ALL_VALIDATION */\n  }) {\n    const chainId = client.chain ? client.chain.id : yield getChainId(client);\n    if (entryPoint.version !== \"0.7\") {\n      throw new Error(\"Only EntryPoint 0.7 is supported\");\n    }\n    const getEnableData = (_kernelAccountAddress) => __async(null, null, function* () {\n      const enableData = encodeAbiParameters(\n        [{ name: \"policyAndSignerData\", type: \"bytes[]\" }],\n        [\n          [\n            ...policies.map(\n              (policy) => concat([policy.getPolicyInfoInBytes(), policy.getPolicyData()])\n            ),\n            concat([flag, signer.signerContractAddress, signer.getSignerData()])\n          ]\n        ]\n      );\n      return enableData;\n    });\n    const getPermissionId = () => {\n      const pIdData = encodeAbiParameters(\n        [{ name: \"policyAndSignerData\", type: \"bytes[]\" }],\n        [[toPolicyId(policies), flag, toSignerId(signer)]]\n      );\n      return slice(keccak256(pIdData), 0, 4);\n    };\n    return __spreadProps(__spreadValues({}, signer.account), {\n      supportedKernelVersions: \">=0.3.0\",\n      validatorType: \"PERMISSION\",\n      address: zeroAddress2,\n      source: \"PermissionValidator\",\n      getEnableData,\n      getIdentifier: getPermissionId,\n      signMessage: (_02) => __async(null, [_02], function* ({ message }) {\n        return concat([\"0xff\", yield signer.account.signMessage({ message })]);\n      }),\n      signTypedData: (typedData) => __async(null, null, function* () {\n        return concat([\"0xff\", yield signer.account.signTypedData(typedData)]);\n      }),\n      signUserOperation: (userOperation) => __async(null, null, function* () {\n        const userOpHash = getUserOperationHash({\n          userOperation: __spreadProps(__spreadValues({}, userOperation), {\n            signature: \"0x\"\n          }),\n          entryPointAddress: entryPoint.address,\n          entryPointVersion: entryPoint.version,\n          chainId\n        });\n        const signature = yield signer.account.signMessage({\n          message: { raw: userOpHash }\n        });\n        return concat([\"0xff\", signature]);\n      }),\n      getNonceKey(_accountAddress, customNonceKey) {\n        return __async(this, null, function* () {\n          if (customNonceKey) {\n            return customNonceKey;\n          }\n          return BigInt(0);\n        });\n      },\n      getStubSignature(_userOperation) {\n        return __async(this, null, function* () {\n          return concat([\"0xff\", signer.getDummySignature()]);\n        });\n      },\n      getPluginSerializationParams: () => {\n        return {\n          policies\n        };\n      },\n      isEnabled: (kernelAccountAddress, _selector) => __async(null, null, function* () {\n        try {\n          const permissionConfig = yield getAction(\n            client,\n            readContract,\n            \"readContract\"\n          )({\n            abi: KernelV3AccountAbi,\n            address: kernelAccountAddress,\n            functionName: \"permissionConfig\",\n            args: [getPermissionId()]\n          });\n          return permissionConfig.signer === signer.signerContractAddress;\n        } catch (error) {\n          return false;\n        }\n      })\n    });\n  });\n}\nfunction bytesToBase64(bytes) {\n  const binString = Array.from(bytes, (x) => String.fromCodePoint(x)).join(\"\");\n  return btoa(binString);\n}\nfunction isPermissionValidatorPlugin(plugin) {\n  return (plugin == null ? void 0 : plugin.getPluginSerializationParams) !== void 0;\n}\nvar serializePermissionAccountParams = (params) => {\n  const replacer = (_, value) => {\n    if (typeof value === \"bigint\") {\n      return value.toString();\n    }\n    return value;\n  };\n  const jsonString = JSON.stringify(params, replacer);\n  const uint8Array = new TextEncoder().encode(jsonString);\n  const base64String = bytesToBase64(uint8Array);\n  return base64String;\n};\nvar serializePermissionAccount = (account, privateKey, enableSignature, eip7702Auth) => __async(null, null, function* () {\n  if (!isPermissionValidatorPlugin(account.kernelPluginManager))\n    throw new Error(\"Account plugin is not a permission validator\");\n  const permissionParams = account.kernelPluginManager.getPluginSerializationParams();\n  const action = account.kernelPluginManager.getAction();\n  const validityData = account.kernelPluginManager.getValidityData();\n  const _enableSignature = enableSignature != null ? enableSignature : yield account.kernelPluginManager.getPluginEnableSignature(\n    account.address\n  );\n  const _eip7702Auth = account.authorization ? eip7702Auth != null ? eip7702Auth : yield account == null ? void 0 : account.eip7702Auth : void 0;\n  const accountParams = {\n    initCode: yield account.generateInitCode(),\n    accountAddress: account.address\n  };\n  const paramsToBeSerialized = {\n    permissionParams,\n    action,\n    validityData,\n    accountParams,\n    enableSignature: _enableSignature,\n    privateKey,\n    eip7702Auth: _eip7702Auth\n  };\n  return serializePermissionAccountParams(paramsToBeSerialized);\n});\nvar isKernelVersionAfter = (kernelVersion, version) => {\n  const coercedKernelVersion = coerce(kernelVersion);\n  if (!coercedKernelVersion) return false;\n  return gt(coercedKernelVersion, version);\n};\nfunction base64ToBytes(base64) {\n  const binString = atob(base64);\n  return Uint8Array.from(binString, (m) => m.codePointAt(0));\n}\nvar deserializePermissionAccountParams = (params) => {\n  const uint8Array = base64ToBytes(params);\n  const jsonString = new TextDecoder().decode(uint8Array);\n  return JSON.parse(jsonString);\n};\nvar deserializePermissionAccount = (client, entryPoint, kernelVersion, modularPermissionAccountParams, modularSigner) => __async(null, null, function* () {\n  var _a;\n  if (entryPoint.version !== \"0.7\") {\n    throw new Error(\"Only EntryPoint 0.7 is supported\");\n  }\n  const params = deserializePermissionAccountParams(\n    modularPermissionAccountParams\n  );\n  let signer;\n  if (params.privateKey)\n    signer = yield toECDSASigner(privateKeyToAccount(params.privateKey));\n  else if (modularSigner) signer = modularSigner;\n  else throw new Error(\"No signer or serialized sessionKey provided\");\n  const modularPermissionPlugin = yield toPermissionValidator(client, {\n    signer,\n    policies: yield Promise.all(\n      ((_a = params.permissionParams.policies) == null ? void 0 : _a.map(\n        (policy) => createPolicyFromParams(policy)\n      )) || []\n    ),\n    entryPoint,\n    kernelVersion\n  });\n  const { index, validatorInitData, useMetaFactory } = decodeParamsFromInitCode(\n    params.accountParams.initCode,\n    kernelVersion\n  );\n  const kernelPluginManager = yield toKernelPluginManager(client, __spreadValues({\n    regular: modularPermissionPlugin,\n    pluginEnableSignature: params.enableSignature,\n    validatorInitData,\n    action: params.action,\n    entryPoint,\n    kernelVersion\n  }, params.validityData));\n  return createKernelAccount(client, {\n    entryPoint,\n    kernelVersion,\n    plugins: kernelPluginManager,\n    index,\n    address: params.accountParams.accountAddress,\n    useMetaFactory,\n    eip7702Auth: params.eip7702Auth\n  });\n});\nvar createPolicyFromParams = (policy) => __async(null, null, function* () {\n  switch (policy.policyParams.type) {\n    case \"call\":\n      return yield toCallPolicy(policy.policyParams);\n    case \"gas\":\n      return yield toGasPolicy(policy.policyParams);\n    case \"rate-limit\":\n      return yield toRateLimitPolicy(policy.policyParams);\n    case \"signature-caller\":\n      return yield toSignatureCallerPolicy(policy.policyParams);\n    case \"sudo\":\n      return yield toSudoPolicy(policy.policyParams);\n    case \"timestamp\":\n      return yield toTimestampPolicy(policy.policyParams);\n    default:\n      throw new Error(\"Unsupported policy type\");\n  }\n});\nvar decodeParamsFromInitCode = (initCode, kernelVersion) => {\n  let index;\n  let validatorInitData;\n  let deployWithFactoryFunctionData;\n  let useMetaFactory = true;\n  if (initCode === \"0x\") {\n    return {\n      index: void 0,\n      validatorInitData: void 0,\n      useMetaFactory: true\n    };\n  }\n  try {\n    deployWithFactoryFunctionData = decodeFunctionData({\n      abi: KernelFactoryStakerAbi,\n      data: initCode\n    });\n  } catch (error) {\n    deployWithFactoryFunctionData = decodeFunctionData({\n      abi: KernelV3FactoryAbi,\n      data: initCode\n    });\n    useMetaFactory = false;\n  }\n  if (!deployWithFactoryFunctionData) throw new Error(\"Invalid initCode\");\n  if (deployWithFactoryFunctionData.functionName === \"deployWithFactory\") {\n    index = BigInt(deployWithFactoryFunctionData.args[2]);\n    let initializeFunctionData;\n    if (kernelVersion === \"0.3.0\") {\n      initializeFunctionData = decodeFunctionData({\n        abi: KernelV3AccountAbi,\n        data: deployWithFactoryFunctionData.args[1]\n      });\n    } else {\n      initializeFunctionData = decodeFunctionData({\n        abi: KernelV3_1AccountAbi,\n        data: deployWithFactoryFunctionData.args[1]\n      });\n    }\n    if (!initializeFunctionData) throw new Error(\"Invalid initCode\");\n    if (initializeFunctionData.functionName === \"initialize\") {\n      validatorInitData = {\n        validatorAddress: initializeFunctionData.args[0],\n        identifier: initializeFunctionData.args[0],\n        enableData: initializeFunctionData.args[2],\n        initConfig: isKernelVersionAfter(kernelVersion, \"0.3.1\") && Array.isArray(initializeFunctionData.args[4]) ? [...initializeFunctionData.args[4]] : void 0\n      };\n    }\n  } else if (deployWithFactoryFunctionData.functionName === \"createAccount\") {\n    index = BigInt(deployWithFactoryFunctionData.args[1]);\n    let initializeFunctionData;\n    if (kernelVersion === \"0.3.0\") {\n      initializeFunctionData = decodeFunctionData({\n        abi: KernelV3AccountAbi,\n        data: deployWithFactoryFunctionData.args[0]\n      });\n    } else {\n      initializeFunctionData = decodeFunctionData({\n        abi: KernelV3_1AccountAbi,\n        data: deployWithFactoryFunctionData.args[0]\n      });\n    }\n    if (!initializeFunctionData) throw new Error(\"Invalid initCode\");\n    if (initializeFunctionData.functionName === \"initialize\") {\n      validatorInitData = {\n        validatorAddress: initializeFunctionData.args[0],\n        identifier: initializeFunctionData.args[0],\n        enableData: initializeFunctionData.args[2],\n        initConfig: isKernelVersionAfter(kernelVersion, \"0.3.1\") && Array.isArray(initializeFunctionData.args[4]) ? [...initializeFunctionData.args[4]] : void 0\n      };\n    }\n  }\n  if (index === void 0 || validatorInitData === void 0)\n    throw new Error(\"Invalid initCode\");\n  return { index, validatorInitData, useMetaFactory };\n};\nvar getPeriodInterval = (periodUnit) => {\n  switch (periodUnit) {\n    case \"5mins\":\n      return 5 * 60;\n    case \"day\":\n      return 24 * 60 * 60;\n    case \"week\":\n      return 7 * 24 * 60 * 60;\n    case \"month\":\n      return 28 * 24 * 60 * 60;\n    case \"year\":\n      return 365 * 24 * 60 * 60;\n    default:\n      throw new Error(\"Invalid period unit\");\n  }\n};\n\n// src/account.ts\nimport {\n  toCallPolicy as toCallPolicy2,\n  CallPolicyVersion,\n  ParamCondition\n} from \"@zerodev/permissions/policies\";\nvar ActaAccount = class {\n  constructor(chainId, publicClient, signer) {\n    this.chainId = chainId;\n    this.signer = signer;\n    this.publicClient = publicClient;\n  }\n  createAccount() {\n    return __async(this, null, function* () {\n      const kernelVersion = KERNEL_V3_1;\n      const entryPoint = getEntryPoint(\"0.7\");\n      const ecdsaValidator = yield signerToEcdsaValidator(this.publicClient, {\n        signer: this.signer,\n        entryPoint,\n        kernelVersion\n      });\n      const account = yield createKernelAccount2(this.publicClient, {\n        plugins: {\n          sudo: ecdsaValidator\n        },\n        entryPoint,\n        kernelVersion\n      });\n      return account;\n    });\n  }\n  createAccountHelpers() {\n    return __async(this, null, function* () {\n      const account = yield this.createAccount();\n      const entryPoint = getEntryPoint(\"0.7\");\n      const paymasterClient = createPaymasterClient({\n        transport: http2(getPimlicoRpcByChainId(this.chainId))\n      });\n      const pimlicoClient = createPimlicoClient({\n        chain: getChainById(this.chainId),\n        transport: http2(getPimlicoRpcByChainId(this.chainId)),\n        entryPoint\n      });\n      const accountClient = createSmartAccountClient({\n        account,\n        chain: getChainById(this.chainId),\n        paymaster: paymasterClient,\n        bundlerTransport: http2(getPimlicoRpcByChainId(this.chainId)),\n        userOperation: {\n          estimateFeesPerGas: () => __async(this, null, function* () {\n            return (yield pimlicoClient.getUserOperationGasPrice()).fast;\n          })\n        }\n      });\n      return { paymasterClient, pimlicoClient, accountClient };\n    });\n  }\n  estimateSinglePaymentGas(parameters) {\n    return __async(this, null, function* () {\n      const {\n        signerAddress,\n        chainId,\n        token: tokenSymbol,\n        amount,\n        receiver\n      } = parameters;\n      if (amount <= BigInt(0)) {\n        throw new Error(\"Amount must be greater than 0.\");\n      }\n      if (receiver === signerAddress) {\n        throw new Error(\"Receiver cannot be the same as the signer.\");\n      }\n      const account = yield this.createAccount();\n      const { accountClient, pimlicoClient } = yield this.createAccountHelpers();\n      const fromAddress = signerAddress;\n      const smartAccountAddress = account.address;\n      const token2 = getTokenByChainIdAndSymbol(chainId, tokenSymbol);\n      if (!token2) {\n        throw new Error(\"Token not found.\");\n      }\n      const quotes = yield pimlicoClient.getTokenQuotes({\n        tokens: [token2.address],\n        chain: getChainById(chainId)\n      });\n      const { postOpGas, exchangeRate, paymaster } = quotes[0];\n      const userOperation = yield accountClient.prepareUserOperation({\n        calls: [\n          {\n            to: getAddress2(token2.address),\n            abi: parseAbi2([\"function transferFrom(address,address,uint)\"]),\n            functionName: \"transferFrom\",\n            args: [\n              fromAddress,\n              \"0x061BA68bc8208F4AddBeE86F74F17D77129cCF70\",\n              BigInt(0)\n            ]\n          },\n          {\n            to: getAddress2(token2.address),\n            abi: parseAbi2([\"function transferFrom(address,address,uint)\"]),\n            functionName: \"transferFrom\",\n            args: [fromAddress, receiver, BigInt(0)]\n          }\n        ]\n      });\n      const userOperationMaxGas = userOperation.preVerificationGas + userOperation.callGasLimit + userOperation.verificationGasLimit + (userOperation.paymasterPostOpGasLimit || BigInt(0)) + (userOperation.paymasterVerificationGasLimit || BigInt(0));\n      const userOperationMaxCost = BigInt(\n        userOperationMaxGas * userOperation.maxFeePerGas\n      );\n      const estimatedGasCostInToken = (userOperationMaxCost + postOpGas * userOperation.maxFeePerGas) * exchangeRate / BigInt(1e18);\n      const ActalinkFeesInToken = amount * BigInt(20) / BigInt(1e4);\n      const estimatedTotalFeesInToken = estimatedGasCostInToken + ActalinkFeesInToken;\n      const feeInclusiveAmountInToken = amount - estimatedTotalFeesInToken;\n      const feeExclusiveAmountInToken = amount + estimatedTotalFeesInToken;\n      return {\n        estimatedGasCostInToken,\n        ActalinkFeesInToken,\n        estimatedTotalFeesInToken,\n        feeInclusiveAmountInToken,\n        feeExclusiveAmountInToken,\n        paymaster,\n        userOperation\n      };\n    });\n  }\n  signSinglePaymentOperation(singlePaymentParams) {\n    return __async(this, null, function* () {\n      try {\n        if (!this.signer) {\n          throw new Error(\"Signer is required for self custody payments.\");\n        }\n        const {\n          signerAddress,\n          chainId,\n          token: tokenSymbol,\n          amount,\n          receiver,\n          feeInclusive,\n          allowMaxTokenApproval\n        } = singlePaymentParams;\n        if (amount <= BigInt(0)) {\n          throw new Error(\"Amount must be greater than 0.\");\n        }\n        if (receiver === signerAddress) {\n          throw new Error(\"Receiver cannot be the same as the signer.\");\n        }\n        const token2 = getTokenByChainIdAndSymbol(chainId, tokenSymbol);\n        if (!token2) {\n          throw new Error(\"Token not found.\");\n        }\n        const viemClient = new ViemClient(this.chainId, this.signer);\n        const {\n          estimatedGasCostInToken,\n          ActalinkFeesInToken,\n          feeInclusiveAmountInToken,\n          feeExclusiveAmountInToken,\n          estimatedTotalFeesInToken,\n          paymaster\n        } = yield this.estimateSinglePaymentGas({\n          signerAddress,\n          chainId,\n          token: tokenSymbol,\n          amount,\n          receiver,\n          feeInclusive\n        });\n        const account = yield this.createAccount();\n        const { accountClient } = yield this.createAccountHelpers();\n        const fromAddress = signerAddress;\n        const smartAccountAddress = account.address;\n        const amountToTransfer = feeInclusive ? amount : feeExclusiveAmountInToken;\n        const receiverAmount = feeInclusive ? feeInclusiveAmountInToken : amount;\n        yield viemClient.checkAndApproveToken(\n          token2,\n          smartAccountAddress,\n          amountToTransfer,\n          allowMaxTokenApproval != null ? allowMaxTokenApproval : false\n        );\n        const userOperation = yield accountClient.prepareUserOperation({\n          calls: [\n            {\n              to: getAddress2(token2.address),\n              abi: parseAbi2([\"function transferFrom(address,address,uint)\"]),\n              functionName: \"transferFrom\",\n              args: [\n                fromAddress,\n                \"0xC4910E5ec82Da0A41aF9C6360b7A1f531e1e37B0\",\n                estimatedGasCostInToken\n              ]\n            },\n            {\n              to: getAddress2(token2.address),\n              abi: parseAbi2([\"function transferFrom(address,address,uint)\"]),\n              functionName: \"transferFrom\",\n              args: [fromAddress, receiver, receiverAmount]\n            }\n          ]\n        });\n        const signature = yield account.signUserOperation(__spreadProps(__spreadValues({}, userOperation), {\n          chainId: this.chainId\n        }));\n        const rpcParameters = formatUserOperationRequest(__spreadProps(__spreadValues({}, userOperation), {\n          signature\n        }));\n        return rpcParameters;\n      } catch (error) {\n        if (error instanceof Error) {\n          throw new Error(error.message);\n        }\n        throw new Error(\"Failed to sign single payment operation.\");\n      }\n    });\n  }\n  signRecurringPayments(recurringPaymentParams) {\n    return __async(this, null, function* () {\n      if (!this.signer) {\n        throw new Error(\"Signer is required for self custody payments.\");\n      }\n      const {\n        signerAddress,\n        chainId,\n        token: tokenSymbol,\n        amount,\n        receiver,\n        feeInclusive,\n        count,\n        intervalUnit,\n        startDate,\n        endDate,\n        allowMaxTokenApproval\n      } = recurringPaymentParams;\n      if (amount <= BigInt(0)) {\n        throw new Error(\"Amount must be greater than 0.\");\n      }\n      if (receiver === signerAddress) {\n        throw new Error(\"Receiver cannot be the same as the signer.\");\n      }\n      if (!intervalUnit) {\n        throw new Error(\"Interval unit is required.\");\n      }\n      const token2 = getTokenByChainIdAndSymbol(chainId, tokenSymbol);\n      if (!token2) {\n        throw new Error(\"Token not found.\");\n      }\n      const kernelVersion = KERNEL_V3_1;\n      const entryPoint = getEntryPoint(\"0.7\");\n      const paymentCount = count != null ? count : 24;\n      const account = yield this.createAccount();\n      const smartAccountAddress = account.address;\n      const viemClient = new ViemClient(this.chainId, this.signer);\n      const { paymasterClient, pimlicoClient } = yield this.createAccountHelpers();\n      const ecdsaValidator = yield signerToEcdsaValidator(\n        viemClient.publicClient(),\n        {\n          entryPoint,\n          kernelVersion,\n          signer: this.signer\n        }\n      );\n      const sessionKeyAddress = \"0xFDEed8e268D74DF71f3Db7409F8A8290FF1263ED\";\n      const emptyAccount = addressToEmptyAccount(sessionKeyAddress);\n      const emptySessionKeySigner = yield toECDSASigner(emptyAccount);\n      const {\n        paymaster,\n        ActalinkFeesInToken,\n        feeInclusiveAmountInToken,\n        feeExclusiveAmountInToken,\n        estimatedTotalFeesInToken,\n        userOperation,\n        estimatedGasCostInToken\n      } = yield this.estimateSinglePaymentGas({\n        signerAddress,\n        chainId,\n        token: tokenSymbol,\n        amount,\n        receiver,\n        feeInclusive\n      });\n      const amountToTransfer = feeInclusive ? amount : feeExclusiveAmountInToken;\n      const receiverAmount = feeInclusive ? feeInclusiveAmountInToken : amount;\n      yield viemClient.checkAndApproveToken(\n        token2,\n        smartAccountAddress,\n        amountToTransfer * BigInt(paymentCount) + estimatedGasCostInToken * BigInt(2) * BigInt(paymentCount),\n        allowMaxTokenApproval != null ? allowMaxTokenApproval : false\n      );\n      const callPolicy = toCallPolicy2({\n        policyVersion: CallPolicyVersion.V0_0_4,\n        permissions: [\n          {\n            target: token2.address,\n            valueLimit: BigInt(0),\n            abi: parseAbi2([\"function transferFrom(address,address,uint)\"]),\n            functionName: \"transferFrom\",\n            args: [\n              {\n                condition: ParamCondition.EQUAL,\n                value: signerAddress\n              },\n              {\n                condition: ParamCondition.ONE_OF,\n                value: [\"0xC4910E5ec82Da0A41aF9C6360b7A1f531e1e37B0\", receiver]\n              },\n              {\n                condition: ParamCondition.LESS_THAN_OR_EQUAL,\n                value: amountToTransfer + amountToTransfer / BigInt(2)\n              }\n            ]\n          }\n        ]\n      });\n      const permissionPlugin = yield toPermissionValidator(\n        viemClient.publicClient(),\n        {\n          entryPoint,\n          kernelVersion,\n          signer: emptySessionKeySigner,\n          policies: [callPolicy]\n        }\n      );\n      const serializedSessionKeyAccount = yield createKernelAccount2(\n        viemClient.publicClient(),\n        {\n          entryPoint,\n          kernelVersion,\n          plugins: {\n            sudo: ecdsaValidator,\n            regular: permissionPlugin\n          }\n        }\n      );\n      const approval = yield serializePermissionAccount(\n        serializedSessionKeyAccount\n      );\n      return approval;\n    });\n  }\n};\n\n// src/api.ts\nimport { toHex } from \"viem\";\nvar HttpMethod = /* @__PURE__ */ ((HttpMethod2) => {\n  HttpMethod2[\"Get\"] = \"get\";\n  HttpMethod2[\"Post\"] = \"post\";\n  HttpMethod2[\"Delete\"] = \"delete\";\n  HttpMethod2[\"Update\"] = \"update\";\n  return HttpMethod2;\n})(HttpMethod || {});\nfunction sendRequest(_0) {\n  return __async(this, arguments, function* ({\n    url,\n    method,\n    body,\n    headers = {}\n  }) {\n    var _a;\n    const response = yield fetch(url, {\n      method,\n      headers: __spreadProps(__spreadValues({}, headers), {\n        Accept: \"application/json\",\n        \"Content-Type\": \"application/json\"\n      }),\n      body: JSON.stringify(body)\n    });\n    let jsonResponse;\n    const res = yield response.json();\n    if (!response.ok) {\n      jsonResponse = {\n        error: {\n          code: response.status,\n          message: response.statusText\n        },\n        data: void 0\n      };\n      return jsonResponse;\n    }\n    if (!res) {\n      jsonResponse = {\n        error: {\n          code: 400,\n          message: \"No response received.\"\n        },\n        data: void 0\n      };\n      return jsonResponse;\n    }\n    if (res == null ? void 0 : res.error) {\n      jsonResponse = {\n        error: {\n          code: response.status,\n          message: res.error\n        },\n        data: void 0\n      };\n      return jsonResponse;\n    }\n    jsonResponse = {\n      data: res.data,\n      message: (_a = res.message) != null ? _a : \"Success\",\n      error: void 0\n    };\n    return jsonResponse;\n  });\n}\nfunction createSessionAPICall(url, sessionBodyParams) {\n  return __async(this, null, function* () {\n    const response = yield sendRequest({\n      url,\n      method: \"post\" /* Post */,\n      body: sessionBodyParams\n    });\n    return response.data;\n  });\n}\nfunction verifySessionAPICall(url, sessionId) {\n  return __async(this, null, function* () {\n    const response = yield sendRequest({\n      url,\n      method: \"get\" /* Get */\n    });\n    return response.data;\n  });\n}\nfunction scheduleRecurringPaymentsAPICall(url, params) {\n  return __async(this, null, function* () {\n    const parsedParams = __spreadProps(__spreadValues({}, params), {\n      amount: toHex(params.amount)\n    });\n    const response = yield sendRequest({\n      url,\n      method: \"post\" /* Post */,\n      body: parsedParams\n    });\n    return response.data;\n  });\n}\nfunction executeSinglePaymentAPICall(url, userOperation, paymentParams, serviceParams) {\n  return __async(this, null, function* () {\n    const params = {\n      userOperation,\n      paymentParams,\n      serviceParams\n    };\n    const response = yield sendRequest({\n      url,\n      method: \"post\" /* Post */,\n      body: params\n    });\n    return response.data;\n  });\n}\n\n// src/deposit.ts\nvar transactionServiceUrl = \"https://api.acta.link/transaction/v1/\";\nvar depositServiceUrl = \"https://api.acta.link/deposit/v1/\";\nvar ActaDeposit = class {\n  constructor(parameters) {\n    this.count = 0;\n    this.intervalUnit = void 0;\n    this.startDate = void 0;\n    this.endDate = void 0;\n    this.serviceSessionParams = void 0;\n    this.depositSessionId = \"\";\n    this.status = \"not_started\";\n    this.serviceType = \"deposit\";\n    this.allowMaxTokenApproval = false;\n    var _a, _b;\n    this.connectorType = parameters.connectorType;\n    this.walletClient = parameters.walletClient;\n    this.signerAddress = parameters.signerAddress;\n    this.chainId = parameters.chainId;\n    this.token = parameters.token;\n    this.amount = parameters.amount;\n    this.receiver = parameters.receiver;\n    this.feeInclusive = parameters.feeInclusive;\n    this.paymentType = parameters.paymentType;\n    this.count = parameters.count;\n    this.intervalUnit = parameters.intervalUnit;\n    this.startDate = parameters.startDate;\n    this.endDate = parameters.endDate;\n    this.depositSessionId = (_a = parameters.depositSessionId) != null ? _a : \"\";\n    this.allowMaxTokenApproval = (_b = parameters.allowMaxTokenApproval) != null ? _b : false;\n    this.viemClient = new ViemClient(this.chainId, this.walletClient);\n    this.account = new ActaAccount(\n      this.chainId,\n      this.viemClient.publicClient(),\n      this.walletClient\n    );\n  }\n  createSession(serviceSessionparams) {\n    return __async(this, null, function* () {\n      try {\n        if (!this.signerAddress || this.signerAddress === zeroAddress4) {\n          throw new Error(\"Signer address is required.\");\n        }\n        if (this.paymentType !== \"single\" && this.paymentType !== \"choose\" && this.paymentType !== \"recurring\") {\n          throw new Error(\"Invalid payment type.\");\n        }\n        if (!this.receiver || this.receiver === zeroAddress4) {\n          throw new Error(\"Receiver is required.\");\n        }\n        if (this.paymentType === \"recurring\" && (this.count === void 0 || this.count === 0)) {\n          throw new Error(\"Count is required for recurring payments.\");\n        }\n        if (this.paymentType === \"recurring\" && this.intervalUnit === void 0) {\n          throw new Error(\"Interval unit is required for recurring payments.\");\n        }\n        if (this.depositSessionId !== \"\") {\n          const session2 = yield verifySessionAPICall(\n            `${depositServiceUrl}verify-session?sessionId=${this.depositSessionId}`,\n            this.depositSessionId\n          );\n          this.depositSessionId = session2.sessionId;\n          return session2.sessionId;\n        }\n        const token2 = getTokenByChainIdAndSymbol(this.chainId, this.token);\n        if (!token2) {\n          throw new Error(\"Token not supported.\");\n        }\n        const session = yield createSessionAPICall(\n          `${depositServiceUrl}session`,\n          {\n            paymentParams: {\n              signerAddress: this.signerAddress,\n              chainId: this.chainId,\n              token: token2.address,\n              amount: toHex2(this.amount),\n              receiver: this.receiver,\n              feeInclusive: this.feeInclusive,\n              serviceType: \"deposit\",\n              paymentType: this.paymentType,\n              count: this.count,\n              intervalUnit: this.intervalUnit,\n              startDate: this.startDate,\n              endDate: this.endDate\n            },\n            serviceSessionParams: serviceSessionparams\n          }\n        );\n        this.depositSessionId = session.sessionId;\n        this.status = \"session_created\";\n        const sessionId = session.sessionId;\n        return sessionId;\n      } catch (error) {\n        this.status = \"session_fetch_failed\";\n        if (error instanceof Error) {\n          throw new Error(error.message);\n        }\n        throw new Error(\"Failed to create deposit session.\");\n      }\n    });\n  }\n  estimateSinglePaymentGas(parameters) {\n    return __async(this, null, function* () {\n      try {\n        if (this.connectorType !== \"Self-Custody\" /* SELF_CUSTODY */) {\n          throw new Error(\"Only self custody payments are supported.\");\n        }\n        const {\n          estimatedGasCostInToken,\n          ActalinkFeesInToken,\n          feeInclusiveAmountInToken,\n          feeExclusiveAmountInToken,\n          estimatedTotalFeesInToken,\n          paymaster,\n          userOperation\n        } = yield this.account.estimateSinglePaymentGas(parameters);\n        return {\n          estimatedGasCostInToken,\n          ActalinkFeesInToken,\n          feeInclusiveAmountInToken,\n          feeExclusiveAmountInToken,\n          estimatedTotalFeesInToken,\n          paymaster,\n          userOperation\n        };\n      } catch (error) {\n        if (error instanceof Error) {\n          throw new Error(error.message);\n        }\n        throw new Error(\"Failed to estimate single payment gas.\");\n      }\n    });\n  }\n  createPayment(servicePaymentParams) {\n    return __async(this, null, function* () {\n      try {\n        if (this.paymentType === \"single\") {\n          const paymentParams = this.serviceType === \"deposit\" ? __spreadProps(__spreadValues({}, servicePaymentParams), {\n            depositSessionId: this.depositSessionId\n          }) : servicePaymentParams;\n          const id = yield this.createSinglePayment(paymentParams);\n          return id;\n        }\n        if (this.paymentType === \"choose\") {\n        }\n        if (this.paymentType === \"recurring\") {\n          const paymentParams = this.serviceType === \"deposit\" ? __spreadProps(__spreadValues({}, servicePaymentParams), {\n            depositSessionId: this.depositSessionId\n          }) : servicePaymentParams;\n          const id = yield this.createRecurringPayments(paymentParams);\n          return id;\n        }\n      } catch (error) {\n        this.status = \"payment_failed\";\n        if (error instanceof Error) {\n          throw new Error(error.message);\n        }\n        throw new Error(\"Failed to create payment.\");\n      }\n    });\n  }\n  createSinglePayment(servicePaymentParams) {\n    return __async(this, null, function* () {\n      try {\n        if (this.connectorType !== \"Self-Custody\" /* SELF_CUSTODY */) {\n          throw new Error(\"Only self custody payments are supported.\");\n        }\n        if (!this.depositSessionId || this.depositSessionId === \"\") {\n          throw new Error(\"Deposit session ID is required.\");\n        }\n        if (this.depositSessionId !== \"\") {\n          const session = yield verifySessionAPICall(\n            `${depositServiceUrl}verify-session?sessionId=${this.depositSessionId}`,\n            this.depositSessionId\n          );\n          this.depositSessionId = session.sessionId;\n        }\n        const signerAddress = this.signerAddress;\n        const chainId = this.chainId;\n        const tokenSymbol = this.token;\n        const amount = this.amount;\n        const receiver = this.receiver;\n        const feeInclusive = this.feeInclusive;\n        const serviceType = this.serviceType;\n        const token2 = getTokenByChainIdAndSymbol(chainId, tokenSymbol);\n        if (!token2) {\n          throw new Error(\"Token not supported.\");\n        }\n        const rpcParameters = yield this.account.signSinglePaymentOperation({\n          signerAddress,\n          chainId,\n          token: tokenSymbol,\n          amount,\n          receiver,\n          feeInclusive,\n          allowMaxTokenApproval: this.allowMaxTokenApproval\n        });\n        const txn = yield executeSinglePaymentAPICall(\n          `${transactionServiceUrl}execute/single`,\n          rpcParameters,\n          {\n            senderAddress: signerAddress,\n            receiverAddress: receiver,\n            chainId,\n            tokenAddress: token2.address,\n            amount: toHex2(amount),\n            feeInclusive,\n            serviceType\n          },\n          servicePaymentParams\n        );\n        return txn.transaction.id;\n      } catch (error) {\n        if (error instanceof Error) {\n          throw new Error(error.message);\n        }\n        throw new Error(\"Failed to create payment.\");\n      }\n    });\n  }\n  // private async pollPayment(interval: number) {\n  //   const intervalId = setInterval(async () => {\n  //     const result = await fetch(\n  //       `${this.serviceUrl}/v1/${this.serviceType}/status?id=${this.depositSessionId}`,\n  //       {\n  //         method: \"GET\",\n  //         headers: {\n  //           \"Content-Type\": \"application/json\",\n  //         },\n  //       }\n  //     );\n  //     const res = await result.json();\n  //     const status = res.data.status;\n  //     if (status === \"success\" || status === \"failed\") {\n  //       this.status =\n  //         status === \"success\" ? \"payment_completed\" : \"payment_failed\";\n  //       clearInterval(intervalId);\n  //     }\n  //   }, interval);\n  //   return () => clearInterval(intervalId);\n  // }\n  createRecurringPayments(servicePaymentParams) {\n    return __async(this, null, function* () {\n      if (this.connectorType !== \"Self-Custody\" /* SELF_CUSTODY */) {\n        throw new Error(\"Only self custody payments are supported.\");\n      }\n      if (!this.depositSessionId || this.depositSessionId === \"\") {\n        throw new Error(\"Deposit session ID is required.\");\n      }\n      if (!this.walletClient) {\n        throw new Error(\"Signer is required for self custody payments.\");\n      }\n      if (this.depositSessionId !== \"\") {\n        const session = yield verifySessionAPICall(\n          `${depositServiceUrl}verify-session?sessionId=${this.depositSessionId}`,\n          this.depositSessionId\n        );\n        this.depositSessionId = session.sessionId;\n      }\n      const signerAddress = this.signerAddress;\n      const chainId = this.chainId;\n      const tokenSymbol = this.token;\n      const amount = this.amount;\n      const receiver = this.receiver;\n      const feeInclusive = this.feeInclusive;\n      const count = this.count;\n      const intervalUnit = this.intervalUnit;\n      const startDate = this.startDate;\n      const endDate = this.endDate;\n      const serviceType = this.serviceType;\n      const token2 = getTokenByChainIdAndSymbol(chainId, tokenSymbol);\n      if (!token2) {\n        throw new Error(\"Token not supported.\");\n      }\n      if (!chainId || !count || !intervalUnit || !startDate || !endDate) {\n        throw new Error(\"Invalid parameters.\");\n      }\n      const approval = yield this.account.signRecurringPayments({\n        signerAddress,\n        chainId,\n        token: tokenSymbol,\n        amount,\n        feeInclusive,\n        count,\n        intervalUnit,\n        startDate,\n        endDate,\n        receiver,\n        allowMaxTokenApproval: this.allowMaxTokenApproval\n      });\n      const txn = yield scheduleRecurringPaymentsAPICall(\n        `${transactionServiceUrl}schedule/recurring`,\n        {\n          amount,\n          chainId,\n          feeInclusive,\n          intervalCount: count,\n          intervalUnit,\n          senderAddress: signerAddress,\n          receiverAddress: receiver,\n          tokenAddress: token2.address,\n          startAt: startDate,\n          endAt: endDate,\n          approval,\n          serviceParams: servicePaymentParams,\n          serviceType\n        }\n      );\n      return txn.recurringTransaction.id;\n    });\n  }\n  getPaymentSteps() {\n    return __async(this, null, function* () {\n      const signerAddress = this.signerAddress;\n      const chainId = this.chainId;\n      const tokenSymbol = this.token;\n      const amount = this.amount;\n      const receiver = this.receiver;\n      const feeInclusive = this.feeInclusive;\n      const count = this.count;\n      if (!signerAddress) return [\"allowance\", \"confirm\"];\n      const token2 = getTokenByChainIdAndSymbol(chainId, tokenSymbol);\n      if (!token2) return [\"allowance\", \"confirm\"];\n      const smartAccount = yield this.account.createAccount();\n      const { estimatedGasCostInToken, feeExclusiveAmountInToken } = yield this.account.estimateSinglePaymentGas({\n        chainId,\n        amount,\n        feeInclusive,\n        receiver,\n        signerAddress,\n        token: tokenSymbol\n      });\n      const amountToTransfer = feeInclusive ? amount : feeExclusiveAmountInToken;\n      let paymentAmount = (amountToTransfer + estimatedGasCostInToken * BigInt(2)) * BigInt(count != null ? count : 1);\n      const allowance = yield this.viemClient.checkTokenAllowance(\n        token2,\n        signerAddress,\n        smartAccount.address\n      );\n      if (paymentAmount <= allowance) return [\"confirm\"];\n      return [\"allowance\", \"confirm\"];\n    });\n  }\n};\nexport {\n  ActaAccount,\n  ActaDeposit,\n  ConnectorType,\n  HttpMethod,\n  PolicyFlags,\n  TokenLogo,\n  ViemClient,\n  arbitrumDAI,\n  arbitrumETH,\n  arbitrumUSDC,\n  arbitrumUSDCe,\n  arbitrumUSDT,\n  arbitrumWETH,\n  base64ToBytes,\n  baseDAI,\n  baseETH,\n  baseEURC,\n  baseUSDC,\n  baseUSDT,\n  baseUSDbC,\n  baseWETH,\n  bscBNB,\n  bscUSDC,\n  bscUSDT,\n  bscWBNB,\n  bytesToBase64,\n  createPolicyFromParams,\n  createSessionAPICall,\n  decodeParamsFromInitCode,\n  deserializePermissionAccount,\n  deserializePermissionAccountParams,\n  ethereumDAI,\n  ethereumETH,\n  ethereumEURC,\n  ethereumUSDC,\n  ethereumUSDT,\n  ethereumWETH,\n  executeSinglePaymentAPICall,\n  getChainById,\n  getChainExplorerByChainId,\n  getPeriodInterval,\n  getPimlicoRpcByChainId,\n  getRpcByChainId,\n  getTokenByChainIdAndAddress,\n  getTokenByChainIdAndSymbol,\n  isKernelVersionAfter,\n  isPermissionValidatorPlugin,\n  lineaDAI,\n  lineaETH,\n  lineaUSDC,\n  lineaWETH,\n  optimismDAI,\n  optimismETH,\n  optimismUSDC,\n  optimismUSDCe,\n  optimismUSDT,\n  optimismWETH,\n  polygonDAI,\n  polygonPOL,\n  polygonUSDC,\n  polygonUSDCe,\n  polygonUSDT,\n  polygonWETH,\n  polygonWPOL,\n  scheduleRecurringPaymentsAPICall,\n  sendRequest,\n  serializePermissionAccount,\n  serializePermissionAccountParams,\n  supportedChains,\n  supportedTokensByChain,\n  toECDSASigner,\n  toPermissionValidator,\n  toPolicyId,\n  toSignerId,\n  token,\n  tokensCommonSymbols,\n  verifySessionAPICall\n};\n","// src/subscribable.ts\nvar Subscribable = class {\n  constructor() {\n    this.listeners = /* @__PURE__ */ new Set();\n    this.subscribe = this.subscribe.bind(this);\n  }\n  subscribe(listener) {\n    this.listeners.add(listener);\n    this.onSubscribe();\n    return () => {\n      this.listeners.delete(listener);\n      this.onUnsubscribe();\n    };\n  }\n  hasListeners() {\n    return this.listeners.size > 0;\n  }\n  onSubscribe() {\n  }\n  onUnsubscribe() {\n  }\n};\nexport {\n  Subscribable\n};\n//# sourceMappingURL=subscribable.js.map","// src/utils.ts\nvar isServer = typeof window === \"undefined\" || \"Deno\" in globalThis;\nfunction noop() {\n}\nfunction functionalUpdate(updater, input) {\n  return typeof updater === \"function\" ? updater(input) : updater;\n}\nfunction isValidTimeout(value) {\n  return typeof value === \"number\" && value >= 0 && value !== Infinity;\n}\nfunction timeUntilStale(updatedAt, staleTime) {\n  return Math.max(updatedAt + (staleTime || 0) - Date.now(), 0);\n}\nfunction resolveStaleTime(staleTime, query) {\n  return typeof staleTime === \"function\" ? staleTime(query) : staleTime;\n}\nfunction resolveEnabled(enabled, query) {\n  return typeof enabled === \"function\" ? enabled(query) : enabled;\n}\nfunction matchQuery(filters, query) {\n  const {\n    type = \"all\",\n    exact,\n    fetchStatus,\n    predicate,\n    queryKey,\n    stale\n  } = filters;\n  if (queryKey) {\n    if (exact) {\n      if (query.queryHash !== hashQueryKeyByOptions(queryKey, query.options)) {\n        return false;\n      }\n    } else if (!partialMatchKey(query.queryKey, queryKey)) {\n      return false;\n    }\n  }\n  if (type !== \"all\") {\n    const isActive = query.isActive();\n    if (type === \"active\" && !isActive) {\n      return false;\n    }\n    if (type === \"inactive\" && isActive) {\n      return false;\n    }\n  }\n  if (typeof stale === \"boolean\" && query.isStale() !== stale) {\n    return false;\n  }\n  if (fetchStatus && fetchStatus !== query.state.fetchStatus) {\n    return false;\n  }\n  if (predicate && !predicate(query)) {\n    return false;\n  }\n  return true;\n}\nfunction matchMutation(filters, mutation) {\n  const { exact, status, predicate, mutationKey } = filters;\n  if (mutationKey) {\n    if (!mutation.options.mutationKey) {\n      return false;\n    }\n    if (exact) {\n      if (hashKey(mutation.options.mutationKey) !== hashKey(mutationKey)) {\n        return false;\n      }\n    } else if (!partialMatchKey(mutation.options.mutationKey, mutationKey)) {\n      return false;\n    }\n  }\n  if (status && mutation.state.status !== status) {\n    return false;\n  }\n  if (predicate && !predicate(mutation)) {\n    return false;\n  }\n  return true;\n}\nfunction hashQueryKeyByOptions(queryKey, options) {\n  const hashFn = options?.queryKeyHashFn || hashKey;\n  return hashFn(queryKey);\n}\nfunction hashKey(queryKey) {\n  return JSON.stringify(\n    queryKey,\n    (_, val) => isPlainObject(val) ? Object.keys(val).sort().reduce((result, key) => {\n      result[key] = val[key];\n      return result;\n    }, {}) : val\n  );\n}\nfunction partialMatchKey(a, b) {\n  if (a === b) {\n    return true;\n  }\n  if (typeof a !== typeof b) {\n    return false;\n  }\n  if (a && b && typeof a === \"object\" && typeof b === \"object\") {\n    return Object.keys(b).every((key) => partialMatchKey(a[key], b[key]));\n  }\n  return false;\n}\nfunction replaceEqualDeep(a, b) {\n  if (a === b) {\n    return a;\n  }\n  const array = isPlainArray(a) && isPlainArray(b);\n  if (array || isPlainObject(a) && isPlainObject(b)) {\n    const aItems = array ? a : Object.keys(a);\n    const aSize = aItems.length;\n    const bItems = array ? b : Object.keys(b);\n    const bSize = bItems.length;\n    const copy = array ? [] : {};\n    const aItemsSet = new Set(aItems);\n    let equalItems = 0;\n    for (let i = 0; i < bSize; i++) {\n      const key = array ? i : bItems[i];\n      if ((!array && aItemsSet.has(key) || array) && a[key] === void 0 && b[key] === void 0) {\n        copy[key] = void 0;\n        equalItems++;\n      } else {\n        copy[key] = replaceEqualDeep(a[key], b[key]);\n        if (copy[key] === a[key] && a[key] !== void 0) {\n          equalItems++;\n        }\n      }\n    }\n    return aSize === bSize && equalItems === aSize ? a : copy;\n  }\n  return b;\n}\nfunction shallowEqualObjects(a, b) {\n  if (!b || Object.keys(a).length !== Object.keys(b).length) {\n    return false;\n  }\n  for (const key in a) {\n    if (a[key] !== b[key]) {\n      return false;\n    }\n  }\n  return true;\n}\nfunction isPlainArray(value) {\n  return Array.isArray(value) && value.length === Object.keys(value).length;\n}\nfunction isPlainObject(o) {\n  if (!hasObjectPrototype(o)) {\n    return false;\n  }\n  const ctor = o.constructor;\n  if (ctor === void 0) {\n    return true;\n  }\n  const prot = ctor.prototype;\n  if (!hasObjectPrototype(prot)) {\n    return false;\n  }\n  if (!prot.hasOwnProperty(\"isPrototypeOf\")) {\n    return false;\n  }\n  if (Object.getPrototypeOf(o) !== Object.prototype) {\n    return false;\n  }\n  return true;\n}\nfunction hasObjectPrototype(o) {\n  return Object.prototype.toString.call(o) === \"[object Object]\";\n}\nfunction sleep(timeout) {\n  return new Promise((resolve) => {\n    setTimeout(resolve, timeout);\n  });\n}\nfunction replaceData(prevData, data, options) {\n  if (typeof options.structuralSharing === \"function\") {\n    return options.structuralSharing(prevData, data);\n  } else if (options.structuralSharing !== false) {\n    if (process.env.NODE_ENV !== \"production\") {\n      try {\n        return replaceEqualDeep(prevData, data);\n      } catch (error) {\n        console.error(\n          `Structural sharing requires data to be JSON serializable. To fix this, turn off structuralSharing or return JSON-serializable data from your queryFn. [${options.queryHash}]: ${error}`\n        );\n        throw error;\n      }\n    }\n    return replaceEqualDeep(prevData, data);\n  }\n  return data;\n}\nfunction keepPreviousData(previousData) {\n  return previousData;\n}\nfunction addToEnd(items, item, max = 0) {\n  const newItems = [...items, item];\n  return max && newItems.length > max ? newItems.slice(1) : newItems;\n}\nfunction addToStart(items, item, max = 0) {\n  const newItems = [item, ...items];\n  return max && newItems.length > max ? newItems.slice(0, -1) : newItems;\n}\nvar skipToken = Symbol();\nfunction ensureQueryFn(options, fetchOptions) {\n  if (process.env.NODE_ENV !== \"production\") {\n    if (options.queryFn === skipToken) {\n      console.error(\n        `Attempted to invoke queryFn when set to skipToken. This is likely a configuration error. Query hash: '${options.queryHash}'`\n      );\n    }\n  }\n  if (!options.queryFn && fetchOptions?.initialPromise) {\n    return () => fetchOptions.initialPromise;\n  }\n  if (!options.queryFn || options.queryFn === skipToken) {\n    return () => Promise.reject(new Error(`Missing queryFn: '${options.queryHash}'`));\n  }\n  return options.queryFn;\n}\nfunction shouldThrowError(throwOnError, params) {\n  if (typeof throwOnError === \"function\") {\n    return throwOnError(...params);\n  }\n  return !!throwOnError;\n}\nexport {\n  addToEnd,\n  addToStart,\n  ensureQueryFn,\n  functionalUpdate,\n  hashKey,\n  hashQueryKeyByOptions,\n  isPlainArray,\n  isPlainObject,\n  isServer,\n  isValidTimeout,\n  keepPreviousData,\n  matchMutation,\n  matchQuery,\n  noop,\n  partialMatchKey,\n  replaceData,\n  replaceEqualDeep,\n  resolveEnabled,\n  resolveStaleTime,\n  shallowEqualObjects,\n  shouldThrowError,\n  skipToken,\n  sleep,\n  timeUntilStale\n};\n//# sourceMappingURL=utils.js.map","// src/focusManager.ts\nimport { Subscribable } from \"./subscribable.js\";\nimport { isServer } from \"./utils.js\";\nvar FocusManager = class extends Subscribable {\n  #focused;\n  #cleanup;\n  #setup;\n  constructor() {\n    super();\n    this.#setup = (onFocus) => {\n      if (!isServer && window.addEventListener) {\n        const listener = () => onFocus();\n        window.addEventListener(\"visibilitychange\", listener, false);\n        return () => {\n          window.removeEventListener(\"visibilitychange\", listener);\n        };\n      }\n      return;\n    };\n  }\n  onSubscribe() {\n    if (!this.#cleanup) {\n      this.setEventListener(this.#setup);\n    }\n  }\n  onUnsubscribe() {\n    if (!this.hasListeners()) {\n      this.#cleanup?.();\n      this.#cleanup = void 0;\n    }\n  }\n  setEventListener(setup) {\n    this.#setup = setup;\n    this.#cleanup?.();\n    this.#cleanup = setup((focused) => {\n      if (typeof focused === \"boolean\") {\n        this.setFocused(focused);\n      } else {\n        this.onFocus();\n      }\n    });\n  }\n  setFocused(focused) {\n    const changed = this.#focused !== focused;\n    if (changed) {\n      this.#focused = focused;\n      this.onFocus();\n    }\n  }\n  onFocus() {\n    const isFocused = this.isFocused();\n    this.listeners.forEach((listener) => {\n      listener(isFocused);\n    });\n  }\n  isFocused() {\n    if (typeof this.#focused === \"boolean\") {\n      return this.#focused;\n    }\n    return globalThis.document?.visibilityState !== \"hidden\";\n  }\n};\nvar focusManager = new FocusManager();\nexport {\n  FocusManager,\n  focusManager\n};\n//# sourceMappingURL=focusManager.js.map","// src/onlineManager.ts\nimport { Subscribable } from \"./subscribable.js\";\nimport { isServer } from \"./utils.js\";\nvar OnlineManager = class extends Subscribable {\n  #online = true;\n  #cleanup;\n  #setup;\n  constructor() {\n    super();\n    this.#setup = (onOnline) => {\n      if (!isServer && window.addEventListener) {\n        const onlineListener = () => onOnline(true);\n        const offlineListener = () => onOnline(false);\n        window.addEventListener(\"online\", onlineListener, false);\n        window.addEventListener(\"offline\", offlineListener, false);\n        return () => {\n          window.removeEventListener(\"online\", onlineListener);\n          window.removeEventListener(\"offline\", offlineListener);\n        };\n      }\n      return;\n    };\n  }\n  onSubscribe() {\n    if (!this.#cleanup) {\n      this.setEventListener(this.#setup);\n    }\n  }\n  onUnsubscribe() {\n    if (!this.hasListeners()) {\n      this.#cleanup?.();\n      this.#cleanup = void 0;\n    }\n  }\n  setEventListener(setup) {\n    this.#setup = setup;\n    this.#cleanup?.();\n    this.#cleanup = setup(this.setOnline.bind(this));\n  }\n  setOnline(online) {\n    const changed = this.#online !== online;\n    if (changed) {\n      this.#online = online;\n      this.listeners.forEach((listener) => {\n        listener(online);\n      });\n    }\n  }\n  isOnline() {\n    return this.#online;\n  }\n};\nvar onlineManager = new OnlineManager();\nexport {\n  OnlineManager,\n  onlineManager\n};\n//# sourceMappingURL=onlineManager.js.map","// src/thenable.ts\nimport { noop } from \"./utils.js\";\nfunction pendingThenable() {\n  let resolve;\n  let reject;\n  const thenable = new Promise((_resolve, _reject) => {\n    resolve = _resolve;\n    reject = _reject;\n  });\n  thenable.status = \"pending\";\n  thenable.catch(() => {\n  });\n  function finalize(data) {\n    Object.assign(thenable, data);\n    delete thenable.resolve;\n    delete thenable.reject;\n  }\n  thenable.resolve = (value) => {\n    finalize({\n      status: \"fulfilled\",\n      value\n    });\n    resolve(value);\n  };\n  thenable.reject = (reason) => {\n    finalize({\n      status: \"rejected\",\n      reason\n    });\n    reject(reason);\n  };\n  return thenable;\n}\nfunction tryResolveSync(promise) {\n  let data;\n  promise.then((result) => {\n    data = result;\n    return result;\n  }, noop)?.catch(noop);\n  if (data !== void 0) {\n    return { data };\n  }\n  return void 0;\n}\nexport {\n  pendingThenable,\n  tryResolveSync\n};\n//# sourceMappingURL=thenable.js.map","// src/retryer.ts\nimport { focusManager } from \"./focusManager.js\";\nimport { onlineManager } from \"./onlineManager.js\";\nimport { pendingThenable } from \"./thenable.js\";\nimport { isServer, sleep } from \"./utils.js\";\nfunction defaultRetryDelay(failureCount) {\n  return Math.min(1e3 * 2 ** failureCount, 3e4);\n}\nfunction canFetch(networkMode) {\n  return (networkMode ?? \"online\") === \"online\" ? onlineManager.isOnline() : true;\n}\nvar CancelledError = class extends Error {\n  constructor(options) {\n    super(\"CancelledError\");\n    this.revert = options?.revert;\n    this.silent = options?.silent;\n  }\n};\nfunction isCancelledError(value) {\n  return value instanceof CancelledError;\n}\nfunction createRetryer(config) {\n  let isRetryCancelled = false;\n  let failureCount = 0;\n  let isResolved = false;\n  let continueFn;\n  const thenable = pendingThenable();\n  const cancel = (cancelOptions) => {\n    if (!isResolved) {\n      reject(new CancelledError(cancelOptions));\n      config.abort?.();\n    }\n  };\n  const cancelRetry = () => {\n    isRetryCancelled = true;\n  };\n  const continueRetry = () => {\n    isRetryCancelled = false;\n  };\n  const canContinue = () => focusManager.isFocused() && (config.networkMode === \"always\" || onlineManager.isOnline()) && config.canRun();\n  const canStart = () => canFetch(config.networkMode) && config.canRun();\n  const resolve = (value) => {\n    if (!isResolved) {\n      isResolved = true;\n      config.onSuccess?.(value);\n      continueFn?.();\n      thenable.resolve(value);\n    }\n  };\n  const reject = (value) => {\n    if (!isResolved) {\n      isResolved = true;\n      config.onError?.(value);\n      continueFn?.();\n      thenable.reject(value);\n    }\n  };\n  const pause = () => {\n    return new Promise((continueResolve) => {\n      continueFn = (value) => {\n        if (isResolved || canContinue()) {\n          continueResolve(value);\n        }\n      };\n      config.onPause?.();\n    }).then(() => {\n      continueFn = void 0;\n      if (!isResolved) {\n        config.onContinue?.();\n      }\n    });\n  };\n  const run = () => {\n    if (isResolved) {\n      return;\n    }\n    let promiseOrValue;\n    const initialPromise = failureCount === 0 ? config.initialPromise : void 0;\n    try {\n      promiseOrValue = initialPromise ?? config.fn();\n    } catch (error) {\n      promiseOrValue = Promise.reject(error);\n    }\n    Promise.resolve(promiseOrValue).then(resolve).catch((error) => {\n      if (isResolved) {\n        return;\n      }\n      const retry = config.retry ?? (isServer ? 0 : 3);\n      const retryDelay = config.retryDelay ?? defaultRetryDelay;\n      const delay = typeof retryDelay === \"function\" ? retryDelay(failureCount, error) : retryDelay;\n      const shouldRetry = retry === true || typeof retry === \"number\" && failureCount < retry || typeof retry === \"function\" && retry(failureCount, error);\n      if (isRetryCancelled || !shouldRetry) {\n        reject(error);\n        return;\n      }\n      failureCount++;\n      config.onFail?.(failureCount, error);\n      sleep(delay).then(() => {\n        return canContinue() ? void 0 : pause();\n      }).then(() => {\n        if (isRetryCancelled) {\n          reject(error);\n        } else {\n          run();\n        }\n      });\n    });\n  };\n  return {\n    promise: thenable,\n    cancel,\n    continue: () => {\n      continueFn?.();\n      return thenable;\n    },\n    cancelRetry,\n    continueRetry,\n    canStart,\n    start: () => {\n      if (canStart()) {\n        run();\n      } else {\n        pause().then(run);\n      }\n      return thenable;\n    }\n  };\n}\nexport {\n  CancelledError,\n  canFetch,\n  createRetryer,\n  isCancelledError\n};\n//# sourceMappingURL=retryer.js.map","// src/notifyManager.ts\nvar defaultScheduler = (cb) => setTimeout(cb, 0);\nfunction createNotifyManager() {\n  let queue = [];\n  let transactions = 0;\n  let notifyFn = (callback) => {\n    callback();\n  };\n  let batchNotifyFn = (callback) => {\n    callback();\n  };\n  let scheduleFn = defaultScheduler;\n  const schedule = (callback) => {\n    if (transactions) {\n      queue.push(callback);\n    } else {\n      scheduleFn(() => {\n        notifyFn(callback);\n      });\n    }\n  };\n  const flush = () => {\n    const originalQueue = queue;\n    queue = [];\n    if (originalQueue.length) {\n      scheduleFn(() => {\n        batchNotifyFn(() => {\n          originalQueue.forEach((callback) => {\n            notifyFn(callback);\n          });\n        });\n      });\n    }\n  };\n  return {\n    batch: (callback) => {\n      let result;\n      transactions++;\n      try {\n        result = callback();\n      } finally {\n        transactions--;\n        if (!transactions) {\n          flush();\n        }\n      }\n      return result;\n    },\n    /**\n     * All calls to the wrapped function will be batched.\n     */\n    batchCalls: (callback) => {\n      return (...args) => {\n        schedule(() => {\n          callback(...args);\n        });\n      };\n    },\n    schedule,\n    /**\n     * Use this method to set a custom notify function.\n     * This can be used to for example wrap notifications with `React.act` while running tests.\n     */\n    setNotifyFunction: (fn) => {\n      notifyFn = fn;\n    },\n    /**\n     * Use this method to set a custom function to batch notifications together into a single tick.\n     * By default React Query will use the batch function provided by ReactDOM or React Native.\n     */\n    setBatchNotifyFunction: (fn) => {\n      batchNotifyFn = fn;\n    },\n    setScheduler: (fn) => {\n      scheduleFn = fn;\n    }\n  };\n}\nvar notifyManager = createNotifyManager();\nexport {\n  createNotifyManager,\n  defaultScheduler,\n  notifyManager\n};\n//# sourceMappingURL=notifyManager.js.map","// src/removable.ts\nimport { isServer, isValidTimeout } from \"./utils.js\";\nvar Removable = class {\n  #gcTimeout;\n  destroy() {\n    this.clearGcTimeout();\n  }\n  scheduleGc() {\n    this.clearGcTimeout();\n    if (isValidTimeout(this.gcTime)) {\n      this.#gcTimeout = setTimeout(() => {\n        this.optionalRemove();\n      }, this.gcTime);\n    }\n  }\n  updateGcTime(newGcTime) {\n    this.gcTime = Math.max(\n      this.gcTime || 0,\n      newGcTime ?? (isServer ? Infinity : 5 * 60 * 1e3)\n    );\n  }\n  clearGcTimeout() {\n    if (this.#gcTimeout) {\n      clearTimeout(this.#gcTimeout);\n      this.#gcTimeout = void 0;\n    }\n  }\n};\nexport {\n  Removable\n};\n//# sourceMappingURL=removable.js.map","// src/query.ts\nimport {\n  ensureQueryFn,\n  noop,\n  replaceData,\n  resolveEnabled,\n  resolveStaleTime,\n  skipToken,\n  timeUntilStale\n} from \"./utils.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { canFetch, createRetryer, isCancelledError } from \"./retryer.js\";\nimport { Removable } from \"./removable.js\";\nvar Query = class extends Removable {\n  #initialState;\n  #revertState;\n  #cache;\n  #client;\n  #retryer;\n  #defaultOptions;\n  #abortSignalConsumed;\n  constructor(config) {\n    super();\n    this.#abortSignalConsumed = false;\n    this.#defaultOptions = config.defaultOptions;\n    this.setOptions(config.options);\n    this.observers = [];\n    this.#client = config.client;\n    this.#cache = this.#client.getQueryCache();\n    this.queryKey = config.queryKey;\n    this.queryHash = config.queryHash;\n    this.#initialState = getDefaultState(this.options);\n    this.state = config.state ?? this.#initialState;\n    this.scheduleGc();\n  }\n  get meta() {\n    return this.options.meta;\n  }\n  get promise() {\n    return this.#retryer?.promise;\n  }\n  setOptions(options) {\n    this.options = { ...this.#defaultOptions, ...options };\n    this.updateGcTime(this.options.gcTime);\n  }\n  optionalRemove() {\n    if (!this.observers.length && this.state.fetchStatus === \"idle\") {\n      this.#cache.remove(this);\n    }\n  }\n  setData(newData, options) {\n    const data = replaceData(this.state.data, newData, this.options);\n    this.#dispatch({\n      data,\n      type: \"success\",\n      dataUpdatedAt: options?.updatedAt,\n      manual: options?.manual\n    });\n    return data;\n  }\n  setState(state, setStateOptions) {\n    this.#dispatch({ type: \"setState\", state, setStateOptions });\n  }\n  cancel(options) {\n    const promise = this.#retryer?.promise;\n    this.#retryer?.cancel(options);\n    return promise ? promise.then(noop).catch(noop) : Promise.resolve();\n  }\n  destroy() {\n    super.destroy();\n    this.cancel({ silent: true });\n  }\n  reset() {\n    this.destroy();\n    this.setState(this.#initialState);\n  }\n  isActive() {\n    return this.observers.some(\n      (observer) => resolveEnabled(observer.options.enabled, this) !== false\n    );\n  }\n  isDisabled() {\n    if (this.getObserversCount() > 0) {\n      return !this.isActive();\n    }\n    return this.options.queryFn === skipToken || this.state.dataUpdateCount + this.state.errorUpdateCount === 0;\n  }\n  isStatic() {\n    if (this.getObserversCount() > 0) {\n      return this.observers.some(\n        (observer) => resolveStaleTime(observer.options.staleTime, this) === \"static\"\n      );\n    }\n    return false;\n  }\n  isStale() {\n    if (this.getObserversCount() > 0) {\n      return this.observers.some(\n        (observer) => observer.getCurrentResult().isStale\n      );\n    }\n    return this.state.data === void 0 || this.state.isInvalidated;\n  }\n  isStaleByTime(staleTime = 0) {\n    if (this.state.data === void 0) {\n      return true;\n    }\n    if (staleTime === \"static\") {\n      return false;\n    }\n    if (this.state.isInvalidated) {\n      return true;\n    }\n    return !timeUntilStale(this.state.dataUpdatedAt, staleTime);\n  }\n  onFocus() {\n    const observer = this.observers.find((x) => x.shouldFetchOnWindowFocus());\n    observer?.refetch({ cancelRefetch: false });\n    this.#retryer?.continue();\n  }\n  onOnline() {\n    const observer = this.observers.find((x) => x.shouldFetchOnReconnect());\n    observer?.refetch({ cancelRefetch: false });\n    this.#retryer?.continue();\n  }\n  addObserver(observer) {\n    if (!this.observers.includes(observer)) {\n      this.observers.push(observer);\n      this.clearGcTimeout();\n      this.#cache.notify({ type: \"observerAdded\", query: this, observer });\n    }\n  }\n  removeObserver(observer) {\n    if (this.observers.includes(observer)) {\n      this.observers = this.observers.filter((x) => x !== observer);\n      if (!this.observers.length) {\n        if (this.#retryer) {\n          if (this.#abortSignalConsumed) {\n            this.#retryer.cancel({ revert: true });\n          } else {\n            this.#retryer.cancelRetry();\n          }\n        }\n        this.scheduleGc();\n      }\n      this.#cache.notify({ type: \"observerRemoved\", query: this, observer });\n    }\n  }\n  getObserversCount() {\n    return this.observers.length;\n  }\n  invalidate() {\n    if (!this.state.isInvalidated) {\n      this.#dispatch({ type: \"invalidate\" });\n    }\n  }\n  fetch(options, fetchOptions) {\n    if (this.state.fetchStatus !== \"idle\") {\n      if (this.state.data !== void 0 && fetchOptions?.cancelRefetch) {\n        this.cancel({ silent: true });\n      } else if (this.#retryer) {\n        this.#retryer.continueRetry();\n        return this.#retryer.promise;\n      }\n    }\n    if (options) {\n      this.setOptions(options);\n    }\n    if (!this.options.queryFn) {\n      const observer = this.observers.find((x) => x.options.queryFn);\n      if (observer) {\n        this.setOptions(observer.options);\n      }\n    }\n    if (process.env.NODE_ENV !== \"production\") {\n      if (!Array.isArray(this.options.queryKey)) {\n        console.error(\n          `As of v4, queryKey needs to be an Array. If you are using a string like 'repoData', please change it to an Array, e.g. ['repoData']`\n        );\n      }\n    }\n    const abortController = new AbortController();\n    const addSignalProperty = (object) => {\n      Object.defineProperty(object, \"signal\", {\n        enumerable: true,\n        get: () => {\n          this.#abortSignalConsumed = true;\n          return abortController.signal;\n        }\n      });\n    };\n    const fetchFn = () => {\n      const queryFn = ensureQueryFn(this.options, fetchOptions);\n      const createQueryFnContext = () => {\n        const queryFnContext2 = {\n          client: this.#client,\n          queryKey: this.queryKey,\n          meta: this.meta\n        };\n        addSignalProperty(queryFnContext2);\n        return queryFnContext2;\n      };\n      const queryFnContext = createQueryFnContext();\n      this.#abortSignalConsumed = false;\n      if (this.options.persister) {\n        return this.options.persister(\n          queryFn,\n          queryFnContext,\n          this\n        );\n      }\n      return queryFn(queryFnContext);\n    };\n    const createFetchContext = () => {\n      const context2 = {\n        fetchOptions,\n        options: this.options,\n        queryKey: this.queryKey,\n        client: this.#client,\n        state: this.state,\n        fetchFn\n      };\n      addSignalProperty(context2);\n      return context2;\n    };\n    const context = createFetchContext();\n    this.options.behavior?.onFetch(context, this);\n    this.#revertState = this.state;\n    if (this.state.fetchStatus === \"idle\" || this.state.fetchMeta !== context.fetchOptions?.meta) {\n      this.#dispatch({ type: \"fetch\", meta: context.fetchOptions?.meta });\n    }\n    const onError = (error) => {\n      if (!(isCancelledError(error) && error.silent)) {\n        this.#dispatch({\n          type: \"error\",\n          error\n        });\n      }\n      if (!isCancelledError(error)) {\n        this.#cache.config.onError?.(\n          error,\n          this\n        );\n        this.#cache.config.onSettled?.(\n          this.state.data,\n          error,\n          this\n        );\n      }\n      this.scheduleGc();\n    };\n    this.#retryer = createRetryer({\n      initialPromise: fetchOptions?.initialPromise,\n      fn: context.fetchFn,\n      abort: abortController.abort.bind(abortController),\n      onSuccess: (data) => {\n        if (data === void 0) {\n          if (process.env.NODE_ENV !== \"production\") {\n            console.error(\n              `Query data cannot be undefined. Please make sure to return a value other than undefined from your query function. Affected query key: ${this.queryHash}`\n            );\n          }\n          onError(new Error(`${this.queryHash} data is undefined`));\n          return;\n        }\n        try {\n          this.setData(data);\n        } catch (error) {\n          onError(error);\n          return;\n        }\n        this.#cache.config.onSuccess?.(data, this);\n        this.#cache.config.onSettled?.(\n          data,\n          this.state.error,\n          this\n        );\n        this.scheduleGc();\n      },\n      onError,\n      onFail: (failureCount, error) => {\n        this.#dispatch({ type: \"failed\", failureCount, error });\n      },\n      onPause: () => {\n        this.#dispatch({ type: \"pause\" });\n      },\n      onContinue: () => {\n        this.#dispatch({ type: \"continue\" });\n      },\n      retry: context.options.retry,\n      retryDelay: context.options.retryDelay,\n      networkMode: context.options.networkMode,\n      canRun: () => true\n    });\n    return this.#retryer.start();\n  }\n  #dispatch(action) {\n    const reducer = (state) => {\n      switch (action.type) {\n        case \"failed\":\n          return {\n            ...state,\n            fetchFailureCount: action.failureCount,\n            fetchFailureReason: action.error\n          };\n        case \"pause\":\n          return {\n            ...state,\n            fetchStatus: \"paused\"\n          };\n        case \"continue\":\n          return {\n            ...state,\n            fetchStatus: \"fetching\"\n          };\n        case \"fetch\":\n          return {\n            ...state,\n            ...fetchState(state.data, this.options),\n            fetchMeta: action.meta ?? null\n          };\n        case \"success\":\n          this.#revertState = void 0;\n          return {\n            ...state,\n            data: action.data,\n            dataUpdateCount: state.dataUpdateCount + 1,\n            dataUpdatedAt: action.dataUpdatedAt ?? Date.now(),\n            error: null,\n            isInvalidated: false,\n            status: \"success\",\n            ...!action.manual && {\n              fetchStatus: \"idle\",\n              fetchFailureCount: 0,\n              fetchFailureReason: null\n            }\n          };\n        case \"error\":\n          const error = action.error;\n          if (isCancelledError(error) && error.revert && this.#revertState) {\n            return { ...this.#revertState, fetchStatus: \"idle\" };\n          }\n          return {\n            ...state,\n            error,\n            errorUpdateCount: state.errorUpdateCount + 1,\n            errorUpdatedAt: Date.now(),\n            fetchFailureCount: state.fetchFailureCount + 1,\n            fetchFailureReason: error,\n            fetchStatus: \"idle\",\n            status: \"error\"\n          };\n        case \"invalidate\":\n          return {\n            ...state,\n            isInvalidated: true\n          };\n        case \"setState\":\n          return {\n            ...state,\n            ...action.state\n          };\n      }\n    };\n    this.state = reducer(this.state);\n    notifyManager.batch(() => {\n      this.observers.forEach((observer) => {\n        observer.onQueryUpdate();\n      });\n      this.#cache.notify({ query: this, type: \"updated\", action });\n    });\n  }\n};\nfunction fetchState(data, options) {\n  return {\n    fetchFailureCount: 0,\n    fetchFailureReason: null,\n    fetchStatus: canFetch(options.networkMode) ? \"fetching\" : \"paused\",\n    ...data === void 0 && {\n      error: null,\n      status: \"pending\"\n    }\n  };\n}\nfunction getDefaultState(options) {\n  const data = typeof options.initialData === \"function\" ? options.initialData() : options.initialData;\n  const hasData = data !== void 0;\n  const initialDataUpdatedAt = hasData ? typeof options.initialDataUpdatedAt === \"function\" ? options.initialDataUpdatedAt() : options.initialDataUpdatedAt : 0;\n  return {\n    data,\n    dataUpdateCount: 0,\n    dataUpdatedAt: hasData ? initialDataUpdatedAt ?? Date.now() : 0,\n    error: null,\n    errorUpdateCount: 0,\n    errorUpdatedAt: 0,\n    fetchFailureCount: 0,\n    fetchFailureReason: null,\n    fetchMeta: null,\n    isInvalidated: false,\n    status: hasData ? \"success\" : \"pending\",\n    fetchStatus: \"idle\"\n  };\n}\nexport {\n  Query,\n  fetchState\n};\n//# sourceMappingURL=query.js.map","// src/queryCache.ts\nimport { hashQueryKeyByOptions, matchQuery } from \"./utils.js\";\nimport { Query } from \"./query.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Subscribable } from \"./subscribable.js\";\nvar QueryCache = class extends Subscribable {\n  constructor(config = {}) {\n    super();\n    this.config = config;\n    this.#queries = /* @__PURE__ */ new Map();\n  }\n  #queries;\n  build(client, options, state) {\n    const queryKey = options.queryKey;\n    const queryHash = options.queryHash ?? hashQueryKeyByOptions(queryKey, options);\n    let query = this.get(queryHash);\n    if (!query) {\n      query = new Query({\n        client,\n        queryKey,\n        queryHash,\n        options: client.defaultQueryOptions(options),\n        state,\n        defaultOptions: client.getQueryDefaults(queryKey)\n      });\n      this.add(query);\n    }\n    return query;\n  }\n  add(query) {\n    if (!this.#queries.has(query.queryHash)) {\n      this.#queries.set(query.queryHash, query);\n      this.notify({\n        type: \"added\",\n        query\n      });\n    }\n  }\n  remove(query) {\n    const queryInMap = this.#queries.get(query.queryHash);\n    if (queryInMap) {\n      query.destroy();\n      if (queryInMap === query) {\n        this.#queries.delete(query.queryHash);\n      }\n      this.notify({ type: \"removed\", query });\n    }\n  }\n  clear() {\n    notifyManager.batch(() => {\n      this.getAll().forEach((query) => {\n        this.remove(query);\n      });\n    });\n  }\n  get(queryHash) {\n    return this.#queries.get(queryHash);\n  }\n  getAll() {\n    return [...this.#queries.values()];\n  }\n  find(filters) {\n    const defaultedFilters = { exact: true, ...filters };\n    return this.getAll().find(\n      (query) => matchQuery(defaultedFilters, query)\n    );\n  }\n  findAll(filters = {}) {\n    const queries = this.getAll();\n    return Object.keys(filters).length > 0 ? queries.filter((query) => matchQuery(filters, query)) : queries;\n  }\n  notify(event) {\n    notifyManager.batch(() => {\n      this.listeners.forEach((listener) => {\n        listener(event);\n      });\n    });\n  }\n  onFocus() {\n    notifyManager.batch(() => {\n      this.getAll().forEach((query) => {\n        query.onFocus();\n      });\n    });\n  }\n  onOnline() {\n    notifyManager.batch(() => {\n      this.getAll().forEach((query) => {\n        query.onOnline();\n      });\n    });\n  }\n};\nexport {\n  QueryCache\n};\n//# sourceMappingURL=queryCache.js.map","// src/mutation.ts\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Removable } from \"./removable.js\";\nimport { createRetryer } from \"./retryer.js\";\nvar Mutation = class extends Removable {\n  #observers;\n  #mutationCache;\n  #retryer;\n  constructor(config) {\n    super();\n    this.mutationId = config.mutationId;\n    this.#mutationCache = config.mutationCache;\n    this.#observers = [];\n    this.state = config.state || getDefaultState();\n    this.setOptions(config.options);\n    this.scheduleGc();\n  }\n  setOptions(options) {\n    this.options = options;\n    this.updateGcTime(this.options.gcTime);\n  }\n  get meta() {\n    return this.options.meta;\n  }\n  addObserver(observer) {\n    if (!this.#observers.includes(observer)) {\n      this.#observers.push(observer);\n      this.clearGcTimeout();\n      this.#mutationCache.notify({\n        type: \"observerAdded\",\n        mutation: this,\n        observer\n      });\n    }\n  }\n  removeObserver(observer) {\n    this.#observers = this.#observers.filter((x) => x !== observer);\n    this.scheduleGc();\n    this.#mutationCache.notify({\n      type: \"observerRemoved\",\n      mutation: this,\n      observer\n    });\n  }\n  optionalRemove() {\n    if (!this.#observers.length) {\n      if (this.state.status === \"pending\") {\n        this.scheduleGc();\n      } else {\n        this.#mutationCache.remove(this);\n      }\n    }\n  }\n  continue() {\n    return this.#retryer?.continue() ?? // continuing a mutation assumes that variables are set, mutation must have been dehydrated before\n    this.execute(this.state.variables);\n  }\n  async execute(variables) {\n    const onContinue = () => {\n      this.#dispatch({ type: \"continue\" });\n    };\n    this.#retryer = createRetryer({\n      fn: () => {\n        if (!this.options.mutationFn) {\n          return Promise.reject(new Error(\"No mutationFn found\"));\n        }\n        return this.options.mutationFn(variables);\n      },\n      onFail: (failureCount, error) => {\n        this.#dispatch({ type: \"failed\", failureCount, error });\n      },\n      onPause: () => {\n        this.#dispatch({ type: \"pause\" });\n      },\n      onContinue,\n      retry: this.options.retry ?? 0,\n      retryDelay: this.options.retryDelay,\n      networkMode: this.options.networkMode,\n      canRun: () => this.#mutationCache.canRun(this)\n    });\n    const restored = this.state.status === \"pending\";\n    const isPaused = !this.#retryer.canStart();\n    try {\n      if (restored) {\n        onContinue();\n      } else {\n        this.#dispatch({ type: \"pending\", variables, isPaused });\n        await this.#mutationCache.config.onMutate?.(\n          variables,\n          this\n        );\n        const context = await this.options.onMutate?.(variables);\n        if (context !== this.state.context) {\n          this.#dispatch({\n            type: \"pending\",\n            context,\n            variables,\n            isPaused\n          });\n        }\n      }\n      const data = await this.#retryer.start();\n      await this.#mutationCache.config.onSuccess?.(\n        data,\n        variables,\n        this.state.context,\n        this\n      );\n      await this.options.onSuccess?.(data, variables, this.state.context);\n      await this.#mutationCache.config.onSettled?.(\n        data,\n        null,\n        this.state.variables,\n        this.state.context,\n        this\n      );\n      await this.options.onSettled?.(data, null, variables, this.state.context);\n      this.#dispatch({ type: \"success\", data });\n      return data;\n    } catch (error) {\n      try {\n        await this.#mutationCache.config.onError?.(\n          error,\n          variables,\n          this.state.context,\n          this\n        );\n        await this.options.onError?.(\n          error,\n          variables,\n          this.state.context\n        );\n        await this.#mutationCache.config.onSettled?.(\n          void 0,\n          error,\n          this.state.variables,\n          this.state.context,\n          this\n        );\n        await this.options.onSettled?.(\n          void 0,\n          error,\n          variables,\n          this.state.context\n        );\n        throw error;\n      } finally {\n        this.#dispatch({ type: \"error\", error });\n      }\n    } finally {\n      this.#mutationCache.runNext(this);\n    }\n  }\n  #dispatch(action) {\n    const reducer = (state) => {\n      switch (action.type) {\n        case \"failed\":\n          return {\n            ...state,\n            failureCount: action.failureCount,\n            failureReason: action.error\n          };\n        case \"pause\":\n          return {\n            ...state,\n            isPaused: true\n          };\n        case \"continue\":\n          return {\n            ...state,\n            isPaused: false\n          };\n        case \"pending\":\n          return {\n            ...state,\n            context: action.context,\n            data: void 0,\n            failureCount: 0,\n            failureReason: null,\n            error: null,\n            isPaused: action.isPaused,\n            status: \"pending\",\n            variables: action.variables,\n            submittedAt: Date.now()\n          };\n        case \"success\":\n          return {\n            ...state,\n            data: action.data,\n            failureCount: 0,\n            failureReason: null,\n            error: null,\n            status: \"success\",\n            isPaused: false\n          };\n        case \"error\":\n          return {\n            ...state,\n            data: void 0,\n            error: action.error,\n            failureCount: state.failureCount + 1,\n            failureReason: action.error,\n            isPaused: false,\n            status: \"error\"\n          };\n      }\n    };\n    this.state = reducer(this.state);\n    notifyManager.batch(() => {\n      this.#observers.forEach((observer) => {\n        observer.onMutationUpdate(action);\n      });\n      this.#mutationCache.notify({\n        mutation: this,\n        type: \"updated\",\n        action\n      });\n    });\n  }\n};\nfunction getDefaultState() {\n  return {\n    context: void 0,\n    data: void 0,\n    error: null,\n    failureCount: 0,\n    failureReason: null,\n    isPaused: false,\n    status: \"idle\",\n    variables: void 0,\n    submittedAt: 0\n  };\n}\nexport {\n  Mutation,\n  getDefaultState\n};\n//# sourceMappingURL=mutation.js.map","// src/mutationCache.ts\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Mutation } from \"./mutation.js\";\nimport { matchMutation, noop } from \"./utils.js\";\nimport { Subscribable } from \"./subscribable.js\";\nvar MutationCache = class extends Subscribable {\n  constructor(config = {}) {\n    super();\n    this.config = config;\n    this.#mutations = /* @__PURE__ */ new Set();\n    this.#scopes = /* @__PURE__ */ new Map();\n    this.#mutationId = 0;\n  }\n  #mutations;\n  #scopes;\n  #mutationId;\n  build(client, options, state) {\n    const mutation = new Mutation({\n      mutationCache: this,\n      mutationId: ++this.#mutationId,\n      options: client.defaultMutationOptions(options),\n      state\n    });\n    this.add(mutation);\n    return mutation;\n  }\n  add(mutation) {\n    this.#mutations.add(mutation);\n    const scope = scopeFor(mutation);\n    if (typeof scope === \"string\") {\n      const scopedMutations = this.#scopes.get(scope);\n      if (scopedMutations) {\n        scopedMutations.push(mutation);\n      } else {\n        this.#scopes.set(scope, [mutation]);\n      }\n    }\n    this.notify({ type: \"added\", mutation });\n  }\n  remove(mutation) {\n    if (this.#mutations.delete(mutation)) {\n      const scope = scopeFor(mutation);\n      if (typeof scope === \"string\") {\n        const scopedMutations = this.#scopes.get(scope);\n        if (scopedMutations) {\n          if (scopedMutations.length > 1) {\n            const index = scopedMutations.indexOf(mutation);\n            if (index !== -1) {\n              scopedMutations.splice(index, 1);\n            }\n          } else if (scopedMutations[0] === mutation) {\n            this.#scopes.delete(scope);\n          }\n        }\n      }\n    }\n    this.notify({ type: \"removed\", mutation });\n  }\n  canRun(mutation) {\n    const scope = scopeFor(mutation);\n    if (typeof scope === \"string\") {\n      const mutationsWithSameScope = this.#scopes.get(scope);\n      const firstPendingMutation = mutationsWithSameScope?.find(\n        (m) => m.state.status === \"pending\"\n      );\n      return !firstPendingMutation || firstPendingMutation === mutation;\n    } else {\n      return true;\n    }\n  }\n  runNext(mutation) {\n    const scope = scopeFor(mutation);\n    if (typeof scope === \"string\") {\n      const foundMutation = this.#scopes.get(scope)?.find((m) => m !== mutation && m.state.isPaused);\n      return foundMutation?.continue() ?? Promise.resolve();\n    } else {\n      return Promise.resolve();\n    }\n  }\n  clear() {\n    notifyManager.batch(() => {\n      this.#mutations.forEach((mutation) => {\n        this.notify({ type: \"removed\", mutation });\n      });\n      this.#mutations.clear();\n      this.#scopes.clear();\n    });\n  }\n  getAll() {\n    return Array.from(this.#mutations);\n  }\n  find(filters) {\n    const defaultedFilters = { exact: true, ...filters };\n    return this.getAll().find(\n      (mutation) => matchMutation(defaultedFilters, mutation)\n    );\n  }\n  findAll(filters = {}) {\n    return this.getAll().filter((mutation) => matchMutation(filters, mutation));\n  }\n  notify(event) {\n    notifyManager.batch(() => {\n      this.listeners.forEach((listener) => {\n        listener(event);\n      });\n    });\n  }\n  resumePausedMutations() {\n    const pausedMutations = this.getAll().filter((x) => x.state.isPaused);\n    return notifyManager.batch(\n      () => Promise.all(\n        pausedMutations.map((mutation) => mutation.continue().catch(noop))\n      )\n    );\n  }\n};\nfunction scopeFor(mutation) {\n  return mutation.options.scope?.id;\n}\nexport {\n  MutationCache\n};\n//# sourceMappingURL=mutationCache.js.map","// src/infiniteQueryBehavior.ts\nimport { addToEnd, addToStart, ensureQueryFn } from \"./utils.js\";\nfunction infiniteQueryBehavior(pages) {\n  return {\n    onFetch: (context, query) => {\n      const options = context.options;\n      const direction = context.fetchOptions?.meta?.fetchMore?.direction;\n      const oldPages = context.state.data?.pages || [];\n      const oldPageParams = context.state.data?.pageParams || [];\n      let result = { pages: [], pageParams: [] };\n      let currentPage = 0;\n      const fetchFn = async () => {\n        let cancelled = false;\n        const addSignalProperty = (object) => {\n          Object.defineProperty(object, \"signal\", {\n            enumerable: true,\n            get: () => {\n              if (context.signal.aborted) {\n                cancelled = true;\n              } else {\n                context.signal.addEventListener(\"abort\", () => {\n                  cancelled = true;\n                });\n              }\n              return context.signal;\n            }\n          });\n        };\n        const queryFn = ensureQueryFn(context.options, context.fetchOptions);\n        const fetchPage = async (data, param, previous) => {\n          if (cancelled) {\n            return Promise.reject();\n          }\n          if (param == null && data.pages.length) {\n            return Promise.resolve(data);\n          }\n          const createQueryFnContext = () => {\n            const queryFnContext2 = {\n              client: context.client,\n              queryKey: context.queryKey,\n              pageParam: param,\n              direction: previous ? \"backward\" : \"forward\",\n              meta: context.options.meta\n            };\n            addSignalProperty(queryFnContext2);\n            return queryFnContext2;\n          };\n          const queryFnContext = createQueryFnContext();\n          const page = await queryFn(queryFnContext);\n          const { maxPages } = context.options;\n          const addTo = previous ? addToStart : addToEnd;\n          return {\n            pages: addTo(data.pages, page, maxPages),\n            pageParams: addTo(data.pageParams, param, maxPages)\n          };\n        };\n        if (direction && oldPages.length) {\n          const previous = direction === \"backward\";\n          const pageParamFn = previous ? getPreviousPageParam : getNextPageParam;\n          const oldData = {\n            pages: oldPages,\n            pageParams: oldPageParams\n          };\n          const param = pageParamFn(options, oldData);\n          result = await fetchPage(oldData, param, previous);\n        } else {\n          const remainingPages = pages ?? oldPages.length;\n          do {\n            const param = currentPage === 0 ? oldPageParams[0] ?? options.initialPageParam : getNextPageParam(options, result);\n            if (currentPage > 0 && param == null) {\n              break;\n            }\n            result = await fetchPage(result, param);\n            currentPage++;\n          } while (currentPage < remainingPages);\n        }\n        return result;\n      };\n      if (context.options.persister) {\n        context.fetchFn = () => {\n          return context.options.persister?.(\n            fetchFn,\n            {\n              client: context.client,\n              queryKey: context.queryKey,\n              meta: context.options.meta,\n              signal: context.signal\n            },\n            query\n          );\n        };\n      } else {\n        context.fetchFn = fetchFn;\n      }\n    }\n  };\n}\nfunction getNextPageParam(options, { pages, pageParams }) {\n  const lastIndex = pages.length - 1;\n  return pages.length > 0 ? options.getNextPageParam(\n    pages[lastIndex],\n    pages,\n    pageParams[lastIndex],\n    pageParams\n  ) : void 0;\n}\nfunction getPreviousPageParam(options, { pages, pageParams }) {\n  return pages.length > 0 ? options.getPreviousPageParam?.(pages[0], pages, pageParams[0], pageParams) : void 0;\n}\nfunction hasNextPage(options, data) {\n  if (!data) return false;\n  return getNextPageParam(options, data) != null;\n}\nfunction hasPreviousPage(options, data) {\n  if (!data || !options.getPreviousPageParam) return false;\n  return getPreviousPageParam(options, data) != null;\n}\nexport {\n  hasNextPage,\n  hasPreviousPage,\n  infiniteQueryBehavior\n};\n//# sourceMappingURL=infiniteQueryBehavior.js.map","// src/queryClient.ts\nimport {\n  functionalUpdate,\n  hashKey,\n  hashQueryKeyByOptions,\n  noop,\n  partialMatchKey,\n  resolveStaleTime,\n  skipToken\n} from \"./utils.js\";\nimport { QueryCache } from \"./queryCache.js\";\nimport { MutationCache } from \"./mutationCache.js\";\nimport { focusManager } from \"./focusManager.js\";\nimport { onlineManager } from \"./onlineManager.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { infiniteQueryBehavior } from \"./infiniteQueryBehavior.js\";\nvar QueryClient = class {\n  #queryCache;\n  #mutationCache;\n  #defaultOptions;\n  #queryDefaults;\n  #mutationDefaults;\n  #mountCount;\n  #unsubscribeFocus;\n  #unsubscribeOnline;\n  constructor(config = {}) {\n    this.#queryCache = config.queryCache || new QueryCache();\n    this.#mutationCache = config.mutationCache || new MutationCache();\n    this.#defaultOptions = config.defaultOptions || {};\n    this.#queryDefaults = /* @__PURE__ */ new Map();\n    this.#mutationDefaults = /* @__PURE__ */ new Map();\n    this.#mountCount = 0;\n  }\n  mount() {\n    this.#mountCount++;\n    if (this.#mountCount !== 1) return;\n    this.#unsubscribeFocus = focusManager.subscribe(async (focused) => {\n      if (focused) {\n        await this.resumePausedMutations();\n        this.#queryCache.onFocus();\n      }\n    });\n    this.#unsubscribeOnline = onlineManager.subscribe(async (online) => {\n      if (online) {\n        await this.resumePausedMutations();\n        this.#queryCache.onOnline();\n      }\n    });\n  }\n  unmount() {\n    this.#mountCount--;\n    if (this.#mountCount !== 0) return;\n    this.#unsubscribeFocus?.();\n    this.#unsubscribeFocus = void 0;\n    this.#unsubscribeOnline?.();\n    this.#unsubscribeOnline = void 0;\n  }\n  isFetching(filters) {\n    return this.#queryCache.findAll({ ...filters, fetchStatus: \"fetching\" }).length;\n  }\n  isMutating(filters) {\n    return this.#mutationCache.findAll({ ...filters, status: \"pending\" }).length;\n  }\n  /**\n   * Imperative (non-reactive) way to retrieve data for a QueryKey.\n   * Should only be used in callbacks or functions where reading the latest data is necessary, e.g. for optimistic updates.\n   *\n   * Hint: Do not use this function inside a component, because it won't receive updates.\n   * Use `useQuery` to create a `QueryObserver` that subscribes to changes.\n   */\n  getQueryData(queryKey) {\n    const options = this.defaultQueryOptions({ queryKey });\n    return this.#queryCache.get(options.queryHash)?.state.data;\n  }\n  ensureQueryData(options) {\n    const defaultedOptions = this.defaultQueryOptions(options);\n    const query = this.#queryCache.build(this, defaultedOptions);\n    const cachedData = query.state.data;\n    if (cachedData === void 0) {\n      return this.fetchQuery(options);\n    }\n    if (options.revalidateIfStale && query.isStaleByTime(resolveStaleTime(defaultedOptions.staleTime, query))) {\n      void this.prefetchQuery(defaultedOptions);\n    }\n    return Promise.resolve(cachedData);\n  }\n  getQueriesData(filters) {\n    return this.#queryCache.findAll(filters).map(({ queryKey, state }) => {\n      const data = state.data;\n      return [queryKey, data];\n    });\n  }\n  setQueryData(queryKey, updater, options) {\n    const defaultedOptions = this.defaultQueryOptions({ queryKey });\n    const query = this.#queryCache.get(\n      defaultedOptions.queryHash\n    );\n    const prevData = query?.state.data;\n    const data = functionalUpdate(updater, prevData);\n    if (data === void 0) {\n      return void 0;\n    }\n    return this.#queryCache.build(this, defaultedOptions).setData(data, { ...options, manual: true });\n  }\n  setQueriesData(filters, updater, options) {\n    return notifyManager.batch(\n      () => this.#queryCache.findAll(filters).map(({ queryKey }) => [\n        queryKey,\n        this.setQueryData(queryKey, updater, options)\n      ])\n    );\n  }\n  getQueryState(queryKey) {\n    const options = this.defaultQueryOptions({ queryKey });\n    return this.#queryCache.get(\n      options.queryHash\n    )?.state;\n  }\n  removeQueries(filters) {\n    const queryCache = this.#queryCache;\n    notifyManager.batch(() => {\n      queryCache.findAll(filters).forEach((query) => {\n        queryCache.remove(query);\n      });\n    });\n  }\n  resetQueries(filters, options) {\n    const queryCache = this.#queryCache;\n    return notifyManager.batch(() => {\n      queryCache.findAll(filters).forEach((query) => {\n        query.reset();\n      });\n      return this.refetchQueries(\n        {\n          type: \"active\",\n          ...filters\n        },\n        options\n      );\n    });\n  }\n  cancelQueries(filters, cancelOptions = {}) {\n    const defaultedCancelOptions = { revert: true, ...cancelOptions };\n    const promises = notifyManager.batch(\n      () => this.#queryCache.findAll(filters).map((query) => query.cancel(defaultedCancelOptions))\n    );\n    return Promise.all(promises).then(noop).catch(noop);\n  }\n  invalidateQueries(filters, options = {}) {\n    return notifyManager.batch(() => {\n      this.#queryCache.findAll(filters).forEach((query) => {\n        query.invalidate();\n      });\n      if (filters?.refetchType === \"none\") {\n        return Promise.resolve();\n      }\n      return this.refetchQueries(\n        {\n          ...filters,\n          type: filters?.refetchType ?? filters?.type ?? \"active\"\n        },\n        options\n      );\n    });\n  }\n  refetchQueries(filters, options = {}) {\n    const fetchOptions = {\n      ...options,\n      cancelRefetch: options.cancelRefetch ?? true\n    };\n    const promises = notifyManager.batch(\n      () => this.#queryCache.findAll(filters).filter((query) => !query.isDisabled() && !query.isStatic()).map((query) => {\n        let promise = query.fetch(void 0, fetchOptions);\n        if (!fetchOptions.throwOnError) {\n          promise = promise.catch(noop);\n        }\n        return query.state.fetchStatus === \"paused\" ? Promise.resolve() : promise;\n      })\n    );\n    return Promise.all(promises).then(noop);\n  }\n  fetchQuery(options) {\n    const defaultedOptions = this.defaultQueryOptions(options);\n    if (defaultedOptions.retry === void 0) {\n      defaultedOptions.retry = false;\n    }\n    const query = this.#queryCache.build(this, defaultedOptions);\n    return query.isStaleByTime(\n      resolveStaleTime(defaultedOptions.staleTime, query)\n    ) ? query.fetch(defaultedOptions) : Promise.resolve(query.state.data);\n  }\n  prefetchQuery(options) {\n    return this.fetchQuery(options).then(noop).catch(noop);\n  }\n  fetchInfiniteQuery(options) {\n    options.behavior = infiniteQueryBehavior(options.pages);\n    return this.fetchQuery(options);\n  }\n  prefetchInfiniteQuery(options) {\n    return this.fetchInfiniteQuery(options).then(noop).catch(noop);\n  }\n  ensureInfiniteQueryData(options) {\n    options.behavior = infiniteQueryBehavior(options.pages);\n    return this.ensureQueryData(options);\n  }\n  resumePausedMutations() {\n    if (onlineManager.isOnline()) {\n      return this.#mutationCache.resumePausedMutations();\n    }\n    return Promise.resolve();\n  }\n  getQueryCache() {\n    return this.#queryCache;\n  }\n  getMutationCache() {\n    return this.#mutationCache;\n  }\n  getDefaultOptions() {\n    return this.#defaultOptions;\n  }\n  setDefaultOptions(options) {\n    this.#defaultOptions = options;\n  }\n  setQueryDefaults(queryKey, options) {\n    this.#queryDefaults.set(hashKey(queryKey), {\n      queryKey,\n      defaultOptions: options\n    });\n  }\n  getQueryDefaults(queryKey) {\n    const defaults = [...this.#queryDefaults.values()];\n    const result = {};\n    defaults.forEach((queryDefault) => {\n      if (partialMatchKey(queryKey, queryDefault.queryKey)) {\n        Object.assign(result, queryDefault.defaultOptions);\n      }\n    });\n    return result;\n  }\n  setMutationDefaults(mutationKey, options) {\n    this.#mutationDefaults.set(hashKey(mutationKey), {\n      mutationKey,\n      defaultOptions: options\n    });\n  }\n  getMutationDefaults(mutationKey) {\n    const defaults = [...this.#mutationDefaults.values()];\n    const result = {};\n    defaults.forEach((queryDefault) => {\n      if (partialMatchKey(mutationKey, queryDefault.mutationKey)) {\n        Object.assign(result, queryDefault.defaultOptions);\n      }\n    });\n    return result;\n  }\n  defaultQueryOptions(options) {\n    if (options._defaulted) {\n      return options;\n    }\n    const defaultedOptions = {\n      ...this.#defaultOptions.queries,\n      ...this.getQueryDefaults(options.queryKey),\n      ...options,\n      _defaulted: true\n    };\n    if (!defaultedOptions.queryHash) {\n      defaultedOptions.queryHash = hashQueryKeyByOptions(\n        defaultedOptions.queryKey,\n        defaultedOptions\n      );\n    }\n    if (defaultedOptions.refetchOnReconnect === void 0) {\n      defaultedOptions.refetchOnReconnect = defaultedOptions.networkMode !== \"always\";\n    }\n    if (defaultedOptions.throwOnError === void 0) {\n      defaultedOptions.throwOnError = !!defaultedOptions.suspense;\n    }\n    if (!defaultedOptions.networkMode && defaultedOptions.persister) {\n      defaultedOptions.networkMode = \"offlineFirst\";\n    }\n    if (defaultedOptions.queryFn === skipToken) {\n      defaultedOptions.enabled = false;\n    }\n    return defaultedOptions;\n  }\n  defaultMutationOptions(options) {\n    if (options?._defaulted) {\n      return options;\n    }\n    return {\n      ...this.#defaultOptions.mutations,\n      ...options?.mutationKey && this.getMutationDefaults(options.mutationKey),\n      ...options,\n      _defaulted: true\n    };\n  }\n  clear() {\n    this.#queryCache.clear();\n    this.#mutationCache.clear();\n  }\n};\nexport {\n  QueryClient\n};\n//# sourceMappingURL=queryClient.js.map","\"use client\";\n\n// src/QueryClientProvider.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar QueryClientContext = React.createContext(\n  void 0\n);\nvar useQueryClient = (queryClient) => {\n  const client = React.useContext(QueryClientContext);\n  if (queryClient) {\n    return queryClient;\n  }\n  if (!client) {\n    throw new Error(\"No QueryClient set, use QueryClientProvider to set one\");\n  }\n  return client;\n};\nvar QueryClientProvider = ({\n  client,\n  children\n}) => {\n  React.useEffect(() => {\n    client.mount();\n    return () => {\n      client.unmount();\n    };\n  }, [client]);\n  return /* @__PURE__ */ jsx(QueryClientContext.Provider, { value: client, children });\n};\nexport {\n  QueryClientContext,\n  QueryClientProvider,\n  useQueryClient\n};\n//# sourceMappingURL=QueryClientProvider.js.map","import { WagmiProvider, type Config } from \"wagmi\";\nimport { useMemo } from \"react\";\nimport \"./index.css\";\nimport { ToastContainer } from \"react-toastify\";\nimport \"react-toastify/dist/ReactToastify.css\";\nimport { toast } from \"react-toastify\";\nimport { usePublicClient } from \"wagmi\";\n\nimport { useState, useEffect } from \"react\";\nimport {\n  RainbowKitProvider,\n  ConnectButton,\n  lightTheme,\n} from \"@rainbow-me/rainbowkit\";\nimport { config } from \"./wagmi\";\nimport { useWalletClient } from \"wagmi\";\nimport { useAccount, useSwitchChain } from \"wagmi\";\nimport { parseUnits } from \"viem\";\nimport { DatePickerComponent, TimePickerComponent } from \"./common/DatePicker\";\nimport { ClipLoader } from \"react-spinners\";\nimport {\n  ActaDeposit,\n  ConnectorType,\n  getPeriodInterval,\n  getTokenByChainIdAndSymbol,\n} from \"@actalink/commonlib\";\nimport \"@rainbow-me/rainbowkit/styles.css\";\n\nimport { QueryClient, QueryClientProvider } from \"@tanstack/react-query\";\nimport { useDisconnect } from \"wagmi\";\n\nconst WidgetInner = ({\n  receiverAddress,\n  reveiverAmount,\n  token,\n  reveiverNetwork = 137,\n  projectId,\n  onClose,\n  ready = false,\n  reccurring = false,\n  demo = false,\n}) => {\n  const { data: walletClient } = useWalletClient();\n  const publicClient = usePublicClient();\n  const { switchChainAsync } = useSwitchChain();\n  const [balance, setBalance] = useState<string | null>(null);\n  const [isFormReady, setIsFormReady] = useState(ready);\n  const { address, isConnected, chainId } = useAccount();\n  const { disconnect } = useDisconnect();\n  const [amount, setAmount] = useState(reveiverAmount?.toString() ?? \"\");\n  const [scheduleOn, setScheduleOn] = useState(reccurring ?? false);\n  const [times, setTimes] = useState(1);\n  const [frequency, setFrequency] = useState(\"5mins\");\n  const [selectedDate, setSelectedDate] = useState(new Date());\n  const [selectedTime, setSelectedTime] = useState(new Date());\n  const [combinedDate, setCombinedDate] = useState(new Date());\n\n  const [isLoading, setIsLoading] = useState(false);\n  const [txnId, setTxnId] = useState<string | null>(null);\n  const getChainName = (chainId) => {\n    switch (chainId) {\n      case 1:\n        return \"Ethereum\";\n      case 137:\n        return \"Polygon\";\n      case 10:\n        return \"OP Mainnet\";\n      case 42161:\n        return \"Arbitrum One\";\n      case 56:\n        return \"BNB Chain\";\n      case 8453:\n        return \"Base\";\n      default:\n        return `Chain ${chainId}`;\n    }\n  };\n  useEffect(() => {\n    if (reveiverAmount != null) {\n      const newAmount = reveiverAmount.toString();\n      if (amount !== newAmount) setAmount(newAmount);\n    }\n  }, [reveiverAmount]);\n  useEffect(() => {\n    const fetchBalance = async () => {\n      if (!publicClient || !address || !token || !reveiverNetwork) return;\n\n      try {\n        const tokenInfo = getTokenByChainIdAndSymbol(reveiverNetwork, token);\n        if (!tokenInfo?.address) return;\n\n        const [balanceRaw, decimals] = await Promise.all([\n          publicClient.readContract({\n            address: tokenInfo.address as `0x${string}`,\n            abi: [\n              {\n                name: \"balanceOf\",\n                type: \"function\",\n                stateMutability: \"view\",\n                inputs: [{ name: \"account\", type: \"address\" }],\n                outputs: [{ name: \"\", type: \"uint256\" }],\n              },\n            ],\n            functionName: \"balanceOf\",\n            args: [address],\n          }),\n          publicClient.readContract({\n            address: tokenInfo.address as `0x${string}`,\n            abi: [\n              {\n                name: \"decimals\",\n                type: \"function\",\n                stateMutability: \"view\",\n                inputs: [],\n                outputs: [{ name: \"\", type: \"uint8\" }],\n              },\n            ],\n            functionName: \"decimals\",\n          }),\n        ]);\n\n        const formatted = (Number(balanceRaw) / 10 ** Number(decimals)).toFixed(\n          2\n        );\n        setBalance(formatted);\n      } catch (err) {\n        console.error(\"Failed to fetch balance\", err);\n        setBalance(null);\n      }\n    };\n\n    fetchBalance();\n  }, [publicClient, address, token, reveiverNetwork]);\n  useEffect(() => {\n    const now = new Date();\n    const fiveMinutesLater = new Date(now.getTime() + 5 * 60 * 1000);\n    setSelectedDate(fiveMinutesLater);\n    setSelectedTime(fiveMinutesLater);\n    setCombinedDate(fiveMinutesLater);\n  }, []);\n  const updateCombinedDateTime = (date, time) => {\n    let milliseconds = 0;\n    if (date && time) {\n      const combinedDateTime = new Date(\n        date.getFullYear(),\n        date.getMonth(),\n        date.getDate(),\n        time.getHours(),\n        time.getMinutes()\n      );\n      setCombinedDate(combinedDateTime);\n      milliseconds = combinedDateTime.getTime();\n    }\n    return milliseconds;\n  };\n  const handleAmountChange = (e) => {\n    let val = e.target.value;\n\n    // Allow only digits and at most one comma or dot\n    if (/^[0-9]*[.,]?[0-9]*$/.test(val)) {\n      // Normalize comma to dot for internal logic\n      const normalized = val.replace(\",\", \".\");\n      setAmount(normalized);\n    }\n  };\n\n  const frequencyOptions = [\n    { value: \"5mins\", label: \"5 Minutes\" },\n    { value: \"day\", label: \"Daily\" },\n    { value: \"week\", label: \"Weekly\" },\n    { value: \"month\", label: \"Monthly\" },\n    { value: \"year\", label: \"Yearly\" },\n  ];\n  const timesOptions = Array.from({ length: 12 }, (_, i) => i + 1);\n  const handleDateChange = (date) => setSelectedDate(date);\n  const handleTimeChange = (time) => setSelectedTime(time);\n  //  useEffect(() => {\n  //   const isBaseValid =\n  //     !!receiverAddress &&\n  //     !!token &&\n  //     !!projectId &&\n  //     !!amount &&\n  //     (reveiverAmount || parseFloat(amount) > 0);\n\n  //   const isScheduleValid = scheduleOn\n  //     ? !!times && !!frequency && !!selectedDate && !!selectedTime\n  //     : true;\n\n  //   const formReady = isBaseValid && isScheduleValid;\n  //   if (formReady !== isFormReady) {\n  //     setIsFormReady(formReady);\n  //   }\n  // }, [\n  //   receiverAddress,\n  //   token,\n  //   projectId,\n  //   amount,\n  //   reveiverAmount,\n  //   scheduleOn,\n  //   times,\n  //   frequency,\n  //   selectedDate,\n  //   selectedTime,\n  // ]);\n\n  const formReady = useMemo(() => {\n    const isBaseValid =\n      !!receiverAddress &&\n      !!token &&\n      !!projectId &&\n      !!amount &&\n      (reveiverAmount || parseFloat(amount) > 0);\n\n    const isScheduleValid = scheduleOn\n      ? !!times && !!frequency && !!selectedDate && !!selectedTime\n      : true;\n\n    return isBaseValid && isScheduleValid;\n  }, [\n    receiverAddress,\n    token,\n    projectId,\n    amount,\n    reveiverAmount,\n    scheduleOn,\n    times,\n    frequency,\n    selectedDate,\n    selectedTime,\n  ]);\n\n  useEffect(() => {\n    setIsFormReady(formReady);\n  }, [formReady]);\n  const handlePay = async () => {\n    if (!address || !walletClient) return;\n\n    const minAmount = 0.1001;\n    if (parseFloat(amount) < minAmount) {\n      toast.error(`Amount must be grater than ${minAmount.toFixed(1)}`);\n      return;\n    }\n\n    const targetChainId = reveiverNetwork ?? 137;\n    if (chainId !== targetChainId) {\n      await switchChainAsync({ chainId: targetChainId });\n    }\n    console.log(frequency, times, selectedDate, selectedTime);\n    const a =\n      Math.floor(updateCombinedDateTime(selectedDate, selectedTime) / 1000) +\n      getPeriodInterval(frequency) * times;\n    console.log(a);\n\n    try {\n      setIsLoading(true);\n      const depositAccount = new ActaDeposit({\n        signerAddress: address,\n        amount: BigInt(\n          parseUnits(\n            amount,\n            getTokenByChainIdAndSymbol(reveiverNetwork, token)\n              ?.decimals as number\n          )\n        ),\n        chainId: Number(reveiverNetwork),\n        connectorType: ConnectorType.SELF_CUSTODY,\n        feeInclusive: true,\n        token: token,\n        receiver: receiverAddress,\n        serviceType: \"deposit\",\n        paymentType: scheduleOn ? \"recurring\" : \"single\",\n        walletClient: walletClient,\n        count: scheduleOn ? times : 1,\n        intervalUnit: scheduleOn ? frequency : \"5mins\",\n        startDate: Math.floor(\n          updateCombinedDateTime(selectedDate, selectedTime) / 1000\n        ),\n        endDate: scheduleOn\n          ? Math.floor(\n              updateCombinedDateTime(selectedDate, selectedTime) / 1000\n            ) +\n            getPeriodInterval(frequency) * times\n          : Math.floor(\n              updateCombinedDateTime(selectedDate, selectedTime) / 1000\n            ) +\n            getPeriodInterval(\"5mins\") * 2,\n        allowMaxTokenApproval: true,\n      });\n\n      const session = await depositAccount.createSession({ projectId });\n      const id = await depositAccount.createPayment();\n      setTxnId(id);\n      console.log(\"Transaction created:\", id);\n    } catch (error) {\n      toast.error(\"Failed to create transaction\");\n      console.error(\"Failed to create transaction:\", error);\n    } finally {\n      setIsLoading(false);\n    }\n  };\n\n  return txnId ? (\n    <DoneScreen\n      onClose={onClose}\n      setTxnId={setTxnId}\n      onDone={() => {\n        setTxnId(null);\n        if (demo) {\n          setAmount(\"\");\n          setScheduleOn(false);\n          setTimes(1);\n          setFrequency(\"5mins\");\n          const now = new Date();\n          setSelectedDate(now);\n          setSelectedTime(now);\n          setCombinedDate(now);\n          window.location.reload();\n        } else {\n          setAmount(\"\");\n        }\n      }}\n    />\n  ) : (\n    <div\n      className={`relative ${\n        reccurring ? \"w-[350px]\" : \"w-[350px]\"\n      } font-sans p-8 bg-white rounded-[33px] inline-flex flex-col justify-center items-center gap-8 overflow-hidden font-['Poppins']`}\n    >\n      {\" \"}\n      {onClose && (\n        <button\n          onClick={onClose}\n          className=\"absolute top-4 right-6 text-zinc-500 hover:text-zinc-900 text-xl font-bold\"\n          aria-label=\"Close widget\"\n        >\n          ×\n        </button>\n      )}\n      {isConnected ? (\n        <>\n          <div className=\"flex flex-col items-center\">\n            <div className=\"text-zinc-900 text-lg font-medium \">\n              {receiverAddress?.slice(0, 6)}...{receiverAddress?.slice(-4)}\n            </div>\n            {reveiverNetwork && reveiverNetwork !== 0 && (\n              <div className=\"text-gray-400 text-md font-normal \">\n                {getChainName(reveiverNetwork)}\n              </div>\n            )}\n          </div>\n\n          <div className=\"w-full min-w-[229px] flex justify-center items-end\">\n            <div className=\"flex min-w-[229px] h-[42px] items-end gap-3  font-normal text-zinc-900 leading-[47px] \">\n              <input\n                type=\"text\"\n                inputMode=\"decimal\"\n                value={amount}\n                onChange={handleAmountChange}\n                placeholder=\"0.0\"\n                className={`min-w-[80px] h-[42px] flex  items-center justify-center w-auto ${\n                  reccurring ? \"text-[42px]\" : \"text-[42px]\"\n                } font-medium text-end focus:outline-none bg-transparent`}\n                style={{ width: `${Math.max(amount.length * 32, 80)}px` }}\n              />\n              <span\n                className={` flex h-[42px]   items-center justify-center ${\n                  reccurring ? \"text-[42px]\" : \"text-[42px]\"\n                } font-light `}\n              >\n                {token}\n              </span>\n            </div>\n          </div>\n\n          {reccurring && (\n            <div className=\"flex flex-col gap-6\">\n              {/* Schedule toggle */}\n              <div className=\"inline-flex justify-center items-center gap-4\">\n                <div className=\"text-zinc-900 text-lg font-medium  tracking-wide\">\n                  Repeat & Schedule\n                </div>\n\n                <label className=\"inline-flex items-center cursor-pointer\">\n                  <input\n                    type=\"checkbox\"\n                    value=\"\"\n                    className=\"sr-only peer\"\n                    checked={scheduleOn}\n                    onChange={() => setScheduleOn(!scheduleOn)}\n                    aria-invalid=\"true\"\n                  />\n                  <div className=\"relative  w-11 h-6 bg-gray-200 peer-checked:bg-black rounded-full peer-focus:outline-none peer peer-checked:after:translate-x-full rtl:peer-checked:after:-translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:start-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all\"></div>\n                </label>\n              </div>\n\n              {/* Conditional dropdowns */}\n              {scheduleOn && (\n                <div className=\"flex flex-col gap-2 w-full items-center\">\n                  {/* Date + Time selectors */}\n                  <div className=\"w-[280px] h-10 inline-flex justify-center items-center gap-3\">\n                    <div className=\"flex items-center w-full justify-center h-10 px-3  py-[3px] rounded-lg outline outline-1 outline-offset-[-1px] outline-black  leading-loose tracking-wide bg-white\">\n                      <DatePickerComponent onDateChange={handleDateChange} />\n                    </div>\n                    <div className=\"flex  w-full items-center justify-center  h-10 px-3  py-[3px] rounded-lg outline outline-1 outline-offset-[-1px] outline-black  leading-loose tracking-wide bg-white\">\n                      <TimePickerComponent\n                        onTimeChange={handleTimeChange}\n                        selectedDate={selectedDate}\n                      />\n                    </div>\n                  </div>\n\n                  {/* Frequency + Times dropdowns */}\n                  <div className=\"w-[280px] h-12 inline-flex justify-start items-center gap-3\">\n                    <select\n                      className=\"flex-1 h-10 px-3 py-[3px] rounded-lg outline outline-1 outline-offset-[-1px] outline-black text-zinc-900 text-sm font-medium leading-loose tracking-wide bg-white\"\n                      value={frequency}\n                      onChange={(e) => setFrequency(e.target.value)}\n                    >\n                      {frequencyOptions.map((freq) => (\n                        <option key={freq.value} value={freq.value}>\n                          {freq.label}\n                        </option>\n                      ))}\n                    </select>\n\n                    <select\n                      className=\"flex-1 h-10 px-3 rounded-lg outline outline-1 outline-offset-[-1px] outline-black text-zinc-900 text-sm font-medium leading-loose tracking-wide bg-white\"\n                      value={times}\n                      onChange={(e) => setTimes(Number(e.target.value))}\n                    >\n                      {timesOptions.map((time) => (\n                        <option key={time} value={time}>\n                          {time} {time === 1 ? \"Time\" : \"Times\"}\n                        </option>\n                      ))}\n                    </select>\n                  </div>\n                </div>\n              )}\n            </div>\n          )}\n          <div className=\"flex flex-col gap-3 w-full items-center justify-center\">\n            {isLoading ? (\n              <div className=\"self-stretch h-[52px] flex items-center justify-center  bg-black rounded-lg outline outline-1 outline-offset-[-1px] outline-black text-white font-medium text-lg overflow-hidden\">\n                <ClipLoader color=\"#ffffff\" />\n              </div>\n            ) : (\n              <button\n                onClick={handlePay}\n                disabled={!isFormReady}\n                className={`self-stretch h-[52px] rounded-lg font-medium text-lg overflow-hidden ${\n                  isFormReady\n                    ? \"bg-black text-white outline-black outline outline-1 cursor-pointer outline-offset-[-1px]\"\n                    : \"bg-gray-200 text-gray-400 cursor-not-allowed\"\n                }`}\n              >\n                Pay\n              </button>\n            )}\n            <div className=\"flex gap-4\">\n              <div className=\"text-sm text-gray-400 \">\n                {`${address.slice(0, 6)}...${address.slice(-4)}`}{\" \"}\n              </div>\n              {balance && (\n                <div className=\"text-sm text-gray-400\">\n                  Balance: {balance} {token}\n                </div>\n              )}\n            </div>\n            <div\n              onClick={disconnect}\n              className=\"text-sm hover:underline cursor-pointer \"\n            >\n              Disconnect Wallet\n            </div>\n          </div>\n          <ToastContainer\n            position=\"top-center\"\n            autoClose={3000}\n            hideProgressBar\n            newestOnTop\n            closeOnClick\n            pauseOnHover\n            draggable\n            limit={3}\n          />\n        </>\n      ) : (\n        <ConnectButton label=\"Connect Wallet\" />\n      )}\n    </div>\n  );\n};\n\nexport const Widget = ({\n  address,\n  amount,\n  token,\n  onClose,\n  network,\n  projectId,\n  ready,\n  reccurring,\n  wagmiConfig,\n  rainbowKitAppName = \"Acta Deposit Widget\",\n  demo = false,\n}: {\n  address: string;\n  amount: number;\n  token: string;\n  onClose?: () => void;\n  network?: number;\n  projectId: string;\n  ready?: boolean;\n  reccurring?: boolean;\n  wagmiConfig?: Config;\n  rainbowKitAppName?: string;\n  demo?: boolean;\n}) => {\n  const queryClient = useMemo(() => new QueryClient(), []);\n\n  const isStandalone = !wagmiConfig;\n  useEffect(() => {\n    if (!wagmiConfig) {\n      console.warn(\"[Widget] Using internal wagmiConfig.\");\n    }\n  }, []);\n  const content = (\n    <WidgetInner\n      receiverAddress={address}\n      reveiverAmount={amount}\n      token={token}\n      reveiverNetwork={network}\n      projectId={projectId}\n      onClose={onClose}\n      ready={ready}\n      reccurring={reccurring}\n      demo={demo}\n    />\n  );\n\n  if (isStandalone) {\n    return (\n      <QueryClientProvider client={queryClient}>\n        <WagmiProvider config={config}>\n          <RainbowKitProvider\n            modalSize=\"compact\"\n            appInfo={{ appName: rainbowKitAppName }}\n            theme={lightTheme({\n              accentColor: \"#000000\",\n              accentColorForeground: \"white\",\n              borderRadius: \"large\",\n            })}\n          >\n            {content}\n          </RainbowKitProvider>\n        </WagmiProvider>\n      </QueryClientProvider>\n    );\n  }\n\n  return content;\n};\n\nconst DoneScreen = ({ onClose, setTxnId, onDone }) => {\n  return (\n    <div className=\"w-[350px] relative font-sans p-10 bg-white rounded-[33px] flex flex-col items-center justify-center gap-6 font-['Poppins']\">\n      {onClose && (\n        <button\n          onClick={onClose}\n          className=\"absolute top-4 right-6 text-zinc-500 hover:text-zinc-900 text-xl font-bold\"\n          aria-label=\"Close widget\"\n        >\n          ×\n        </button>\n      )}\n      <div className=\"\">\n        <svg\n          xmlns=\"http://www.w3.org/2000/svg\"\n          width=\"88\"\n          height=\"88\"\n          viewBox=\"0 0 88 88\"\n          fill=\"none\"\n        >\n          <path\n            d=\"M29.6667 44L39.2222 53.5556L58.3333 34.4444M1 44C1 49.6468 2.11223 55.2384 4.27318 60.4554C6.43413 65.6724 9.60149 70.4127 13.5944 74.4056C17.5873 78.3985 22.3276 81.5659 27.5446 83.7268C32.7616 85.8878 38.3532 87 44 87C49.6468 87 55.2384 85.8878 60.4554 83.7268C65.6724 81.5659 70.4127 78.3985 74.4056 74.4056C78.3985 70.4127 81.5659 65.6724 83.7268 60.4554C85.8878 55.2384 87 49.6468 87 44C87 38.3532 85.8878 32.7616 83.7268 27.5446C81.5659 22.3276 78.3985 17.5873 74.4056 13.5944C70.4127 9.60149 65.6724 6.43413 60.4554 4.27318C55.2384 2.11223 49.6468 1 44 1C38.3532 1 32.7616 2.11223 27.5446 4.27318C22.3276 6.43413 17.5873 9.60149 13.5944 13.5944C9.60149 17.5873 6.43413 22.3276 4.27318 27.5446C2.11223 32.7616 1 38.3532 1 44Z\"\n            stroke=\"black\"\n            stroke-width=\"2\"\n            stroke-linecap=\"round\"\n            stroke-linejoin=\"round\"\n          />\n        </svg>\n      </div>\n      <div className=\"text-zinc-900 text-lg font-medium tracking-wide text-center\">\n        Transaction successfully created\n      </div>\n      <button\n        onClick={onDone}\n        className=\"self-stretch h-[45px] rounded-lg font-medium text-lg overflow-hidden bg-black text-white outline-black outline outline-1 cursor-pointer outline-offset-[-1px]\"\n      >\n        Done\n      </button>\n    </div>\n  );\n};\n"],"names":["REACT_ELEMENT_TYPE","REACT_FRAGMENT_TYPE","jsxProd","type","config","maybeKey","key","propName","reactJsxRuntime_production","getComponentNameFromType","REACT_CLIENT_REFERENCE","REACT_PROFILER_TYPE","REACT_STRICT_MODE_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_ACTIVITY_TYPE","REACT_PORTAL_TYPE","REACT_CONTEXT_TYPE","REACT_CONSUMER_TYPE","REACT_FORWARD_REF_TYPE","innerType","REACT_MEMO_TYPE","REACT_LAZY_TYPE","testStringCoercion","value","checkKeyStringCoercion","JSCompiler_inline_result","JSCompiler_temp_const","JSCompiler_inline_result$jscomp$0","getTaskName","name","getOwner","dispatcher","ReactSharedInternals","UnknownOwner","hasValidKey","hasOwnProperty","getter","defineKeyPropWarningGetter","props","displayName","warnAboutAccessingKey","specialPropKeyWarningShown","elementRefGetterWithDeprecationWarning","componentName","didWarnAboutElementRef","ReactElement","self","source","owner","debugStack","debugTask","jsxDEVImpl","isStaticChildren","children","isArrayImpl","validateChildKeys","keys","k","didWarnAboutKeySpread","node","React","require$$0","createTask","callStackForError","unknownOwnerDebugStack","unknownOwnerDebugTask","reactJsxRuntime_development","trackActualOwner","jsxRuntimeModule","require$$1","r","t","f","n","o","clsx","Mt","e","L","N","P","mt","B","pt","z","$t","Z","s","$","a","d","c","T","g","v","x","C","S","E","zt","Bt","p","Rt","ut","J","tt","Ut","Ft","yt","ot","gt","l","Tt","et","Xt","at","_t","i","u","h","m","_","M","A","D","Y","R","I","F","st","Vt","bt","Qt","nt","vt","X","ht","Ct","xt","rt","Et","Pt","Wt","U","V","Q","y","Gt","qt","It","Kt","Yt","At","kt","St","Zt","b","Ot","to","Jt","G","O","ao","so","no","ro","io","W","lo","Nt","eo","oo","wt","it","ft","dt","j","H","fo","co","q","K","lt","_o","Lt","go","To","Dt","yo","ct","defineChain","chain","version","errorConfig","docsBaseUrl","docsPath","docsSlug","BaseError","shortMessage","args","details","_a","docsUrl","message","fn","walk","err","max","min","signed","size","InvalidBytesBooleanError","bytes","SizeOverflowError","givenSize","maxSize","isHex","strict","trim","hexOrBytes","dir","data","sliceLength","SliceOffsetOutOfBoundsError","offset","position","targetSize","InvalidBytesLengthError","pad","padHex","padBytes","hex_","hex","SizeExceedsPaddingSizeError","paddedBytes","padEnd","hexes","_v","toHex","opts","numberToHex","stringToHex","boolToHex","bytesToHex","assertSize","string","value_","maxValue","minValue","suffix","IntegerOutOfRangeError","encoder","toBytes","numberToBytes","boolToBytes","hexToBytes","stringToBytes","charCodeMap","charCodeToBase16","char","hexString","length","index","nibbleLeft","nibbleRight","size_","hexToBigInt","hexToNumber","defineFormatter","format","exclude","overrides","formatted","transactionType","formatTransaction","transaction","transaction_","formatAuthorizationList","defineTransaction","authorizationList","authorization","formatBlock","block","transactions","defineBlock","formatLog","log","eventName","receiptStatuses","formatTransactionReceipt","transactionReceipt","receipt","defineTransactionReceipt","rpcTransactionType","formatTransactionRequest","request","rpcRequest","maxUint256","concat","values","concatHex","concatBytes","arr","result","acc","NegativeOffsetError","PositionOutOfBoundsError","RecursiveReadLimitExceededError","count","limit","staticCursor","position_","byte","oldPosition","createCursor","recursiveReadLimit","cursor","toRlp","encodable","getEncodable","getEncodableList","getEncodableBytes","list","bodyLength","sizeOfBodyLength","getSizeOfLength","encode","bytesOrHex","sizeOfBytesLength","etherUnits","gweiUnits","formatUnits","decimals","display","negative","integer","fraction","formatEther","wei","unit","formatGwei","prettyPrint","entries","maxLength","FeeConflictError","InvalidLegacyVError","InvalidSerializableTransactionError","InvalidStorageKeySizeError","storageKey","TransactionExecutionError","cause","account","gas","gasPrice","maxFeePerGas","maxPriorityFeePerGas","nonce","prettyArgs","serializeAuthorizationList","serializedAuthorizationList","chainId","signature","contractAddress","toYParitySignatureArray","blobsToCommitments","parameters","kzg","blobs","commitments","blob","blobsToProofs","proofs","commitment","crypto","isBytes","anumber","abytes","lengths","ahash","aexists","instance","checkFinished","aoutput","out","u32","clean","arrays","createView","rotr","word","shift","isLE","byteSwap","byteSwap32","swap32IfBE","hasHexBuiltin","asciis","asciiToBase16","ch","hl","al","array","ai","hi","n1","n2","utf8ToBytes","str","sum","res","Hash","createHasher","hashCons","hashC","msg","tmp","randomBytes","bytesLength","setBigUint64","view","byteOffset","_32n","_u32_max","wh","wl","Chi","Maj","HashMD","blockLen","outputLen","padOffset","buffer","len","pos","take","dataView","oview","outLen","state","finished","destroyed","SHA256_IV","U32_MASK64","fromBig","le","split","lst","Ah","Al","rotlSH","rotlSL","rotlBH","rotlBL","SHA256_K","SHA256_W","SHA256","W15","W2","s0","s1","sigma1","T1","T2","sha256","sha256n","to_","noble_sha256","commitmentToVersionedHash","versionedHash","commitmentsToVersionedHashes","hashes","blobsPerTransaction","bytesPerFieldElement","fieldElementsPerBlob","bytesPerBlob","maxBytesPerTransaction","versionedHashVersionKzg","BlobSizeTooLargeError","EmptyBlobError","InvalidVersionedHashSizeError","hash","InvalidVersionedHashVersionError","toBlobs","active","toBlobSidecars","sidecars","InvalidAddressError","address","ChainDoesNotSupportContract","blockNumber","contract","ChainMismatchError","currentChainId","ChainNotFoundError","ClientChainNotConfiguredError","InvalidChainIdError","reason","ExecutionRevertedError","FeeCapTooHighError","FeeCapTooLowError","NonceTooHighError","NonceTooLowError","NonceMaxValueError","InsufficientFundsError","IntrinsicGasTooHighError","IntrinsicGasTooLowError","TransactionTypeNotSupportedError","TipAboveFeeCapError","UnknownNodeError","LruMap","firstKey","_0n","_1n","_2n","_7n","_256n","_0x71n","SHA3_PI","SHA3_ROTL","_SHA3_IOTA","round","IOTAS","SHA3_IOTA_H","SHA3_IOTA_L","rotlH","rotlL","keccakP","rounds","idx1","idx0","B0","B1","Th","Tl","curH","curL","PI","Keccak","enableXOF","bufferOut","gen","keccak_256","keccak256","checksumAddressCache","checksumAddress","address_","hexAddress","addressRegex","isAddressCache","isAddress","options","cacheKey","slice","start","end","sliceHex","sliceBytes","assertStartOffset","assertEndOffset","assertTransactionEIP7702","assertTransactionEIP1559","assertTransactionEIP4844","blobVersionedHashes","assertTransactionEIP2930","assertTransactionLegacy","getTransactionType","serializeAccessList","accessList","serializedAccessList","storageKeys","serializeTransaction","serializeTransactionEIP1559","serializeTransactionEIP2930","serializeTransactionEIP4844","serializeTransactionEIP7702","serializeTransactionLegacy","maxFeePerBlobGas","serializedTransaction","proof","signature_","yParity","contracts","formatters","isDeposit","serializeTransactionDeposit","serializeTransaction_","serializers","assertTransactionDeposit","sourceHash","from","isSystemTx","mint","chainConfig","arbitrum","sourceId","base","bsc","assertCurrentChain","getChainContractAddress","parseAccount","AccountTypeNotSupportedError","metaMessages","panicReasons","solidityError","solidityPanic","formatAbiItem","abiItem","includeName","InvalidDefinitionTypeError","formatAbiParams","params","param","formatAbiParam","AbiConstructorNotFoundError","AbiConstructorParamsNotFoundError","AbiDecodingDataSizeTooSmallError","AbiDecodingZeroDataError","AbiEncodingArrayLengthMismatchError","expectedLength","givenLength","AbiEncodingBytesSizeMismatchError","expectedSize","AbiEncodingLengthMismatchError","AbiErrorInputsNotFoundError","errorName","AbiErrorNotFoundError","AbiErrorSignatureNotFoundError","AbiFunctionNotFoundError","functionName","AbiFunctionOutputsNotFoundError","AbiFunctionSignatureNotFoundError","AbiItemAmbiguityError","BytesSizeMismatchError","InvalidAbiEncodingTypeError","InvalidAbiDecodingTypeError","InvalidArrayError","hashSignature","sig","execTyped","regex","match","bytesRegex","integerRegex","isTupleRegex","tupleRegex","formatAbiParameter","abiParameter","component","formatAbiParameters","abiParameters","errorSignatureRegex","isErrorSignature","execErrorSignature","eventSignatureRegex","isEventSignature","execEventSignature","functionSignatureRegex","isFunctionSignature","execFunctionSignature","structSignatureRegex","isStructSignature","execStructSignature","constructorSignatureRegex","isConstructorSignature","execConstructorSignature","fallbackSignatureRegex","isFallbackSignature","execFallbackSignature","receiveSignatureRegex","isReceiveSignature","eventModifiers","functionModifiers","UnknownTypeError","UnknownSolidityTypeError","InvalidParameterError","SolidityProtectedKeywordError","InvalidModifierError","modifier","InvalidFunctionModifierError","InvalidAbiTypeParameterError","InvalidSignatureError","UnknownSignatureError","InvalidStructSignatureError","CircularReferenceError","InvalidParenthesisError","current","depth","getParameterCacheKey","structs","structKey","struct","propertyKey","property","parameterCache","parseSignature","parseFunctionSignature","parseEventSignature","parseErrorSignature","parseConstructorSignature","parseFallbackSignature","inputParams","splitParameters","inputs","inputLength","parseAbiParameter","outputs","outputParams","outputLength","abiParameterWithoutTupleRegex","abiParameterWithTupleRegex","dynamicIntegerRegex","parameterCacheKey","isTuple","isSolidityKeyword","indexed","components","components_","isSolidityType","_b","isValidDataLocation","tail","protectedKeywordsRegex","isArray","parseStructs","signatures","shallowStructs","signaturesLength","properties","propertiesLength","trimmed","resolvedStructs","entriesLength","resolveStructs","typeWithoutTupleRegex","ancestors","parseAbi","abi","normalizeSignature","level","valid","toSignature","def","def_","toSignatureHash","toFunctionSelector","bytesToBigInt","bytesToBool","bytes_","bytesToNumber","bytesToString","encodeAbiParameters","preparedParams","prepareParams","encodeParams","prepareParam","arrayComponents","getArrayComponents","encodeArray","encodeTuple","encodeAddress","encodeBool","encodeNumber","encodeBytes","encodeString","staticSize","dynamic","encoded","staticParams","dynamicParams","dynamicSize","dynamicChild","preparedParam","paramSize","bytesSize","hexValue","partsLength","parts","param_","matches","decodeAbiParameters","consumed","consumed_","decodeParameter","staticPosition","decodeArray","decodeTuple","decodeAddress","decodeBool","decodeBytes","decodeNumber","decodeString","sizeOfLength","sizeOfOffset","startOfData","hasDynamicChild","hasUnnamedChild","decodeErrorResult","stringify","replacer","space","formatAbiItemWithArgs","includeFunctionName","input","toEventSelector","getAbiItem","isSelector","abiItems","matchedAbiItem","arg","isArgOfType","ambiguousTypes","getAmbiguousTypes","argType","abiParameterType","sourceParameters","targetParameters","parameterIndex","sourceParameter","targetParameter","types","AccountStateConflictError","StateAssignmentConflictError","prettyStateMapping","stateMapping","pretty","slot","prettyStateOverride","stateOverride","val","getContractAddress","getUrl","url","CallExecutionError","account_","ContractFunctionExecutionError","sender","formattedArgs","functionWithParams","ContractFunctionRevertedError","decodedData","errorArgs","firstArg","errorWithParams","ContractFunctionZeroDataError","CounterfactualDeploymentFailedError","factory","RawContractError","HttpRequestError","body","headers","status","RpcRequestError","error","unknownErrorCode","RpcError","code","InternalRpcError","getNodeError","executionRevertedError","getCallError","extract","extract_","assertRequest","estimateGas","client","AccountNotFoundError","blockTag","rest","chainFormat","_c","baseFeePerGas","gasLimit","priorityFeePerGas","estimateFeesPerGas","response","multiply","linea","mainnet","optimism","polygon","getDefaultConfig","millisecondsInWeek","millisecondsInDay","millisecondsInMinute","millisecondsInHour","millisecondsInSecond","constructFromSymbol","constructFrom","date","toDate","argument","context","addDays","amount","_date","addMonths","dayOfMonth","endOfDesiredMonth","daysInMonth","addMilliseconds","addHours","defaultOptions","getDefaultOptions","startOfWeek","weekStartsOn","_d","day","diff","startOfISOWeek","getISOWeekYear","year","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","getTimezoneOffsetInMilliseconds","utcDate","normalizeDates","dates","normalize","startOfDay","differenceInCalendarDays","laterDate","earlierDate","laterDate_","earlierDate_","laterStartOfDay","earlierStartOfDay","laterTimestamp","earlierTimestamp","startOfISOWeekYear","fourthOfJanuary","addMinutes","addQuarters","addSeconds","addWeeks","addYears","date_","isSameDay","dateLeft_","dateRight_","isDate","isValid","differenceInCalendarMonths","yearsDiff","monthsDiff","getQuarter","differenceInCalendarQuarters","quartersDiff","differenceInCalendarYears","differenceInDays","sign","compareLocalAsc","difference","isLastDayNotFull","endOfDay","endOfMonth","month","startOfQuarter","currentMonth","startOfMonth","endOfYear","startOfYear","endOfWeek","formatDistanceLocale","formatDistance","token","tokenValue","buildFormatLongFn","width","dateFormats","timeFormats","dateTimeFormats","formatLong","formatRelativeLocale","formatRelative","_baseDate","_options","buildLocalizeFn","valuesArray","defaultWidth","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","dirtyNumber","number","rem100","localize","quarter","buildMatchFn","matchPattern","matchResult","matchedString","parsePatterns","findIndex","pattern","findKey","object","predicate","buildMatchPatternFn","parseResult","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","enUS","getDayOfYear","getISOWeek","getWeekYear","firstWeekContainsDate","firstWeekOfNextYear","firstWeekOfThisYear","startOfWeekYear","firstWeek","getWeek","addLeadingZeros","targetLength","output","lightFormatters","signedYear","dayPeriodEnumValue","numberOfDigits","milliseconds","fractionalSeconds","dayPeriodEnum","era","signedWeekYear","weekYear","twoDigitYear","isoWeekYear","week","isoWeek","dayOfYear","dayOfWeek","localDayOfWeek","isoDayOfWeek","hours","_localize","timezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","formatTimezoneShort","timestamp","delimiter","absOffset","minutes","dateLongFormatter","timeLongFormatter","dateTimeLongFormatter","datePattern","timePattern","dateTimeFormat","longFormatters","dayOfYearTokenRE","weekYearTokenRE","throwTokens","isProtectedDayOfYearToken","isProtectedWeekYearToken","warnOrThrowProtectedError","_message","subject","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","formatStr","locale","defaultLocale","_f","_e","_h","_g","originalDate","substring","firstCharacter","longFormatter","cleanEscapedString","formatterOptions","part","formatter","matched","getDate","getDay","getDaysInMonth","monthIndex","lastDayOfMonth","getInternalDefaultOptions","getHours","getISODay","getMinutes","getMonth","getSeconds","getTime","getYear","isAfter","dateToCompare","isBefore","isEqual","leftDate","rightDate","transpose","constructor","isConstructor","TIMEZONE_UNIT_PRIORITY","Setter","__publicField","_utcDate","ValueSetter","validateValue","setValue","priority","subPriority","flags","DateTimezoneSetter","reference","Parser","dateString","_value","EraParser","numericPatterns","timezonePatterns","mapValue","parseFnResult","mapFn","parseNumericPattern","parseTimezonePattern","seconds","parseAnyDigitsSigned","parseNDigits","parseNDigitsSigned","dayPeriodEnumToHours","dayPeriod","normalizeTwoDigitYear","currentYear","isCommonEra","absCurrentYear","rangeEnd","rangeEndCentury","isPreviousCentury","isLeapYearIndex","YearParser","valueCallback","normalizedTwoDigitYear","LocalWeekYearParser","ISOWeekYearParser","_flags","firstWeekOfYear","ExtendedYearParser","QuarterParser","StandAloneQuarterParser","MonthParser","StandAloneMonthParser","setWeek","LocalWeekParser","setISOWeek","ISOWeekParser","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP_YEAR","DateParser","isLeapYear","DayOfYearParser","setDay","currentDay","dayIndex","delta","DayParser","LocalDayParser","wholeWeekDays","StandAloneLocalDayParser","setISODay","ISODayParser","AMPMParser","AMPMMidnightParser","DayPeriodParser","Hour1to12Parser","isPM","Hour0to23Parser","Hour0To11Parser","Hour1To24Parser","MinuteParser","SecondParser","FractionOfSecondParser","ISOTimezoneWithZParser","ISOTimezoneParser","TimestampSecondsParser","TimestampMillisecondsParser","parsers","notWhitespaceRegExp","parse","dateStr","referenceDate","invalidDate","subFnOptions","setters","tokens","usedTokens","parser","incompatibleTokens","incompatibleToken","usedToken","uniquePrioritySetters","setter","setterArray","isSameMonth","isSameQuarter","isSameYear","isWithinInterval","interval","time","startTime","endTime","subDays","parseISO","dateStrings","splitDateString","parseYearResult","parseYear","parseDate","parseTime","parseTimezone","tmpDate","patterns","dateRegex","timeRegex","timezoneRegex","timeString","additionalDigits","captures","century","isWeekDate","parseDateUnit","validateWeekDate","dayOfISOWeekYear","validateDate","validateDayOfYearDate","parseTimeUnit","validateTime","timezoneString","validateTimezone","fourthOfJanuaryDay","daysInMonths","_year","_hours","setMonth","midMonth","setHours","setMinutes","setQuarter","oldQuarter","setSeconds","setYear","subMonths","subQuarters","subWeeks","subYears","hasWindow","getNodeName","isNode","getWindow","_node$ownerDocument","getDocumentElement","_ref","isElement","isHTMLElement","isShadowRoot","invalidOverflowDisplayValues","isOverflowElement","element","overflow","overflowX","overflowY","getComputedStyle","tableElements","isTableElement","topLayerSelectors","isTopLayer","selector","transformProperties","willChangeValues","containValues","isContainingBlock","elementOrCss","webkit","isWebKit","css","getContainingBlock","currentNode","getParentNode","isLastTraversableNode","lastTraversableNodeNames","getNodeScroll","getNearestOverflowAncestor","parentNode","getOverflowAncestors","traverseIframes","_node$ownerDocument2","scrollableAncestor","isBody","win","frameElement","getFrameElement","floor","createCoords","oppositeSideMap","oppositeAlignmentMap","clamp","evaluate","getSide","placement","getAlignment","getOppositeAxis","axis","getAxisLength","yAxisSides","getSideAxis","getAlignmentAxis","getAlignmentSides","rects","rtl","alignment","alignmentAxis","mainAlignmentSide","getOppositePlacement","getExpandedPlacements","oppositePlacement","getOppositeAlignmentPlacement","lrPlacement","rlPlacement","tbPlacement","btPlacement","getSideList","side","isStart","getOppositeAxisPlacements","flipAlignment","direction","expandPaddingObject","padding","getPaddingObject","rectToClientRect","rect","height","isClient","noop","useLayoutEffect","SafeReact","useInsertionEffect","useSafeInsertionEffect","useEffectEvent","callback","ref","_len","_key","computeCoordsFromPlacement","floating","sideAxis","alignLength","isVertical","commonX","commonY","commonAlign","coords","computePosition","strategy","middleware","platform","validMiddleware","statefulPlacement","middlewareData","resetCount","nextX","nextY","reset","detectOverflow","_await$platform$isEle","elements","boundary","rootBoundary","elementContext","altBoundary","paddingObject","clippingClientRect","offsetParent","offsetScale","elementClientRect","arrow","arrowDimensions","isYAxis","minProp","maxProp","clientProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","largestPossiblePadding","minPadding","maxPadding","min$1","center","shouldAddOffset","alignmentOffset","flip","_middlewareData$arrow","_middlewareData$flip","initialPlacement","checkMainAxis","checkCrossAxis","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","detectOverflowOptions","initialSideAxis","isBasePlacement","fallbackPlacements","hasFallbackAxisSideDirection","placements","overflows","overflowsData","sides","_middlewareData$flip2","_overflowsData$filter","nextIndex","nextPlacement","resetPlacement","_overflowsData$filter2","currentSideAxis","originSides","convertValueToCoords","mainAxisMulti","crossAxisMulti","rawValue","mainAxis","crossAxis","_middlewareData$offse","diffCoords","getCssDimensions","hasOffset","offsetWidth","offsetHeight","shouldFallback","unwrapElement","getScale","domElement","noOffsets","getVisualOffsets","shouldAddVisualOffsets","isFixed","floatingOffsetParent","getBoundingClientRect","includeScale","isFixedStrategy","clientRect","scale","visualOffsets","offsetWin","currentWin","currentIFrame","iframeScale","iframeRect","left","top","getWindowScrollBarX","leftScroll","getHTMLOffset","documentElement","scroll","ignoreScrollbarX","htmlRect","convertOffsetParentRelativeRectToViewportRelativeRect","topLayer","offsets","isOffsetParentAnElement","offsetRect","htmlOffset","getClientRects","getDocumentRect","html","getViewportRect","visualViewport","visualViewportBased","absoluteOrFixed","getInnerBoundingClientRect","getClientRectFromClippingAncestor","clippingAncestor","hasFixedPositionAncestor","stopNode","getClippingElementAncestors","cache","cachedResult","el","currentContainingBlockComputedStyle","elementIsFixed","computedStyle","currentNodeIsContaining","ancestor","getClippingRect","clippingAncestors","firstClippingAncestor","clippingRect","accRect","getDimensions","getRectRelativeToOffsetParent","setLeftRTLScrollbarOffset","isStaticPositioned","getTrueOffsetParent","polyfill","rawOffsetParent","getOffsetParent","svgOffsetParent","getElementRects","getOffsetParentFn","getDimensionsFn","floatingDimensions","isRTL","rectsAreEqual","observeMove","onMove","timeoutId","root","cleanup","_io","refresh","skip","threshold","elementRectForRootMargin","insetTop","insetRight","insetBottom","insetLeft","isFirstUpdate","handleObserve","ratio","autoUpdate","update","ancestorScroll","ancestorResize","elementResize","layoutShift","animationFrame","referenceEl","cleanupIo","reobserveFrame","resizeObserver","firstEntry","_resizeObserver","frameId","prevRefRect","frameLoop","nextRefRect","_resizeObserver2","offset$1","flip$1","arrow$1","mergedOptions","platformWithCache","computePosition$1","deepEqual","getDPR","roundByDPR","dpr","useLatestRef","useFloating","externalReference","externalFloating","transform","whileElementsMounted","open","setData","latestMiddleware","setLatestMiddleware","_reference","_setReference","_floating","_setFloating","setReference","referenceRef","setFloating","floatingRef","floatingEl","dataRef","hasWhileElementsMounted","whileElementsMountedRef","platformRef","openRef","fullData","isMountedRef","ReactDOM","refs","floatingStyles","initialStyles","isRef","arrow$2","deps","serverHandoffComplete","genId","useFloatingId","id","setId","useModernLayoutEffect","useReactId","useId","devMessageSet","warn","_devMessageSet","messages","_devMessageSet2","_devMessageSet3","_len2","_key2","_devMessageSet4","FloatingArrow","tipRadius","strokeWidth","staticOffset","stroke","restStyle","clipPathId","setIsRTL","isVerticalSide","computedStaticOffset","computedStrokeWidth","halfStrokeWidth","svgX","svgY","isCustomShape","yOffsetProp","xOffsetProp","arrowX","arrowY","dValue","rotation","jsxs","jsx","createEventEmitter","map","event","_map$get","listener","_map$get2","FloatingNodeContext","FloatingTreeContext","useFloatingParentNodeId","_React$useContext","useFloatingTree","useFloatingRootContext","onOpenChangeProp","elementsProp","floatingId","events","nested","optionDomReference","positionReference","setPositionReference","onOpenChange","nodeId","internalRootContext","rootContext","computedElements","_domReference","setDomReference","_setPositionReference","domReference","domReferenceRef","tree","useFloating$1","computedPositionReference","_extendStatics","__extends","__","_assign","__spreadArray","pack","ar","CalendarContainer","showTimeSelectOnly","showTime","className","ariaLabel","useDetectClickOutside","onClickOutside","ignoreClass","useRef","onClickOutsideRef","handleClickOutside","useCallback","target","eventTarget","useEffect","ClickOutsideWrapper","containerRef","style","detectRef","KeyType","getLocaleScope","scope","DEFAULT_YEAR_ITEM_NUMBER","newDate","dateFormat","strictParsing","refDate","localeObject","getLocaleObject","getDefaultLocale","formats","_i","formats_1","format_1","parsedDate","formatDate","minDate","isValid$1","localeObj","safeDateFormat","DATE_RANGE_SEPARATOR","safeDateRangeFormat","startDate","endDate","formattedStartDate","formattedEndDate","safeMultipleDatesFormat","formattedFirstDate","formattedSecondDate","extraDatesCount","setTime","hour","minute","second","getDayOfWeekCode","getStartOfDay","getStartOfWeek","calendarStartDay","getStartOfMonth","getStartOfYear","getStartOfQuarter","getStartOfToday","getEndOfDay","getEndOfWeek","getEndOfMonth","date1","date2","isSameYear$1","isSameMonth$1","isSameQuarter$1","isSameDay$1","isEqual$1","isDayInRange","localeSpec","getFormattedWeekdayInLocale","formatFunc","getWeekdayMinInLocale","getWeekdayShortInLocale","getMonthInLocale","getMonthShortInLocale","getQuarterShortInLocale","isDayDisabled","maxDate","excludeDates","excludeDateIntervals","includeDates","includeDateIntervals","filterDate","isOutOfBounds","excludeDate","includeDate","isDayExcluded","isMonthDisabled","isMonthInRange","startDateYear","startDateMonth","endDateYear","endDateMonth","dayYear","isMonthYearDisabled","excludedDate","includedDate","isQuarterDisabled","isYearInRange","startYear","endYear","isYearDisabled","isQuarterInRange","startDateQuarter","endDateQuarter","isTimeInList","times","listTime","isTimeDisabled","excludeTimes","includeTimes","filterTime","isTimeInDisabledRange","minTime","maxTime","baseTime","monthDisabledBefore","previousMonth","monthDisabledAfter","nextMonth","quarterDisabledBefore","firstDateOfYear","previousQuarter","quarterDisabledAfter","lastDateOfYear","nextQuarter","yearDisabledBefore","previousYear","yearsDisabledBefore","yearItemNumber","endPeriod","getYearsPeriod","minDateYear","yearDisabledAfter","nextYear","yearsDisabledAfter","startPeriod","maxDateYear","getEffectiveMinDate","minDates","getEffectiveMaxDate","maxDates","getHighLightDaysMap","highlightDates","defaultClassName","dateClasses","obj","classNamesArr","arrOfDates","len_1","dateK","arraysAreEqual","array1","array2","getHolidaysMap","holidayDates","holiday","dateObj","holidayName","classNamesObj","holidayNameArr","timesToInjectAfter","currentTime","currentMultiplier","intervals","injectedTimes","injectedTime","injectedTimeValue","nextTime","addZero","getHoursInDay","startOfTheNextDay","startOfMinute","isSameMinute","d1","d2","getMidnightDate","dateWithoutTime","isDateBefore","midnightDate","midnightDateToCompare","isSpaceKeyDown","InputTime","_super","_this","propDate","isPropDateValid","customTimeInput","cloneElement","Component","Day","createRef","eventKey","other","isSelectedDate","isDisabled","dayStr","holidays","selectsStart","selectsEnd","selectsRange","selectsDisabledDaysInRange","selectingDate","weekday","dayClassName","ariaLabelPrefixWhenEnabled","ariaLabelPrefixWhenDisabled","prefix","compareDt","titles","selectedDay","preSelectionDay","tabIndex","shouldFocusDay","WeekNumber","prevProps","shouldFocusWeekNumber","weekNumber","isWeekDisabled","ariaLabelPrefix","onClick","weekNumberClasses","Week","enabledWeekDay","processingDay","isEnabled","processingDate","days","onClickAction","FIXED_HEIGHT_STANDARD_WEEK_COUNT","MONTH_COLUMNS_LAYOUT","MONTH_COLUMNS","MONTH_NAVIGATION_HORIZONTAL_OFFSET","getMonthColumnsLayout","showFourColumnMonthYearPicker","showTwoColumnMonthYearPicker","Month","_month","selected","selectedDates","selectedDate","selectsMultiple","monthIdx","weeks","isFixedHeight","breakAfterNextPush","currentWeekStart","isPreSelected","preSelection","isSelected","isFixedAndFinalWeek","isNonFixedAndOutOfMonth","labelDate","newMonth","setPreSelection","monthColumnsLayout","verticalOffset","monthsGrid","calculateNewDateAndMonth","newCalculatedDate","newCalculatedMonth","getNewDateAndMonth","MAX_ITERATIONS","eventKeyCopy","validDateFound","iterations","disabledKeyboardNavigation","handleOnMonthKeyDown","newQuarter","monthClassName","_monthClassName","selection","preSelectedMonth","isPreSelectedMonthDisabled","preSelectedQuarter","isCurrentQuarterDisabled","chooseDayAriaLabelPrefix","disabledDayAriaLabelPrefix","showFullMonthYearPicker","renderMonthContent","shortMonthText","fullMonthText","renderQuarterContent","shortQuarter","monthColumns","quarters","showMonthYearPicker","showQuarterYearPicker","showWeekPicker","formattedAriaLabelPrefix","MonthDropdownOptions","MonthDropdown","monthNames","visible","dropdownVisible","renderedDropdown","generateMonthYears","currDate","lastDate","MonthYearDropdownOptions","monthYear","monthYearPoint","isSameMonthYear","dropdownClass","MonthYearDropdown","timePoint","yearMonth","changedDate","Time","classes","activeDate","sortedInjectTimes","minutesInDay","multiplier","timesToInject","timeToFocus","prev","li","header","monthRef","listHeight","centerLiRef","VERTICAL_NAVIGATION_OFFSET","Year","refIndex","waitForReRender","newYear","handleOnKeyDown","leftOverOffset","yearClassName","preSelected","isPreSelectedYearDisabled","yearsList","onYearMouseEnter","onYearMouseLeave","_loop_1","this_1","generateYears","noOfYear","isInRange","YearDropdownOptions","selectedYear","minYear","maxYear","years","yearDropdownItemNumber","scrollableYearDropdown","dropdownCurrent","dropdownCurrentChildren","selectedYearOptionEl","childEl","YearDropdown","DROPDOWN_FOCUS_CLASSNAMES","isDropdownSelect","classNames","testClassname","Calendar","openToDate","initialDate","monthSelectedIn","totalDays","preSelectedDate","dayIdx","enabledPreSelectionDate","dayNames","weekDayName","weekDayClassName","monthsShown","monthsToSubtract","fromMonthDate","allPrevDaysDisabled","iconClasses","clickHandler","isForYear","previousMonthButtonLabel","previousYearButtonLabel","previousMonthAriaLabel","_j","previousYearAriaLabel","allNextDaysDisabled","nextMonthButtonLabel","nextYearButtonLabel","nextMonthAriaLabel","nextYearAriaLabel","overrideHide","monthDate","headerArgs","prevMonthButtonDisabled","nextMonthButtonDisabled","prevYearButtonDisabled","nextYearButtonDisabled","showDayNames","showYearPicker","monthList","monthsToAdd","monthKey","monthShowsDuplicateDaysEnd","monthShowsDuplicateDaysStart","div","timeValid","ariaLiveMessage","hasMonthChanged_1","Container","CalendarIcon","icon","defaultClass","iconElement_1","Portal","focusableElementsSelector","focusableFilter","TabLoop","tabChildren","withFloating","WithFloating","hidePopper","arrowRef","floatingProps","componentProps","PopperComponent","wrapperClassName","popperComponent","targetComponent","enableTabLoop","popperOnKeyDown","portalId","portalHost","popperProps","showArrow","popper","createElement","wrapperClasses","PopperComponent$1","outsideClickIgnoreClass","hasPreSelectionChanged","INPUT_ERR_1","DatePicker","accumulator","defaultPreSelection","boundedPreSelection","skipSetBlur","PRESELECT_CHANGE_VIA_NAVIGATE","isAutoReFocus","isOpenAllowed","allArgs","PRESELECT_CHANGE_VIA_INPUT","valueStart","valueEnd","startDateNew","endDateNew","startChanged","endChanged","keepInput","onChange","swapRange","noRanges","hasStartRange","isRangeFilled","isChangedDateAlreadySelected","nextDates","hasMinDate","hasMaxDate","isValidDateSelection","dateStartOfDay","minDateStartOfDay","maxDateEndOfDay","selectorString","selectedItem","copy","shouldCloseOnSelect","adjustDateOnChange","inline","isShiftKeyActive","calculateNewDate","getNewDate","newSelection","prevMonth","prevYear","elem","isContainsTime","longDateFormat","customInput","customInputRef","inputValue","isClearable","disabled","clearButtonTitle","clearButtonClassName","ariaLabelClose","readOnly","prevState","showIcon","calendarIconClassname","calendarIconClassName","toggleCalendarOnIconClick","calendar","portalContainer","DatePickerComponent","onDateChange","setStartDate","useState","handleChange","TimePickerComponent","onTimeChange","startTimeLogic","now","nextSlot","newTime","timeInputRef","setStartTime","setMinTime","setMaxTime","defaultTime","cssUnit","parseLengthAndUnit","valueString","cssValue","lengthWithunit","createAnimation","loaderName","frames","animationName","styleEl","styleSheet","keyFrames","__assign","__rest","clip","ClipLoader","loading","color","speedMultiplier","cssOverride","additionalprops","abool","title","numberToHexUnpadded","num","bytesToNumberBE","bytesToHex_","bytesToNumberLE","abytes_","numberToBytesBE","hexToBytes_","numberToBytesLE","ensureBytes","isBytes_","isPosBig","inRange","aInRange","bitLen","bitMask","createHmacDrbg","hashLen","qByteLen","hmacFn","u8n","u8of","reseed","seed","sl","concatBytes_","pred","_validateObject","fields","optFields","checkField","fieldName","expectedType","isOpt","memoized","computed","getVersion","docs","Hex.SizeExceedsPaddingSizeError","fromNumber","padLeft","internal.pad","Errors.BaseError","_3n","_4n","_5n","_8n","mod","pow2","power","modulo","invert","sqrt3mod4","Fp","p1div4","sqrt5mod8","p5div8","nv","tonelliShanks","_Fp","Field","FpLegendre","cc","Q1div2","t_tmp","exponent","FpSqrt","FIELD_FIELDS","validateField","field","initial","FpPow","FpInvertBatch","nums","passZero","inverted","multipliedAcc","invertedAcc","p1mod2","powered","yes","zero","nLength","nBitLength","_nBitLength","nByteLength","ORDER","bitLenOrOpts","_nbitLength","_sqrt","_opts","BITS","BYTES","sqrtP","lhs","rhs","getFieldBytesLength","fieldOrder","bitLength","getMinHashLength","mapHashToField","fieldLen","minLen","reduced","HMAC","buf","oHash","iHash","hmac","negateCt","condition","item","neg","normalizeZ","points","getz","toInv","validateW","bits","calcWOpts","scalarBits","windows","windowSize","maxNumber","mask","shiftBy","calcOffsets","window","wOpts","wbits","nextN","offsetStart","isZero","isNeg","isNegF","validateMSMPoints","validateMSMScalars","scalars","pointPrecomputes","pointWindowSizes","getW","assert0","wNAF","elm","precomputes","wo","offsetF","comp","mulEndoUnsafe","point","k1","k2","p1","p2","pippenger","fieldN","plength","slength","MASK","buckets","lastBits","scalar","resI","sumI","createField","order","_createCurveFields","CURVE","curveOpts","Fn","validateSigVerOpts","DERErr","DER","tag","dataLen","lenLen","first","isLong","lengthBytes","int","tlv","seqBytes","seqLeftBytes","rBytes","rLeftBytes","sBytes","sLeftBytes","rs","ss","seq","_legacyHelperEquat","weierstrassEquation","x2","x3","_legacyHelperNormPriv","allowedPrivateKeyLengths","wrapPrivateKey","expected","normPrivateKeyToScalar","padded","weierstrassN","cofactor","CURVE_ORDER","endo","assertCompressionIsSupported","pointToBytes","isCompressed","bx","hasEvenY","pprefix","pointFromBytes","LC","LU","head","y2","sqrtError","isYOdd","isValidXY","fromBytes","right","_4a3","_27b2","acoord","banZero","aprjpoint","Point","toAffineMemo","iz","is0","ax","ay","zz","assertValidMemo","finishEndo","endoBeta","k1p","k2p","k1neg","k2neg","px","py","pz","privateKey","isLazy","wnaf","X1","Y1","Z1","X2","Y2","Z2","U1","U2","b3","X3","Y3","Z3","t0","t1","t2","t3","t4","t5","fake","mul","k1f","k2f","sc","invertedZ","isTorsionFree","clearCofactor","ecdsa","ecdsaOpts","randomBytes_","hmac_","msgs","fnBits","isBiggerThanHalfOrder","HALF","normalizeS","aValidRS","Signature","recovery","msgHash","FIELD_ORDER","rec","radj","ir","bits2int_modN","u1","u2","utils","getPublicKey","isProbPub","getSharedSecret","privateA","publicB","bits2int","ORDER_MASK","int2octets","prepSig","defaultSigOpts","lowS","prehash","ent","h1int","seedArgs","k2sig","kBytes","ik","normS","defaultVerOpts","privKey","verify","publicKey","sg","isObj","_sig","derError","is","_weierstrass_legacy_opts_to_new","_ecdsa_legacy_opts_to_new","_ecdsa_new_output_to_legacy","weierstrass","signs","createCurve","curveDef","defHash","create","secp256k1_CURVE","divNearest","sqrtMod","_6n","_11n","_22n","_23n","_44n","_88n","b2","b6","b9","b11","b22","b44","b88","b176","b220","b223","Fpk1","secp256k1","a1","b1","a2","POW_2_128","c1","c2","decodeFunctionResult","prepareEncodeFunctionData","encodeFunctionData","EXECUTION_REVERTED_ERROR_CODE","getContractError","getAction","actionFn","action_implicit","action_explicit","toRpc","withdrawal","Hex.fromNumber","blockOverrides","Withdrawal.toRpc","multicall3Abi","batchGatewayAbi","aggregate3Signature","deploylessCallViaBytecodeBytecode","deploylessCallViaFactoryBytecode","encodeDeployData","bytecode","description","withResolvers","resolve","reject","resolve_","reject_","schedulerCache","createBatchScheduler","shouldSplitBatch","wait","sort","exec","scheduler","getScheduler","flush","getBatchedArgs","setScheduler","promise","serializeStateMapping","serializeAccountStateOverride","balance","stateDiff","rpcAccountStateOverride","serializeStateOverride","rpcStateOverride","accountState","call","batch","data_","factoryData","deploylessCallViaBytecode","deploylessCallViaFactory","deploylessCall","toDeploylessCallViaBytecodeData","toDeploylessCallViaFactoryData","rpcBlockOverrides","BlockOverrides.toRpc","shouldPerformMulticall","scheduleMulticall","getRevertErrorData","offchainLookup","offchainLookupSignature","request_","batchSize","multicallAddress_","multicallAddress","schedule","requests","calls","calldata","returnData","success","readContract","presignMessagePrefix","toPrefixedMessage","message_","hashMessage","InvalidDomainError","domain","InvalidPrimaryTypeError","primaryType","InvalidStructTypeError","serializeTypedData","domain_","normalizeData","validateTypedData","validateData","integerMatch","_type","bytesMatch","validateReference","getTypesForEIP712Domain","hashTypedData","hashDomain","hashStruct","encodeData","encodedTypes","encodedValues","hashType","encodeField","encodedHashType","encodeType","unsortedDeps","findTypeDependencies","primaryType_","results","parsedType","typeValuePairs","entryPoint06Abi","entryPoint07Abi","getInitCode","userOperation","delegation","isAddressEqual","hashAuthorization","publicKeyToAddress","recoverPublicKey","hashHex","secp256k1$1","yParityOrV","recoveryBit","toRecoveryBit","signatureHex","recoverAddress","recoverAuthorizationAddress","EstimateGasExecutionError","getEstimateGasError","getTransactionError","erc6492MagicBytes","serializeErc6492Signature","getTransactionCount","createNonceManager","deltaMap","nonceMap","promiseMap","getKey","previousNonce","toPackedUserOperation","callGasLimit","callData","paymaster","paymasterData","paymasterPostOpGasLimit","paymasterVerificationGasLimit","verificationGasLimit","accountGasLimits","initCode","gasFees","paymasterAndData","preVerificationGas","getUserOperationTypedData","entryPointAddress","packedUserOp","getUserOperationHash","entryPointVersion","getCode","blockNumberHex","toSmartAccount","implementation","extend","nonceKeyManager","deployed","signMessage","signTypedData","typedData","toAccount","serializeSignature","yParity_","extraEntropy","signAuthorization","signTransaction","serializer","signableTransaction","privateKeyToAccount","nonceManager","AccountNotDeployedError","FailedToSendToBeneficiaryError","GasValuesOverflowError","HandleOpsOutOfGasError","InitCodeFailedError","InitCodeMustCreateSenderError","InitCodeMustReturnSenderError","InsufficientPrefundError","InternalCallOnlyError","InvalidAggregatorError","InvalidAccountNonceError","InvalidBeneficiaryError","InvalidFieldsError","InvalidPaymasterAndDataError","PaymasterDepositTooLowError","PaymasterFunctionRevertedError","PaymasterNotDeployedError","PaymasterRateLimitError","PaymasterStakeTooLowError","PaymasterPostOpFunctionRevertedError","SenderAlreadyConstructedError","SignatureCheckFailedError","SmartAccountFunctionRevertedError","UnsupportedSignatureAggregatorError","UserOperationExpiredError","UserOperationPaymasterExpiredError","UserOperationSignatureError","UserOperationPaymasterSignatureError","UserOperationRejectedByEntryPointError","UserOperationRejectedByPaymasterError","UserOperationRejectedByOpCodeError","UserOperationOutOfTimeRangeError","UnknownBundlerError","VerificationGasLimitExceededError","VerificationGasLimitTooLowError","UserOperationExecutionError","UserOperationReceiptNotFoundError","UserOperationNotFoundError","WaitForUserOperationReceiptTimeoutError","bundlerErrors","getBundlerError","getUserOperationError","revertData","getRevertData","contractCalls","compatContractCalls","formatUserOperationGas","formatUserOperationRequest","formatAuthorization","getChainId","chainIdHex","BaseFeeScalarError","Eip1559FeesNotSupportedError","MaxFeePerGasTooLowError","BlockNotFoundError","blockHash","identifier","getBlock","blockTag_","includeTransactions_","includeTransactions","getGasPrice","internal_estimateMaxPriorityFeePerGas","block_","maxPriorityFeePerGas_","maxPriorityFeePerGasHex","internal_estimateFeesPerGas","baseFeeMultiplier","denominator","fees","getBalance","estimateGas_rpc","prepareTransactionRequest","estimate","estimates","curr","defaultParameters","eip1559NetworkCache","getBlock_","getChainId_","versionedHashes","isEip1559Network","gasPrice_","sendRawTransaction","supportsWalletNamespace","sendTransaction","isWalletNamespaceSupported","method","walletNamespaceError","listenersCache","cleanupCache","callbackCount","observe","observerId","callbacks","callbackId","getListeners","unsubscribe","listeners","cb","unwatch","emit","poll","emitOnBegin","initialWaitTime","initialWait","prepareAuthorization","executor","simulateContract","dataSuffix","callRequest","minimizedAbi","getPaymasterData","getPaymasterStubData","prepareUserOperation","parameters_","bundlerClient","paymasterAddress","getPaymasterStubData_","getPaymasterData_","paymasterContext","call_","client_","isPaymasterPopulated","isFinal","sponsor","paymasterArgs","estimateUserOperationGas","getSupportedEntryPoints","formatUserOperation","getUserOperation","entryPoint","transactionHash","formatUserOperationReceipt","getUserOperationReceipt","sendUserOperation","rpcParameters","waitForUserOperationReceipt","pollingInterval","retryCount","timeout","unobserve","done","unpoll","bundlerActions","paymasterActions","uid","createClient","ccipRead","blockTime","defaultPollingInterval","cacheTime","transport","extendFn","extended","combined","createPaymasterClient","entryPoint07Address","getAccountNonce","InvalidEntryPointError","getSenderAddress","revertError","InvalidInputRpcError","UnknownRpcError","hexStringRegex","DUMMY_ECDSA_SIG","MAGIC_VALUE_SIG_REPLAYABLE","FACTORY_ADDRESS_V0_6","FACTORY_ADDRESS_V0_6_INIT_CODE_HASH","KernelVersionToAddressesMap","zeroAddress","KERNEL_V3_1","KERNEL_NAME","VALIDATOR_TYPE","VALIDATOR_MODE","CALL_TYPE","EXEC_TYPE","safeCreateCallAddress","getEntryPoint","KernelModuleIsInitializedAbi","KernelModuleInstallAbi","KernelModuleIsModuleInstalledAbi","isPluginInstalled","plugin","pluginAddress","SEMVER_SPEC_VERSION","MAX_LENGTH","MAX_SAFE_INTEGER","MAX_SAFE_COMPONENT_LENGTH","MAX_SAFE_BUILD_LENGTH","constants","debug_1","debug","exports","module","re","safeRe","src","safeSrc","LETTERDASHNUMBER","safeRegexReplacements","makeSafeRegex","createToken","isGlobal","safe","looseOption","emptyOpts","parseOptions_1","numeric","compareIdentifiers","anum","bnum","identifiers","require$$2","parseOptions","require$$3","require$$4","SemVer","release","identifierBase","prerelease","semver","parse_1","throwErrors","er","valid_1","clean_1","inc_1","diff_1","version1","version2","v1","v2","comparison","v1Higher","highVersion","lowVersion","highHasPre","major_1","loose","minor_1","patch_1","prerelease_1","parsed","compare_1","compare","rcompare_1","compareLoose_1","compareBuild_1","versionA","versionB","compareBuild","sort_1","rsort_1","gt_1","lt_1","eq_1","neq_1","gte_1","lte_1","eq","neq","gte","lte","require$$5","cmp_1","op","coerce_1","coerceRtlRegex","next","major","minor","patch","build","LRUCache","lrucache","SPACE_CHARACTERS","Range","range","Comparator","isNullSet","isAny","comps","memoKey","FLAG_INCLUDE_PRERELEASE","FLAG_LOOSE","cached","hr","hyphenReplace","comparatorTrimReplace","tildeTrimReplace","caretTrimReplace","rangeList","parseComparator","replaceGTE0","rangeMap","comparators","thisComparators","isSatisfiable","rangeComparators","thisComparator","rangeComparator","testSet","LRU","require$$6","remainingComparators","testComparator","otherComparator","replaceCarets","replaceTildes","replaceXRanges","replaceStars","isX","replaceTilde","pr","ret","replaceCaret","replaceXRange","gtlt","xM","xm","xp","anyX","incPr","$0","fM","fm","fp","fpr","fb","tM","tm","tp","tpr","set","allowed","ANY","cmp","comparator","satisfies_1","toComparators_1","maxSatisfying_1","versions","maxSV","rangeObj","minSatisfying_1","minSV","minVersion_1","minver","setMin","compver","satisfies","require$$7","outside_1","hilo","gtfn","ltefn","ltfn","ecomp","high","low","outside","gtr_1","ltr_1","intersects_1","r1","r2","simplify","ranges","simplified","original","subset","sub","dom","sawNonNull","OUTER","simpleSub","simpleDom","isSub","simpleSubset","minimumVersionWithPreRelease","minimumVersion","eqSet","higherGT","lowerLT","gtltComp","higher","lower","hasDomLT","hasDomGT","needDomLTPre","needDomGTPre","subset_1","internalRe","inc","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","rcompare","require$$14","compareLoose","require$$15","require$$16","require$$17","rsort","require$$18","require$$19","require$$20","require$$21","require$$22","require$$23","require$$24","require$$25","coerce","require$$26","require$$27","require$$28","require$$29","toComparators","require$$30","maxSatisfying","require$$31","minSatisfying","require$$32","minVersion","require$$33","validRange","require$$34","require$$35","gtr","require$$36","ltr","require$$37","intersects","require$$38","simplifyRange","require$$39","require$$40","KERNEL_FEATURES","KERNEL_FEATURES_BY_VERSION","hasKernelFeature","feature","fixSignedData","hexToSignature","signatureToHex","getExecMode","callType","execType","validateKernelVersionWithEntryPoint","kernelVersion","satisfiesRange","toSigner","signer","walletClient","createWalletClient","custom","KernelExecuteAbi","KernelInitAbi","KernelAccountAbi","encodeExecuteBatchCall","encodeExecuteDelegateCall","encodeExecuteSingleCall","encodeCallData","encodeModuleInstallCallData","accountAddress","enableData","validAfter","validUntil","validator","ValidatorMode","KernelV3ExecuteAbi","KernelV3AccountAbi","getKernelV3Nonce","EIP1271Abi","accountMetadata","decoded","publicActions","getActionSelector","getEncodedPluginsData","enableSignature","action","enableDataLength","getPluginsEnableTypedData","userOpSignature","hook","parseAbiParameters","validatorNonce","isPluginInitialized","isKernelPluginManager","toKernelPluginManager","sudo","regular","pluginEnableSignature","validatorInitData","pluginEnabled","activeValidator","getSignatureData","isPluginEnabled","getPluginEnableSignature","getEncodedPluginsDataV1","getEncodedPluginsDataV2","ownerSig","typeData","getPluginsEnableTypedDataV1","getPluginsEnableTypedDataV2","getIdentifier","isSudo","encodeModuleInstallCallDataEpV06","userOpSig","customNonceKey","maxUint192","maxUint16","validatorMode","validatorType","encoding","KernelV3FactoryAbi","KernelFactoryStakerAbi","KernelV3_1AccountAbi","SafeCreateCallAbi","encodeSafeCreateCall","encodeDeployCallData","tx","deployCalldataArgs","encodeExecuteCall","includeHooks","executeUserOpSig","hashKernelMessageHashWrapper","messageHash","eip712WrapHash","useReplayableSignature","verifyingContract","_chainId","_domainSeparator","domainSeparator","finalMessageHash","getPluginInstallCallData","createAccountAbi","getKernelInitData","_entryPointVersion","kernelPluginManager","initHook","initConfig","validatorAddress","initConfig_","getAccountInitCode","factoryAddress","accountImplementationAddress","useMetaFactory","initialisationData","getDefaultAddresses","metaFactoryAddress","addresses","createKernelAccount","plugins","_factoryAddress","_accountImplementationAddress","_metaFactoryAddress","_useMetaFactory","eip7702Auth","eip7702SponsorAccount","pluginMigrations","cachedAccountMetadata","getMemoizedChainId","getMemoizedAccountMetadata","generateInitCode","getFactoryArgs","_entryPoint","sponsorAccount","sponsorWalletClient","http","pluginCache","checkPluginInstallationStatus","installationResults","_tx","encodeDeployCallDataV06","encodeDeployCallDataV07","pluginInstallCalls","encodeCallDataEpV07","encodeCallDataEpV06","metadataChainId","wrappedMessageHash","_types","typedHash","_args","addressToEmptyAccount","_transaction","_typedData","kernelVersionRangeToValidator","getValidatorAddress","ecdsaValidatorAddress","signerToEcdsaValidator","_validatorAddress","viemSigner","_accountAddress","_kernelAccountAddress","_selector","deepHexlify","member","getRequiredPrefund","userOperationVersion0_6","requiredGas","userOperationV07","userOpHash","userOperationReceipt","types_","writeContract","smartAccountActions","createSmartAccountClient","bundlerTransport","customPrepareUserOp","getTokenQuotes","quote","getUserOperationGasPrice","getUserOperationStatus","sendCompressedUserOperation","compressedUserOperation","inflatorAddress","sponsorUserOperation","sponsorshipPolicyId","finalPaymasterContext","responseV06","responseV07","validateSponsorshipPolicies","estimateErc20PaymasterCost","quotes","postOpGas","exchangeRate","exchangeRateNativeToUsd","maxCostInWei","costInToken","costInUsd","pimlicoActions","createPimlicoClient","CALL_POLICY_CONTRACT_V0_0_1","CALL_POLICY_CONTRACT_V0_0_2","CALL_POLICY_CONTRACT_V0_0_3","CALL_POLICY_CONTRACT_V0_0_4","PolicyFlags","CallType","ParamCondition","getPermissionFromABI","policyAddress","functionSelector","paramRules","rule","encodePermissionData","permission","CallPolicyVersion","getCallPolicyAddress","policyVersion","toCallPolicy","policyFlag","permissions","callPolicyAddress","generatedPermissionParams","perm","encodedPermissionData","__defProp","__defProps","__getOwnPropDescs","__getOwnPropSymbols","__hasOwnProp","__propIsEnum","__defNormalProp","__spreadValues","prop","__spreadProps","__async","__this","__arguments","generator","fulfilled","step","rejected","supportedChains","getChainById","ConnectorType","ConnectorType2","nativeETH","arbitrum2","getAddress","arbitrumUSDC","arbitrumUSDT","arbitrumTokens","base2","baseUSDC","baseUSDT","baseTokens","nativeToken","bsc2","bscUSDT","bscTokens","mainnet2","ethereumUSDC","ethereumUSDT","ethereumTokens","optimism2","optimismUSDC","optimismUSDT","optimismTokens","polygon2","polygonUSDC","polygonUSDT","polygonTokens","supportedTokensByChain","symbol","logoURI","fiatISO","getTokenByChainIdAndSymbol","token2","getRpcByChainId","getPimlicoRpcByChainId","ViemClient","createPublicClient","spender","allowMaxTokenApproval","signerAddress","allowance","txn","ECDSA_SIGNER_CONTRACT","toSignerId","toECDSASigner","_0","signerContractAddress","_02","constants.DUMMY_ECDSA_SIG","toPolicyId","policies","policy","toPermissionValidator","_1","flag","getEnableData","getPermissionId","pIdData","zeroAddress2","_userOperation","kernelAccountAddress","bytesToBase64","binString","isPermissionValidatorPlugin","serializePermissionAccountParams","jsonString","uint8Array","serializePermissionAccount","permissionParams","validityData","_enableSignature","_eip7702Auth","accountParams","getPeriodInterval","periodUnit","ActaAccount","publicClient","ecdsaValidator","createKernelAccount2","paymasterClient","http2","pimlicoClient","accountClient","tokenSymbol","receiver","fromAddress","getAddress2","parseAbi2","userOperationMaxGas","estimatedGasCostInToken","ActalinkFeesInToken","estimatedTotalFeesInToken","feeInclusiveAmountInToken","feeExclusiveAmountInToken","singlePaymentParams","feeInclusive","viemClient","smartAccountAddress","amountToTransfer","receiverAmount","recurringPaymentParams","intervalUnit","paymentCount","emptyAccount","emptySessionKeySigner","callPolicy","toCallPolicy2","permissionPlugin","serializedSessionKeyAccount","sendRequest","jsonResponse","createSessionAPICall","sessionBodyParams","verifySessionAPICall","sessionId","scheduleRecurringPaymentsAPICall","parsedParams","executeSinglePaymentAPICall","paymentParams","serviceParams","transactionServiceUrl","depositServiceUrl","ActaDeposit","serviceSessionparams","zeroAddress4","session2","session","toHex2","servicePaymentParams","serviceType","approval","smartAccount","paymentAmount","Subscribable","isServer","functionalUpdate","updater","isValidTimeout","timeUntilStale","updatedAt","staleTime","resolveStaleTime","query","resolveEnabled","enabled","matchQuery","filters","exact","fetchStatus","queryKey","stale","hashQueryKeyByOptions","partialMatchKey","isActive","matchMutation","mutation","mutationKey","hashKey","isPlainObject","replaceEqualDeep","isPlainArray","aItems","aSize","bItems","bSize","aItemsSet","equalItems","hasObjectPrototype","ctor","prot","sleep","replaceData","prevData","addToEnd","items","newItems","addToStart","skipToken","ensureQueryFn","fetchOptions","FocusManager","__privateAdd","_focused","_cleanup","_setup","__privateSet","onFocus","__privateGet","setup","focused","isFocused","focusManager","OnlineManager","_online","onOnline","onlineListener","offlineListener","online","onlineManager","pendingThenable","thenable","_resolve","_reject","finalize","defaultRetryDelay","failureCount","canFetch","networkMode","CancelledError","isCancelledError","createRetryer","isRetryCancelled","isResolved","continueFn","cancel","cancelOptions","cancelRetry","continueRetry","canContinue","canStart","pause","continueResolve","run","promiseOrValue","initialPromise","retry","retryDelay","delay","shouldRetry","defaultScheduler","createNotifyManager","queue","notifyFn","batchNotifyFn","scheduleFn","originalQueue","notifyManager","Removable","_gcTimeout","newGcTime","Query","_Query_instances","_initialState","_revertState","_cache","_client","_retryer","_defaultOptions","_abortSignalConsumed","getDefaultState","newData","__privateMethod","dispatch_fn","setStateOptions","observer","abortController","addSignalProperty","fetchFn","queryFn","queryFnContext","queryFnContext2","context2","onError","reducer","fetchState","hasData","initialDataUpdatedAt","QueryCache","_queries","queryHash","queryInMap","defaultedFilters","queries","Mutation","_Mutation_instances","_observers","_mutationCache","variables","onContinue","restored","isPaused","_l","_k","_n","_m","_p","_r","_q","_s","MutationCache","_mutations","_scopes","_mutationId","__privateWrapper","scopeFor","scopedMutations","mutationsWithSameScope","firstPendingMutation","foundMutation","pausedMutations","infiniteQueryBehavior","pages","oldPages","oldPageParams","currentPage","cancelled","fetchPage","previous","page","maxPages","addTo","pageParamFn","getPreviousPageParam","getNextPageParam","oldData","remainingPages","pageParams","lastIndex","QueryClient","_queryCache","_queryDefaults","_mutationDefaults","_mountCount","_unsubscribeFocus","_unsubscribeOnline","defaultedOptions","cachedData","queryCache","defaultedCancelOptions","promises","defaults","queryDefault","QueryClientContext","QueryClientProvider","WidgetInner","receiverAddress","reveiverAmount","reveiverNetwork","projectId","onClose","ready","reccurring","demo","useWalletClient","usePublicClient","switchChainAsync","useSwitchChain","setBalance","isFormReady","setIsFormReady","isConnected","useAccount","disconnect","useDisconnect","setAmount","scheduleOn","setScheduleOn","setTimes","frequency","setFrequency","setSelectedDate","selectedTime","setSelectedTime","combinedDate","setCombinedDate","isLoading","setIsLoading","txnId","setTxnId","getChainName","newAmount","tokenInfo","balanceRaw","fiveMinutesLater","updateCombinedDateTime","combinedDateTime","handleAmountChange","normalized","frequencyOptions","timesOptions","handleDateChange","handleTimeChange","formReady","useMemo","handlePay","minAmount","toast","targetChainId","depositAccount","parseUnits","DoneScreen","Fragment","freq","ToastContainer","ConnectButton","Widget","network","wagmiConfig","rainbowKitAppName","queryClient","isStandalone","content","WagmiProvider","RainbowKitProvider","lightTheme","onDone"],"mappings":"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,iBACN,KAAM,OACtB,CACA,EACQ,KAAM,kCACN,KAAM,OACd,EACI,CACI,UAAW,GACX,OAAQ,CACJ,CACI,QAAS,GACT,KAAM,aACN,KAAM,SACtB,EACY,CACI,QAAS,GACT,KAAM,SACN,KAAM,SACtB,EACY,CACI,QAAS,GACT,KAAM,UACN,KAAM,SACtB,EACY,CACI,QAAS,GACT,KAAM,YACN,KAAM,SACtB,CACA,EACQ,KAAM,kBACN,KAAM,OACd,EACI,CAAE,UAAW,GAAO,OAAQ,CAAA,EAAI,KAAM,kBAAmB,KAAM,OAAO,EACtE,CACI,UAAW,GACX,OAAQ,CACJ,CACI,QAAS,GACT,KAAM,UACN,KAAM,SACtB,EACY,CACI,QAAS,GACT,KAAM,eACN,KAAM,SACtB,CACA,EACQ,KAAM,YACN,KAAM,OACd,EACI,CACI,UAAW,GACX,OAAQ,CACJ,CACI,QAAS,GACT,KAAM,aACN,KAAM,SACtB,CACA,EACQ,KAAM,6BACN,KAAM,OACd,EACI,CACI,UAAW,GACX,OAAQ,CACJ,CACI,QAAS,GACT,KAAM,UACN,KAAM,SACtB,EACY,CACI,QAAS,GACT,KAAM,cACN,KAAM,SACtB,EACY,CACI,QAAS,GACT,KAAM,kBACN,KAAM,SACtB,CACA,EACQ,KAAM,cACN,KAAM,OACd,EACI,CACI,UAAW,GACX,OAAQ,CACJ,CACI,QAAS,GACT,KAAM,UACN,KAAM,SACtB,EACY,CACI,QAAS,GACT,KAAM,eACN,KAAM,SACtB,CACA,EACQ,KAAM,gBACN,KAAM,OACd,EACI,CACI,UAAW,GACX,OAAQ,CACJ,CACI,QAAS,GACT,KAAM,UACN,KAAM,SACtB,EACY,CACI,QAAS,GACT,KAAM,kBACN,KAAM,SACtB,EACY,CACI,QAAS,GACT,KAAM,SACN,KAAM,SACtB,CACA,EACQ,KAAM,iBACN,KAAM,OACd,EACI,CACI,UAAW,GACX,OAAQ,CACJ,CACI,QAAS,GACT,KAAM,aACN,KAAM,SACtB,EACY,CACI,QAAS,GACT,KAAM,SACN,KAAM,SACtB,EACY,CACI,QAAS,GACT,KAAM,YACN,KAAM,SACtB,EACY,CACI,QAAS,GACT,KAAM,QACN,KAAM,SACtB,EACY,CAAE,QAAS,GAAO,KAAM,UAAW,KAAM,MAAM,EAC/C,CACI,QAAS,GACT,KAAM,gBACN,KAAM,SACtB,EACY,CACI,QAAS,GACT,KAAM,gBACN,KAAM,SACtB,CACA,EACQ,KAAM,qBACN,KAAM,OACd,EACI,CACI,UAAW,GACX,OAAQ,CACJ,CACI,QAAS,GACT,KAAM,aACN,KAAM,SACtB,EACY,CACI,QAAS,GACT,KAAM,SACN,KAAM,SACtB,EACY,CACI,QAAS,GACT,KAAM,QACN,KAAM,SACtB,EACY,CACI,QAAS,GACT,KAAM,eACN,KAAM,OACtB,CACA,EACQ,KAAM,4BACN,KAAM,OACd,EACI,CACI,UAAW,GACX,OAAQ,CACJ,CACI,QAAS,GACT,KAAM,UACN,KAAM,SACtB,EACY,CACI,QAAS,GACT,KAAM,kBACN,KAAM,SACtB,EACY,CACI,QAAS,GACT,KAAM,SACN,KAAM,SACtB,CACA,EACQ,KAAM,YACN,KAAM,OACd,EACI,CACI,OAAQ,CAAA,EACR,KAAM,wBACN,QAAS,CAAC,CAAE,KAAM,GAAI,KAAM,SAAS,CAAE,EACvC,gBAAiB,OACjB,KAAM,UACd,EACI,CACI,OAAQ,CACJ,CAAE,KAAM,WAAY,KAAM,OAAO,EACjC,CAAE,KAAM,SAAU,KAAM,SAAS,EACjC,CAAE,KAAM,mBAAoB,KAAM,OAAO,CACrD,EACQ,KAAM,8BACN,QAAS,CAAA,EACT,gBAAiB,OACjB,KAAM,UACd,EACI,CACI,OAAQ,CAAC,CAAE,KAAM,kBAAmB,KAAM,QAAQ,CAAE,EACpD,KAAM,WACN,QAAS,CAAA,EACT,gBAAiB,UACjB,KAAM,UACd,EACI,CACI,OAAQ,CAAC,CAAE,KAAM,UAAW,KAAM,SAAS,CAAE,EAC7C,KAAM,YACN,QAAS,CAAC,CAAE,KAAM,GAAI,KAAM,SAAS,CAAE,EACvC,gBAAiB,OACjB,KAAM,UACd,EACI,CACI,OAAQ,CAAC,CAAE,KAAM,UAAW,KAAM,SAAS,CAAE,EAC7C,KAAM,YACN,QAAS,CAAA,EACT,gBAAiB,UACjB,KAAM,UACd,EACI,CACI,OAAQ,CAAC,CAAE,KAAM,GAAI,KAAM,SAAS,CAAE,EACtC,KAAM,WACN,QAAS,CACL,CAAE,KAAM,UAAW,KAAM,SAAS,EAClC,CAAE,KAAM,SAAU,KAAM,MAAM,EAC9B,CAAE,KAAM,QAAS,KAAM,SAAS,EAChC,CAAE,KAAM,kBAAmB,KAAM,QAAQ,EACzC,CAAE,KAAM,eAAgB,KAAM,QAAQ,CAClD,EACQ,gBAAiB,OACjB,KAAM,UACd,EACI,CACI,OAAQ,CAAC,CAAE,KAAM,UAAW,KAAM,SAAS,CAAE,EAC7C,KAAM,iBACN,QAAS,CACL,CACI,WAAY,CACR,CAAE,KAAM,UAAW,KAAM,SAAS,EAClC,CAAE,KAAM,SAAU,KAAM,MAAM,EAC9B,CAAE,KAAM,QAAS,KAAM,SAAS,EAChC,CAAE,KAAM,kBAAmB,KAAM,QAAQ,EACzC,CAAE,KAAM,eAAgB,KAAM,QAAQ,CAC1D,EACgB,KAAM,OACN,KAAM,OACtB,CACA,EACQ,gBAAiB,OACjB,KAAM,UACd,EACI,CACI,OAAQ,CACJ,CAAE,KAAM,SAAU,KAAM,SAAS,EACjC,CAAE,KAAM,MAAO,KAAM,SAAS,CAC1C,EACQ,KAAM,WACN,QAAS,CAAC,CAAE,KAAM,QAAS,KAAM,SAAS,CAAE,EAC5C,gBAAiB,OACjB,KAAM,UACd,EACI,CACI,OAAQ,CAAC,CAAE,KAAM,WAAY,KAAM,OAAO,CAAE,EAC5C,KAAM,mBACN,QAAS,CAAA,EACT,gBAAiB,aACjB,KAAM,UACd,EACI,CACI,OAAQ,CACJ,CACI,WAAY,CACR,CAAE,KAAM,SAAU,KAAM,SAAS,EACjC,CAAE,KAAM,QAAS,KAAM,SAAS,EAChC,CAAE,KAAM,WAAY,KAAM,OAAO,EACjC,CAAE,KAAM,WAAY,KAAM,OAAO,EACjC,CAAE,KAAM,eAAgB,KAAM,SAAS,EACvC,CACI,KAAM,uBACN,KAAM,SAC9B,EACoB,CACI,KAAM,qBACN,KAAM,SAC9B,EACoB,CAAE,KAAM,eAAgB,KAAM,SAAS,EACvC,CACI,KAAM,uBACN,KAAM,SAC9B,EACoB,CAAE,KAAM,mBAAoB,KAAM,OAAO,EACzC,CAAE,KAAM,YAAa,KAAM,OAAO,CACtD,EACgB,KAAM,SACN,KAAM,OACtB,CACA,EACQ,KAAM,gBACN,QAAS,CAAC,CAAE,KAAM,GAAI,KAAM,SAAS,CAAE,EACvC,gBAAiB,OACjB,KAAM,UACd,EACI,CACI,OAAQ,CACJ,CACI,WAAY,CACR,CACI,WAAY,CACR,CAAE,KAAM,SAAU,KAAM,SAAS,EACjC,CAAE,KAAM,QAAS,KAAM,SAAS,EAChC,CAAE,KAAM,WAAY,KAAM,OAAO,EACjC,CAAE,KAAM,WAAY,KAAM,OAAO,EACjC,CACI,KAAM,eACN,KAAM,SACtC,EAC4B,CACI,KAAM,uBACN,KAAM,SACtC,EAC4B,CACI,KAAM,qBACN,KAAM,SACtC,EAC4B,CACI,KAAM,eACN,KAAM,SACtC,EAC4B,CACI,KAAM,uBACN,KAAM,SACtC,EAC4B,CACI,KAAM,mBACN,KAAM,OACtC,EAC4B,CAAE,KAAM,YAAa,KAAM,OAAO,CAC9D,EACwB,KAAM,UACN,KAAM,SAC9B,EACoB,CACI,KAAM,aACN,KAAM,SAC9B,EACoB,CAAE,KAAM,YAAa,KAAM,OAAO,CACtD,EACgB,KAAM,mBACN,KAAM,SACtB,EACY,CAAE,KAAM,cAAe,KAAM,SAAS,CAClD,EACQ,KAAM,sBACN,QAAS,CAAA,EACT,gBAAiB,aACjB,KAAM,UACd,EACI,CACI,OAAQ,CACJ,CACI,WAAY,CACR,CAAE,KAAM,SAAU,KAAM,SAAS,EACjC,CAAE,KAAM,QAAS,KAAM,SAAS,EAChC,CAAE,KAAM,WAAY,KAAM,OAAO,EACjC,CAAE,KAAM,WAAY,KAAM,OAAO,EACjC,CAAE,KAAM,eAAgB,KAAM,SAAS,EACvC,CACI,KAAM,uBACN,KAAM,SAC9B,EACoB,CACI,KAAM,qBACN,KAAM,SAC9B,EACoB,CAAE,KAAM,eAAgB,KAAM,SAAS,EACvC,CACI,KAAM,uBACN,KAAM,SAC9B,EACoB,CAAE,KAAM,mBAAoB,KAAM,OAAO,EACzC,CAAE,KAAM,YAAa,KAAM,OAAO,CACtD,EACgB,KAAM,MACN,KAAM,SACtB,EACY,CAAE,KAAM,cAAe,KAAM,SAAS,CAClD,EACQ,KAAM,YACN,QAAS,CAAA,EACT,gBAAiB,aACjB,KAAM,UACd,EACI,CACI,OAAQ,CAAC,CAAE,KAAM,MAAO,KAAM,SAAS,CAAE,EACzC,KAAM,iBACN,QAAS,CAAA,EACT,gBAAiB,aACjB,KAAM,UACd,EACI,CACI,OAAQ,CACJ,CAAE,KAAM,WAAY,KAAM,OAAO,EACjC,CACI,WAAY,CACR,CACI,WAAY,CACR,CAAE,KAAM,SAAU,KAAM,SAAS,EACjC,CAAE,KAAM,QAAS,KAAM,SAAS,EAChC,CACI,KAAM,eACN,KAAM,SACtC,EAC4B,CACI,KAAM,uBACN,KAAM,SACtC,EAC4B,CACI,KAAM,qBACN,KAAM,SACtC,EAC4B,CAAE,KAAM,YAAa,KAAM,SAAS,EACpC,CACI,KAAM,eACN,KAAM,SACtC,EAC4B,CACI,KAAM,uBACN,KAAM,SACtC,CACA,EACwB,KAAM,UACN,KAAM,OAC9B,EACoB,CAAE,KAAM,aAAc,KAAM,SAAS,EACrC,CAAE,KAAM,UAAW,KAAM,SAAS,EAClC,CAAE,KAAM,gBAAiB,KAAM,SAAS,EACxC,CAAE,KAAM,WAAY,KAAM,SAAS,CACvD,EACgB,KAAM,SACN,KAAM,OACtB,EACY,CAAE,KAAM,UAAW,KAAM,OAAO,CAC5C,EACQ,KAAM,gBACN,QAAS,CAAC,CAAE,KAAM,gBAAiB,KAAM,SAAS,CAAE,EACpD,gBAAiB,aACjB,KAAM,UACd,EACI,CACI,OAAQ,CACJ,CAAE,KAAM,GAAI,KAAM,SAAS,EAC3B,CAAE,KAAM,GAAI,KAAM,SAAS,CACvC,EACQ,KAAM,sBACN,QAAS,CAAC,CAAE,KAAM,GAAI,KAAM,SAAS,CAAE,EACvC,gBAAiB,OACjB,KAAM,UACd,EACI,CACI,OAAQ,CACJ,CACI,WAAY,CACR,CAAE,KAAM,SAAU,KAAM,SAAS,EACjC,CAAE,KAAM,QAAS,KAAM,SAAS,EAChC,CAAE,KAAM,WAAY,KAAM,OAAO,EACjC,CAAE,KAAM,WAAY,KAAM,OAAO,EACjC,CAAE,KAAM,eAAgB,KAAM,SAAS,EACvC,CACI,KAAM,uBACN,KAAM,SAC9B,EACoB,CACI,KAAM,qBACN,KAAM,SAC9B,EACoB,CAAE,KAAM,eAAgB,KAAM,SAAS,EACvC,CACI,KAAM,uBACN,KAAM,SAC9B,EACoB,CAAE,KAAM,mBAAoB,KAAM,OAAO,EACzC,CAAE,KAAM,YAAa,KAAM,OAAO,CACtD,EACgB,KAAM,KACN,KAAM,OACtB,EACY,CAAE,KAAM,SAAU,KAAM,SAAS,EACjC,CAAE,KAAM,iBAAkB,KAAM,OAAO,CACnD,EACQ,KAAM,mBACN,QAAS,CAAA,EACT,gBAAiB,aACjB,KAAM,UACd,EACI,CACI,OAAQ,CACJ,CACI,WAAY,CACR,CAAE,KAAM,SAAU,KAAM,SAAS,EACjC,CAAE,KAAM,QAAS,KAAM,SAAS,EAChC,CAAE,KAAM,WAAY,KAAM,OAAO,EACjC,CAAE,KAAM,WAAY,KAAM,OAAO,EACjC,CAAE,KAAM,eAAgB,KAAM,SAAS,EACvC,CACI,KAAM,uBACN,KAAM,SAC9B,EACoB,CACI,KAAM,qBACN,KAAM,SAC9B,EACoB,CAAE,KAAM,eAAgB,KAAM,SAAS,EACvC,CACI,KAAM,uBACN,KAAM,SAC9B,EACoB,CAAE,KAAM,mBAAoB,KAAM,OAAO,EACzC,CAAE,KAAM,YAAa,KAAM,OAAO,CACtD,EACgB,KAAM,SACN,KAAM,OACtB,CACA,EACQ,KAAM,qBACN,QAAS,CAAA,EACT,gBAAiB,aACjB,KAAM,UACd,EACI,CACI,OAAQ,CAAA,EACR,KAAM,cACN,QAAS,CAAA,EACT,gBAAiB,aACjB,KAAM,UACd,EACI,CACI,OAAQ,CACJ,CACI,KAAM,kBACN,KAAM,SACtB,CACA,EACQ,KAAM,gBACN,QAAS,CAAA,EACT,gBAAiB,aACjB,KAAM,UACd,EACI,CACI,OAAQ,CACJ,CACI,KAAM,kBACN,KAAM,SACtB,EACY,CAAE,KAAM,iBAAkB,KAAM,SAAS,CACrD,EACQ,KAAM,aACN,QAAS,CAAA,EACT,gBAAiB,aACjB,KAAM,UACd,EACI,CAAE,gBAAiB,UAAW,KAAM,SAAS,CACjD,EACaC,GAAkB,CAC3B,CACI,OAAQ,CACJ,CAAE,KAAM,UAAW,KAAM,MAAM,EAC/B,CAAE,KAAM,MAAO,KAAM,OAAO,CACxC,EACQ,KAAM,oBACN,KAAM,OACd,EACI,CACI,OAAQ,CACJ,CAAE,KAAM,UAAW,KAAM,SAAS,EAClC,CAAE,KAAM,SAAU,KAAM,QAAQ,CAC5C,EACQ,KAAM,WACN,KAAM,OACd,EACI,CACI,OAAQ,CACJ,CAAE,KAAM,UAAW,KAAM,SAAS,EAClC,CAAE,KAAM,SAAU,KAAM,QAAQ,EAChC,CAAE,KAAM,QAAS,KAAM,OAAO,CAC1C,EACQ,KAAM,qBACN,KAAM,OACd,EACI,CACI,OAAQ,CAAC,CAAE,KAAM,aAAc,KAAM,OAAO,CAAE,EAC9C,KAAM,iBACN,KAAM,OACd,EACI,CAAE,OAAQ,CAAA,EAAI,KAAM,+BAAgC,KAAM,OAAO,EACjE,CACI,OAAQ,CAAC,CAAE,KAAM,SAAU,KAAM,SAAS,CAAE,EAC5C,KAAM,sBACN,KAAM,OACd,EACI,CACI,OAAQ,CAAC,CAAE,KAAM,aAAc,KAAM,SAAS,CAAE,EAChD,KAAM,4BACN,KAAM,OACd,EACI,CACI,UAAW,GACX,OAAQ,CACJ,CACI,QAAS,GACT,KAAM,aACN,KAAM,SACtB,EACY,CACI,QAAS,GACT,KAAM,SACN,KAAM,SACtB,EACY,CACI,QAAS,GACT,KAAM,UACN,KAAM,SACtB,EACY,CACI,QAAS,GACT,KAAM,YACN,KAAM,SACtB,CACA,EACQ,KAAM,kBACN,KAAM,OACd,EACI,CAAE,UAAW,GAAO,OAAQ,CAAA,EAAI,KAAM,kBAAmB,KAAM,OAAO,EACtE,CACI,UAAW,GACX,OAAQ,CACJ,CACI,QAAS,GACT,KAAM,UACN,KAAM,SACtB,EACY,CACI,QAAS,GACT,KAAM,eACN,KAAM,SACtB,CACA,EACQ,KAAM,YACN,KAAM,OACd,EACI,CACI,UAAW,GACX,OAAQ,CACJ,CACI,QAAS,GACT,KAAM,aACN,KAAM,SACtB,EACY,CACI,QAAS,GACT,KAAM,SACN,KAAM,SACtB,EACY,CACI,QAAS,GACT,KAAM,QACN,KAAM,SACtB,EACY,CACI,QAAS,GACT,KAAM,eACN,KAAM,OACtB,CACA,EACQ,KAAM,qBACN,KAAM,OACd,EACI,CACI,UAAW,GACX,OAAQ,CACJ,CACI,QAAS,GACT,KAAM,aACN,KAAM,SACtB,CACA,EACQ,KAAM,6BACN,KAAM,OACd,EACI,CACI,UAAW,GACX,OAAQ,CACJ,CACI,QAAS,GACT,KAAM,UACN,KAAM,SACtB,EACY,CACI,QAAS,GACT,KAAM,cACN,KAAM,SACtB,EACY,CACI,QAAS,GACT,KAAM,kBACN,KAAM,SACtB,CACA,EACQ,KAAM,cACN,KAAM,OACd,EACI,CACI,UAAW,GACX,OAAQ,CACJ,CACI,QAAS,GACT,KAAM,UACN,KAAM,SACtB,EACY,CACI,QAAS,GACT,KAAM,eACN,KAAM,SACtB,CACA,EACQ,KAAM,gBACN,KAAM,OACd,EACI,CACI,UAAW,GACX,OAAQ,CACJ,CACI,QAAS,GACT,KAAM,UACN,KAAM,SACtB,EACY,CACI,QAAS,GACT,KAAM,kBACN,KAAM,SACtB,EACY,CACI,QAAS,GACT,KAAM,SACN,KAAM,SACtB,CACA,EACQ,KAAM,iBACN,KAAM,OACd,EACI,CACI,UAAW,GACX,OAAQ,CACJ,CACI,QAAS,GACT,KAAM,aACN,KAAM,SACtB,EACY,CACI,QAAS,GACT,KAAM,SACN,KAAM,SACtB,EACY,CACI,QAAS,GACT,KAAM,YACN,KAAM,SACtB,EACY,CACI,QAAS,GACT,KAAM,QACN,KAAM,SACtB,EACY,CAAE,QAAS,GAAO,KAAM,UAAW,KAAM,MAAM,EAC/C,CACI,QAAS,GACT,KAAM,gBACN,KAAM,SACtB,EACY,CACI,QAAS,GACT,KAAM,gBACN,KAAM,SACtB,CACA,EACQ,KAAM,qBACN,KAAM,OACd,EACI,CACI,UAAW,GACX,OAAQ,CACJ,CACI,QAAS,GACT,KAAM,aACN,KAAM,SACtB,EACY,CACI,QAAS,GACT,KAAM,SACN,KAAM,SACtB,EACY,CACI,QAAS,GACT,KAAM,QACN,KAAM,SACtB,CACA,EACQ,KAAM,6BACN,KAAM,OACd,EACI,CACI,UAAW,GACX,OAAQ,CACJ,CACI,QA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AAM,qBACN,KAAM,OACd,EACI,CACI,OAAQ,CAAA,EACR,KAAM,eACN,KAAM,OACd,EACI,CACI,OAAQ,CAAA,EACR,KAAM,sBACN,KAAM,OACd,EACI,CACI,OAAQ,CAAA,EACR,KAAM,gBACN,KAAM,OACd,EACI,CACI,UAAW,GACX,OAAQ,CACJ,CACI,QAAS,GACT,aAAc,UACd,KAAM,eACN,KAAM,SACtB,EACY,CACI,QAAS,GACT,aAAc,UACd,KAAM,eACN,KAAM,SACtB,CACA,EACQ,KAAM,0BACN,KAAM,OACd,EACI,CACI,UAAW,GACX,OAAQ,CACJ,CACI,QAAS,GACT,aAAc,SACd,KAAM,WACN,KAAM,QACtB,EACY,CACI,QAAS,GACT,aAAc,UACd,KAAM,WACN,KAAM,SACtB,EACY,CACI,QAAS,GACT,aAAc,UACd,KAAM,YACN,KAAM,SACtB,CACA,EACQ,KAAM,mBACN,KAAM,OACd,EACI,CACI,UAAW,GACX,OAAQ,CACJ,CACI,QAAS,GACT,aAAc,UACd,KAAM,SACN,KAAM,SACtB,EACY,CACI,QAAS,GACT,aAAc,UACd,KAAM,SACN,KAAM,SACtB,CACA,EACQ,KAAM,WACN,KAAM,OACd,EACI,CACI,UAAW,GACX,OAAQ,CACJ,CACI,QAAS,GACT,aAAc,UACd,KAAM,oBACN,KAAM,SACtB,CACA,EACQ,KAAM,WACN,KAAM,OACd,EACI,CACI,gBAAiB,UACjB,KAAM,UACd,EACI,CACI,OAAQ,CACJ,CACI,aAAc,SACd,KAAM,eACN,KAAM,QACtB,CACA,EACQ,KAAM,cACN,QAAS,CAAA,EACT,gBAAiB,UACjB,KAAM,UACd,EACI,CACI,OAAQ,CAAA,EACR,KAAM,eACN,QAAS,CACL,CACI,aAAc,SACd,KAAM,SACN,KAAM,QACtB,EACY,CACI,aAAc,SACd,KAAM,OACN,KAAM,QACtB,EACY,CACI,aAAc,SACd,KAAM,UACN,KAAM,QACtB,EACY,CACI,aAAc,UACd,KAAM,UACN,KAAM,SACtB,EACY,CACI,aAAc,UACd,KAAM,oBACN,KAAM,SACtB,EACY,CACI,aAAc,UACd,KAAM,OACN,KAAM,SACtB,EACY,CACI,aAAc,YACd,KAAM,aACN,KAAM,WACtB,CACA,EACQ,gBAAiB,OACjB,KAAM,UACd,EACI,CACI,OAAQ,CAAA,EACR,KAAM,aACN,QAAS,CACL,CACI,aAAc,uBACd,KAAM,GACN,KAAM,SACtB,CACA,EACQ,gBAAiB,OACjB,KAAM,UACd,EACI,CACI,OAAQ,CACJ,CACI,aAAc,UACd,KAAM,KACN,KAAM,SACtB,EACY,CACI,aAAc,UACd,KAAM,QACN,KAAM,SACtB,EACY,CACI,aAAc,QACd,KAAM,OACN,KAAM,OACtB,EACY,CACI,aAAc,iBACd,KAAM,GACN,KAAM,OACtB,CACA,EACQ,KAAM,UACN,QAAS,CAAA,EACT,gBAAiB,UACjB,KAAM,UACd,EACI,CACI,OAAQ,CACJ,CACI,WAAY,CACR,CACI,aAAc,UACd,KAAM,KACN,KAAM,SAC9B,EACoB,CACI,aAAc,UACd,KAAM,QACN,KAAM,SAC9B,EACoB,CACI,aAAc,QACd,KAAM,OACN,KAAM,OAC9B,CACA,EACgB,aAAc,gBACd,KAAM,QACN,KAAM,SACtB,CACA,EACQ,KAAM,eACN,QAAS,CAAA,EACT,gBAAiB,UACjB,KAAM,UACd,EACI,CACI,OAAQ,CACJ,CACI,aAAc,UACd,KAAM,KACN,KAAM,SACtB,EACY,CACI,aAAc,QACd,KAAM,OACN,KAAM,OACtB,CACA,EACQ,KAAM,sBACN,QAAS,CAAA,EACT,gBAAiB,UACjB,KAAM,UACd,EACI,CACI,OAAQ,CAAA,EACR,KAAM,sBACN,QAAS,CACL,CACI,aAAc,4BACd,KAAM,YACN,KAAM,SACtB,CACA,EACQ,gBAAiB,OACjB,KAAM,UACd,EACI,CACI,OAAQ,CAAA,EACR,KAAM,kBACN,QAAS,CACL,CACI,aAAc,SACd,KAAM,WACN,KAAM,QACtB,CACA,EACQ,gBAAiB,OACjB,KAAM,UACd,EACI,CACI,OAAQ,CACJ,CACI,aAAc,SACd,KAAM,YACN,KAAM,QACtB,CACA,EACQ,KAAM,eACN,QAAS,CACL,CACI,WAAY,CACR,CACI,aAAc,aACd,KAAM,aACN,KAAM,QAC9B,EACoB,CACI,aAAc,aACd,KAAM,aACN,KAAM,QAC9B,EACoB,CACI,aAAc,UACd,KAAM,WACN,KAAM,SAC9B,EACoB,CACI,aAAc,4BACd,KAAM,YACN,KAAM,SAC9B,CACA,EACgB,aAAc,yBACd,KAAM,GACN,KAAM,OACtB,CACA,EACQ,gBAAiB,OACjB,KAAM,UACd,EACI,CACI,OAAQ,CAAA,EACR,KAAM,sBACN,QAAS,CACL,CACI,aAAc,SACd,KAAM,GACN,KAAM,QACtB,CACA,EACQ,gBAAiB,OACjB,KAAM,UACd,EACI,CACI,OAAQ,CACJ,CACI,aAAc,UACd,KAAM,MACN,KAAM,SACtB,CACA,EACQ,KAAM,WACN,QAAS,CACL,CACI,aAAc,UACd,KAAM,GACN,KAAM,SACtB,CACA,EACQ,gBAAiB,OACjB,KAAM,UACd,EACI,CACI,OAAQ,CAAA,EACR,KAAM,WACN,QAAS,CACL,CACI,aAAc,UACd,KAAM,GACN,KAAM,SACtB,CACA,EACQ,gBAAiB,OACjB,KAAM,UACd,EACI,CACI,OAAQ,CACJ,CACI,aAAc,4BACd,KAAM,oBACN,KAAM,SACtB,EACY,CACI,aAAc,QACd,KAAM,QACN,KAAM,OACtB,CACA,EACQ,KAAM,aACN,QAAS,CAAA,EACT,gBAAiB,UACjB,KAAM,UACd,EACI,CACI,OAAQ,CACJ,CACI,aAAc,UACd,KAAM,OACN,KAAM,SACtB,EACY,CACI,aAAc,QACd,KAAM,YACN,KAAM,OACtB,CACA,EACQ,KAAM,mBACN,QAAS,CACL,CACI,aAAc,SACd,KAAM,GACN,KAAM,QACtB,CACA,EACQ,gBAAiB,OACjB,KAAM,UACd,EACI,CACI,OAAQ,CAAA,EACR,KAAM,OACN,QAAS,CACL,CACI,aAAc,SACd,KAAM,GACN,KAAM,QACtB,CACA,EACQ,gBAAiB,OACjB,KAAM,UACd,EACI,CACI,OAAQ,CACJ,CACI,aAAc,UACd,KAAM,GACN,KAAM,SACtB,EACY,CACI,aAAc,UACd,KAAM,GACN,KAAM,SACtB,EACY,CACI,aAAc,YACd,KAAM,GACN,KAAM,WACtB,EACY,CACI,aAAc,YACd,KAAM,GACN,KAAM,WACtB,EACY,CACI,aAAc,QACd,KAAM,GACN,KAAM,OACtB,CACA,EACQ,KAAM,yBACN,QAAS,CACL,CACI,aAAc,SACd,KAAM,GACN,KAAM,QACtB,CACA,EACQ,gBAAiB,OACjB,KAAM,UACd,EACI,CACI,OAAQ,CACJ,CACI,aAAc,UACd,KAAM,GACN,KAAM,SACtB,EACY,CACI,aAAc,UACd,KAAM,GACN,KAAM,SACtB,EACY,CACI,aAAc,UACd,KAAM,GACN,KAAM,SACtB,EACY,CACI,aAAc,UACd,KAAM,GACN,KAAM,SACtB,EACY,CACI,aAAc,QACd,KAAM,GACN,KAAM,OACtB,CACA,EACQ,KAAM,oBACN,QAAS,CACL,CACI,aAAc,SACd,KAAM,GACN,KAAM,QACtB,CACA,EACQ,gBAAiB,OACjB,KAAM,UACd,EACI,CACI,OAAQ,CACJ,CACI,aAAc,UACd,KAAM,GACN,KAAM,SACtB,EACY,CACI,aAAc,UACd,KAAM,GACN,KAAM,SACtB,EACY,CACI,aAAc,UACd,KAAM,GACN,KAAM,SACtB,EACY,CACI,aAAc,QACd,KAAM,GACN,KAAM,OACtB,CACA,EACQ,KAAM,mBACN,QAAS,CACL,CACI,aAAc,SACd,KAAM,GACN,KAAM,QACtB,CACA,EACQ,gBAAiB,OACjB,KAAM,UACd,EACI,CACI,OAAQ,CACJ,CACI,aAAc,4BACd,KAAM,oBACN,KAAM,SACtB,EACY,CACI,aAAc,QACd,KAAM,QACN,KAAM,OACtB,CACA,EACQ,KAAM,sBACN,QAAS,CAAA,EACT,gBAAiB,UACjB,KAAM,UACd,EACI,CACI,OAAQ,CACJ,CACI,aAAc,SACd,KAAM,YACN,KAAM,QACtB,EACY,CACI,aAAc,UACd,KAAM,YACN,KAAM,SACtB,EACY,CACI,aAAc,4BACd,KAAM,aACN,KAAM,SACtB,EACY,CACI,aAAc,aACd,KAAM,cACN,KAAM,QACtB,EACY,CACI,aAAc,aACd,KAAM,cACN,KAAM,QACtB,EACY,CACI,aAAc,QACd,KAAM,cACN,KAAM,OACtB,CACA,EACQ,KAAM,eACN,QAAS,CAAA,EACT,gBAAiB,UACjB,KAAM,UACd,EACI,CACI,OAAQ,CACJ,CACI,aAAc,UACd,KAAM,qBACN,KAAM,SACtB,CACA,EACQ,KAAM,YACN,QAAS,CAAA,EACT,gBAAiB,UACjB,KAAM,UACd,EACI,CACI,OAAQ,CACJ,CACI,WAAY,CACR,CACI,aAAc,UACd,KAAM,SACN,KAAM,SAC9B,EACoB,CACI,aAAc,UACd,KAAM,QACN,KAAM,SAC9B,EACoB,CACI,aAAc,QACd,KAAM,WACN,KAAM,OAC9B,EACoB,CACI,aAAc,QACd,KAAM,WACN,KAAM,OAC9B,EACoB,CACI,aAAc,UACd,KAAM,eACN,KAAM,SAC9B,EACoB,CACI,aAAc,UACd,KAAM,uBACN,KAAM,SAC9B,EACoB,CACI,aAAc,UACd,KAAM,qBACN,KAAM,SAC9B,EACoB,CACI,aAAc,UACd,KAAM,eACN,KAAM,SAC9B,EACoB,CACI,aAAc,UACd,KAAM,uBACN,KAAM,SAC9B,EACoB,CACI,aAAc,QACd,KAAM,mBACN,KAAM,OAC9B,EACoB,CACI,aAAc,QACd,KAAM,YACN,KAAM,OAC9B,CACA,EACgB,aAAc,uBACd,KAAM,UACN,KAAM,OACtB,EACY,CACI,aAAc,UACd,KAAM,aACN,KAAM,SACtB,EACY,CACI,aAAc,UACd,KAAM,sBACN,KAAM,SACtB,CACA,EACQ,KAAM,iBACN,QAAS,CACL,CACI,aAAc,iBACd,KAAM,iBACN,KAAM,SACtB,CACA,EACQ,gBAAiB,UACjB,KAAM,UACd,EACI,CACI,OAAQ,CAAA,EACR,KAAM,UACN,QAAS,CACL,CACI,aAAc,SACd,KAAM,GACN,KAAM,QACtB,CACA,EACQ,gBAAiB,OACjB,KAAM,UACd,EACI,CACI,gBAAiB,UACjB,KAAM,SACd,CACA,EC1yBaC,GAA0B/8F,GAC5Bm1E,qBAAmB,CACtB,IAAKynB,GACL,aAAc,eACd,KAAM,CACF58F,EAAK,IAAKimB,IACC,CACH,GAAIA,EAAI,GACR,MAAOA,EAAI,OAAS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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497]}