{"version":3,"file":"static/js/main.eb0e0cd7.js","mappings":"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G,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAA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","sources":["../node_modules/@coinbase/wallet-sdk/dist/CoinbaseWalletSDK.js","../node_modules/@coinbase/wallet-sdk/dist/assets/wallet-logo.js","../node_modules/@coinbase/wallet-sdk/dist/components/ConnectContent/ConnectContent-css.js","../node_modules/@coinbase/wallet-sdk/dist/components/ConnectContent/ConnectContent.js","../node_modules/@coinbase/wallet-sdk/dist/components/ConnectDialog/ConnectDialog-css.js","../node_modules/@coinbase/wallet-sdk/dist/components/ConnectDialog/ConnectDialog.js","../node_modules/@coinbase/wallet-sdk/dist/components/LinkFlow/LinkFlow.js","../node_modules/@coinbase/wallet-sdk/dist/components/QRCode.js","../node_modules/@coinbase/wallet-sdk/dist/components/Snackbar/Snackbar-css.js","../node_modules/@coinbase/wallet-sdk/dist/components/Snackbar/Snackbar.js","../node_modules/@coinbase/wallet-sdk/dist/components/Spinner/Spinner-css.js","../node_modules/@coinbase/wallet-sdk/dist/components/Spinner/Spinner.js","../node_modules/@coinbase/wallet-sdk/dist/components/TryExtensionContent/TryExtensionContent-css.js","../node_modules/@coinbase/wallet-sdk/dist/components/TryExtensionContent/TryExtensionContent.js","../node_modules/@coinbase/wallet-sdk/dist/components/icons/ArrowLeftIcon.js","../node_modules/@coinbase/wallet-sdk/dist/components/icons/CloseIcon.js","../node_modules/@coinbase/wallet-sdk/dist/components/icons/LaptopIcon.js","../node_modules/@coinbase/wallet-sdk/dist/components/icons/QRCodeIcon.js","../node_modules/@coinbase/wallet-sdk/dist/components/icons/QRLogoCoinbase.js","../node_modules/@coinbase/wallet-sdk/dist/components/icons/QRLogoWallet.js","../node_modules/@coinbase/wallet-sdk/dist/components/icons/SafeIcon.js","../node_modules/@coinbase/wallet-sdk/dist/components/icons/StatusDotIcon.js","../node_modules/@coinbase/wallet-sdk/dist/components/icons/coinbase-round-svg.js","../node_modules/@coinbase/wallet-sdk/dist/components/icons/coinbase-wallet-round-svg.js","../node_modules/@coinbase/wallet-sdk/dist/connection/ClientMessage.js","../node_modules/@coinbase/wallet-sdk/dist/connection/DiagnosticLogger.js","../node_modules/@coinbase/wallet-sdk/dist/connection/RxWebSocket.js","../node_modules/@coinbase/wallet-sdk/dist/connection/ServerMessage.js","../node_modules/@coinbase/wallet-sdk/dist/connection/WalletSDKConnection.js","../node_modules/@coinbase/wallet-sdk/dist/index.js","../node_modules/@coinbase/wallet-sdk/dist/lib/ScopedLocalStorage.js","../node_modules/@coinbase/wallet-sdk/dist/lib/cssReset-css.js","../node_modules/@coinbase/wallet-sdk/dist/lib/cssReset.js","../node_modules/@coinbase/wallet-sdk/dist/provider/CoinbaseWalletProvider.js","../node_modules/@coinbase/wallet-sdk/dist/provider/FilterPolyfill.js","../node_modules/@coinbase/wallet-sdk/dist/provider/JSONRPC.js","../node_modules/@coinbase/wallet-sdk/dist/provider/SubscriptionManager.js","../node_modules/@coinbase/wallet-sdk/dist/provider/WalletSDKUI.js","../node_modules/@coinbase/wallet-sdk/dist/provider/WalletUIError.js","../node_modules/@coinbase/wallet-sdk/dist/relay/RelayMessage.js","../node_modules/@coinbase/wallet-sdk/dist/relay/Session.js","../node_modules/@coinbase/wallet-sdk/dist/relay/WalletSDKRelay.js","../node_modules/@coinbase/wallet-sdk/dist/relay/WalletSDKRelayAbstract.js","../node_modules/@coinbase/wallet-sdk/dist/relay/WalletSDKRelayEventManager.js","../node_modules/@coinbase/wallet-sdk/dist/relay/Web3Method.js","../node_modules/@coinbase/wallet-sdk/dist/relay/Web3RequestCanceledMessage.js","../node_modules/@coinbase/wallet-sdk/dist/relay/Web3RequestMessage.js","../node_modules/@coinbase/wallet-sdk/dist/relay/Web3Response.js","../node_modules/@coinbase/wallet-sdk/dist/relay/Web3ResponseMessage.js","../node_modules/@coinbase/wallet-sdk/dist/relay/aes256gcm.js","../node_modules/@coinbase/wallet-sdk/dist/types.js","../node_modules/@coinbase/wallet-sdk/dist/util.js","../node_modules/@coinbase/wallet-sdk/dist/vendor-js/eth-eip712-util/abi.js","../node_modules/@coinbase/wallet-sdk/dist/vendor-js/eth-eip712-util/index.js","../node_modules/@coinbase/wallet-sdk/dist/vendor-js/eth-eip712-util/util.js","../node_modules/@coinbase/wallet-sdk/dist/vendor-js/qrcode-svg/index.js","../node_modules/@coinbase/wallet-sdk/dist/version.js","../../src/classes.ts","../../src/error-constants.ts","../../src/errors.ts","../../src/index.ts","../../src/utils.ts","../node_modules/@coinbase/wallet-sdk/node_modules/qs/lib/formats.js","../node_modules/@coinbase/wallet-sdk/node_modules/qs/lib/index.js","../node_modules/@coinbase/wallet-sdk/node_modules/qs/lib/parse.js","../node_modules/@coinbase/wallet-sdk/node_modules/qs/lib/stringify.js","../node_modules/@coinbase/wallet-sdk/node_modules/qs/lib/utils.js","../node_modules/@ethersproject/address/src.ts/_version.ts","../node_modules/@ethersproject/address/src.ts/index.ts","../node_modules/@ethersproject/bignumber/src.ts/_version.ts","../node_modules/@ethersproject/bignumber/src.ts/bignumber.ts","../node_modules/@ethersproject/bytes/src.ts/_version.ts","../node_modules/@ethersproject/bytes/src.ts/index.ts","../node_modules/@ethersproject/keccak256/src.ts/index.ts","../node_modules/@ethersproject/logger/src.ts/index.ts","../node_modules/@ethersproject/logger/src.ts/_version.ts","../node_modules/@ethersproject/properties/src.ts/index.ts","../node_modules/@ethersproject/properties/src.ts/_version.ts","../node_modules/@ethersproject/abstract-provider/src.ts/index.ts","../node_modules/@ethersproject/abstract-provider/src.ts/_version.ts","../node_modules/@ethersproject/networks/src.ts/_version.ts","../node_modules/@ethersproject/networks/src.ts/index.ts","../node_modules/@ethersproject/base64/src.ts/browser-base64.ts","../node_modules/@ethersproject/basex/src.ts/index.ts","../node_modules/@ethersproject/strings/src.ts/utf8.ts","../node_modules/@ethersproject/strings/src.ts/_version.ts","../node_modules/@ethersproject/hash/src.ts/_version.ts","../node_modules/@ethersproject/hash/src.ts/ens-normalize/decoder.ts","../node_modules/@ethersproject/hash/src.ts/ens-normalize/lib.ts","../node_modules/@ethersproject/hash/src.ts/ens-normalize/include.ts","../node_modules/@ethersproject/hash/src.ts/namehash.ts","../node_modules/@ethersproject/sha2/src.ts/browser-sha2.ts","../node_modules/@ethersproject/sha2/src.ts/_version.ts","../node_modules/@ethersproject/web/src.ts/browser-geturl.ts","../node_modules/@ethersproject/web/src.ts/index.ts","../node_modules/@ethersproject/web/src.ts/_version.ts","../node_modules/@ethersproject/providers/src.ts/_version.ts","../node_modules/@ethersproject/constants/src.ts/addresses.ts","../node_modules/@ethersproject/constants/src.ts/bignumbers.ts","../node_modules/node_modules/minimalistic-assert/index.js","../node_modules/node_modules/minimalistic-crypto-utils/lib/utils.js","../node_modules/node_modules/elliptic/lib/elliptic/utils.js","../node_modules/node_modules/elliptic/lib/elliptic/curve/base.js","../node_modules/node_modules/inherits/inherits_browser.js","../node_modules/node_modules/elliptic/lib/elliptic/curve/short.js","../node_modules/node_modules/elliptic/lib/elliptic/curve/index.js","../node_modules/node_modules/elliptic/lib/elliptic/curves.js","../node_modules/node_modules/hmac-drbg/lib/hmac-drbg.js","../node_modules/node_modules/elliptic/lib/elliptic/ec/key.js","../node_modules/node_modules/elliptic/lib/elliptic/ec/signature.js","../node_modules/node_modules/elliptic/lib/elliptic/ec/index.js","../node_modules/@ethersproject/signing-key/lib.esm/elliptic.js","../node_modules/node_modules/elliptic/lib/elliptic.js","../node_modules/@ethersproject/signing-key/src.ts/_version.ts","../node_modules/@ethersproject/signing-key/src.ts/index.ts","../node_modules/@ethersproject/transactions/src.ts/_version.ts","../node_modules/@ethersproject/transactions/src.ts/index.ts","../node_modules/@ethersproject/providers/src.ts/formatter.ts","../node_modules/@ethersproject/providers/src.ts/base-provider.ts","../node_modules/@ethersproject/constants/src.ts/hashes.ts","../node_modules/@ethersproject/abstract-signer/src.ts/index.ts","../node_modules/@ethersproject/abstract-signer/src.ts/_version.ts","../node_modules/@ethersproject/hash/src.ts/id.ts","../node_modules/@ethersproject/hash/src.ts/typed-data.ts","../node_modules/@ethersproject/providers/src.ts/json-rpc-provider.ts","../node_modules/@ethersproject/providers/src.ts/browser-ws.ts","../node_modules/@ethersproject/providers/src.ts/websocket-provider.ts","../node_modules/@ethersproject/providers/src.ts/url-json-rpc-provider.ts","../node_modules/@ethersproject/providers/src.ts/alchemy-provider.ts","../node_modules/@ethersproject/providers/src.ts/ankr-provider.ts","../node_modules/@ethersproject/providers/src.ts/cloudflare-provider.ts","../node_modules/@ethersproject/providers/src.ts/etherscan-provider.ts","../node_modules/@ethersproject/providers/src.ts/fallback-provider.ts","../node_modules/@ethersproject/random/src.ts/shuffle.ts","../node_modules/@ethersproject/providers/src.ts/browser-ipc-provider.ts","../node_modules/@ethersproject/providers/src.ts/infura-provider.ts","../node_modules/@ethersproject/providers/src.ts/json-rpc-batch-provider.ts","../node_modules/@ethersproject/providers/src.ts/nodesmith-provider.ts","../node_modules/@ethersproject/providers/src.ts/pocket-provider.ts","../node_modules/@ethersproject/providers/src.ts/web3-provider.ts","../node_modules/@ethersproject/providers/src.ts/index.ts","../node_modules/@ethersproject/rlp/src.ts/_version.ts","../node_modules/@ethersproject/rlp/src.ts/index.ts","../index.ts","../node_modules/detect-browser/es/index.js","../../../src/browser.ts","../../../src/json.ts","../../../src/index.ts","../../../src/local.ts","../../../src/mobile.ts","../../../src/registry.ts","../../../src/crypto.ts","../../../src/env.ts","../../../src/constants.ts","../../../src/encoding.ts","../../../src/misc.ts","../../../src/validators.ts","../../../src/ethereum.ts","../../../src/url.ts","../../../src/network.ts","../../../src/errors.ts","../../../src/events.ts","../../../src/storage.ts","../../../src/session.ts","../../../src/payload.ts","../../../../src/constants/length.ts","../../../../src/constants/default.ts","../../../../src/lib/browser.ts","../../../../src/constants/operations.ts","../../../../src/browser/aes.ts","../../../../src/browser/hmac.ts","../../../../src/browser/index.ts","../../../src/http.ts","../../../src/provider.ts","../../../src/error.ts","../../../src/format.ts","../node_modules/babel-plugin-transform-async-to-promises/helpers.mjs","../node_modules/@walletconnect/qrcode-modal/src/browser/assets/logo.ts","../node_modules/@walletconnect/qrcode-modal/src/browser/constants/index.ts","../node_modules/@walletconnect/qrcode-modal/src/browser/components/Header.tsx","../node_modules/@walletconnect/qrcode-modal/src/browser/components/ConnectButton.tsx","../node_modules/@walletconnect/qrcode-modal/src/browser/components/WalletButton.tsx","../node_modules/@walletconnect/qrcode-modal/src/browser/assets/caret.ts","../node_modules/@walletconnect/qrcode-modal/src/browser/components/WalletIcon.tsx","../node_modules/@walletconnect/qrcode-modal/src/browser/components/LinkDisplay.tsx","../node_modules/@walletconnect/qrcode-modal/src/browser/components/Notification.tsx","../node_modules/@walletconnect/qrcode-modal/src/browser/components/QRCodeDisplay.tsx","../node_modules/@walletconnect/qrcode-modal/src/browser/components/Modal.tsx","../node_modules/@walletconnect/qrcode-modal/src/browser/languages/de.ts","../node_modules/@walletconnect/qrcode-modal/src/browser/languages/index.ts","../node_modules/@walletconnect/qrcode-modal/src/browser/languages/en.ts","../node_modules/@walletconnect/qrcode-modal/src/browser/languages/es.ts","../node_modules/@walletconnect/qrcode-modal/src/browser/languages/fr.ts","../node_modules/@walletconnect/qrcode-modal/src/browser/languages/ko.ts","../node_modules/@walletconnect/qrcode-modal/src/browser/languages/pt.ts","../node_modules/@walletconnect/qrcode-modal/src/browser/languages/zh.ts","../node_modules/@walletconnect/qrcode-modal/src/browser/languages/fa.ts","../node_modules/@walletconnect/qrcode-modal/src/browser/index.tsx","../node_modules/@walletconnect/qrcode-modal/src/browser/assets/style.ts","../node_modules/@walletconnect/qrcode-modal/src/index.ts","../node_modules/@walletconnect/qrcode-modal/src/node.ts","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/src/constants.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/src/options.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/src/component.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/src/render.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/src/create-context.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/src/util.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/src/create-element.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/src/diff/children.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/src/diff/props.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/src/diff/index.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/src/clone-element.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/src/diff/catch-error.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/hooks/src/index.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/compat/src/util.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/compat/src/PureComponent.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/compat/src/memo.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/compat/src/forwardRef.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/compat/src/Children.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/compat/src/suspense.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/compat/src/suspense-list.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/compat/src/portals.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/compat/src/render.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/compat/src/events.js","../node_modules/@walletconnect/qrcode-modal/node_modules/preact/compat/src/index.js","../node_modules/@walletconnect/socket-transport/node_modules/ws/browser.js","../node_modules/@walletconnect/utils/node_modules/bn.js/lib/bn.js","../node_modules/async-mutex/lib/Mutex.js","../node_modules/async-mutex/lib/Semaphore.js","../node_modules/async-mutex/lib/index.js","../node_modules/async-mutex/lib/withTimeout.js","../node_modules/async-mutex/node_modules/tslib/tslib.es6.js","../node_modules/base64-js/index.js","../node_modules/bech32/index.js","../node_modules/bind-decorator/index.js","../node_modules/bn.js/lib/bn.js","../node_modules/buffer/index.js","../node_modules/call-bind/callBound.js","../node_modules/call-bind/index.js","../node_modules/classnames/index.js","../node_modules/clsx/dist/clsx.m.js","../node_modules/copy-to-clipboard/index.js","../node_modules/cross-fetch/dist/browser-ponyfill.js","../node_modules/decode-uri-component/index.js","../node_modules/dijkstrajs/dijkstra.js","../node_modules/eth-block-tracker/src/base.js","../node_modules/eth-block-tracker/src/polling.js","../node_modules/eth-json-rpc-filters/base-filter-history.js","../node_modules/eth-json-rpc-filters/base-filter.js","../node_modules/eth-json-rpc-filters/block-filter.js","../node_modules/eth-json-rpc-filters/getBlocksForRange.js","../node_modules/eth-json-rpc-filters/hexUtils.js","../node_modules/eth-json-rpc-filters/index.js","../node_modules/eth-json-rpc-filters/log-filter.js","../node_modules/eth-json-rpc-filters/node_modules/pify/index.js","../node_modules/eth-json-rpc-filters/subscriptionManager.js","../node_modules/eth-json-rpc-filters/tx-filter.js","../node_modules/eth-json-rpc-middleware/node_modules/json-rpc-engine/src/createScaffoldMiddleware.js","../node_modules/eth-json-rpc-middleware/scaffold.js","../node_modules/eth-query/index.js","../node_modules/eventemitter3/index.js","../node_modules/events/events.js","../node_modules/fast-safe-stringify/index.js","../node_modules/for-each/index.js","../node_modules/function-bind/implementation.js","../node_modules/function-bind/index.js","../node_modules/get-intrinsic/index.js","../node_modules/gopd/index.js","../node_modules/has-symbols/index.js","../node_modules/has-symbols/shams.js","../node_modules/has-tostringtag/shams.js","../node_modules/has/src/index.js","../node_modules/hash.js/lib/hash.js","../node_modules/hash.js/lib/hash/common.js","../node_modules/hash.js/lib/hash/hmac.js","../node_modules/hash.js/lib/hash/ripemd.js","../node_modules/hash.js/lib/hash/sha.js","../node_modules/hash.js/lib/hash/sha/1.js","../node_modules/hash.js/lib/hash/sha/224.js","../node_modules/hash.js/lib/hash/sha/256.js","../node_modules/hash.js/lib/hash/sha/384.js","../node_modules/hash.js/lib/hash/sha/512.js","../node_modules/hash.js/lib/hash/sha/common.js","../node_modules/hash.js/lib/hash/utils.js","../node_modules/ieee754/index.js","../node_modules/inherits/inherits_browser.js","../node_modules/is-arguments/index.js","../node_modules/is-callable/index.js","../node_modules/is-generator-function/index.js","../node_modules/is-typed-array/index.js","../node_modules/is-typedarray/index.js","../node_modules/isarray/index.js","../node_modules/js-sha3/src/sha3.js","../../src/JsonRpcEngine.ts","../../src/createAsyncMiddleware.ts","../../src/createScaffoldMiddleware.ts","../../src/getUniqueId.ts","../../src/idRemapMiddleware.ts","../../src/mergeMiddleware.ts","../node_modules/json-rpc-random-id/index.js","../node_modules/keccak/js.js","../node_modules/keccak/lib/api/index.js","../node_modules/keccak/lib/api/keccak.js","../node_modules/keccak/lib/api/shake.js","../node_modules/keccak/lib/keccak-state-unroll.js","../node_modules/keccak/lib/keccak.js","../node_modules/lodash/_DataView.js","../node_modules/lodash/_Hash.js","../node_modules/lodash/_ListCache.js","../node_modules/lodash/_Map.js","../node_modules/lodash/_MapCache.js","../node_modules/lodash/_Promise.js","../node_modules/lodash/_Set.js","../node_modules/lodash/_SetCache.js","../node_modules/lodash/_Stack.js","../node_modules/lodash/_Symbol.js","../node_modules/lodash/_Uint8Array.js","../node_modules/lodash/_WeakMap.js","../node_modules/lodash/_arrayFilter.js","../node_modules/lodash/_arrayLikeKeys.js","../node_modules/lodash/_arrayPush.js","../node_modules/lodash/_arraySome.js","../node_modules/lodash/_assocIndexOf.js","../node_modules/lodash/_baseGetAllKeys.js","../node_modules/lodash/_baseGetTag.js","../node_modules/lodash/_baseIsArguments.js","../node_modules/lodash/_baseIsEqual.js","../node_modules/lodash/_baseIsEqualDeep.js","../node_modules/lodash/_baseIsNative.js","../node_modules/lodash/_baseIsTypedArray.js","../node_modules/lodash/_baseKeys.js","../node_modules/lodash/_baseTimes.js","../node_modules/lodash/_baseUnary.js","../node_modules/lodash/_cacheHas.js","../node_modules/lodash/_coreJsData.js","../node_modules/lodash/_equalArrays.js","../node_modules/lodash/_equalByTag.js","../node_modules/lodash/_equalObjects.js","../node_modules/lodash/_freeGlobal.js","../node_modules/lodash/_getAllKeys.js","../node_modules/lodash/_getMapData.js","../node_modules/lodash/_getNative.js","../node_modules/lodash/_getRawTag.js","../node_modules/lodash/_getSymbols.js","../node_modules/lodash/_getTag.js","../node_modules/lodash/_getValue.js","../node_modules/lodash/_hashClear.js","../node_modules/lodash/_hashDelete.js","../node_modules/lodash/_hashGet.js","../node_modules/lodash/_hashHas.js","../node_modules/lodash/_hashSet.js","../node_modules/lodash/_isIndex.js","../node_modules/lodash/_isKeyable.js","../node_modules/lodash/_isMasked.js","../node_modules/lodash/_isPrototype.js","../node_modules/lodash/_listCacheClear.js","../node_modules/lodash/_listCacheDelete.js","../node_modules/lodash/_listCacheGet.js","../node_modules/lodash/_listCacheHas.js","../node_modules/lodash/_listCacheSet.js","../node_modules/lodash/_mapCacheClear.js","../node_modules/lodash/_mapCacheDelete.js","../node_modules/lodash/_mapCacheGet.js","../node_modules/lodash/_mapCacheHas.js","../node_modules/lodash/_mapCacheSet.js","../node_modules/lodash/_mapToArray.js","../node_modules/lodash/_nativeCreate.js","../node_modules/lodash/_nativeKeys.js","../node_modules/lodash/_nodeUtil.js","../node_modules/lodash/_objectToString.js","../node_modules/lodash/_overArg.js","../node_modules/lodash/_root.js","../node_modules/lodash/_setCacheAdd.js","../node_modules/lodash/_setCacheHas.js","../node_modules/lodash/_setToArray.js","../node_modules/lodash/_stackClear.js","../node_modules/lodash/_stackDelete.js","../node_modules/lodash/_stackGet.js","../node_modules/lodash/_stackHas.js","../node_modules/lodash/_stackSet.js","../node_modules/lodash/_toSource.js","../node_modules/lodash/eq.js","../node_modules/lodash/isArguments.js","../node_modules/lodash/isArray.js","../node_modules/lodash/isArrayLike.js","../node_modules/lodash/isBuffer.js","../node_modules/lodash/isEqual.js","../node_modules/lodash/isFunction.js","../node_modules/lodash/isLength.js","../node_modules/lodash/isObject.js","../node_modules/lodash/isObjectLike.js","../node_modules/lodash/isTypedArray.js","../node_modules/lodash/keys.js","../node_modules/lodash/stubArray.js","../node_modules/lodash/stubFalse.js","../node_modules/mersenne-twister/src/mersenne-twister.js","../node_modules/minimalistic-assert/index.js","../node_modules/object-inspect/index.js","../node_modules/pify/index.js","../node_modules/preact/src/util.js","../node_modules/preact/src/options.js","../node_modules/preact/src/create-element.js","../node_modules/preact/src/component.js","../node_modules/preact/src/create-context.js","../node_modules/preact/src/constants.js","../node_modules/preact/src/diff/children.js","../node_modules/preact/src/diff/props.js","../node_modules/preact/src/diff/index.js","../node_modules/preact/src/render.js","../node_modules/preact/src/clone-element.js","../node_modules/preact/src/diff/catch-error.js","../node_modules/preact/hooks/src/index.js","../node_modules/qrcode/lib/browser.js","../node_modules/qrcode/lib/can-promise.js","../node_modules/qrcode/lib/core/alignment-pattern.js","../node_modules/qrcode/lib/core/alphanumeric-data.js","../node_modules/qrcode/lib/core/bit-buffer.js","../node_modules/qrcode/lib/core/bit-matrix.js","../node_modules/qrcode/lib/core/byte-data.js","../node_modules/qrcode/lib/core/error-correction-code.js","../node_modules/qrcode/lib/core/error-correction-level.js","../node_modules/qrcode/lib/core/finder-pattern.js","../node_modules/qrcode/lib/core/format-info.js","../node_modules/qrcode/lib/core/galois-field.js","../node_modules/qrcode/lib/core/kanji-data.js","../node_modules/qrcode/lib/core/mask-pattern.js","../node_modules/qrcode/lib/core/mode.js","../node_modules/qrcode/lib/core/numeric-data.js","../node_modules/qrcode/lib/core/polynomial.js","../node_modules/qrcode/lib/core/qrcode.js","../node_modules/qrcode/lib/core/reed-solomon-encoder.js","../node_modules/qrcode/lib/core/regex.js","../node_modules/qrcode/lib/core/segments.js","../node_modules/qrcode/lib/core/utils.js","../node_modules/qrcode/lib/core/version-check.js","../node_modules/qrcode/lib/core/version.js","../node_modules/qrcode/lib/renderer/canvas.js","../node_modules/qrcode/lib/renderer/svg-tag.js","../node_modules/qrcode/lib/renderer/utils.js","../node_modules/qrcode/lib/utils/typedarray-buffer.js","../node_modules/qrcode/node_modules/buffer/index.js","../node_modules/query-string/index.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/index.js","../../src/Jazzicon.tsx","../../src/Paper.tsx","../../src/colorUtils.ts","../../src/colors.ts","../../src/index.tsx","../../src/jsNumberForAddress.ts","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/readable-stream/errors-browser.js","../node_modules/readable-stream/lib/_stream_duplex.js","../node_modules/readable-stream/lib/_stream_passthrough.js","../node_modules/readable-stream/lib/_stream_readable.js","../node_modules/readable-stream/lib/_stream_transform.js","../node_modules/readable-stream/lib/_stream_writable.js","../node_modules/readable-stream/lib/internal/streams/async_iterator.js","../node_modules/readable-stream/lib/internal/streams/buffer_list.js","../node_modules/readable-stream/lib/internal/streams/destroy.js","../node_modules/readable-stream/lib/internal/streams/end-of-stream.js","../node_modules/readable-stream/lib/internal/streams/from-browser.js","../node_modules/readable-stream/lib/internal/streams/pipeline.js","../node_modules/readable-stream/lib/internal/streams/state.js","../node_modules/readable-stream/lib/internal/streams/stream-browser.js","../node_modules/readable-stream/readable-browser.js","../node_modules/rxjs/src/internal/scheduler/AnimationFrameAction.ts","../node_modules/rxjs/src/internal/scheduler/AnimationFrameScheduler.ts","../node_modules/rxjs/src/internal/scheduler/animationFrame.ts","../node_modules/rxjs/src/internal/scheduler/VirtualTimeScheduler.ts","../node_modules/rxjs/src/internal/util/isObservable.ts","../node_modules/rxjs/src/internal/observable/bindCallback.ts","../node_modules/rxjs/src/internal/observable/bindNodeCallback.ts","../node_modules/rxjs/src/internal/observable/forkJoin.ts","../node_modules/rxjs/src/internal/observable/fromEvent.ts","../node_modules/rxjs/src/internal/observable/fromEventPattern.ts","../node_modules/rxjs/src/internal/observable/generate.ts","../node_modules/rxjs/src/internal/observable/iif.ts","../node_modules/rxjs/src/internal/observable/interval.ts","../node_modules/rxjs/src/internal/observable/never.ts","../node_modules/rxjs/src/internal/observable/onErrorResumeNext.ts","../node_modules/rxjs/src/internal/observable/pairs.ts","../node_modules/rxjs/src/internal/observable/partition.ts","../node_modules/rxjs/src/internal/observable/range.ts","../node_modules/rxjs/src/internal/observable/using.ts","../node_modules/rxjs/src/internal/AsyncSubject.ts","../node_modules/rxjs/src/internal/BehaviorSubject.ts","../node_modules/rxjs/src/internal/Notification.ts","../node_modules/rxjs/src/internal/Observable.ts","../node_modules/rxjs/src/internal/util/toSubscriber.ts","../node_modules/rxjs/src/internal/Observer.ts","../node_modules/rxjs/src/internal/OuterSubscriber.ts","../node_modules/rxjs/src/internal/ReplaySubject.ts","../node_modules/rxjs/src/internal/Scheduler.ts","../node_modules/rxjs/src/internal/Subject.ts","../node_modules/rxjs/src/internal/SubjectSubscription.ts","../node_modules/rxjs/src/internal/Subscriber.ts","../node_modules/rxjs/src/internal/Subscription.ts","../node_modules/rxjs/src/internal/config.ts","../node_modules/rxjs/src/internal/innerSubscribe.ts","../node_modules/rxjs/src/internal/observable/ConnectableObservable.ts","../node_modules/rxjs/src/internal/observable/combineLatest.ts","../node_modules/rxjs/src/internal/observable/concat.ts","../node_modules/rxjs/src/internal/observable/defer.ts","../node_modules/rxjs/src/internal/observable/empty.ts","../node_modules/rxjs/src/internal/observable/from.ts","../node_modules/rxjs/src/internal/observable/fromArray.ts","../node_modules/rxjs/src/internal/observable/merge.ts","../node_modules/rxjs/src/internal/observable/of.ts","../node_modules/rxjs/src/internal/observable/race.ts","../node_modules/rxjs/src/internal/observable/throwError.ts","../node_modules/rxjs/src/internal/observable/timer.ts","../node_modules/rxjs/src/internal/observable/zip.ts","../node_modules/rxjs/src/internal/operators/concatAll.ts","../node_modules/rxjs/src/internal/operators/filter.ts","../node_modules/rxjs/src/internal/operators/groupBy.ts","../node_modules/rxjs/src/internal/operators/map.ts","../node_modules/rxjs/src/internal/operators/mergeAll.ts","../node_modules/rxjs/src/internal/operators/mergeMap.ts","../node_modules/rxjs/src/internal/operators/observeOn.ts","../node_modules/rxjs/src/internal/operators/refCount.ts","../node_modules/rxjs/src/internal/scheduled/scheduleArray.ts","../node_modules/rxjs/src/internal/scheduled/scheduled.ts","../node_modules/rxjs/src/internal/util/isInteropObservable.ts","../node_modules/rxjs/src/internal/scheduled/scheduleObservable.ts","../node_modules/rxjs/src/internal/scheduled/schedulePromise.ts","../node_modules/rxjs/src/internal/util/isIterable.ts","../node_modules/rxjs/src/internal/scheduled/scheduleIterable.ts","../node_modules/rxjs/src/internal/scheduler/AsyncAction.ts","../node_modules/rxjs/src/internal/scheduler/Action.ts","../node_modules/rxjs/src/internal/scheduler/AsyncScheduler.ts","../node_modules/rxjs/src/internal/util/Immediate.ts","../node_modules/rxjs/src/internal/scheduler/AsapAction.ts","../node_modules/rxjs/src/internal/scheduler/AsapScheduler.ts","../node_modules/rxjs/src/internal/scheduler/asap.ts","../node_modules/rxjs/src/internal/scheduler/async.ts","../node_modules/rxjs/src/internal/scheduler/QueueAction.ts","../node_modules/rxjs/src/internal/scheduler/QueueScheduler.ts","../node_modules/rxjs/src/internal/scheduler/queue.ts","../node_modules/rxjs/src/internal/symbol/iterator.ts","../node_modules/rxjs/src/internal/symbol/rxSubscriber.ts","../node_modules/rxjs/src/internal/util/ArgumentOutOfRangeError.ts","../node_modules/rxjs/src/internal/util/EmptyError.ts","../node_modules/rxjs/src/internal/util/ObjectUnsubscribedError.ts","../node_modules/rxjs/src/internal/util/TimeoutError.ts","../node_modules/rxjs/src/internal/util/UnsubscriptionError.ts","../node_modules/rxjs/src/internal/util/canReportError.ts","../node_modules/rxjs/src/internal/util/hostReportError.ts","../node_modules/rxjs/src/internal/util/identity.ts","../node_modules/rxjs/src/internal/util/isFunction.ts","../node_modules/rxjs/src/internal/util/isNumeric.ts","../node_modules/rxjs/src/internal/util/isObject.ts","../node_modules/rxjs/src/internal/util/isPromise.ts","../node_modules/rxjs/src/internal/util/isScheduler.ts","../node_modules/rxjs/src/internal/util/not.ts","../node_modules/rxjs/src/internal/util/pipe.ts","../node_modules/rxjs/src/internal/util/subscribeTo.ts","../node_modules/rxjs/src/internal/util/subscribeToObservable.ts","../node_modules/rxjs/src/internal/util/subscribeToPromise.ts","../node_modules/rxjs/src/internal/util/subscribeToIterable.ts","../node_modules/rxjs/src/internal/util/subscribeToArray.ts","../node_modules/rxjs/src/internal/InnerSubscriber.ts","../node_modules/rxjs/src/internal/util/subscribeToResult.ts","../node_modules/rxjs/src/internal/operators/audit.ts","../node_modules/rxjs/src/internal/operators/auditTime.ts","../node_modules/rxjs/src/internal/operators/buffer.ts","../node_modules/rxjs/src/internal/operators/bufferCount.ts","../node_modules/rxjs/src/internal/operators/bufferTime.ts","../node_modules/rxjs/src/internal/operators/bufferToggle.ts","../node_modules/rxjs/src/internal/operators/bufferWhen.ts","../node_modules/rxjs/src/internal/operators/catchError.ts","../node_modules/rxjs/src/internal/operators/combineAll.ts","../node_modules/rxjs/src/internal/operators/combineLatest.ts","../node_modules/rxjs/src/internal/operators/concat.ts","../node_modules/rxjs/src/internal/operators/concatMap.ts","../node_modules/rxjs/src/internal/operators/concatMapTo.ts","../node_modules/rxjs/src/internal/operators/count.ts","../node_modules/rxjs/src/internal/operators/debounce.ts","../node_modules/rxjs/src/internal/operators/debounceTime.ts","../node_modules/rxjs/src/internal/operators/defaultIfEmpty.ts","../node_modules/rxjs/src/internal/util/isDate.ts","../node_modules/rxjs/src/internal/operators/delay.ts","../node_modules/rxjs/src/internal/operators/delayWhen.ts","../node_modules/rxjs/src/internal/operators/dematerialize.ts","../node_modules/rxjs/src/internal/operators/distinct.ts","../node_modules/rxjs/src/internal/operators/distinctUntilChanged.ts","../node_modules/rxjs/src/internal/operators/distinctUntilKeyChanged.ts","../node_modules/rxjs/src/internal/operators/throwIfEmpty.ts","../node_modules/rxjs/src/internal/operators/take.ts","../node_modules/rxjs/src/internal/operators/elementAt.ts","../node_modules/rxjs/src/internal/operators/endWith.ts","../node_modules/rxjs/src/internal/operators/every.ts","../node_modules/rxjs/src/internal/operators/exhaust.ts","../node_modules/rxjs/src/internal/operators/exhaustMap.ts","../node_modules/rxjs/src/internal/operators/expand.ts","../node_modules/rxjs/src/internal/operators/finalize.ts","../node_modules/rxjs/src/internal/operators/find.ts","../node_modules/rxjs/src/internal/operators/findIndex.ts","../node_modules/rxjs/src/internal/operators/first.ts","../node_modules/rxjs/src/internal/operators/ignoreElements.ts","../node_modules/rxjs/src/internal/operators/isEmpty.ts","../node_modules/rxjs/src/internal/operators/takeLast.ts","../node_modules/rxjs/src/internal/operators/last.ts","../node_modules/rxjs/src/internal/operators/mapTo.ts","../node_modules/rxjs/src/internal/operators/materialize.ts","../node_modules/rxjs/src/internal/operators/scan.ts","../node_modules/rxjs/src/internal/operators/reduce.ts","../node_modules/rxjs/src/internal/operators/max.ts","../node_modules/rxjs/src/internal/operators/merge.ts","../node_modules/rxjs/src/internal/operators/mergeMapTo.ts","../node_modules/rxjs/src/internal/operators/mergeScan.ts","../node_modules/rxjs/src/internal/operators/min.ts","../node_modules/rxjs/src/internal/operators/multicast.ts","../node_modules/rxjs/src/internal/operators/onErrorResumeNext.ts","../node_modules/rxjs/src/internal/operators/pairwise.ts","../node_modules/rxjs/src/internal/operators/partition.ts","../node_modules/rxjs/src/internal/operators/pluck.ts","../node_modules/rxjs/src/internal/operators/publish.ts","../node_modules/rxjs/src/internal/operators/publishBehavior.ts","../node_modules/rxjs/src/internal/operators/publishLast.ts","../node_modules/rxjs/src/internal/operators/publishReplay.ts","../node_modules/rxjs/src/internal/operators/race.ts","../node_modules/rxjs/src/internal/operators/repeat.ts","../node_modules/rxjs/src/internal/operators/repeatWhen.ts","../node_modules/rxjs/src/internal/operators/retry.ts","../node_modules/rxjs/src/internal/operators/retryWhen.ts","../node_modules/rxjs/src/internal/operators/sample.ts","../node_modules/rxjs/src/internal/operators/sampleTime.ts","../node_modules/rxjs/src/internal/operators/sequenceEqual.ts","../node_modules/rxjs/src/internal/operators/share.ts","../node_modules/rxjs/src/internal/operators/shareReplay.ts","../node_modules/rxjs/src/internal/operators/single.ts","../node_modules/rxjs/src/internal/operators/skip.ts","../node_modules/rxjs/src/internal/operators/skipLast.ts","../node_modules/rxjs/src/internal/operators/skipUntil.ts","../node_modules/rxjs/src/internal/operators/skipWhile.ts","../node_modules/rxjs/src/internal/operators/startWith.ts","../node_modules/rxjs/src/internal/observable/SubscribeOnObservable.ts","../node_modules/rxjs/src/internal/operators/subscribeOn.ts","../node_modules/rxjs/src/internal/operators/switchMap.ts","../node_modules/rxjs/src/internal/operators/switchAll.ts","../node_modules/rxjs/src/internal/operators/switchMapTo.ts","../node_modules/rxjs/src/internal/operators/takeUntil.ts","../node_modules/rxjs/src/internal/operators/takeWhile.ts","../node_modules/rxjs/src/internal/operators/tap.ts","../node_modules/rxjs/src/internal/operators/throttle.ts","../node_modules/rxjs/src/internal/operators/throttleTime.ts","../node_modules/rxjs/src/internal/operators/timeInterval.ts","../node_modules/rxjs/src/internal/operators/timeoutWith.ts","../node_modules/rxjs/src/internal/operators/timeout.ts","../node_modules/rxjs/src/internal/operators/timestamp.ts","../node_modules/rxjs/src/internal/operators/toArray.ts","../node_modules/rxjs/src/internal/operators/window.ts","../node_modules/rxjs/src/internal/operators/windowCount.ts","../node_modules/rxjs/src/internal/operators/windowTime.ts","../node_modules/rxjs/src/internal/operators/windowToggle.ts","../node_modules/rxjs/src/internal/operators/windowWhen.ts","../node_modules/rxjs/src/internal/operators/withLatestFrom.ts","../node_modules/rxjs/src/internal/operators/zip.ts","../node_modules/rxjs/src/internal/operators/zipAll.ts","../node_modules/safe-buffer/index.js","../node_modules/safe-event-emitter/index.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/sha.js/hash.js","../node_modules/sha.js/index.js","../node_modules/sha.js/sha.js","../node_modules/sha.js/sha1.js","../node_modules/sha.js/sha224.js","../node_modules/sha.js/sha256.js","../node_modules/sha.js/sha384.js","../node_modules/sha.js/sha512.js","../node_modules/shallowequal/index.js","../node_modules/side-channel/index.js","../node_modules/split-on-first/index.js","../node_modules/strict-uri-encode/index.js","../node_modules/string_decoder/lib/string_decoder.js","../node_modules/toggle-selection/index.js","../node_modules/tslib/tslib.es6.js","../node_modules/typedarray-to-buffer/index.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js","../node_modules/use-sync-external-store/shim/index.js","../node_modules/use-sync-external-store/shim/with-selector.js","../node_modules/util-deprecate/browser.js","../node_modules/util/support/isBufferBrowser.js","../node_modules/util/support/types.js","../node_modules/util/util.js","../node_modules/which-typed-array/index.js","../node_modules/xtend/immutable.js","../node_modules/zustand/esm/vanilla.js","../node_modules/zustand/esm/index.js","../node_modules/@web3-react/coinbase-wallet/dist/index.js","../node_modules/@web3-react/core/dist/hooks.js","../node_modules/@web3-react/core/dist/index.js","../node_modules/@web3-react/core/dist/provider.js","../node_modules/@web3-react/metamask/dist/index.js","../node_modules/@web3-react/network/dist/index.js","../node_modules/@web3-react/network/dist/utils.js","../node_modules/@web3-react/store/dist/index.js","../node_modules/@web3-react/types/dist/index.js","../node_modules/@web3-react/walletconnect/dist/index.js","../node_modules/@web3-react/walletconnect/dist/utils.js","../node_modules/available-typed-arrays/index.js","../webpack/bootstrap","../webpack/runtime/amd options","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../node_modules/@remix-run/router/history.ts","../node_modules/@remix-run/router/utils.ts","../node_modules/@remix-run/router/router.ts","../node_modules/react-router/lib/use-sync-external-store-shim/useSyncExternalStoreShimClient.ts","../node_modules/react-router/lib/use-sync-external-store-shim/index.ts","../node_modules/react-router/lib/context.ts","../node_modules/react-router/lib/hooks.tsx","../node_modules/react-router/lib/components.tsx","../node_modules/react-router-dom/index.tsx","../node_modules/react-router-dom/dom.ts","utils/formatters.ts","hooks/useNativeBalance.tsx","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js","../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/rc-util/es/React/render.js","../node_modules/rc-util/es/Dom/canUseDom.js","../node_modules/rc-util/es/Dom/contains.js","../node_modules/rc-util/es/Dom/dynamicCSS.js","../node_modules/@emotion/hash/dist/hash.browser.esm.js","../node_modules/@emotion/unitless/dist/unitless.browser.esm.js","../node_modules/stylis/src/Enum.js","../node_modules/stylis/src/Utility.js","../node_modules/stylis/src/Serializer.js","../node_modules/stylis/src/Tokenizer.js","../node_modules/stylis/src/Parser.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@ant-design/cssinjs/es/Cache.js","../node_modules/@ant-design/cssinjs/es/StyleContext.js","../node_modules/@ant-design/cssinjs/es/hooks/useHMR.js","../node_modules/@ant-design/cssinjs/es/hooks/useGlobalCache.js","../node_modules/rc-util/es/warning.js","../node_modules/@ant-design/cssinjs/es/util.js","../node_modules/@ant-design/cssinjs/es/hooks/useStyleRegister.js","../node_modules/@ant-design/cssinjs/es/hooks/useCacheToken.js","../node_modules/@ant-design/cssinjs/es/Keyframes.js","../node_modules/@ant-design/cssinjs/es/theme/ThemeCache.js","../node_modules/@ant-design/cssinjs/es/theme/Theme.js","../node_modules/@ant-design/cssinjs/es/theme/createTheme.js","../node_modules/@ant-design/icons/es/components/Context.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/rc-util/es/Children/toArray.js","../node_modules/rc-field-form/es/FieldContext.js","../node_modules/rc-field-form/es/utils/typeUtil.js","../node_modules/src/util.ts","../node_modules/src/rule/required.ts","../node_modules/src/rule/url.ts","../node_modules/src/rule/type.ts","../node_modules/src/rule/index.ts","../node_modules/src/rule/whitespace.ts","../node_modules/src/rule/range.ts","../node_modules/src/rule/enum.ts","../node_modules/src/rule/pattern.ts","../node_modules/src/validator/type.ts","../node_modules/src/validator/index.ts","../node_modules/src/validator/string.ts","../node_modules/src/validator/method.ts","../node_modules/src/validator/number.ts","../node_modules/src/validator/boolean.ts","../node_modules/src/validator/regexp.ts","../node_modules/src/validator/integer.ts","../node_modules/src/validator/float.ts","../node_modules/src/validator/array.ts","../node_modules/src/validator/object.ts","../node_modules/src/validator/enum.ts","../node_modules/src/validator/pattern.ts","../node_modules/src/validator/date.ts","../node_modules/src/validator/required.ts","../node_modules/src/validator/any.ts","../node_modules/src/messages.ts","../node_modules/src/index.ts","../node_modules/rc-field-form/es/utils/messages.js","../node_modules/rc-util/es/utils/get.js","../node_modules/rc-util/es/utils/set.js","../node_modules/@babel/runtime/helpers/esm/toArray.js","../node_modules/rc-field-form/es/utils/cloneDeep.js","../node_modules/rc-field-form/es/utils/valueUtil.js","../node_modules/rc-field-form/es/utils/validateUtil.js","../node_modules/rc-field-form/es/Field.js","../node_modules/rc-field-form/es/ListContext.js","../node_modules/rc-field-form/es/List.js","../node_modules/rc-field-form/es/utils/NameMap.js","../node_modules/rc-field-form/es/useForm.js","../node_modules/rc-field-form/es/utils/asyncUtil.js","../node_modules/rc-field-form/es/FormContext.js","../node_modules/rc-field-form/es/Form.js","../node_modules/rc-field-form/es/useWatch.js","../node_modules/rc-field-form/es/index.js","../node_modules/rc-util/es/hooks/useMemo.js","../node_modules/rc-pagination/es/locale/en_US.js","../node_modules/antd/es/time-picker/locale/en_US.js","../node_modules/antd/es/date-picker/locale/en_US.js","../node_modules/rc-picker/es/locale/en_US.js","../node_modules/antd/es/locale/en_US.js","../node_modules/antd/es/modal/locale.js","../node_modules/antd/es/locale-provider/context.js","../node_modules/antd/es/locale-provider/index.js","../node_modules/antd/es/locale-provider/LocaleReceiver.js","../node_modules/@ctrl/tinycolor/dist/module/util.js","../node_modules/@ctrl/tinycolor/dist/module/conversion.js","../node_modules/@ctrl/tinycolor/dist/module/css-color-names.js","../node_modules/@ctrl/tinycolor/dist/module/format-input.js","../node_modules/@ant-design/colors/dist/index.esm.js","../node_modules/antd/es/theme/themes/shared/genControlHeight.js","../node_modules/antd/es/theme/themes/seed.js","../node_modules/@ctrl/tinycolor/dist/module/index.js","../node_modules/antd/es/theme/themes/shared/genRadius.js","../node_modules/antd/es/theme/themes/shared/genCommonMapToken.js","../node_modules/antd/es/theme/themes/shared/genFontSizes.js","../node_modules/antd/es/theme/themes/default/colorAlgorithm.js","../node_modules/antd/es/theme/themes/default/colors.js","../node_modules/antd/es/theme/util/getAlphaColor.js","../node_modules/antd/es/theme/util/alias.js","../node_modules/antd/es/theme/internal.js","../node_modules/antd/es/theme/themes/default/index.js","../node_modules/antd/es/theme/themes/shared/genColorMapToken.js","../node_modules/antd/es/theme/themes/shared/genSizeMapToken.js","../node_modules/antd/es/config-provider/context.js","../node_modules/antd/es/config-provider/cssVariables.js","../node_modules/antd/es/config-provider/DisabledContext.js","../node_modules/antd/es/config-provider/SizeContext.js","../node_modules/antd/es/config-provider/index.js","../node_modules/antd/es/style/index.js","../node_modules/antd/es/config-provider/style/index.js","../node_modules/antd/es/config-provider/hooks/useTheme.js","../node_modules/@ant-design/icons-svg/es/asn/LoadingOutlined.js","../node_modules/@ant-design/icons/es/utils.js","../node_modules/@ant-design/icons/es/components/IconBase.js","../node_modules/@ant-design/icons/es/components/twoTonePrimaryColor.js","../node_modules/@ant-design/icons/es/components/AntdIcon.js","../node_modules/@ant-design/icons/es/icons/LoadingOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/ExclamationCircleFilled.js","../node_modules/@ant-design/icons/es/icons/ExclamationCircleFilled.js","../node_modules/@ant-design/icons-svg/es/asn/CloseCircleFilled.js","../node_modules/@ant-design/icons/es/icons/CloseCircleFilled.js","../node_modules/@ant-design/icons-svg/es/asn/CheckCircleFilled.js","../node_modules/@ant-design/icons/es/icons/CheckCircleFilled.js","../node_modules/@ant-design/icons-svg/es/asn/InfoCircleFilled.js","../node_modules/@ant-design/icons/es/icons/InfoCircleFilled.js","../node_modules/rc-util/es/Dom/findDOMNode.js","../node_modules/rc-util/es/ref.js","../node_modules/rc-motion/es/util/motion.js","../node_modules/rc-motion/es/interface.js","../node_modules/rc-util/es/hooks/useState.js","../node_modules/rc-util/es/raf.js","../node_modules/rc-motion/es/hooks/useIsomorphicLayoutEffect.js","../node_modules/rc-motion/es/hooks/useStepQueue.js","../node_modules/rc-motion/es/hooks/useNextFrame.js","../node_modules/rc-motion/es/hooks/useStatus.js","../node_modules/rc-motion/es/hooks/useDomMotionEvents.js","../node_modules/rc-motion/es/DomWrapper.js","../node_modules/rc-motion/es/CSSMotion.js","../node_modules/rc-motion/es/util/diff.js","../node_modules/rc-motion/es/CSSMotionList.js","../node_modules/rc-motion/es/index.js","../node_modules/rc-notification/es/Notice.js","../node_modules/rc-notification/es/Notifications.js","../node_modules/rc-notification/es/useNotification.js","../node_modules/antd/es/theme/util/statistic.js","../node_modules/antd/es/theme/util/genComponentStyleHook.js","../node_modules/antd/es/message/style/index.js","../node_modules/antd/es/message/PurePanel.js","../node_modules/@ant-design/icons-svg/es/asn/CloseOutlined.js","../node_modules/@ant-design/icons/es/icons/CloseOutlined.js","../node_modules/antd/es/message/util.js","../node_modules/antd/es/message/useMessage.js","../node_modules/antd/es/message/index.js","../node_modules/@ethersproject/bignumber/src.ts/fixednumber.ts","../node_modules/@ethersproject/units/src.ts/index.ts","../node_modules/@ethersproject/units/src.ts/_version.ts","components/displayPane/components/TransferEth.jsx","components/displayPane/DisplayPane.tsx","../node_modules/rc-util/es/omit.js","../node_modules/antd/es/space/Compact.js","../node_modules/antd/es/_util/reactNode.js","../node_modules/antd/es/_util/type.js","../node_modules/antd/es/_util/raf.js","../node_modules/antd/es/_util/wave/style.js","../node_modules/antd/es/_util/wave/index.js","../node_modules/antd/es/button/button-group.js","../node_modules/antd/es/button/LoadingIcon.js","../node_modules/antd/es/button/style/group.js","../node_modules/antd/es/style/compact-item.js","../node_modules/antd/es/style/compact-item-vertical.js","../node_modules/antd/es/button/style/index.js","../node_modules/antd/es/button/button.js","../node_modules/antd/es/button/index.js","connectors/metaMask.ts","constants/networks.ts","connectors/walletConnect.ts","../node_modules/antd/es/skeleton/Element.js","../node_modules/antd/es/skeleton/style/index.js","../node_modules/antd/es/skeleton/Avatar.js","../node_modules/antd/es/skeleton/Button.js","../node_modules/@ant-design/icons-svg/es/asn/DotChartOutlined.js","../node_modules/@ant-design/icons/es/icons/DotChartOutlined.js","../node_modules/antd/es/skeleton/Node.js","../node_modules/antd/es/skeleton/Image.js","../node_modules/antd/es/skeleton/Input.js","../node_modules/antd/es/skeleton/Paragraph.js","../node_modules/antd/es/skeleton/Title.js","../node_modules/antd/es/skeleton/Skeleton.js","../node_modules/antd/es/skeleton/index.js","components/Jazzicons.tsx","../node_modules/antd/es/_util/ActionButton.js","../node_modules/rc-util/es/getScrollBarSize.js","../node_modules/antd/es/_util/motion.js","../node_modules/@rc-component/portal/es/Context.js","../node_modules/rc-util/es/hooks/useLayoutEffect.js","../node_modules/@rc-component/portal/es/useDom.js","../node_modules/@rc-component/portal/es/useScrollLocker.js","../node_modules/@rc-component/portal/es/util.js","../node_modules/@rc-component/portal/es/mock.js","../node_modules/@rc-component/portal/es/Portal.js","../node_modules/@rc-component/portal/es/index.js","../node_modules/rc-util/es/KeyCode.js","../node_modules/rc-util/es/hooks/useId.js","../node_modules/rc-util/es/pickAttrs.js","../node_modules/rc-dialog/es/Dialog/Mask.js","../node_modules/rc-dialog/es/util.js","../node_modules/rc-dialog/es/Dialog/Content/MemoChildren.js","../node_modules/rc-dialog/es/Dialog/Content/Panel.js","../node_modules/rc-dialog/es/Dialog/Content/index.js","../node_modules/rc-dialog/es/Dialog/index.js","../node_modules/rc-dialog/es/DialogWrap.js","../node_modules/rc-dialog/es/index.js","../node_modules/antd/es/form/context.js","../node_modules/antd/es/_util/styleChecker.js","../node_modules/antd/es/style/motion/motion.js","../node_modules/antd/es/style/motion/fade.js","../node_modules/antd/es/style/motion/zoom.js","../node_modules/antd/es/modal/style/index.js","../node_modules/antd/es/modal/PurePanel.js","../node_modules/antd/es/modal/Modal.js","../node_modules/antd/es/modal/ConfirmDialog.js","../node_modules/antd/es/modal/destroyFns.js","../node_modules/antd/es/modal/confirm.js","../node_modules/antd/es/modal/useModal/HookModal.js","../node_modules/antd/es/modal/useModal/index.js","../node_modules/antd/es/_util/hooks/usePatchElement.js","../node_modules/antd/es/modal/index.js","../node_modules/antd/es/divider/style/index.js","../node_modules/antd/es/divider/index.js","assets/svg/metamask_Logo.svg","assets/svg/walletconnect_Logo.svg","connectors/coinbaseWallet.ts","components/Account/ConnectButton.tsx","components/Account/ConnectModal.tsx","../node_modules/@ant-design/icons-svg/es/asn/SelectOutlined.js","../node_modules/@ant-design/icons/es/icons/SelectOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/EllipsisOutlined.js","../node_modules/@ant-design/icons/es/icons/EllipsisOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/PlusOutlined.js","../node_modules/@ant-design/icons/es/icons/PlusOutlined.js","../node_modules/rc-util/es/hooks/useMergedState.js","../node_modules/rc-util/es/isMobile.js","../node_modules/rc-util/es/hooks/useEvent.js","../node_modules/rc-tabs/es/TabContext.js","../node_modules/rc-tabs/es/TabPanelList/TabPane.js","../node_modules/rc-tabs/es/TabPanelList/index.js","../node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","../node_modules/rc-resize-observer/es/utils/observerUtil.js","../node_modules/rc-resize-observer/es/SingleObserver/DomWrapper.js","../node_modules/rc-resize-observer/es/Collection.js","../node_modules/rc-resize-observer/es/SingleObserver/index.js","../node_modules/rc-resize-observer/es/index.js","../node_modules/rc-tabs/es/hooks/useRaf.js","../node_modules/rc-tabs/es/TabNavList/TabNode.js","../node_modules/rc-tabs/es/hooks/useOffsets.js","../node_modules/rc-tabs/es/hooks/useVisibleRange.js","../node_modules/rc-overflow/es/Item.js","../node_modules/rc-overflow/es/RawItem.js","../node_modules/rc-overflow/es/Overflow.js","../node_modules/rc-overflow/es/hooks/useBatchFrameState.js","../node_modules/rc-overflow/es/index.js","../node_modules/rc-menu/es/context/MenuContext.js","../node_modules/rc-menu/es/hooks/useActive.js","../node_modules/rc-menu/es/utils/warnUtil.js","../node_modules/rc-menu/es/Icon.js","../node_modules/rc-menu/es/hooks/useDirectionStyle.js","../node_modules/rc-menu/es/context/PathContext.js","../node_modules/rc-menu/es/context/IdContext.js","../node_modules/rc-menu/es/context/PrivateContext.js","../node_modules/rc-menu/es/MenuItem.js","../node_modules/rc-menu/es/utils/nodeUtil.js","../node_modules/rc-menu/es/hooks/useMemoCallback.js","../node_modules/rc-menu/es/SubMenu/SubMenuList.js","../node_modules/rc-util/es/Dom/addEventListener.js","../node_modules/rc-util/es/Portal.js","../node_modules/rc-trigger/es/utils/alignUtil.js","../node_modules/rc-trigger/es/utils/legacyUtil.js","../node_modules/rc-trigger/es/Popup/Mask.js","../node_modules/rc-util/es/Dom/isVisible.js","../node_modules/src/propertyUtils.js","../node_modules/src/utils.js","../node_modules/src/getOffsetParent.js","../node_modules/src/isAncestorFixed.js","../node_modules/src/getVisibleRectForElement.js","../node_modules/src/getRegion.js","../node_modules/src/getAlignOffset.js","../node_modules/src/getElFuturePos.js","../node_modules/src/align/align.js","../node_modules/src/adjustForViewport.js","../node_modules/src/align/alignElement.js","../node_modules/rc-align/es/util.js","../node_modules/rc-align/es/Align.js","../node_modules/rc-align/es/hooks/useBuffer.js","../node_modules/src/align/alignPoint.js","../node_modules/rc-align/es/index.js","../node_modules/rc-trigger/es/Popup/useVisibleStatus.js","../node_modules/rc-trigger/es/Popup/PopupInner.js","../node_modules/rc-trigger/es/Popup/useStretchStyle.js","../node_modules/rc-trigger/es/Popup/MobilePopupInner.js","../node_modules/rc-trigger/es/Popup/index.js","../node_modules/rc-trigger/es/context.js","../node_modules/rc-trigger/es/index.js","../node_modules/rc-menu/es/placements.js","../node_modules/rc-menu/es/utils/motionUtil.js","../node_modules/rc-menu/es/SubMenu/PopupTrigger.js","../node_modules/rc-menu/es/SubMenu/InlineSubMenuList.js","../node_modules/rc-menu/es/SubMenu/index.js","../node_modules/rc-util/es/Dom/focus.js","../node_modules/rc-menu/es/hooks/useAccessibility.js","../node_modules/rc-menu/es/hooks/useUUID.js","../node_modules/rc-menu/es/hooks/useKeyRecords.js","../node_modules/rc-menu/es/utils/timeUtil.js","../node_modules/rc-menu/es/Menu.js","../node_modules/rc-menu/es/MenuItemGroup.js","../node_modules/rc-menu/es/Divider.js","../node_modules/rc-menu/es/index.js","../node_modules/rc-dropdown/es/placements.js","../node_modules/rc-dropdown/es/hooks/useAccessibility.js","../node_modules/rc-dropdown/es/Dropdown.js","../node_modules/rc-dropdown/es/index.js","../node_modules/rc-tabs/es/TabNavList/AddButton.js","../node_modules/rc-tabs/es/TabNavList/OperationNode.js","../node_modules/rc-tabs/es/hooks/useTouchMove.js","../node_modules/rc-tabs/es/hooks/useSyncState.js","../node_modules/rc-tabs/es/util.js","../node_modules/rc-tabs/es/TabNavList/ExtraContent.js","../node_modules/rc-tabs/es/TabNavList/index.js","../node_modules/rc-tabs/es/hooks/useRefs.js","../node_modules/rc-tabs/es/TabNavList/Wrapper.js","../node_modules/rc-tabs/es/Tabs.js","../node_modules/rc-tabs/es/hooks/useAnimateConfig.js","../node_modules/rc-tabs/es/index.js","../node_modules/antd/es/tabs/hooks/useAnimateConfig.js","../node_modules/antd/es/tabs/hooks/useLegacyItems.js","../node_modules/antd/es/tabs/TabPane.js","../node_modules/antd/es/style/motion/slide.js","../node_modules/antd/es/tabs/style/motion.js","../node_modules/antd/es/tabs/style/index.js","../node_modules/antd/es/tabs/index.js","../node_modules/antd/es/card/Grid.js","../node_modules/antd/es/card/style/index.js","../node_modules/antd/es/card/Card.js","../node_modules/antd/es/card/Meta.js","../node_modules/antd/es/card/index.js","components/Account/Address.tsx","components/Account/DisconnectModal.tsx","components/Account/ConnectAccount.tsx","assets/svg/bsc_Logo.svg","template/Nav.js","pages/Buy.jsx","template/Footer.js","pages/Home.jsx","pages/Terms.jsx","pages/Privacy.jsx","pages/Rules.jsx","pages/Cookie.jsx","App.jsx","connectors/network.ts","connectors/index.ts","index.tsx"],"sourcesContent":["\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CoinbaseWalletSDK = void 0;\nconst wallet_logo_1 = require(\"./assets/wallet-logo\");\nconst ScopedLocalStorage_1 = require(\"./lib/ScopedLocalStorage\");\nconst CoinbaseWalletProvider_1 = require(\"./provider/CoinbaseWalletProvider\");\nconst WalletSDKUI_1 = require(\"./provider/WalletSDKUI\");\nconst WalletSDKRelay_1 = require(\"./relay/WalletSDKRelay\");\nconst WalletSDKRelayEventManager_1 = require(\"./relay/WalletSDKRelayEventManager\");\nconst util_1 = require(\"./util\");\nconst LINK_API_URL = process.env.LINK_API_URL || \"https://www.walletlink.org\";\nconst SDK_VERSION = process.env.SDK_VERSION || require(\"../package.json\").version || \"unknown\";\nclass CoinbaseWalletSDK {\n /**\n * Constructor\n * @param options Coinbase Wallet SDK constructor options\n */\n constructor(options) {\n var _a, _b, _c;\n this._appName = \"\";\n this._appLogoUrl = null;\n this._relay = null;\n this._relayEventManager = null;\n const linkAPIUrl = options.linkAPIUrl || LINK_API_URL;\n let uiConstructor;\n if (!options.uiConstructor) {\n uiConstructor = opts => new WalletSDKUI_1.WalletSDKUI(opts);\n }\n else {\n uiConstructor = options.uiConstructor;\n }\n if (typeof options.overrideIsMetaMask === \"undefined\") {\n this._overrideIsMetaMask = false;\n }\n else {\n this._overrideIsMetaMask = options.overrideIsMetaMask;\n }\n this._overrideIsCoinbaseWallet = (_a = options.overrideIsCoinbaseWallet) !== null && _a !== void 0 ? _a : true;\n this._overrideIsCoinbaseBrowser =\n (_b = options.overrideIsCoinbaseBrowser) !== null && _b !== void 0 ? _b : false;\n if (options.diagnosticLogger && options.eventListener) {\n throw new Error(\"Can't have both eventListener and diagnosticLogger options, use only diagnosticLogger\");\n }\n if (options.eventListener) {\n this._diagnosticLogger = {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n log: options.eventListener.onEvent,\n };\n }\n else {\n this._diagnosticLogger = options.diagnosticLogger;\n }\n this._reloadOnDisconnect = (_c = options.reloadOnDisconnect) !== null && _c !== void 0 ? _c : true;\n const url = new URL(linkAPIUrl);\n const origin = `${url.protocol}//${url.host}`;\n this._storage = new ScopedLocalStorage_1.ScopedLocalStorage(`-walletlink:${origin}`); // needs migration to preserve local states\n this._storage.setItem(\"version\", CoinbaseWalletSDK.VERSION);\n if (this.walletExtension || this.coinbaseBrowser) {\n return;\n }\n this._relayEventManager = new WalletSDKRelayEventManager_1.WalletSDKRelayEventManager();\n this._relay = new WalletSDKRelay_1.WalletSDKRelay({\n linkAPIUrl,\n version: SDK_VERSION,\n darkMode: !!options.darkMode,\n uiConstructor,\n storage: this._storage,\n relayEventManager: this._relayEventManager,\n diagnosticLogger: this._diagnosticLogger,\n });\n this.setAppInfo(options.appName, options.appLogoUrl);\n if (!!options.headlessMode)\n return;\n this._relay.attachUI();\n }\n /**\n * Create a Web3 Provider object\n * @param jsonRpcUrl Ethereum JSON RPC URL (Default: \"\")\n * @param chainId Ethereum Chain ID (Default: 1)\n * @returns A Web3 Provider\n */\n makeWeb3Provider(jsonRpcUrl = \"\", chainId = 1) {\n const extension = this.walletExtension;\n if (extension) {\n if (!this.isCipherProvider(extension)) {\n extension.setProviderInfo(jsonRpcUrl, chainId);\n }\n if (this._reloadOnDisconnect === false &&\n typeof extension.disableReloadOnDisconnect === \"function\")\n extension.disableReloadOnDisconnect();\n return extension;\n }\n const dappBrowser = this.coinbaseBrowser;\n if (dappBrowser) {\n return dappBrowser;\n }\n const relay = this._relay;\n if (!relay || !this._relayEventManager || !this._storage) {\n throw new Error(\"Relay not initialized, should never happen\");\n }\n if (!jsonRpcUrl)\n relay.setConnectDisabled(true);\n return new CoinbaseWalletProvider_1.CoinbaseWalletProvider({\n relayProvider: () => Promise.resolve(relay),\n relayEventManager: this._relayEventManager,\n storage: this._storage,\n jsonRpcUrl,\n chainId,\n qrUrl: this.getQrUrl(),\n diagnosticLogger: this._diagnosticLogger,\n overrideIsMetaMask: this._overrideIsMetaMask,\n overrideIsCoinbaseWallet: this._overrideIsCoinbaseWallet,\n overrideIsCoinbaseBrowser: this._overrideIsCoinbaseBrowser,\n });\n }\n /**\n * Set application information\n * @param appName Application name\n * @param appLogoUrl Application logo image URL\n */\n setAppInfo(appName, appLogoUrl) {\n var _a;\n this._appName = appName || \"DApp\";\n this._appLogoUrl = appLogoUrl || (0, util_1.getFavicon)();\n const extension = this.walletExtension;\n if (extension) {\n if (!this.isCipherProvider(extension)) {\n extension.setAppInfo(this._appName, this._appLogoUrl);\n }\n }\n else {\n (_a = this._relay) === null || _a === void 0 ? void 0 : _a.setAppInfo(this._appName, this._appLogoUrl);\n }\n }\n /**\n * Disconnect. After disconnecting, this will reload the web page to ensure\n * all potential stale state is cleared.\n */\n disconnect() {\n var _a;\n const extension = this.walletExtension;\n if (extension) {\n void extension.close();\n }\n else {\n (_a = this._relay) === null || _a === void 0 ? void 0 : _a.resetAndReload();\n }\n }\n /**\n * Return QR URL for mobile wallet connection, will return null if extension is installed\n */\n getQrUrl() {\n var _a, _b;\n return (_b = (_a = this._relay) === null || _a === void 0 ? void 0 : _a.getQRCodeUrl()) !== null && _b !== void 0 ? _b : null;\n }\n /**\n * Official Coinbase Wallet logo for developers to use on their frontend\n * @param type Type of wallet logo: \"standard\" | \"circle\" | \"text\" | \"textWithLogo\" | \"textLight\" | \"textWithLogoLight\"\n * @param width Width of the logo (Optional)\n * @returns SVG Data URI\n */\n getCoinbaseWalletLogo(type, width = 240) {\n return (0, wallet_logo_1.walletLogo)(type, width);\n }\n get walletExtension() {\n var _a;\n return (_a = window.coinbaseWalletExtension) !== null && _a !== void 0 ? _a : window.walletLinkExtension;\n }\n get coinbaseBrowser() {\n var _a, _b;\n try {\n // Coinbase DApp browser does not inject into iframes so grab provider from top frame if it exists\n const ethereum = ((_a = window.ethereum) !== null && _a !== void 0 ? _a : (_b = window.top) === null || _b === void 0 ? void 0 : _b.ethereum);\n if (!ethereum) {\n return undefined;\n }\n if (\"isCoinbaseBrowser\" in ethereum && ethereum.isCoinbaseBrowser) {\n return ethereum;\n }\n else {\n return undefined;\n }\n }\n catch (e) {\n return undefined;\n }\n }\n isCipherProvider(provider) {\n // @ts-expect-error isCipher walletlink property\n return typeof provider.isCipher === \"boolean\" && provider.isCipher;\n }\n}\nexports.CoinbaseWalletSDK = CoinbaseWalletSDK;\nCoinbaseWalletSDK.VERSION = SDK_VERSION;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.walletLogo = void 0;\nconst walletLogo = (type, width) => {\n let height;\n switch (type) {\n case \"standard\":\n height = width;\n return `data:image/svg+xml,%3Csvg width='${width}' height='${height}' viewBox='0 0 1024 1024' fill='none' xmlns='http://www.w3.org/2000/svg'%3E %3Crect width='1024' height='1024' fill='%230052FF'/%3E %3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M152 512C152 710.823 313.177 872 512 872C710.823 872 872 710.823 872 512C872 313.177 710.823 152 512 152C313.177 152 152 313.177 152 512ZM420 396C406.745 396 396 406.745 396 420V604C396 617.255 406.745 628 420 628H604C617.255 628 628 617.255 628 604V420C628 406.745 617.255 396 604 396H420Z' fill='white'/%3E %3C/svg%3E `;\n case \"circle\":\n height = width;\n return `data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='${width}' height='${height}' viewBox='0 0 999.81 999.81'%3E%3Cdefs%3E%3Cstyle%3E.cls-1%7Bfill:%230052fe;%7D.cls-2%7Bfill:%23fefefe;%7D.cls-3%7Bfill:%230152fe;%7D%3C/style%3E%3C/defs%3E%3Cpath class='cls-1' d='M655-115.9h56c.83,1.59,2.36.88,3.56,1a478,478,0,0,1,75.06,10.42C891.4-81.76,978.33-32.58,1049.19,44q116.7,126,131.94,297.61c.38,4.14-.34,8.53,1.78,12.45v59c-1.58.84-.91,2.35-1,3.56a482.05,482.05,0,0,1-10.38,74.05c-24,106.72-76.64,196.76-158.83,268.93s-178.18,112.82-287.2,122.6c-4.83.43-9.86-.25-14.51,1.77H654c-1-1.68-2.69-.91-4.06-1a496.89,496.89,0,0,1-105.9-18.59c-93.54-27.42-172.78-77.59-236.91-150.94Q199.34,590.1,184.87,426.58c-.47-5.19.25-10.56-1.77-15.59V355c1.68-1,.91-2.7,1-4.06a498.12,498.12,0,0,1,18.58-105.9c26-88.75,72.64-164.9,140.6-227.57q126-116.27,297.21-131.61C645.32-114.57,650.35-113.88,655-115.9Zm377.92,500c0-192.44-156.31-349.49-347.56-350.15-194.13-.68-350.94,155.13-352.29,347.42-1.37,194.55,155.51,352.1,348.56,352.47C876.15,734.23,1032.93,577.84,1032.93,384.11Z' transform='translate(-183.1 115.9)'/%3E%3Cpath class='cls-2' d='M1032.93,384.11c0,193.73-156.78,350.12-351.29,349.74-193-.37-349.93-157.92-348.56-352.47C334.43,189.09,491.24,33.28,685.37,34,876.62,34.62,1032.94,191.67,1032.93,384.11ZM683,496.81q43.74,0,87.48,0c15.55,0,25.32-9.72,25.33-25.21q0-87.48,0-175c0-15.83-9.68-25.46-25.59-25.46H595.77c-15.88,0-25.57,9.64-25.58,25.46q0,87.23,0,174.45c0,16.18,9.59,25.7,25.84,25.71Z' transform='translate(-183.1 115.9)'/%3E%3Cpath class='cls-3' d='M683,496.81H596c-16.25,0-25.84-9.53-25.84-25.71q0-87.23,0-174.45c0-15.82,9.7-25.46,25.58-25.46H770.22c15.91,0,25.59,9.63,25.59,25.46q0,87.47,0,175c0,15.49-9.78,25.2-25.33,25.21Q726.74,496.84,683,496.81Z' transform='translate(-183.1 115.9)'/%3E%3C/svg%3E`;\n case \"text\":\n height = (0.1 * width).toFixed(2);\n return `data:image/svg+xml,%3Csvg width='${width}' height='${height}' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 528.15 53.64'%3E%3Cdefs%3E%3Cstyle%3E.cls-1%7Bfill:%230052ff;%7D%3C/style%3E%3C/defs%3E%3Ctitle%3ECoinbase_Wordmark_SubBrands_ALL%3C/title%3E%3Cpath class='cls-1' d='M164.45,15a15,15,0,0,0-11.74,5.4V0h-8.64V52.92h8.5V48a15,15,0,0,0,11.88,5.62c10.37,0,18.21-8.21,18.21-19.3S174.67,15,164.45,15Zm-1.3,30.67c-6.19,0-10.73-4.83-10.73-11.31S157,23,163.22,23s10.66,4.82,10.66,11.37S169.34,45.65,163.15,45.65Zm83.31-14.91-6.34-.93c-3-.43-5.18-1.44-5.18-3.82,0-2.59,2.8-3.89,6.62-3.89,4.18,0,6.84,1.8,7.42,4.76h8.35c-.94-7.49-6.7-11.88-15.55-11.88-9.15,0-15.2,4.68-15.2,11.3,0,6.34,4,10,12,11.16l6.33.94c3.1.43,4.83,1.65,4.83,4,0,2.95-3,4.17-7.2,4.17-5.12,0-8-2.09-8.43-5.25h-8.49c.79,7.27,6.48,12.38,16.84,12.38,9.44,0,15.7-4.32,15.7-11.74C258.12,35.28,253.58,31.82,246.46,30.74Zm-27.65-2.3c0-8.06-4.9-13.46-15.27-13.46-9.79,0-15.26,5-16.34,12.6h8.57c.43-3,2.73-5.4,7.63-5.4,4.39,0,6.55,1.94,6.55,4.32,0,3.09-4,3.88-8.85,4.39-6.63.72-14.84,3-14.84,11.66,0,6.7,5,11,12.89,11,6.19,0,10.08-2.59,12-6.7.28,3.67,3,6.05,6.84,6.05h5v-7.7h-4.25Zm-8.5,9.36c0,5-4.32,8.64-9.57,8.64-3.24,0-6-1.37-6-4.25,0-3.67,4.39-4.68,8.42-5.11s6-1.22,7.13-2.88ZM281.09,15c-11.09,0-19.23,8.35-19.23,19.36,0,11.6,8.72,19.3,19.37,19.3,9,0,16.06-5.33,17.86-12.89h-9c-1.3,3.31-4.47,5.19-8.71,5.19-5.55,0-9.72-3.46-10.66-9.51H299.3V33.12C299.3,22.46,291.53,15,281.09,15Zm-9.87,15.26c1.37-5.18,5.26-7.7,9.72-7.7,4.9,0,8.64,2.8,9.51,7.7ZM19.3,23a9.84,9.84,0,0,1,9.5,7h9.14c-1.65-8.93-9-15-18.57-15A19,19,0,0,0,0,34.34c0,11.09,8.28,19.3,19.37,19.3,9.36,0,16.85-6,18.5-15H28.8a9.75,9.75,0,0,1-9.43,7.06c-6.27,0-10.66-4.83-10.66-11.31S13,23,19.3,23Zm41.11-8A19,19,0,0,0,41,34.34c0,11.09,8.28,19.3,19.37,19.3A19,19,0,0,0,79.92,34.27C79.92,23.33,71.64,15,60.41,15Zm.07,30.67c-6.19,0-10.73-4.83-10.73-11.31S54.22,23,60.41,23s10.8,4.89,10.8,11.37S66.67,45.65,60.48,45.65ZM123.41,15c-5.62,0-9.29,2.3-11.45,5.54V15.7h-8.57V52.92H112V32.69C112,27,115.63,23,121,23c5,0,8.06,3.53,8.06,8.64V52.92h8.64V31C137.66,21.6,132.84,15,123.41,15ZM92,.36a5.36,5.36,0,0,0-5.55,5.47,5.55,5.55,0,0,0,11.09,0A5.35,5.35,0,0,0,92,.36Zm-9.72,23h5.4V52.92h8.64V15.7h-14Zm298.17-7.7L366.2,52.92H372L375.29,44H392l3.33,8.88h6L386.87,15.7ZM377,39.23l6.45-17.56h.1l6.56,17.56ZM362.66,15.7l-7.88,29h-.11l-8.14-29H341l-8,28.93h-.1l-8-28.87H319L329.82,53h5.45l8.19-29.24h.11L352,53h5.66L368.1,15.7Zm135.25,0v4.86h12.32V52.92h5.6V20.56h12.32V15.7ZM467.82,52.92h25.54V48.06H473.43v-12h18.35V31.35H473.43V20.56h19.93V15.7H467.82ZM443,15.7h-5.6V52.92h24.32V48.06H443Zm-30.45,0h-5.61V52.92h24.32V48.06H412.52Z'/%3E%3C/svg%3E`;\n case \"textWithLogo\":\n height = (0.25 * width).toFixed(2);\n return `data:image/svg+xml,%3Csvg width='${width}' height='${height}' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 308.44 77.61'%3E%3Cdefs%3E%3Cstyle%3E.cls-1%7Bfill:%230052ff;%7D%3C/style%3E%3C/defs%3E%3Cpath class='cls-1' d='M142.94,20.2l-7.88,29H135l-8.15-29h-5.55l-8,28.93h-.11l-8-28.87H99.27l10.84,37.27h5.44l8.2-29.24h.1l8.41,29.24h5.66L148.39,20.2Zm17.82,0L146.48,57.42h5.82l3.28-8.88h16.65l3.34,8.88h6L167.16,20.2Zm-3.44,23.52,6.45-17.55h.11l6.56,17.55ZM278.2,20.2v4.86h12.32V57.42h5.6V25.06h12.32V20.2ZM248.11,57.42h25.54V52.55H253.71V40.61h18.35V35.85H253.71V25.06h19.94V20.2H248.11ZM223.26,20.2h-5.61V57.42H242V52.55H223.26Zm-30.46,0h-5.6V57.42h24.32V52.55H192.8Zm-154,38A19.41,19.41,0,1,1,57.92,35.57H77.47a38.81,38.81,0,1,0,0,6.47H57.92A19.39,19.39,0,0,1,38.81,58.21Z'/%3E%3C/svg%3E`;\n case \"textLight\":\n height = (0.1 * width).toFixed(2);\n return `data:image/svg+xml,%3Csvg width='${width}' height='${height}' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 528.15 53.64'%3E%3Cdefs%3E%3Cstyle%3E.cls-1%7Bfill:%23fefefe;%7D%3C/style%3E%3C/defs%3E%3Ctitle%3ECoinbase_Wordmark_SubBrands_ALL%3C/title%3E%3Cpath class='cls-1' d='M164.45,15a15,15,0,0,0-11.74,5.4V0h-8.64V52.92h8.5V48a15,15,0,0,0,11.88,5.62c10.37,0,18.21-8.21,18.21-19.3S174.67,15,164.45,15Zm-1.3,30.67c-6.19,0-10.73-4.83-10.73-11.31S157,23,163.22,23s10.66,4.82,10.66,11.37S169.34,45.65,163.15,45.65Zm83.31-14.91-6.34-.93c-3-.43-5.18-1.44-5.18-3.82,0-2.59,2.8-3.89,6.62-3.89,4.18,0,6.84,1.8,7.42,4.76h8.35c-.94-7.49-6.7-11.88-15.55-11.88-9.15,0-15.2,4.68-15.2,11.3,0,6.34,4,10,12,11.16l6.33.94c3.1.43,4.83,1.65,4.83,4,0,2.95-3,4.17-7.2,4.17-5.12,0-8-2.09-8.43-5.25h-8.49c.79,7.27,6.48,12.38,16.84,12.38,9.44,0,15.7-4.32,15.7-11.74C258.12,35.28,253.58,31.82,246.46,30.74Zm-27.65-2.3c0-8.06-4.9-13.46-15.27-13.46-9.79,0-15.26,5-16.34,12.6h8.57c.43-3,2.73-5.4,7.63-5.4,4.39,0,6.55,1.94,6.55,4.32,0,3.09-4,3.88-8.85,4.39-6.63.72-14.84,3-14.84,11.66,0,6.7,5,11,12.89,11,6.19,0,10.08-2.59,12-6.7.28,3.67,3,6.05,6.84,6.05h5v-7.7h-4.25Zm-8.5,9.36c0,5-4.32,8.64-9.57,8.64-3.24,0-6-1.37-6-4.25,0-3.67,4.39-4.68,8.42-5.11s6-1.22,7.13-2.88ZM281.09,15c-11.09,0-19.23,8.35-19.23,19.36,0,11.6,8.72,19.3,19.37,19.3,9,0,16.06-5.33,17.86-12.89h-9c-1.3,3.31-4.47,5.19-8.71,5.19-5.55,0-9.72-3.46-10.66-9.51H299.3V33.12C299.3,22.46,291.53,15,281.09,15Zm-9.87,15.26c1.37-5.18,5.26-7.7,9.72-7.7,4.9,0,8.64,2.8,9.51,7.7ZM19.3,23a9.84,9.84,0,0,1,9.5,7h9.14c-1.65-8.93-9-15-18.57-15A19,19,0,0,0,0,34.34c0,11.09,8.28,19.3,19.37,19.3,9.36,0,16.85-6,18.5-15H28.8a9.75,9.75,0,0,1-9.43,7.06c-6.27,0-10.66-4.83-10.66-11.31S13,23,19.3,23Zm41.11-8A19,19,0,0,0,41,34.34c0,11.09,8.28,19.3,19.37,19.3A19,19,0,0,0,79.92,34.27C79.92,23.33,71.64,15,60.41,15Zm.07,30.67c-6.19,0-10.73-4.83-10.73-11.31S54.22,23,60.41,23s10.8,4.89,10.8,11.37S66.67,45.65,60.48,45.65ZM123.41,15c-5.62,0-9.29,2.3-11.45,5.54V15.7h-8.57V52.92H112V32.69C112,27,115.63,23,121,23c5,0,8.06,3.53,8.06,8.64V52.92h8.64V31C137.66,21.6,132.84,15,123.41,15ZM92,.36a5.36,5.36,0,0,0-5.55,5.47,5.55,5.55,0,0,0,11.09,0A5.35,5.35,0,0,0,92,.36Zm-9.72,23h5.4V52.92h8.64V15.7h-14Zm298.17-7.7L366.2,52.92H372L375.29,44H392l3.33,8.88h6L386.87,15.7ZM377,39.23l6.45-17.56h.1l6.56,17.56ZM362.66,15.7l-7.88,29h-.11l-8.14-29H341l-8,28.93h-.1l-8-28.87H319L329.82,53h5.45l8.19-29.24h.11L352,53h5.66L368.1,15.7Zm135.25,0v4.86h12.32V52.92h5.6V20.56h12.32V15.7ZM467.82,52.92h25.54V48.06H473.43v-12h18.35V31.35H473.43V20.56h19.93V15.7H467.82ZM443,15.7h-5.6V52.92h24.32V48.06H443Zm-30.45,0h-5.61V52.92h24.32V48.06H412.52Z'/%3E%3C/svg%3E`;\n case \"textWithLogoLight\":\n height = (0.25 * width).toFixed(2);\n return `data:image/svg+xml,%3Csvg width='${width}' height='${height}' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 308.44 77.61'%3E%3Cdefs%3E%3Cstyle%3E.cls-1%7Bfill:%23fefefe;%7D%3C/style%3E%3C/defs%3E%3Cpath class='cls-1' d='M142.94,20.2l-7.88,29H135l-8.15-29h-5.55l-8,28.93h-.11l-8-28.87H99.27l10.84,37.27h5.44l8.2-29.24h.1l8.41,29.24h5.66L148.39,20.2Zm17.82,0L146.48,57.42h5.82l3.28-8.88h16.65l3.34,8.88h6L167.16,20.2Zm-3.44,23.52,6.45-17.55h.11l6.56,17.55ZM278.2,20.2v4.86h12.32V57.42h5.6V25.06h12.32V20.2ZM248.11,57.42h25.54V52.55H253.71V40.61h18.35V35.85H253.71V25.06h19.94V20.2H248.11ZM223.26,20.2h-5.61V57.42H242V52.55H223.26Zm-30.46,0h-5.6V57.42h24.32V52.55H192.8Zm-154,38A19.41,19.41,0,1,1,57.92,35.57H77.47a38.81,38.81,0,1,0,0,6.47H57.92A19.39,19.39,0,0,1,38.81,58.21Z'/%3E%3C/svg%3E`;\n default:\n height = width;\n return `data:image/svg+xml,%3Csvg width='${width}' height='${height}' viewBox='0 0 1024 1024' fill='none' xmlns='http://www.w3.org/2000/svg'%3E %3Crect width='1024' height='1024' fill='%230052FF'/%3E %3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M152 512C152 710.823 313.177 872 512 872C710.823 872 872 710.823 872 512C872 313.177 710.823 152 512 152C313.177 152 152 313.177 152 512ZM420 396C406.745 396 396 406.745 396 420V604C396 617.255 406.745 628 420 628H604C617.255 628 628 617.255 628 604V420C628 406.745 617.255 396 604 396H420Z' fill='white'/%3E %3C/svg%3E `;\n }\n};\nexports.walletLogo = walletLogo;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = `.-cbwsdk-css-reset .-cbwsdk-connect-content{height:430px;width:700px;border-radius:12px;padding:30px}.-cbwsdk-css-reset .-cbwsdk-connect-content.light{background:#fff}.-cbwsdk-css-reset .-cbwsdk-connect-content.dark{background:#0a0b0d}.-cbwsdk-css-reset .-cbwsdk-connect-content-header{display:flex;align-items:center;justify-content:space-between;margin:0 0 30px}.-cbwsdk-css-reset .-cbwsdk-connect-content-heading{font-style:normal;font-weight:500;font-size:28px;line-height:36px;margin:0}.-cbwsdk-css-reset .-cbwsdk-connect-content-heading.light{color:#0a0b0d}.-cbwsdk-css-reset .-cbwsdk-connect-content-heading.dark{color:#fff}.-cbwsdk-css-reset .-cbwsdk-connect-content-layout{display:flex;flex-direction:row}.-cbwsdk-css-reset .-cbwsdk-connect-content-column-left{margin-right:30px;display:flex;flex-direction:column;justify-content:space-between}.-cbwsdk-css-reset .-cbwsdk-connect-content-column-right{flex:25%;margin-right:34px}.-cbwsdk-css-reset .-cbwsdk-connect-content-qr-wrapper{width:220px;height:220px;border-radius:12px;display:flex;justify-content:center;align-items:center;background:#fff}.-cbwsdk-css-reset .-cbwsdk-connect-content-qr-connecting{position:absolute;top:0;bottom:0;left:0;right:0;display:flex;flex-direction:column;align-items:center;justify-content:center}.-cbwsdk-css-reset .-cbwsdk-connect-content-qr-connecting.light{background-color:rgba(255,255,255,.95)}.-cbwsdk-css-reset .-cbwsdk-connect-content-qr-connecting.light>p{color:#0a0b0d}.-cbwsdk-css-reset .-cbwsdk-connect-content-qr-connecting.dark{background-color:rgba(10,11,13,.9)}.-cbwsdk-css-reset .-cbwsdk-connect-content-qr-connecting.dark>p{color:#fff}.-cbwsdk-css-reset .-cbwsdk-connect-content-qr-connecting>p{font-size:12px;font-weight:bold;margin-top:16px}.-cbwsdk-css-reset .-cbwsdk-connect-content-update-app{border-radius:8px;font-size:14px;line-height:20px;padding:12px;width:339px}.-cbwsdk-css-reset .-cbwsdk-connect-content-update-app.light{background:#eef0f3;color:#5b636e}.-cbwsdk-css-reset .-cbwsdk-connect-content-update-app.dark{background:#1e2025;color:#8a919e}.-cbwsdk-css-reset .-cbwsdk-cancel-button{-webkit-appearance:none;border:none;background:none;cursor:pointer;padding:0;margin:0}.-cbwsdk-css-reset .-cbwsdk-cancel-button-x{position:relative;display:block;cursor:pointer}.-cbwsdk-css-reset .-cbwsdk-wallet-steps{padding:0 0 0 16px;margin:0;width:100%;list-style:decimal}.-cbwsdk-css-reset .-cbwsdk-wallet-steps-item{list-style-type:decimal;display:list-item;font-style:normal;font-weight:400;font-size:16px;line-height:24px;margin-top:20px}.-cbwsdk-css-reset .-cbwsdk-wallet-steps-item.light{color:#0a0b0d}.-cbwsdk-css-reset .-cbwsdk-wallet-steps-item.dark{color:#fff}.-cbwsdk-css-reset .-cbwsdk-wallet-steps-item-wrapper{display:flex;align-items:center}.-cbwsdk-css-reset .-cbwsdk-wallet-steps-pad-left{margin-left:6px}.-cbwsdk-css-reset .-cbwsdk-wallet-steps-icon{display:flex;border-radius:50%;height:24px;width:24px}.-cbwsdk-css-reset .-cbwsdk-wallet-steps-icon svg{margin:auto;display:block}.-cbwsdk-css-reset .-cbwsdk-wallet-steps-icon.light{background:#0052ff}.-cbwsdk-css-reset .-cbwsdk-wallet-steps-icon.dark{background:#588af5}.-cbwsdk-css-reset .-cbwsdk-connect-item{align-items:center;display:flex;flex-direction:row;padding:16px 24px;gap:12px;cursor:pointer}.-cbwsdk-css-reset .-cbwsdk-connect-item.light{color:#0a0b0d}.-cbwsdk-css-reset .-cbwsdk-connect-item.light.selected{background:#f5f8ff;color:#0052ff}.-cbwsdk-css-reset .-cbwsdk-connect-item.dark{color:#fff}.-cbwsdk-css-reset .-cbwsdk-connect-item.dark.selected{background:#001033;color:#588af5}.-cbwsdk-css-reset .-cbwsdk-connect-item.selected{border-radius:100px;font-weight:600}.-cbwsdk-css-reset .-cbwsdk-connect-item-copy-wrapper{margin:0 4px 0 8px}.-cbwsdk-css-reset .-cbwsdk-connect-item-title{margin:0 0 0;font-size:16px;line-height:24px;font-weight:500}.-cbwsdk-css-reset .-cbwsdk-connect-item-description{font-weight:400;font-size:14px;line-height:20px;margin:0}`;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CoinbaseAppSteps = exports.CoinbaseWalletSteps = exports.ConnectItem = exports.ConnectContent = void 0;\nconst clsx_1 = __importDefault(require(\"clsx\"));\nconst preact_1 = require(\"preact\");\nconst hooks_1 = require(\"preact/hooks\");\nconst util_1 = require(\"../../util\");\nconst version_1 = require(\"../../version\");\nconst CloseIcon_1 = require(\"../icons/CloseIcon\");\nconst coinbase_round_svg_1 = __importDefault(require(\"../icons/coinbase-round-svg\"));\nconst coinbase_wallet_round_svg_1 = __importDefault(require(\"../icons/coinbase-wallet-round-svg\"));\nconst QRCodeIcon_1 = require(\"../icons/QRCodeIcon\");\nconst QRLogoCoinbase_1 = __importDefault(require(\"../icons/QRLogoCoinbase\"));\nconst QRLogoWallet_1 = __importDefault(require(\"../icons/QRLogoWallet\"));\nconst StatusDotIcon_1 = require(\"../icons/StatusDotIcon\");\nconst QRCode_1 = require(\"../QRCode\");\nconst Spinner_1 = require(\"../Spinner/Spinner\");\nconst ConnectContent_css_1 = __importDefault(require(\"./ConnectContent-css\"));\nconst wallets = {\n \"coinbase-wallet-app\": {\n title: \"Coinbase Wallet app\",\n description: \"Connect with your self-custody wallet\",\n icon: coinbase_wallet_round_svg_1.default,\n steps: CoinbaseWalletSteps,\n },\n \"coinbase-app\": {\n title: \"Coinbase app\",\n description: \"Connect with your Coinbase account\",\n icon: coinbase_round_svg_1.default,\n steps: CoinbaseAppSteps,\n },\n};\nconst makeQrCodeImage = (app) => {\n switch (app) {\n case \"coinbase-app\":\n return QRLogoCoinbase_1.default;\n case \"coinbase-wallet-app\":\n default:\n return QRLogoWallet_1.default;\n }\n};\nconst makeIconColor = (theme) => {\n return theme === \"light\" ? \"#FFFFFF\" : \"#0A0B0D\";\n};\nfunction ConnectContent(props) {\n const { theme } = props;\n const [selected, setSelected] = (0, hooks_1.useState)(\"coinbase-wallet-app\");\n const handleSelect = (0, hooks_1.useCallback)((id) => {\n setSelected(id);\n }, []);\n const qrUrl = (0, util_1.createQrUrl)(props.sessionId, props.sessionSecret, props.linkAPIUrl, props.isParentConnection, props.version, props.chainId);\n const wallet = wallets[selected];\n if (!selected) {\n return null;\n }\n const WalletSteps = wallet.steps;\n const coinbaseApp = selected === \"coinbase-app\";\n return ((0, preact_1.h)(\"div\", { \"data-testid\": \"connect-content\", class: (0, clsx_1.default)(\"-cbwsdk-connect-content\", theme) },\n (0, preact_1.h)(\"style\", null, ConnectContent_css_1.default),\n (0, preact_1.h)(\"div\", { class: \"-cbwsdk-connect-content-header\" },\n (0, preact_1.h)(\"h2\", { class: (0, clsx_1.default)(\"-cbwsdk-connect-content-heading\", theme) }, \"Scan to connect with one of our mobile apps\"),\n props.onCancel && ((0, preact_1.h)(\"button\", { type: \"button\", class: \"-cbwsdk-cancel-button\", onClick: props.onCancel },\n (0, preact_1.h)(CloseIcon_1.CloseIcon, { fill: theme === \"light\" ? \"#0A0B0D\" : \"#FFFFFF\" })))),\n (0, preact_1.h)(\"div\", { class: \"-cbwsdk-connect-content-layout\" },\n (0, preact_1.h)(\"div\", { class: \"-cbwsdk-connect-content-column-left\" },\n (0, preact_1.h)(\"div\", null, Object.entries(wallets).map(([key, value]) => {\n return ((0, preact_1.h)(ConnectItem, { key: key, title: value.title, description: value.description, icon: value.icon, selected: selected === key, onClick: () => handleSelect(key), theme: theme }));\n })),\n coinbaseApp && ((0, preact_1.h)(\"div\", { class: (0, clsx_1.default)(\"-cbwsdk-connect-content-update-app\", theme) },\n \"Don\\u2019t see a \",\n (0, preact_1.h)(\"strong\", null, \"Scan\"),\n \" option? Update your Coinbase app to the latest version and try again.\"))),\n (0, preact_1.h)(\"div\", { class: \"-cbwsdk-connect-content-column-right\" },\n (0, preact_1.h)(\"div\", { class: \"-cbwsdk-connect-content-qr-wrapper\" },\n (0, preact_1.h)(QRCode_1.QRCode, { content: qrUrl, width: 200, height: 200, fgColor: \"#000\", bgColor: \"transparent\", image: {\n svg: makeQrCodeImage(selected),\n width: 25,\n height: 25,\n } }),\n (0, preact_1.h)(\"input\", { type: \"hidden\", name: \"cbw-cbwsdk-version\", value: version_1.LIB_VERSION }),\n (0, preact_1.h)(\"input\", { type: \"hidden\", value: qrUrl })),\n (0, preact_1.h)(WalletSteps, { theme: theme }),\n !props.isConnected && ((0, preact_1.h)(\"div\", { \"data-testid\": \"connecting-spinner\", class: (0, clsx_1.default)(\"-cbwsdk-connect-content-qr-connecting\", theme) },\n (0, preact_1.h)(Spinner_1.Spinner, { size: 36, color: theme === \"dark\" ? \"#FFF\" : \"#000\" }),\n (0, preact_1.h)(\"p\", null, \"Connecting...\")))))));\n}\nexports.ConnectContent = ConnectContent;\nfunction ConnectItem({ title, description, icon, selected, theme, onClick, }) {\n return ((0, preact_1.h)(\"div\", { onClick: onClick, class: (0, clsx_1.default)(\"-cbwsdk-connect-item\", theme, { selected }) },\n (0, preact_1.h)(\"div\", null,\n (0, preact_1.h)(\"img\", { src: icon, alt: title })),\n (0, preact_1.h)(\"div\", { class: \"-cbwsdk-connect-item-copy-wrapper\" },\n (0, preact_1.h)(\"h3\", { class: \"-cbwsdk-connect-item-title\" }, title),\n (0, preact_1.h)(\"p\", { class: \"-cbwsdk-connect-item-description\" }, description))));\n}\nexports.ConnectItem = ConnectItem;\nfunction CoinbaseWalletSteps({ theme }) {\n return ((0, preact_1.h)(\"ol\", { class: \"-cbwsdk-wallet-steps\" },\n (0, preact_1.h)(\"li\", { class: (0, clsx_1.default)(\"-cbwsdk-wallet-steps-item\", theme) },\n (0, preact_1.h)(\"div\", { class: \"-cbwsdk-wallet-steps-item-wrapper\" }, \"Open Coinbase Wallet app\")),\n (0, preact_1.h)(\"li\", { class: (0, clsx_1.default)(\"-cbwsdk-wallet-steps-item\", theme) },\n (0, preact_1.h)(\"div\", { class: \"-cbwsdk-wallet-steps-item-wrapper\" },\n (0, preact_1.h)(\"span\", null,\n \"Tap \",\n (0, preact_1.h)(\"strong\", null, \"Scan\"),\n \" \"),\n (0, preact_1.h)(\"span\", { class: (0, clsx_1.default)(\"-cbwsdk-wallet-steps-pad-left\", \"-cbwsdk-wallet-steps-icon\", theme) },\n (0, preact_1.h)(QRCodeIcon_1.QRCodeIcon, { fill: makeIconColor(theme) }))))));\n}\nexports.CoinbaseWalletSteps = CoinbaseWalletSteps;\nfunction CoinbaseAppSteps({ theme }) {\n return ((0, preact_1.h)(\"ol\", { class: \"-cbwsdk-wallet-steps\" },\n (0, preact_1.h)(\"li\", { class: (0, clsx_1.default)(\"-cbwsdk-wallet-steps-item\", theme) },\n (0, preact_1.h)(\"div\", { class: \"-cbwsdk-wallet-steps-item-wrapper\" }, \"Open Coinbase app\")),\n (0, preact_1.h)(\"li\", { class: (0, clsx_1.default)(\"-cbwsdk-wallet-steps-item\", theme) },\n (0, preact_1.h)(\"div\", { class: \"-cbwsdk-wallet-steps-item-wrapper\" },\n (0, preact_1.h)(\"span\", null,\n \"Tap \",\n (0, preact_1.h)(\"strong\", null, \"More\")),\n (0, preact_1.h)(\"span\", { class: (0, clsx_1.default)(\"-cbwsdk-wallet-steps-pad-left\", \"-cbwsdk-wallet-steps-icon\", theme) },\n (0, preact_1.h)(StatusDotIcon_1.StatusDotIcon, { fill: makeIconColor(theme) })),\n (0, preact_1.h)(\"span\", { class: \"-cbwsdk-wallet-steps-pad-left\" },\n \"then \",\n (0, preact_1.h)(\"strong\", null, \"Scan\")),\n (0, preact_1.h)(\"span\", { class: (0, clsx_1.default)(\"-cbwsdk-wallet-steps-pad-left\", \"-cbwsdk-wallet-steps-icon\", theme) },\n (0, preact_1.h)(QRCodeIcon_1.QRCodeIcon, { fill: makeIconColor(theme) }))))));\n}\nexports.CoinbaseAppSteps = CoinbaseAppSteps;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = `.-cbwsdk-css-reset .-cbwsdk-connect-dialog{z-index:2147483647;position:fixed;top:0;left:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center}.-cbwsdk-css-reset .-cbwsdk-connect-dialog-backdrop{z-index:2147483647;position:fixed;top:0;left:0;right:0;bottom:0;transition:opacity .25s}.-cbwsdk-css-reset .-cbwsdk-connect-dialog-backdrop.light{background-color:rgba(0,0,0,.5)}.-cbwsdk-css-reset .-cbwsdk-connect-dialog-backdrop.dark{background-color:rgba(50,53,61,.4)}.-cbwsdk-css-reset .-cbwsdk-connect-dialog-backdrop-hidden{opacity:0}.-cbwsdk-css-reset .-cbwsdk-connect-dialog-box{display:flex;position:relative;flex-direction:column;transform:scale(1);transition:opacity .25s,transform .25s}.-cbwsdk-css-reset .-cbwsdk-connect-dialog-box-hidden{opacity:0;transform:scale(0.85)}.-cbwsdk-css-reset .-cbwsdk-connect-dialog-container{display:block}.-cbwsdk-css-reset .-cbwsdk-connect-dialog-container-hidden{display:none}`;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConnectDialog = void 0;\nconst clsx_1 = __importDefault(require(\"clsx\"));\nconst preact_1 = require(\"preact\");\nconst hooks_1 = require(\"preact/hooks\");\nconst ConnectContent_1 = require(\"../ConnectContent/ConnectContent\");\nconst TryExtensionContent_1 = require(\"../TryExtensionContent/TryExtensionContent\");\nconst ConnectDialog_css_1 = __importDefault(require(\"./ConnectDialog-css\"));\nconst ConnectDialog = (props) => {\n const { isOpen, darkMode } = props;\n const [containerHidden, setContainerHidden] = (0, hooks_1.useState)(!isOpen);\n const [dialogHidden, setDialogHidden] = (0, hooks_1.useState)(!isOpen);\n (0, hooks_1.useEffect)(() => {\n const timers = [\n window.setTimeout(() => {\n setDialogHidden(!isOpen);\n }, 10),\n ];\n if (isOpen) {\n setContainerHidden(false);\n }\n else {\n timers.push(window.setTimeout(() => {\n setContainerHidden(true);\n }, 360));\n }\n return () => {\n timers.forEach(window.clearTimeout);\n };\n }, [props.isOpen]);\n const theme = darkMode ? \"dark\" : \"light\";\n return ((0, preact_1.h)(\"div\", { class: (0, clsx_1.default)(\"-cbwsdk-connect-dialog-container\", containerHidden && \"-cbwsdk-connect-dialog-container-hidden\") },\n (0, preact_1.h)(\"style\", null, ConnectDialog_css_1.default),\n (0, preact_1.h)(\"div\", { class: (0, clsx_1.default)(\"-cbwsdk-connect-dialog-backdrop\", theme, dialogHidden && \"-cbwsdk-connect-dialog-backdrop-hidden\") }),\n (0, preact_1.h)(\"div\", { class: \"-cbwsdk-connect-dialog\" },\n (0, preact_1.h)(\"div\", { class: (0, clsx_1.default)(\"-cbwsdk-connect-dialog-box\", dialogHidden && \"-cbwsdk-connect-dialog-box-hidden\") },\n !props.connectDisabled ? ((0, preact_1.h)(ConnectContent_1.ConnectContent, { theme: theme, version: props.version, sessionId: props.sessionId, sessionSecret: props.sessionSecret, linkAPIUrl: props.linkAPIUrl, isConnected: props.isConnected, isParentConnection: props.isParentConnection, chainId: props.chainId, onCancel: props.onCancel })) : null,\n (0, preact_1.h)(TryExtensionContent_1.TryExtensionContent, { theme: theme })))));\n};\nexports.ConnectDialog = ConnectDialog;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LinkFlow = void 0;\nconst preact_1 = require(\"preact\");\nconst rxjs_1 = require(\"rxjs\");\nconst ConnectDialog_1 = require(\"../ConnectDialog/ConnectDialog\");\nclass LinkFlow {\n constructor(options) {\n this.extensionUI$ = new rxjs_1.BehaviorSubject({});\n this.subscriptions = new rxjs_1.Subscription();\n this.isConnected = false;\n this.chainId = 1;\n this.isOpen = false;\n this.onCancel = null;\n this.root = null;\n // if true, hide QR code in LinkFlow (which happens if no jsonRpcUrl is provided)\n this.connectDisabled = false;\n this.darkMode = options.darkMode;\n this.version = options.version;\n this.sessionId = options.sessionId;\n this.sessionSecret = options.sessionSecret;\n this.linkAPIUrl = options.linkAPIUrl;\n this.isParentConnection = options.isParentConnection;\n this.connected$ = options.connected$;\n this.chainId$ = options.chainId$;\n }\n attach(el) {\n this.root = document.createElement(\"div\");\n this.root.className = \"-cbwsdk-link-flow-root\";\n el.appendChild(this.root);\n this.render();\n this.subscriptions.add(this.connected$.subscribe(v => {\n if (this.isConnected !== v) {\n this.isConnected = v;\n this.render();\n }\n }));\n this.subscriptions.add(this.chainId$.subscribe(chainId => {\n if (this.chainId !== chainId) {\n this.chainId = chainId;\n this.render();\n }\n }));\n }\n detach() {\n var _a;\n if (!this.root) {\n return;\n }\n this.subscriptions.unsubscribe();\n (0, preact_1.render)(null, this.root);\n (_a = this.root.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(this.root);\n }\n setConnectDisabled(connectDisabled) {\n this.connectDisabled = connectDisabled;\n }\n open(options) {\n this.isOpen = true;\n this.onCancel = options.onCancel;\n this.render();\n }\n close() {\n this.isOpen = false;\n this.onCancel = null;\n this.render();\n }\n render() {\n if (!this.root) {\n return;\n }\n const subscription = this.extensionUI$.subscribe(() => {\n if (!this.root) {\n return;\n }\n (0, preact_1.render)((0, preact_1.h)(ConnectDialog_1.ConnectDialog, { darkMode: this.darkMode, version: this.version, sessionId: this.sessionId, sessionSecret: this.sessionSecret, linkAPIUrl: this.linkAPIUrl, isOpen: this.isOpen, isConnected: this.isConnected, isParentConnection: this.isParentConnection, chainId: this.chainId, onCancel: this.onCancel, connectDisabled: this.connectDisabled }), this.root);\n });\n this.subscriptions.add(subscription);\n }\n}\nexports.LinkFlow = LinkFlow;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.QRCode = void 0;\nconst preact_1 = require(\"preact\");\nconst hooks_1 = require(\"preact/hooks\");\nconst qrcode_svg_1 = __importDefault(require(\"../vendor-js/qrcode-svg\"));\nconst QRCode = props => {\n const [svg, setSvg] = (0, hooks_1.useState)(\"\");\n (0, hooks_1.useEffect)(() => {\n var _a, _b;\n const qrcode = new qrcode_svg_1.default({\n content: props.content,\n background: props.bgColor || \"#ffffff\",\n color: props.fgColor || \"#000000\",\n container: \"svg\",\n ecl: \"M\",\n width: (_a = props.width) !== null && _a !== void 0 ? _a : 256,\n height: (_b = props.height) !== null && _b !== void 0 ? _b : 256,\n padding: 0,\n image: props.image,\n });\n const base64 = Buffer.from(qrcode.svg(), \"utf8\").toString(\"base64\");\n setSvg(`data:image/svg+xml;base64,${base64}`);\n });\n return svg ? (0, preact_1.h)(\"img\", { src: svg, alt: \"QR Code\" }) : null;\n};\nexports.QRCode = QRCode;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = `.-cbwsdk-css-reset .-gear-container{margin-left:16px !important;margin-right:9px !important;display:flex;align-items:center;justify-content:center;width:24px;height:24px;transition:opacity .25s}.-cbwsdk-css-reset .-gear-container *{user-select:none}.-cbwsdk-css-reset .-gear-container svg{opacity:0;position:absolute}.-cbwsdk-css-reset .-gear-icon{height:12px;width:12px;z-index:10000}.-cbwsdk-css-reset .-cbwsdk-snackbar{align-items:flex-end;display:flex;flex-direction:column;position:fixed;right:0;top:0;z-index:2147483647}.-cbwsdk-css-reset .-cbwsdk-snackbar *{user-select:none}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance{display:flex;flex-direction:column;margin:8px 16px 0 16px;overflow:visible;text-align:left;transform:translateX(0);transition:opacity .25s,transform .25s}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-header:hover .-gear-container svg{opacity:1}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-header{display:flex;align-items:center;background:#fff;overflow:hidden;border:1px solid #e7ebee;box-sizing:border-box;border-radius:8px;cursor:pointer}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-header-cblogo{margin:8px 8px 8px 8px}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-header *{cursor:pointer}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-header-message{color:#000;font-size:13px;line-height:1.5;user-select:none}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-menu{background:#fff;transition:opacity .25s ease-in-out,transform .25s linear,visibility 0s;visibility:hidden;border:1px solid #e7ebee;box-sizing:border-box;border-radius:8px;opacity:0;flex-direction:column;padding-left:8px;padding-right:8px}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-menu-item:last-child{margin-bottom:8px !important}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-menu-item:hover{background:#f5f7f8;border-radius:6px;transition:background .25s}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-menu-item:hover span{color:#050f19;transition:color .25s}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-menu-item:hover svg path{fill:#000;transition:fill .25s}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-menu-item{visibility:inherit;height:35px;margin-top:8px;margin-bottom:0;display:flex;flex-direction:row;align-items:center;padding:8px;cursor:pointer}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-menu-item *{visibility:inherit;cursor:pointer}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-menu-item-is-red:hover{background:rgba(223,95,103,.2);transition:background .25s}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-menu-item-is-red:hover *{cursor:pointer}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-menu-item-is-red:hover svg path{fill:#df5f67;transition:fill .25s}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-menu-item-is-red:hover span{color:#df5f67;transition:color .25s}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-menu-item-info{color:#aaa;font-size:13px;margin:0 8px 0 32px;position:absolute}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-hidden{opacity:0;text-align:left;transform:translateX(25%);transition:opacity .5s linear}.-cbwsdk-css-reset .-cbwsdk-snackbar-instance-expanded .-cbwsdk-snackbar-instance-menu{opacity:1;display:flex;transform:translateY(8px);visibility:visible}`;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SnackbarInstance = exports.SnackbarContainer = exports.Snackbar = void 0;\nconst clsx_1 = __importDefault(require(\"clsx\"));\nconst preact_1 = require(\"preact\");\nconst hooks_1 = require(\"preact/hooks\");\nconst Snackbar_css_1 = __importDefault(require(\"./Snackbar-css\"));\nconst gearIcon = `data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEyIDYuNzV2LTEuNWwtMS43Mi0uNTdjLS4wOC0uMjctLjE5LS41Mi0uMzItLjc3bC44MS0xLjYyLTEuMDYtMS4wNi0xLjYyLjgxYy0uMjQtLjEzLS41LS4yNC0uNzctLjMyTDYuNzUgMGgtMS41bC0uNTcgMS43MmMtLjI3LjA4LS41My4xOS0uNzcuMzJsLTEuNjItLjgxLTEuMDYgMS4wNi44MSAxLjYyYy0uMTMuMjQtLjI0LjUtLjMyLjc3TDAgNS4yNXYxLjVsMS43Mi41N2MuMDguMjcuMTkuNTMuMzIuNzdsLS44MSAxLjYyIDEuMDYgMS4wNiAxLjYyLS44MWMuMjQuMTMuNS4yMy43Ny4zMkw1LjI1IDEyaDEuNWwuNTctMS43MmMuMjctLjA4LjUyLS4xOS43Ny0uMzJsMS42Mi44MSAxLjA2LTEuMDYtLjgxLTEuNjJjLjEzLS4yNC4yMy0uNS4zMi0uNzdMMTIgNi43NXpNNiA4LjVhMi41IDIuNSAwIDAxMC01IDIuNSAyLjUgMCAwMTAgNXoiIGZpbGw9IiMwNTBGMTkiLz48L3N2Zz4=`;\nfunction makeSnackbarIcon(appSrc) {\n switch (appSrc) {\n case \"coinbase-app\":\n return `data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzAiIGhlaWdodD0iMzAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTE0LjY3NCAxOC44NThjLTIuMDQ1IDAtMy42NDgtMS43MjItMy42NDgtMy44NDVzMS42NTktMy44NDUgMy42NDgtMy44NDVjMS44MjQgMCAzLjMxNyAxLjM3NyAzLjU5MyAzLjIxNGgzLjcwM2MtLjMzMS0zLjk2LTMuNDgyLTcuMDU5LTcuMjk2LTcuMDU5LTQuMDM0IDAtNy4zNSAzLjQ0My03LjM1IDcuNjkgMCA0LjI0NiAzLjI2IDcuNjkgNy4zNSA3LjY5IDMuODcgMCA2Ljk2NS0zLjEgNy4yOTYtNy4wNTloLTMuNzAzYy0uMjc2IDEuODM2LTEuNzY5IDMuMjE0LTMuNTkzIDMuMjE0WiIgZmlsbD0iI2ZmZiIvPjxwYXRoIGQ9Ik0wIDEwLjY3OGMwLTMuNzExIDAtNS41OTYuNzQyLTcuMDIzQTYuNTMyIDYuNTMyIDAgMCAxIDMuNjU1Ljc0MkM1LjA4MiAwIDYuOTY3IDAgMTAuNjc4IDBoNy45MzhjMy43MTEgMCA1LjU5NiAwIDcuMDIzLjc0MmE2LjUzMSA2LjUzMSAwIDAgMSAyLjkxMyAyLjkxM2MuNzQyIDEuNDI3Ljc0MiAzLjMxMi43NDIgNy4wMjN2Ny45MzhjMCAzLjcxMSAwIDUuNTk2LS43NDIgNy4wMjNhNi41MzEgNi41MzEgMCAwIDEtMi45MTMgMi45MTNjLTEuNDI3Ljc0Mi0zLjMxMi43NDItNy4wMjMuNzQyaC03LjkzOGMtMy43MTEgMC01LjU5NiAwLTcuMDIzLS43NDJhNi41MzEgNi41MzEgMCAwIDEtMi45MTMtMi45MTNDMCAyNC4yMTIgMCAyMi4zODQgMCAxOC42MTZ2LTcuOTM4WiIgZmlsbD0iIzAwNTJGRiIvPjxwYXRoIGQ9Ik0xNC42ODQgMTkuNzczYy0yLjcyNyAwLTQuODY0LTIuMjk1LTQuODY0LTUuMTI2IDAtMi44MzEgMi4yMS01LjEyNyA0Ljg2NC01LjEyNyAyLjQzMiAwIDQuNDIyIDEuODM3IDQuNzkgNC4yODVoNC45MzhjLS40NDItNS4yOC00LjY0My05LjQxMS05LjcyOC05LjQxMS01LjM4IDAtOS44MDIgNC41OS05LjgwMiAxMC4yNTMgMCA1LjY2MiA0LjM0OCAxMC4yNTMgOS44MDIgMTAuMjUzIDUuMTU5IDAgOS4yODYtNC4xMzIgOS43MjgtOS40MTFoLTQuOTM4Yy0uMzY4IDIuNDQ4LTIuMzU4IDQuMjg0LTQuNzkgNC4yODRaIiBmaWxsPSIjZmZmIi8+PC9zdmc+`;\n case \"coinbase-wallet-app\":\n default:\n return `data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEuNDkyIDEwLjQxOWE4LjkzIDguOTMgMCAwMTguOTMtOC45M2gxMS4xNjNhOC45MyA4LjkzIDAgMDE4LjkzIDguOTN2MTEuMTYzYTguOTMgOC45MyAwIDAxLTguOTMgOC45M0gxMC40MjJhOC45MyA4LjkzIDAgMDEtOC45My04LjkzVjEwLjQxOXoiIGZpbGw9IiMxNjUyRjAiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTEwLjQxOSAwSDIxLjU4QzI3LjMzNSAwIDMyIDQuNjY1IDMyIDEwLjQxOVYyMS41OEMzMiAyNy4zMzUgMjcuMzM1IDMyIDIxLjU4MSAzMkgxMC40MkM0LjY2NSAzMiAwIDI3LjMzNSAwIDIxLjU4MVYxMC40MkMwIDQuNjY1IDQuNjY1IDAgMTAuNDE5IDB6bTAgMS40ODhhOC45MyA4LjkzIDAgMDAtOC45MyA4LjkzdjExLjE2M2E4LjkzIDguOTMgMCAwMDguOTMgOC45M0gyMS41OGE4LjkzIDguOTMgMCAwMDguOTMtOC45M1YxMC40MmE4LjkzIDguOTMgMCAwMC04LjkzLTguOTNIMTAuNDJ6IiBmaWxsPSIjZmZmIi8+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNS45OTggMjYuMDQ5Yy01LjU0OSAwLTEwLjA0Ny00LjQ5OC0xMC4wNDctMTAuMDQ3IDAtNS41NDggNC40OTgtMTAuMDQ2IDEwLjA0Ny0xMC4wNDYgNS41NDggMCAxMC4wNDYgNC40OTggMTAuMDQ2IDEwLjA0NiAwIDUuNTQ5LTQuNDk4IDEwLjA0Ny0xMC4wNDYgMTAuMDQ3eiIgZmlsbD0iI2ZmZiIvPjxwYXRoIGQ9Ik0xMi43NjIgMTQuMjU0YzAtLjgyMi42NjctMS40ODkgMS40ODktMS40ODloMy40OTdjLjgyMiAwIDEuNDg4LjY2NiAxLjQ4OCAxLjQ4OXYzLjQ5N2MwIC44MjItLjY2NiAxLjQ4OC0xLjQ4OCAxLjQ4OGgtMy40OTdhMS40ODggMS40ODggMCAwMS0xLjQ4OS0xLjQ4OHYtMy40OTh6IiBmaWxsPSIjMTY1MkYwIi8+PC9zdmc+`;\n }\n}\nclass Snackbar {\n constructor(options) {\n this.items = new Map();\n this.nextItemKey = 0;\n this.root = null;\n this.darkMode = options.darkMode;\n }\n attach(el) {\n this.root = document.createElement(\"div\");\n this.root.className = \"-cbwsdk-snackbar-root\";\n el.appendChild(this.root);\n this.render();\n }\n presentItem(itemProps) {\n const key = this.nextItemKey++;\n this.items.set(key, itemProps);\n this.render();\n return () => {\n this.items.delete(key);\n this.render();\n };\n }\n clear() {\n this.items.clear();\n this.render();\n }\n render() {\n if (!this.root) {\n return;\n }\n (0, preact_1.render)((0, preact_1.h)(\"div\", null,\n (0, preact_1.h)(exports.SnackbarContainer, { darkMode: this.darkMode }, Array.from(this.items.entries()).map(([key, itemProps]) => ((0, preact_1.h)(exports.SnackbarInstance, Object.assign({}, itemProps, { key: key })))))), this.root);\n }\n}\nexports.Snackbar = Snackbar;\nconst SnackbarContainer = props => ((0, preact_1.h)(\"div\", { class: (0, clsx_1.default)(\"-cbwsdk-snackbar-container\") },\n (0, preact_1.h)(\"style\", null, Snackbar_css_1.default),\n (0, preact_1.h)(\"div\", { class: \"-cbwsdk-snackbar\" }, props.children)));\nexports.SnackbarContainer = SnackbarContainer;\nconst SnackbarInstance = ({ autoExpand, message, menuItems, appSrc, }) => {\n const [hidden, setHidden] = (0, hooks_1.useState)(true);\n const [expanded, setExpanded] = (0, hooks_1.useState)(autoExpand !== null && autoExpand !== void 0 ? autoExpand : false);\n (0, hooks_1.useEffect)(() => {\n const timers = [\n window.setTimeout(() => {\n setHidden(false);\n }, 1),\n window.setTimeout(() => {\n setExpanded(true);\n }, 10000),\n ];\n return () => {\n timers.forEach(window.clearTimeout);\n };\n });\n const toggleExpanded = () => {\n setExpanded(!expanded);\n };\n return ((0, preact_1.h)(\"div\", { class: (0, clsx_1.default)(\"-cbwsdk-snackbar-instance\", hidden && \"-cbwsdk-snackbar-instance-hidden\", expanded && \"-cbwsdk-snackbar-instance-expanded\") },\n (0, preact_1.h)(\"div\", { class: \"-cbwsdk-snackbar-instance-header\", onClick: toggleExpanded },\n (0, preact_1.h)(\"img\", { src: makeSnackbarIcon(appSrc), class: \"-cbwsdk-snackbar-instance-header-cblogo\" }),\n (0, preact_1.h)(\"div\", { class: \"-cbwsdk-snackbar-instance-header-message\" }, message),\n (0, preact_1.h)(\"div\", { class: \"-gear-container\" },\n !expanded && ((0, preact_1.h)(\"svg\", { width: \"24\", height: \"24\", viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\" },\n (0, preact_1.h)(\"circle\", { cx: \"12\", cy: \"12\", r: \"12\", fill: \"#F5F7F8\" }))),\n (0, preact_1.h)(\"img\", { src: gearIcon, class: \"-gear-icon\", title: \"Expand\" }))),\n menuItems && menuItems.length > 0 && ((0, preact_1.h)(\"div\", { class: \"-cbwsdk-snackbar-instance-menu\" }, menuItems.map((action, i) => ((0, preact_1.h)(\"div\", { class: (0, clsx_1.default)(\"-cbwsdk-snackbar-instance-menu-item\", action.isRed && \"-cbwsdk-snackbar-instance-menu-item-is-red\"), onClick: action.onClick, key: i },\n (0, preact_1.h)(\"svg\", { width: action.svgWidth, height: action.svgHeight, viewBox: \"0 0 10 11\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\" },\n (0, preact_1.h)(\"path\", { \"fill-rule\": action.defaultFillRule, \"clip-rule\": action.defaultClipRule, d: action.path, fill: \"#AAAAAA\" })),\n (0, preact_1.h)(\"span\", { class: (0, clsx_1.default)(\"-cbwsdk-snackbar-instance-menu-item-info\", action.isRed &&\n \"-cbwsdk-snackbar-instance-menu-item-info-is-red\") }, action.info))))))));\n};\nexports.SnackbarInstance = SnackbarInstance;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = `.-cbwsdk-css-reset .-cbwsdk-spinner{display:inline-block}.-cbwsdk-css-reset .-cbwsdk-spinner svg{display:inline-block;animation:2s linear infinite -cbwsdk-spinner-svg}.-cbwsdk-css-reset .-cbwsdk-spinner svg circle{animation:1.9s ease-in-out infinite both -cbwsdk-spinner-circle;display:block;fill:rgba(0,0,0,0);stroke-dasharray:283;stroke-dashoffset:280;stroke-linecap:round;stroke-width:10px;transform-origin:50% 50%}@keyframes -cbwsdk-spinner-svg{0%{transform:rotateZ(0deg)}100%{transform:rotateZ(360deg)}}@keyframes -cbwsdk-spinner-circle{0%,25%{stroke-dashoffset:280;transform:rotate(0)}50%,75%{stroke-dashoffset:75;transform:rotate(45deg)}100%{stroke-dashoffset:280;transform:rotate(360deg)}}`;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Spinner = void 0;\nconst preact_1 = require(\"preact\");\nconst Spinner_css_1 = __importDefault(require(\"./Spinner-css\"));\nconst Spinner = props => {\n var _a;\n const size = (_a = props.size) !== null && _a !== void 0 ? _a : 64;\n const color = props.color || \"#000\";\n return ((0, preact_1.h)(\"div\", { class: \"-cbwsdk-spinner\" },\n (0, preact_1.h)(\"style\", null, Spinner_css_1.default),\n (0, preact_1.h)(\"svg\", { viewBox: \"0 0 100 100\", xmlns: \"http://www.w3.org/2000/svg\", style: { width: size, height: size } },\n (0, preact_1.h)(\"circle\", { style: { cx: 50, cy: 50, r: 45, stroke: color } }))));\n};\nexports.Spinner = Spinner;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = `.-cbwsdk-css-reset .-cbwsdk-try-extension{display:flex;margin-top:12px;height:202px;width:700px;border-radius:12px;padding:30px}.-cbwsdk-css-reset .-cbwsdk-try-extension.light{background:#fff}.-cbwsdk-css-reset .-cbwsdk-try-extension.dark{background:#0a0b0d}.-cbwsdk-css-reset .-cbwsdk-try-extension-column-half{flex:50%}.-cbwsdk-css-reset .-cbwsdk-try-extension-heading{font-style:normal;font-weight:500;font-size:25px;line-height:32px;margin:0;max-width:204px}.-cbwsdk-css-reset .-cbwsdk-try-extension-heading.light{color:#0a0b0d}.-cbwsdk-css-reset .-cbwsdk-try-extension-heading.dark{color:#fff}.-cbwsdk-css-reset .-cbwsdk-try-extension-cta{appearance:none;border:none;background:none;color:#0052ff;cursor:pointer;padding:0;text-decoration:none;display:block;font-weight:600;font-size:16px;line-height:24px}.-cbwsdk-css-reset .-cbwsdk-try-extension-cta.light{color:#0052ff}.-cbwsdk-css-reset .-cbwsdk-try-extension-cta.dark{color:#588af5}.-cbwsdk-css-reset .-cbwsdk-try-extension-cta-wrapper{display:flex;align-items:center;margin-top:12px}.-cbwsdk-css-reset .-cbwsdk-try-extension-cta-icon{display:block;margin-left:4px;height:14px}.-cbwsdk-css-reset .-cbwsdk-try-extension-list{display:flex;flex-direction:column;justify-content:center;align-items:center;margin:0;padding:0;list-style:none;height:100%}.-cbwsdk-css-reset .-cbwsdk-try-extension-list-item{display:flex;align-items:center;flex-flow:nowrap;margin-top:24px}.-cbwsdk-css-reset .-cbwsdk-try-extension-list-item:first-of-type{margin-top:0}.-cbwsdk-css-reset .-cbwsdk-try-extension-list-item-icon-wrapper{display:block}.-cbwsdk-css-reset .-cbwsdk-try-extension-list-item-icon{display:flex;height:32px;width:32px;border-radius:50%}.-cbwsdk-css-reset .-cbwsdk-try-extension-list-item-icon svg{margin:auto;display:block}.-cbwsdk-css-reset .-cbwsdk-try-extension-list-item-icon.light{background:#eef0f3}.-cbwsdk-css-reset .-cbwsdk-try-extension-list-item-icon.dark{background:#1e2025}.-cbwsdk-css-reset .-cbwsdk-try-extension-list-item-copy{display:block;font-weight:400;font-size:14px;line-height:20px;padding-left:12px}.-cbwsdk-css-reset .-cbwsdk-try-extension-list-item-copy.light{color:#5b636e}.-cbwsdk-css-reset .-cbwsdk-try-extension-list-item-copy.dark{color:#8a919e}`;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TryExtensionContent = void 0;\nconst clsx_1 = __importDefault(require(\"clsx\"));\nconst preact_1 = require(\"preact\");\nconst hooks_1 = require(\"preact/hooks\");\nconst ArrowLeftIcon_1 = require(\"../icons/ArrowLeftIcon\");\nconst LaptopIcon_1 = require(\"../icons/LaptopIcon\");\nconst SafeIcon_1 = require(\"../icons/SafeIcon\");\nconst TryExtensionContent_css_1 = __importDefault(require(\"./TryExtensionContent-css\"));\nfunction TryExtensionContent({ theme }) {\n const [clicked, setClicked] = (0, hooks_1.useState)(false);\n const handleInstallClick = (0, hooks_1.useCallback)(() => {\n window.open(\"https://api.wallet.coinbase.com/rpc/v2/desktop/chrome\", \"_blank\");\n }, []);\n const handleClick = (0, hooks_1.useCallback)(() => {\n if (clicked) {\n window.location.reload();\n }\n else {\n handleInstallClick();\n setClicked(true);\n }\n }, [handleInstallClick, clicked]);\n return ((0, preact_1.h)(\"div\", { class: (0, clsx_1.default)(\"-cbwsdk-try-extension\", theme) },\n (0, preact_1.h)(\"style\", null, TryExtensionContent_css_1.default),\n (0, preact_1.h)(\"div\", { class: \"-cbwsdk-try-extension-column-half\" },\n (0, preact_1.h)(\"h3\", { class: (0, clsx_1.default)(\"-cbwsdk-try-extension-heading\", theme) }, \"Or try the Coinbase Wallet browser extension\"),\n (0, preact_1.h)(\"div\", { class: \"-cbwsdk-try-extension-cta-wrapper\" },\n (0, preact_1.h)(\"button\", { class: (0, clsx_1.default)(\"-cbwsdk-try-extension-cta\", theme), onClick: handleClick }, clicked ? \"Refresh\" : \"Install\"),\n (0, preact_1.h)(\"div\", null, !clicked && ((0, preact_1.h)(ArrowLeftIcon_1.ArrowLeftIcon, { class: \"-cbwsdk-try-extension-cta-icon\", fill: theme === \"light\" ? \"#0052FF\" : \"#588AF5\" }))))),\n (0, preact_1.h)(\"div\", { class: \"-cbwsdk-try-extension-column-half\" },\n (0, preact_1.h)(\"ul\", { class: \"-cbwsdk-try-extension-list\" },\n (0, preact_1.h)(\"li\", { class: \"-cbwsdk-try-extension-list-item\" },\n (0, preact_1.h)(\"div\", { class: \"-cbwsdk-try-extension-list-item-icon-wrapper\" },\n (0, preact_1.h)(\"span\", { class: (0, clsx_1.default)(\"-cbwsdk-try-extension-list-item-icon\", theme) },\n (0, preact_1.h)(LaptopIcon_1.LaptopIcon, { fill: theme === \"light\" ? \"#0A0B0D\" : \"#FFFFFF\" }))),\n (0, preact_1.h)(\"div\", { class: (0, clsx_1.default)(\"-cbwsdk-try-extension-list-item-copy\", theme) }, \"Connect with dapps with just one click on your desktop browser\")),\n (0, preact_1.h)(\"li\", { class: \"-cbwsdk-try-extension-list-item\" },\n (0, preact_1.h)(\"div\", { class: \"-cbwsdk-try-extension-list-item-icon-wrapper\" },\n (0, preact_1.h)(\"span\", { class: (0, clsx_1.default)(\"-cbwsdk-try-extension-list-item-icon\", theme) },\n (0, preact_1.h)(SafeIcon_1.SafeIcon, { fill: theme === \"light\" ? \"#0A0B0D\" : \"#FFFFFF\" }))),\n (0, preact_1.h)(\"div\", { class: (0, clsx_1.default)(\"-cbwsdk-try-extension-list-item-copy\", theme) }, \"Add an additional layer of security by using a supported Ledger hardware wallet\"))))));\n}\nexports.TryExtensionContent = TryExtensionContent;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ArrowLeftIcon = void 0;\nconst preact_1 = require(\"preact\");\nfunction ArrowLeftIcon(props) {\n return ((0, preact_1.h)(\"svg\", Object.assign({ width: \"16\", height: \"16\", viewBox: \"0 0 16 16\", xmlns: \"http://www.w3.org/2000/svg\" }, props),\n (0, preact_1.h)(\"path\", { d: \"M8.60675 0.155884L7.37816 1.28209L12.7723 7.16662H0V8.83328H12.6548L6.82149 14.6666L8 15.8451L15.8201 8.02501L8.60675 0.155884Z\" })));\n}\nexports.ArrowLeftIcon = ArrowLeftIcon;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CloseIcon = void 0;\nconst preact_1 = require(\"preact\");\nfunction CloseIcon(props) {\n return ((0, preact_1.h)(\"svg\", Object.assign({ width: \"40\", height: \"40\", viewBox: \"0 0 40 40\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\" }, props),\n (0, preact_1.h)(\"path\", { d: \"M13.7677 13L12.3535 14.4142L18.3535 20.4142L12.3535 26.4142L13.7677 27.8284L19.7677 21.8284L25.7677 27.8284L27.1819 26.4142L21.1819 20.4142L27.1819 14.4142L25.7677 13L19.7677 19L13.7677 13Z\" })));\n}\nexports.CloseIcon = CloseIcon;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LaptopIcon = void 0;\nconst preact_1 = require(\"preact\");\nfunction LaptopIcon(props) {\n return ((0, preact_1.h)(\"svg\", Object.assign({ width: \"14\", height: \"14\", viewBox: \"0 0 14 14\", xmlns: \"http://www.w3.org/2000/svg\" }, props),\n (0, preact_1.h)(\"path\", { d: \"M1.8001 2.2002H12.2001V9.40019H1.8001V2.2002ZM3.4001 3.8002V7.80019H10.6001V3.8002H3.4001Z\" }),\n (0, preact_1.h)(\"path\", { d: \"M13.4001 10.2002H0.600098C0.600098 11.0838 1.31644 11.8002 2.2001 11.8002H11.8001C12.6838 11.8002 13.4001 11.0838 13.4001 10.2002Z\" })));\n}\nexports.LaptopIcon = LaptopIcon;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.QRCodeIcon = void 0;\nconst preact_1 = require(\"preact\");\nfunction QRCodeIcon(props) {\n return ((0, preact_1.h)(\"svg\", Object.assign({ width: \"10\", height: \"10\", viewBox: \"0 0 10 10\", xmlns: \"http://www.w3.org/2000/svg\" }, props),\n (0, preact_1.h)(\"path\", { d: \"M8.2271 1.77124L7.0271 1.77124V2.97124H8.2271V1.77124Z\" }),\n (0, preact_1.h)(\"path\", { d: \"M5.44922 0.199219L5.44922 4.54922L9.79922 4.54922V0.199219L5.44922 0.199219ZM8.89922 3.64922L6.34922 3.64922L6.34922 1.09922L8.89922 1.09922V3.64922Z\" }),\n (0, preact_1.h)(\"path\", { d: \"M2.97124 1.77124L1.77124 1.77124L1.77124 2.97124H2.97124V1.77124Z\" }),\n (0, preact_1.h)(\"path\", { d: \"M0.199219 4.54922L4.54922 4.54922L4.54922 0.199219L0.199219 0.199219L0.199219 4.54922ZM1.09922 1.09922L3.64922 1.09922L3.64922 3.64922L1.09922 3.64922L1.09922 1.09922Z\" }),\n (0, preact_1.h)(\"path\", { d: \"M2.97124 7.0271H1.77124L1.77124 8.2271H2.97124V7.0271Z\" }),\n (0, preact_1.h)(\"path\", { d: \"M0.199219 9.79922H4.54922L4.54922 5.44922L0.199219 5.44922L0.199219 9.79922ZM1.09922 6.34922L3.64922 6.34922L3.64922 8.89922H1.09922L1.09922 6.34922Z\" }),\n (0, preact_1.h)(\"path\", { d: \"M8.89922 7.39912H7.99922V5.40112H5.44922L5.44922 9.79912H6.34922L6.34922 6.30112H7.09922V8.29912H9.79922V5.40112H8.89922V7.39912Z\" }),\n (0, preact_1.h)(\"path\", { d: \"M7.99912 8.89917H7.09912V9.79917H7.99912V8.89917Z\" }),\n (0, preact_1.h)(\"path\", { d: \"M9.79917 8.89917H8.89917V9.79917H9.79917V8.89917Z\" })));\n}\nexports.QRCodeIcon = QRCodeIcon;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst svg = `\n \n \n \n \n \n`;\nexports.default = svg;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = `\n \n \n \n \n \n \n`;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SafeIcon = void 0;\nconst preact_1 = require(\"preact\");\nfunction SafeIcon(props) {\n return ((0, preact_1.h)(\"svg\", Object.assign({ width: \"14\", height: \"14\", viewBox: \"0 0 14 14\", xmlns: \"http://www.w3.org/2000/svg\" }, props),\n (0, preact_1.h)(\"path\", { \"fill-rule\": \"evenodd\", \"clip-rule\": \"evenodd\", d: \"M0.600098 0.600098V11.8001H13.4001V0.600098H0.600098ZM7.0001 9.2001C5.3441 9.2001 4.0001 7.8561 4.0001 6.2001C4.0001 4.5441 5.3441 3.2001 7.0001 3.2001C8.6561 3.2001 10.0001 4.5441 10.0001 6.2001C10.0001 7.8561 8.6561 9.2001 7.0001 9.2001ZM0.600098 12.6001H3.8001V13.4001H0.600098V12.6001ZM10.2001 12.6001H13.4001V13.4001H10.2001V12.6001ZM8.8001 6.2001C8.8001 7.19421 7.99421 8.0001 7.0001 8.0001C6.00598 8.0001 5.2001 7.19421 5.2001 6.2001C5.2001 5.20598 6.00598 4.4001 7.0001 4.4001C7.99421 4.4001 8.8001 5.20598 8.8001 6.2001Z\" })));\n}\nexports.SafeIcon = SafeIcon;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StatusDotIcon = void 0;\nconst preact_1 = require(\"preact\");\nfunction StatusDotIcon(props) {\n return ((0, preact_1.h)(\"svg\", Object.assign({ width: \"10\", height: \"10\", viewBox: \"0 0 10 10\", xmlns: \"http://www.w3.org/2000/svg\" }, props),\n (0, preact_1.h)(\"path\", { \"fill-rule\": \"evenodd\", \"clip-rule\": \"evenodd\", d: \"M2.29995 4.99995C2.29995 5.57985 1.82985 6.04995 1.24995 6.04995C0.670052 6.04995 0.199951 5.57985 0.199951 4.99995C0.199951 4.42005 0.670052 3.94995 1.24995 3.94995C1.82985 3.94995 2.29995 4.42005 2.29995 4.99995ZM4.99995 6.04995C5.57985 6.04995 6.04995 5.57985 6.04995 4.99995C6.04995 4.42005 5.57985 3.94995 4.99995 3.94995C4.42005 3.94995 3.94995 4.42005 3.94995 4.99995C3.94995 5.57985 4.42005 6.04995 4.99995 6.04995ZM8.74995 6.04995C9.32985 6.04995 9.79995 5.57985 9.79995 4.99995C9.79995 4.42005 9.32985 3.94995 8.74995 3.94995C8.17005 3.94995 7.69995 4.42005 7.69995 4.99995C7.69995 5.57985 8.17005 6.04995 8.74995 6.04995Z\" })));\n}\nexports.StatusDotIcon = StatusDotIcon;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = `data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjgiIGhlaWdodD0iMjgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGNpcmNsZSBjeD0iMTQiIGN5PSIxNCIgcj0iMTQiIGZpbGw9IiMwMDUyRkYiLz48cGF0aCBkPSJNMTQuMDM3IDE4LjkyNmMtMi43NSAwLTQuOTA3LTIuMjA1LTQuOTA3LTQuOTI2IDAtMi43MiAyLjIzLTQuOTI2IDQuOTA3LTQuOTI2YTQuODY2IDQuODY2IDAgMCAxIDQuODMzIDQuMTE4aDQuOTgyYy0uNDQ2LTUuMDczLTQuNjg0LTkuMDQ0LTkuODE1LTkuMDQ0QzguNjEgNC4xNDggNC4xNDkgOC41NiA0LjE0OSAxNHM0LjM4NyA5Ljg1MiA5Ljg5IDkuODUyYzUuMjA0IDAgOS4zNjgtMy45NyA5LjgxNC05LjA0M0gxOC44N2E0Ljg2NiA0Ljg2NiAwIDAgMS00LjgzMyA0LjExN1oiIGZpbGw9IiNmZmYiLz48L3N2Zz4=`;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = `data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjgiIGhlaWdodD0iMjgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGNpcmNsZSBjeD0iMTQiIGN5PSIxNCIgcj0iMTQiIGZpbGw9IiMwMDUyRkYiLz48cGF0aCBkPSJNMjMuODUyIDE0QTkuODM0IDkuODM0IDAgMCAxIDE0IDIzLjg1MiA5LjgzNCA5LjgzNCAwIDAgMSA0LjE0OCAxNCA5LjgzNCA5LjgzNCAwIDAgMSAxNCA0LjE0OCA5LjgzNCA5LjgzNCAwIDAgMSAyMy44NTIgMTRaIiBmaWxsPSIjZmZmIi8+PHBhdGggZD0iTTExLjE4NSAxMi41MDRjMC0uNDU2IDAtLjcxLjA5OC0uODYyLjA5OC0uMTUyLjE5Ni0uMzA0LjM0My0uMzU1LjE5Ni0uMTAyLjM5Mi0uMTAyLjg4MS0uMTAyaDIuOTg2Yy40OSAwIC42ODYgMCAuODgyLjEwMi4xNDYuMTAxLjI5My4yMDMuMzQyLjM1NS4wOTguMjAzLjA5OC40MDYuMDk4Ljg2MnYyLjk5MmMwIC40NTcgMCAuNzEtLjA5OC44NjMtLjA5OC4xNTItLjE5NS4zMDQtLjM0Mi4zNTUtLjE5Ni4xMDEtLjM5Mi4xMDEtLjg4Mi4xMDFoLTIuOTg2Yy0uNDkgMC0uNjg1IDAtLjg4LS4xMDEtLjE0OC0uMTAyLS4yOTUtLjIwMy0uMzQ0LS4zNTUtLjA5OC0uMjAzLS4wOTgtLjQwNi0uMDk4LS44NjN2LTIuOTkyWiIgZmlsbD0iIzAwNTJGRiIvPjwvc3ZnPg==`;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ClientMessagePublishEvent = exports.ClientMessageSetSessionConfig = exports.ClientMessageGetSessionConfig = exports.ClientMessageIsLinked = exports.ClientMessageHostSession = void 0;\nfunction ClientMessageHostSession(params) {\n return Object.assign({ type: \"HostSession\" }, params);\n}\nexports.ClientMessageHostSession = ClientMessageHostSession;\nfunction ClientMessageIsLinked(params) {\n return Object.assign({ type: \"IsLinked\" }, params);\n}\nexports.ClientMessageIsLinked = ClientMessageIsLinked;\nfunction ClientMessageGetSessionConfig(params) {\n return Object.assign({ type: \"GetSessionConfig\" }, params);\n}\nexports.ClientMessageGetSessionConfig = ClientMessageGetSessionConfig;\nfunction ClientMessageSetSessionConfig(params) {\n return Object.assign({ type: \"SetSessionConfig\" }, params);\n}\nexports.ClientMessageSetSessionConfig = ClientMessageSetSessionConfig;\nfunction ClientMessagePublishEvent(params) {\n return Object.assign({ type: \"PublishEvent\" }, params);\n}\nexports.ClientMessagePublishEvent = ClientMessagePublishEvent;\n","\"use strict\";\n// DiagnosticLogger for debugging purposes only\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EVENTS = void 0;\nexports.EVENTS = {\n STARTED_CONNECTING: \"walletlink_sdk.started.connecting\",\n CONNECTED_STATE_CHANGE: \"walletlink_sdk.connected\",\n DISCONNECTED: \"walletlink_sdk.disconnected\",\n METADATA_DESTROYED: \"walletlink_sdk_metadata_destroyed\",\n LINKED: \"walletlink_sdk.linked\",\n FAILURE: \"walletlink_sdk.generic_failure\",\n SESSION_CONFIG_RECEIVED: \"walletlink_sdk.session_config_event_received\",\n ETH_ACCOUNTS_STATE: \"walletlink_sdk.eth_accounts_state\",\n SESSION_STATE_CHANGE: \"walletlink_sdk.session_state_change\",\n UNLINKED_ERROR_STATE: \"walletlink_sdk.unlinked_error_state\",\n SKIPPED_CLEARING_SESSION: \"walletlink_sdk.skipped_clearing_session\",\n GENERAL_ERROR: \"walletlink_sdk.general_error\",\n WEB3_REQUEST: \"walletlink_sdk.web3.request\",\n WEB3_REQUEST_PUBLISHED: \"walletlink_sdk.web3.request_published\",\n WEB3_RESPONSE: \"walletlink_sdk.web3.response\",\n UNKNOWN_ADDRESS_ENCOUNTERED: \"walletlink_sdk.unknown_address_encountered\",\n};\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RxWebSocket = exports.ConnectionState = void 0;\nconst rxjs_1 = require(\"rxjs\");\nconst operators_1 = require(\"rxjs/operators\");\nvar ConnectionState;\n(function (ConnectionState) {\n ConnectionState[ConnectionState[\"DISCONNECTED\"] = 0] = \"DISCONNECTED\";\n ConnectionState[ConnectionState[\"CONNECTING\"] = 1] = \"CONNECTING\";\n ConnectionState[ConnectionState[\"CONNECTED\"] = 2] = \"CONNECTED\";\n})(ConnectionState = exports.ConnectionState || (exports.ConnectionState = {}));\n/**\n * Rx-ified WebSocket\n */\nclass RxWebSocket {\n /**\n * Constructor\n * @param url WebSocket server URL\n * @param [WebSocketClass] Custom WebSocket implementation\n */\n constructor(url, WebSocketClass = WebSocket) {\n this.WebSocketClass = WebSocketClass;\n this.webSocket = null;\n this.connectionStateSubject = new rxjs_1.BehaviorSubject(ConnectionState.DISCONNECTED);\n this.incomingDataSubject = new rxjs_1.Subject();\n this.url = url.replace(/^http/, \"ws\");\n }\n /**\n * Make a websocket connection\n * @returns an Observable that completes when connected\n */\n connect() {\n if (this.webSocket) {\n return (0, rxjs_1.throwError)(new Error(\"webSocket object is not null\"));\n }\n return new rxjs_1.Observable(obs => {\n let webSocket;\n try {\n this.webSocket = webSocket = new this.WebSocketClass(this.url);\n }\n catch (err) {\n obs.error(err);\n return;\n }\n this.connectionStateSubject.next(ConnectionState.CONNECTING);\n webSocket.onclose = evt => {\n this.clearWebSocket();\n obs.error(new Error(`websocket error ${evt.code}: ${evt.reason}`));\n this.connectionStateSubject.next(ConnectionState.DISCONNECTED);\n };\n webSocket.onopen = _ => {\n obs.next();\n obs.complete();\n this.connectionStateSubject.next(ConnectionState.CONNECTED);\n };\n webSocket.onmessage = evt => {\n this.incomingDataSubject.next(evt.data);\n };\n }).pipe((0, operators_1.take)(1));\n }\n /**\n * Disconnect from server\n */\n disconnect() {\n const { webSocket } = this;\n if (!webSocket) {\n return;\n }\n this.clearWebSocket();\n this.connectionStateSubject.next(ConnectionState.DISCONNECTED);\n try {\n webSocket.close();\n }\n catch (_a) { }\n }\n /**\n * Emit current connection state and subsequent changes\n * @returns an Observable for the connection state\n */\n get connectionState$() {\n return this.connectionStateSubject.asObservable();\n }\n /**\n * Emit incoming data from server\n * @returns an Observable for the data received\n */\n get incomingData$() {\n return this.incomingDataSubject.asObservable();\n }\n /**\n * Emit incoming JSON data from server. non-JSON data are ignored\n * @returns an Observable for parsed JSON data\n */\n get incomingJSONData$() {\n return this.incomingData$.pipe((0, operators_1.flatMap)(m => {\n let j;\n try {\n j = JSON.parse(m);\n }\n catch (err) {\n return (0, rxjs_1.empty)();\n }\n return (0, rxjs_1.of)(j);\n }));\n }\n /**\n * Send data to server\n * @param data text to send\n */\n sendData(data) {\n const { webSocket } = this;\n if (!webSocket) {\n throw new Error(\"websocket is not connected\");\n }\n webSocket.send(data);\n }\n clearWebSocket() {\n const { webSocket } = this;\n if (!webSocket) {\n return;\n }\n this.webSocket = null;\n webSocket.onclose = null;\n webSocket.onerror = null;\n webSocket.onmessage = null;\n webSocket.onopen = null;\n }\n}\nexports.RxWebSocket = RxWebSocket;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isServerMessageFail = void 0;\nfunction isServerMessageFail(msg) {\n return (msg &&\n msg.type === \"Fail\" &&\n typeof msg.id === \"number\" &&\n typeof msg.sessionId === \"string\" &&\n typeof msg.error === \"string\");\n}\nexports.isServerMessageFail = isServerMessageFail;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WalletSDKConnection = void 0;\nconst rxjs_1 = require(\"rxjs\");\nconst operators_1 = require(\"rxjs/operators\");\nconst Session_1 = require(\"../relay/Session\");\nconst types_1 = require(\"../types\");\nconst ClientMessage_1 = require(\"./ClientMessage\");\nconst DiagnosticLogger_1 = require(\"./DiagnosticLogger\");\nconst RxWebSocket_1 = require(\"./RxWebSocket\");\nconst ServerMessage_1 = require(\"./ServerMessage\");\nconst HEARTBEAT_INTERVAL = 10000;\nconst REQUEST_TIMEOUT = 60000;\n/**\n * Coinbase Wallet Connection\n */\nclass WalletSDKConnection {\n /**\n * Constructor\n * @param sessionId Session ID\n * @param sessionKey Session Key\n * @param linkAPIUrl Coinbase Wallet link server URL\n * @param [WebSocketClass] Custom WebSocket implementation\n */\n constructor(sessionId, sessionKey, linkAPIUrl, diagnostic, WebSocketClass = WebSocket) {\n this.sessionId = sessionId;\n this.sessionKey = sessionKey;\n this.diagnostic = diagnostic;\n this.subscriptions = new rxjs_1.Subscription();\n this.destroyed = false;\n this.lastHeartbeatResponse = 0;\n this.nextReqId = (0, types_1.IntNumber)(1);\n this.connectedSubject = new rxjs_1.BehaviorSubject(false);\n this.linkedSubject = new rxjs_1.BehaviorSubject(false);\n this.sessionConfigSubject = new rxjs_1.ReplaySubject(1);\n const ws = new RxWebSocket_1.RxWebSocket(linkAPIUrl + \"/rpc\", WebSocketClass);\n this.ws = ws;\n // attempt to reconnect every 5 seconds when disconnected\n this.subscriptions.add(ws.connectionState$\n .pipe((0, operators_1.tap)(state => {\n var _a;\n return (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.CONNECTED_STATE_CHANGE, {\n state,\n sessionIdHash: Session_1.Session.hash(sessionId),\n });\n }), \n // ignore initial DISCONNECTED state\n (0, operators_1.skip)(1), \n // if DISCONNECTED and not destroyed\n (0, operators_1.filter)(cs => cs === RxWebSocket_1.ConnectionState.DISCONNECTED && !this.destroyed), \n // wait 5 seconds\n (0, operators_1.delay)(5000), \n // check whether it's destroyed again\n (0, operators_1.filter)(_ => !this.destroyed), \n // reconnect\n (0, operators_1.flatMap)(_ => ws.connect()), (0, operators_1.retry)())\n .subscribe());\n // perform authentication upon connection\n this.subscriptions.add(ws.connectionState$\n .pipe(\n // ignore initial DISCONNECTED and CONNECTING states\n (0, operators_1.skip)(2), (0, operators_1.switchMap)(cs => (0, rxjs_1.iif)(() => cs === RxWebSocket_1.ConnectionState.CONNECTED, \n // if CONNECTED, authenticate, and then check link status\n this.authenticate().pipe((0, operators_1.tap)(_ => this.sendIsLinked()), (0, operators_1.tap)(_ => this.sendGetSessionConfig()), (0, operators_1.map)(_ => true)), \n // if not CONNECTED, emit false immediately\n (0, rxjs_1.of)(false))), (0, operators_1.distinctUntilChanged)(), (0, operators_1.catchError)(_ => (0, rxjs_1.of)(false)))\n .subscribe(connected => this.connectedSubject.next(connected)));\n // send heartbeat every n seconds while connected\n this.subscriptions.add(ws.connectionState$\n .pipe(\n // ignore initial DISCONNECTED state\n (0, operators_1.skip)(1), (0, operators_1.switchMap)(cs => (0, rxjs_1.iif)(() => cs === RxWebSocket_1.ConnectionState.CONNECTED, \n // if CONNECTED, start the heartbeat timer\n (0, rxjs_1.timer)(0, HEARTBEAT_INTERVAL))))\n .subscribe(i => \n // first timer event updates lastHeartbeat timestamp\n // subsequent calls send heartbeat message\n i === 0 ? this.updateLastHeartbeat() : this.heartbeat()));\n // handle server's heartbeat responses\n this.subscriptions.add(ws.incomingData$\n .pipe((0, operators_1.filter)(m => m === \"h\"))\n .subscribe(_ => this.updateLastHeartbeat()));\n // handle link status updates\n this.subscriptions.add(ws.incomingJSONData$\n .pipe((0, operators_1.filter)(m => [\"IsLinkedOK\", \"Linked\"].includes(m.type)))\n .subscribe(m => {\n var _a;\n const msg = m;\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.LINKED, {\n sessionIdHash: Session_1.Session.hash(sessionId),\n linked: msg.linked,\n type: m.type,\n onlineGuests: msg.onlineGuests,\n });\n this.linkedSubject.next(msg.linked || msg.onlineGuests > 0);\n }));\n // handle session config updates\n this.subscriptions.add(ws.incomingJSONData$\n .pipe((0, operators_1.filter)(m => [\"GetSessionConfigOK\", \"SessionConfigUpdated\"].includes(m.type)))\n .subscribe(m => {\n var _a;\n const msg = m;\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.SESSION_CONFIG_RECEIVED, {\n sessionIdHash: Session_1.Session.hash(sessionId),\n metadata_keys: msg && msg.metadata ? Object.keys(msg.metadata) : undefined,\n });\n this.sessionConfigSubject.next({\n webhookId: msg.webhookId,\n webhookUrl: msg.webhookUrl,\n metadata: msg.metadata,\n });\n }));\n }\n /**\n * Make a connection to the server\n */\n connect() {\n var _a;\n if (this.destroyed) {\n throw new Error(\"instance is destroyed\");\n }\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.STARTED_CONNECTING, {\n sessionIdHash: Session_1.Session.hash(this.sessionId),\n });\n this.ws.connect().subscribe();\n }\n /**\n * Terminate connection, and mark as destroyed. To reconnect, create a new\n * instance of WalletSDKConnection\n */\n destroy() {\n var _a;\n this.subscriptions.unsubscribe();\n this.ws.disconnect();\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.DISCONNECTED, {\n sessionIdHash: Session_1.Session.hash(this.sessionId),\n });\n this.destroyed = true;\n }\n get isDestroyed() {\n return this.destroyed;\n }\n /**\n * Emit true if connected and authenticated, else false\n * @returns an Observable\n */\n get connected$() {\n return this.connectedSubject.asObservable();\n }\n /**\n * Emit once connected\n * @returns an Observable\n */\n get onceConnected$() {\n return this.connected$.pipe((0, operators_1.filter)(v => v), (0, operators_1.take)(1), (0, operators_1.map)(() => void 0));\n }\n /**\n * Emit true if linked (a guest has joined before)\n * @returns an Observable\n */\n get linked$() {\n return this.linkedSubject.asObservable();\n }\n /**\n * Emit once when linked\n * @returns an Observable\n */\n get onceLinked$() {\n return this.linked$.pipe((0, operators_1.filter)(v => v), (0, operators_1.take)(1), (0, operators_1.map)(() => void 0));\n }\n /**\n * Emit current session config if available, and subsequent updates\n * @returns an Observable for the session config\n */\n get sessionConfig$() {\n return this.sessionConfigSubject.asObservable();\n }\n /**\n * Emit incoming Event messages\n * @returns an Observable for the messages\n */\n get incomingEvent$() {\n return this.ws.incomingJSONData$.pipe((0, operators_1.filter)(m => {\n if (m.type !== \"Event\") {\n return false;\n }\n const sme = m;\n return (typeof sme.sessionId === \"string\" &&\n typeof sme.eventId === \"string\" &&\n typeof sme.event === \"string\" &&\n typeof sme.data === \"string\");\n }), (0, operators_1.map)(m => m));\n }\n /**\n * Set session metadata in SessionConfig object\n * @param key\n * @param value\n * @returns an Observable that completes when successful\n */\n setSessionMetadata(key, value) {\n const message = (0, ClientMessage_1.ClientMessageSetSessionConfig)({\n id: (0, types_1.IntNumber)(this.nextReqId++),\n sessionId: this.sessionId,\n metadata: { [key]: value },\n });\n return this.onceConnected$.pipe((0, operators_1.flatMap)(_ => this.makeRequest(message)), (0, operators_1.map)(res => {\n if ((0, ServerMessage_1.isServerMessageFail)(res)) {\n throw new Error(res.error || \"failed to set session metadata\");\n }\n }));\n }\n /**\n * Publish an event and emit event ID when successful\n * @param event event name\n * @param data event data\n * @param callWebhook whether the webhook should be invoked\n * @returns an Observable that emits event ID when successful\n */\n publishEvent(event, data, callWebhook = false) {\n const message = (0, ClientMessage_1.ClientMessagePublishEvent)({\n id: (0, types_1.IntNumber)(this.nextReqId++),\n sessionId: this.sessionId,\n event,\n data,\n callWebhook,\n });\n return this.onceLinked$.pipe((0, operators_1.flatMap)(_ => this.makeRequest(message)), (0, operators_1.map)(res => {\n if ((0, ServerMessage_1.isServerMessageFail)(res)) {\n throw new Error(res.error || \"failed to publish event\");\n }\n return res.eventId;\n }));\n }\n sendData(message) {\n this.ws.sendData(JSON.stringify(message));\n }\n updateLastHeartbeat() {\n this.lastHeartbeatResponse = Date.now();\n }\n heartbeat() {\n if (Date.now() - this.lastHeartbeatResponse > HEARTBEAT_INTERVAL * 2) {\n this.ws.disconnect();\n return;\n }\n try {\n this.ws.sendData(\"h\");\n }\n catch (_a) { }\n }\n makeRequest(message, timeout = REQUEST_TIMEOUT) {\n const reqId = message.id;\n try {\n this.sendData(message);\n }\n catch (err) {\n return (0, rxjs_1.throwError)(err);\n }\n // await server message with corresponding id\n return this.ws.incomingJSONData$.pipe((0, operators_1.timeoutWith)(timeout, (0, rxjs_1.throwError)(new Error(`request ${reqId} timed out`))), (0, operators_1.filter)(m => m.id === reqId), (0, operators_1.take)(1));\n }\n authenticate() {\n const msg = (0, ClientMessage_1.ClientMessageHostSession)({\n id: (0, types_1.IntNumber)(this.nextReqId++),\n sessionId: this.sessionId,\n sessionKey: this.sessionKey,\n });\n return this.makeRequest(msg).pipe((0, operators_1.map)(res => {\n if ((0, ServerMessage_1.isServerMessageFail)(res)) {\n throw new Error(res.error || \"failed to authentcate\");\n }\n }));\n }\n sendIsLinked() {\n const msg = (0, ClientMessage_1.ClientMessageIsLinked)({\n id: (0, types_1.IntNumber)(this.nextReqId++),\n sessionId: this.sessionId,\n });\n this.sendData(msg);\n }\n sendGetSessionConfig() {\n const msg = (0, ClientMessage_1.ClientMessageGetSessionConfig)({\n id: (0, types_1.IntNumber)(this.nextReqId++),\n sessionId: this.sessionId,\n });\n this.sendData(msg);\n }\n}\nexports.WalletSDKConnection = WalletSDKConnection;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CoinbaseWalletProvider = exports.CoinbaseWalletSDK = void 0;\nconst CoinbaseWalletSDK_1 = require(\"./CoinbaseWalletSDK\");\nconst CoinbaseWalletProvider_1 = require(\"./provider/CoinbaseWalletProvider\");\nvar CoinbaseWalletSDK_2 = require(\"./CoinbaseWalletSDK\");\nObject.defineProperty(exports, \"CoinbaseWalletSDK\", { enumerable: true, get: function () { return CoinbaseWalletSDK_2.CoinbaseWalletSDK; } });\nvar CoinbaseWalletProvider_2 = require(\"./provider/CoinbaseWalletProvider\");\nObject.defineProperty(exports, \"CoinbaseWalletProvider\", { enumerable: true, get: function () { return CoinbaseWalletProvider_2.CoinbaseWalletProvider; } });\nexports.default = CoinbaseWalletSDK_1.CoinbaseWalletSDK;\nif (typeof window !== \"undefined\") {\n window.CoinbaseWalletSDK = CoinbaseWalletSDK_1.CoinbaseWalletSDK;\n window.CoinbaseWalletProvider = CoinbaseWalletProvider_1.CoinbaseWalletProvider;\n /**\n * @deprecated Use `window.CoinbaseWalletSDK`\n */\n window.WalletLink = CoinbaseWalletSDK_1.CoinbaseWalletSDK;\n /**\n * @deprecated Use `window.CoinbaseWalletProvider`\n */\n window.WalletLinkProvider = CoinbaseWalletProvider_1.CoinbaseWalletProvider;\n}\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ScopedLocalStorage = void 0;\nclass ScopedLocalStorage {\n constructor(scope) {\n this.scope = scope;\n }\n setItem(key, value) {\n localStorage.setItem(this.scopedKey(key), value);\n }\n getItem(key) {\n return localStorage.getItem(this.scopedKey(key));\n }\n removeItem(key) {\n localStorage.removeItem(this.scopedKey(key));\n }\n clear() {\n const prefix = this.scopedKey(\"\");\n const keysToRemove = [];\n for (let i = 0; i < localStorage.length; i++) {\n const key = localStorage.key(i);\n if (typeof key === \"string\" && key.startsWith(prefix)) {\n keysToRemove.push(key);\n }\n }\n keysToRemove.forEach(key => localStorage.removeItem(key));\n }\n scopedKey(key) {\n return `${this.scope}:${key}`;\n }\n}\nexports.ScopedLocalStorage = ScopedLocalStorage;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = `@namespace svg \"http://www.w3.org/2000/svg\";.-cbwsdk-css-reset,.-cbwsdk-css-reset *{animation:none;animation-delay:0;animation-direction:normal;animation-duration:0;animation-fill-mode:none;animation-iteration-count:1;animation-name:none;animation-play-state:running;animation-timing-function:ease;backface-visibility:visible;background:0;background-attachment:scroll;background-clip:border-box;background-color:rgba(0,0,0,0);background-image:none;background-origin:padding-box;background-position:0 0;background-position-x:0;background-position-y:0;background-repeat:repeat;background-size:auto auto;border:0;border-style:none;border-width:medium;border-color:inherit;border-bottom:0;border-bottom-color:inherit;border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-style:none;border-bottom-width:medium;border-collapse:separate;border-image:none;border-left:0;border-left-color:inherit;border-left-style:none;border-left-width:medium;border-radius:0;border-right:0;border-right-color:inherit;border-right-style:none;border-right-width:medium;border-spacing:0;border-top:0;border-top-color:inherit;border-top-left-radius:0;border-top-right-radius:0;border-top-style:none;border-top-width:medium;box-shadow:none;box-sizing:border-box;caption-side:top;clear:none;clip:auto;color:inherit;columns:auto;column-count:auto;column-fill:balance;column-gap:normal;column-rule:medium none currentColor;column-rule-color:currentColor;column-rule-style:none;column-rule-width:none;column-span:1;column-width:auto;counter-increment:none;counter-reset:none;direction:ltr;empty-cells:show;float:none;font:normal;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",\"Helvetica Neue\",Arial,sans-serif;font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;height:auto;hyphens:none;letter-spacing:normal;line-height:normal;list-style:none;list-style-image:none;list-style-position:outside;list-style-type:disc;margin:0;margin-bottom:0;margin-left:0;margin-right:0;margin-top:0;opacity:1;orphans:0;outline:0;outline-color:invert;outline-style:none;outline-width:medium;overflow:visible;overflow-x:visible;overflow-y:visible;padding:0;padding-bottom:0;padding-left:0;padding-right:0;padding-top:0;page-break-after:auto;page-break-before:auto;page-break-inside:auto;perspective:none;perspective-origin:50% 50%;pointer-events:auto;position:static;quotes:\"\\\\201C\" \"\\\\201D\" \"\\\\2018\" \"\\\\2019\";tab-size:8;table-layout:auto;text-align:inherit;text-align-last:auto;text-decoration:none;text-decoration-color:inherit;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-shadow:none;text-transform:none;transform:none;transform-style:flat;transition:none;transition-delay:0s;transition-duration:0s;transition-property:none;transition-timing-function:ease;unicode-bidi:normal;vertical-align:baseline;visibility:visible;white-space:normal;widows:0;word-spacing:normal;z-index:auto}.-cbwsdk-css-reset strong{font-weight:bold}.-cbwsdk-css-reset *{box-sizing:border-box;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",\"Helvetica Neue\",Arial,sans-serif;line-height:1}.-cbwsdk-css-reset [class*=container]{margin:0;padding:0}.-cbwsdk-css-reset style{display:none}`;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.injectCssReset = void 0;\nconst cssReset_css_1 = __importDefault(require(\"./cssReset-css\"));\nfunction injectCssReset() {\n const styleEl = document.createElement(\"style\");\n styleEl.type = \"text/css\";\n styleEl.appendChild(document.createTextNode(cssReset_css_1.default));\n document.documentElement.appendChild(styleEl);\n}\nexports.injectCssReset = injectCssReset;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CoinbaseWalletProvider = void 0;\nconst safe_event_emitter_1 = __importDefault(require(\"@metamask/safe-event-emitter\"));\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst eth_rpc_errors_1 = require(\"eth-rpc-errors\");\nconst DiagnosticLogger_1 = require(\"../connection/DiagnosticLogger\");\nconst Session_1 = require(\"../relay/Session\");\nconst WalletSDKRelayAbstract_1 = require(\"../relay/WalletSDKRelayAbstract\");\nconst util_1 = require(\"../util\");\nconst eth_eip712_util_1 = __importDefault(require(\"../vendor-js/eth-eip712-util\"));\nconst FilterPolyfill_1 = require(\"./FilterPolyfill\");\nconst JSONRPC_1 = require(\"./JSONRPC\");\nconst SubscriptionManager_1 = require(\"./SubscriptionManager\");\nconst DEFAULT_CHAIN_ID_KEY = \"DefaultChainId\";\nconst DEFAULT_JSON_RPC_URL = \"DefaultJsonRpcUrl\";\nclass CoinbaseWalletProvider extends safe_event_emitter_1.default {\n constructor(options) {\n var _a, _b;\n super();\n this._filterPolyfill = new FilterPolyfill_1.FilterPolyfill(this);\n this._subscriptionManager = new SubscriptionManager_1.SubscriptionManager(this);\n this._relay = null;\n this._addresses = [];\n this.hasMadeFirstChainChangedEmission = false;\n this._send = this.send.bind(this);\n this._sendAsync = this.sendAsync.bind(this);\n this.setProviderInfo = this.setProviderInfo.bind(this);\n this.updateProviderInfo = this.updateProviderInfo.bind(this);\n this.getChainId = this.getChainId.bind(this);\n this.setAppInfo = this.setAppInfo.bind(this);\n this.enable = this.enable.bind(this);\n this.close = this.close.bind(this);\n this.send = this.send.bind(this);\n this.sendAsync = this.sendAsync.bind(this);\n this.request = this.request.bind(this);\n this._setAddresses = this._setAddresses.bind(this);\n this.scanQRCode = this.scanQRCode.bind(this);\n this.genericRequest = this.genericRequest.bind(this);\n this._chainIdFromOpts = options.chainId;\n this._jsonRpcUrlFromOpts = options.jsonRpcUrl;\n this._overrideIsMetaMask = options.overrideIsMetaMask;\n this._relayProvider = options.relayProvider;\n this._storage = options.storage;\n this._relayEventManager = options.relayEventManager;\n this.diagnostic = options.diagnosticLogger;\n this.reloadOnDisconnect = true;\n this.isCoinbaseWallet = (_a = options.overrideIsCoinbaseWallet) !== null && _a !== void 0 ? _a : true;\n this.isCoinbaseBrowser = (_b = options.overrideIsCoinbaseBrowser) !== null && _b !== void 0 ? _b : false;\n this.qrUrl = options.qrUrl;\n this.supportsAddressSwitching = options.supportsAddressSwitching;\n this.isLedger = options.isLedger;\n const chainId = this.getChainId();\n const chainIdStr = (0, util_1.prepend0x)(chainId.toString(16));\n // indicate that we've connected, for EIP-1193 compliance\n this.emit(\"connect\", { chainIdStr });\n const cachedAddresses = this._storage.getItem(WalletSDKRelayAbstract_1.LOCAL_STORAGE_ADDRESSES_KEY);\n if (cachedAddresses) {\n const addresses = cachedAddresses.split(\" \");\n if (addresses[0] !== \"\") {\n this._addresses = addresses.map(address => (0, util_1.ensureAddressString)(address));\n this.emit(\"accountsChanged\", addresses);\n }\n }\n this._subscriptionManager.events.on(\"notification\", (notification) => {\n this.emit(\"message\", {\n type: notification.method,\n data: notification.params,\n });\n });\n if (this._addresses.length > 0) {\n void this.initializeRelay();\n }\n window.addEventListener(\"message\", event => {\n var _a;\n // Used to verify the source and window are correct before proceeding\n if (event.origin !== location.origin || event.source !== window) {\n return;\n }\n if (event.data.type !== \"walletLinkMessage\")\n return; // compatibility with CBW extension\n if (event.data.data.action === \"defaultChainChanged\" ||\n event.data.data.action === \"dappChainSwitched\") {\n const _chainId = event.data.data.chainId;\n const jsonRpcUrl = (_a = event.data.data.jsonRpcUrl) !== null && _a !== void 0 ? _a : this.jsonRpcUrl;\n this.updateProviderInfo(jsonRpcUrl, Number(_chainId));\n }\n if (event.data.data.action === \"addressChanged\") {\n this._setAddresses([event.data.data.address]);\n }\n });\n }\n get selectedAddress() {\n return this._addresses[0] || undefined;\n }\n get networkVersion() {\n return this.getChainId().toString(10);\n }\n get chainId() {\n return (0, util_1.prepend0x)(this.getChainId().toString(16));\n }\n get isWalletLink() {\n // backward compatibility\n return true;\n }\n /**\n * Some DApps (i.e. Alpha Homora) seem to require the window.ethereum object return\n * true for this method.\n */\n get isMetaMask() {\n return this._overrideIsMetaMask;\n }\n get host() {\n return this.jsonRpcUrl;\n }\n get connected() {\n return true;\n }\n isConnected() {\n return true;\n }\n get jsonRpcUrl() {\n var _a;\n return ((_a = this._storage.getItem(DEFAULT_JSON_RPC_URL)) !== null && _a !== void 0 ? _a : this._jsonRpcUrlFromOpts);\n }\n set jsonRpcUrl(value) {\n this._storage.setItem(DEFAULT_JSON_RPC_URL, value);\n }\n disableReloadOnDisconnect() {\n this.reloadOnDisconnect = false;\n }\n /**\n * this function is called when coinbase provider is being injected to a dapp\n * standalone + walletlinked extension, ledger, in-app browser using cipher-web-view\n */\n setProviderInfo(jsonRpcUrl, chainId) {\n // extension tend to use the chianId from the dapp, while in-app browser and ledger overrides the default network\n if (!(this.isLedger || this.isCoinbaseBrowser)) {\n this._chainIdFromOpts = chainId;\n this._jsonRpcUrlFromOpts = jsonRpcUrl;\n }\n this.updateProviderInfo(this.jsonRpcUrl, this.getChainId());\n }\n updateProviderInfo(jsonRpcUrl, chainId) {\n this.jsonRpcUrl = jsonRpcUrl;\n // emit chainChanged event if necessary\n const originalChainId = this.getChainId();\n this._storage.setItem(DEFAULT_CHAIN_ID_KEY, chainId.toString(10));\n const chainChanged = (0, util_1.ensureIntNumber)(chainId) !== originalChainId;\n if (chainChanged || !this.hasMadeFirstChainChangedEmission) {\n this.emit(\"chainChanged\", this.getChainId());\n this.hasMadeFirstChainChangedEmission = true;\n }\n }\n async watchAsset(type, address, symbol, decimals, image, chainId) {\n const relay = await this.initializeRelay();\n const result = await relay.watchAsset(type, address, symbol, decimals, image, chainId === null || chainId === void 0 ? void 0 : chainId.toString()).promise;\n return !!result.result;\n }\n async addEthereumChain(chainId, rpcUrls, blockExplorerUrls, chainName, iconUrls, nativeCurrency) {\n var _a, _b;\n if ((0, util_1.ensureIntNumber)(chainId) === this.getChainId()) {\n return false;\n }\n const relay = await this.initializeRelay();\n const isWhitelistedNetworkOrStandalone = relay.inlineAddEthereumChain(chainId.toString());\n if (!this._isAuthorized() && !isWhitelistedNetworkOrStandalone) {\n await relay.requestEthereumAccounts().promise;\n }\n const res = await relay.addEthereumChain(chainId.toString(), rpcUrls, iconUrls, blockExplorerUrls, chainName, nativeCurrency).promise;\n if (((_a = res.result) === null || _a === void 0 ? void 0 : _a.isApproved) === true) {\n this.updateProviderInfo(rpcUrls[0], chainId);\n }\n return ((_b = res.result) === null || _b === void 0 ? void 0 : _b.isApproved) === true;\n }\n async switchEthereumChain(chainId) {\n const relay = await this.initializeRelay();\n const res = await relay.switchEthereumChain(chainId.toString(10), this.selectedAddress || undefined).promise;\n if (res.errorCode) {\n throw eth_rpc_errors_1.ethErrors.provider.custom({\n code: res.errorCode,\n });\n }\n const switchResponse = res.result;\n if (switchResponse.isApproved && switchResponse.rpcUrl.length > 0) {\n this.updateProviderInfo(switchResponse.rpcUrl, chainId);\n }\n }\n setAppInfo(appName, appLogoUrl) {\n void this.initializeRelay().then(relay => relay.setAppInfo(appName, appLogoUrl));\n }\n async enable() {\n var _a;\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.ETH_ACCOUNTS_STATE, {\n method: \"provider::enable\",\n addresses_length: this._addresses.length,\n sessionIdHash: this._relay\n ? Session_1.Session.hash(this._relay.session.id)\n : undefined,\n });\n if (this._addresses.length > 0) {\n return [...this._addresses];\n }\n return await this._send(JSONRPC_1.JSONRPCMethod.eth_requestAccounts);\n }\n async close() {\n const relay = await this.initializeRelay();\n relay.resetAndReload();\n }\n send(requestOrMethod, callbackOrParams) {\n // send(method, params): Promise\n if (typeof requestOrMethod === \"string\") {\n const method = requestOrMethod;\n const params = Array.isArray(callbackOrParams)\n ? callbackOrParams\n : callbackOrParams !== undefined\n ? [callbackOrParams]\n : [];\n const request = {\n jsonrpc: \"2.0\",\n id: 0,\n method,\n params,\n };\n return this._sendRequestAsync(request).then(res => res.result);\n }\n // send(JSONRPCRequest | JSONRPCRequest[], callback): void\n if (typeof callbackOrParams === \"function\") {\n const request = requestOrMethod;\n const callback = callbackOrParams;\n return this._sendAsync(request, callback);\n }\n // send(JSONRPCRequest[]): JSONRPCResponse[]\n if (Array.isArray(requestOrMethod)) {\n const requests = requestOrMethod;\n return requests.map(r => this._sendRequest(r));\n }\n // send(JSONRPCRequest): JSONRPCResponse\n const req = requestOrMethod;\n return this._sendRequest(req);\n }\n async sendAsync(request, callback) {\n if (typeof callback !== \"function\") {\n throw new Error(\"callback is required\");\n }\n // send(JSONRPCRequest[], callback): void\n if (Array.isArray(request)) {\n const arrayCb = callback;\n this._sendMultipleRequestsAsync(request)\n .then(responses => arrayCb(null, responses))\n .catch(err => arrayCb(err, null));\n return;\n }\n // send(JSONRPCRequest, callback): void\n const cb = callback;\n return this._sendRequestAsync(request)\n .then(response => cb(null, response))\n .catch(err => cb(err, null));\n }\n async request(args) {\n if (!args || typeof args !== \"object\" || Array.isArray(args)) {\n throw eth_rpc_errors_1.ethErrors.rpc.invalidRequest({\n message: \"Expected a single, non-array, object argument.\",\n data: args,\n });\n }\n const { method, params } = args;\n if (typeof method !== \"string\" || method.length === 0) {\n throw eth_rpc_errors_1.ethErrors.rpc.invalidRequest({\n message: \"'args.method' must be a non-empty string.\",\n data: args,\n });\n }\n if (params !== undefined &&\n !Array.isArray(params) &&\n (typeof params !== \"object\" || params === null)) {\n throw eth_rpc_errors_1.ethErrors.rpc.invalidRequest({\n message: \"'args.params' must be an object or array if provided.\",\n data: args,\n });\n }\n const newParams = params === undefined ? [] : params;\n // Coinbase Wallet Requests\n const id = this._relayEventManager.makeRequestId();\n const result = await this._sendRequestAsync({\n method,\n params: newParams,\n jsonrpc: \"2.0\",\n id,\n });\n return result.result;\n }\n async scanQRCode(match) {\n const relay = await this.initializeRelay();\n const res = await relay.scanQRCode((0, util_1.ensureRegExpString)(match)).promise;\n if (typeof res.result !== \"string\") {\n throw new Error(\"result was not a string\");\n }\n return res.result;\n }\n async genericRequest(data, action) {\n const relay = await this.initializeRelay();\n const res = await relay.genericRequest(data, action).promise;\n if (typeof res.result !== \"string\") {\n throw new Error(\"result was not a string\");\n }\n return res.result;\n }\n async selectProvider(providerOptions) {\n const relay = await this.initializeRelay();\n const res = await relay.selectProvider(providerOptions).promise;\n if (typeof res.result !== \"string\") {\n throw new Error(\"result was not a string\");\n }\n return res.result;\n }\n supportsSubscriptions() {\n return false;\n }\n subscribe() {\n throw new Error(\"Subscriptions are not supported\");\n }\n unsubscribe() {\n throw new Error(\"Subscriptions are not supported\");\n }\n disconnect() {\n return true;\n }\n _sendRequest(request) {\n const response = {\n jsonrpc: \"2.0\",\n id: request.id,\n };\n const { method } = request;\n response.result = this._handleSynchronousMethods(request);\n if (response.result === undefined) {\n throw new Error(`Coinbase Wallet does not support calling ${method} synchronously without ` +\n `a callback. Please provide a callback parameter to call ${method} ` +\n `asynchronously.`);\n }\n return response;\n }\n _setAddresses(addresses, isDisconnect) {\n if (!Array.isArray(addresses)) {\n throw new Error(\"addresses is not an array\");\n }\n const newAddresses = addresses.map(address => (0, util_1.ensureAddressString)(address));\n if (JSON.stringify(newAddresses) === JSON.stringify(this._addresses)) {\n return;\n }\n if (this._addresses.length > 0 &&\n this.supportsAddressSwitching === false &&\n !isDisconnect) {\n /**\n * The extension currently doesn't support switching selected wallet index\n * make sure walletlink doesn't update it's address in this case\n */\n return;\n }\n this._addresses = newAddresses;\n this.emit(\"accountsChanged\", this._addresses);\n this._storage.setItem(WalletSDKRelayAbstract_1.LOCAL_STORAGE_ADDRESSES_KEY, newAddresses.join(\" \"));\n }\n _sendRequestAsync(request) {\n return new Promise((resolve, reject) => {\n try {\n const syncResult = this._handleSynchronousMethods(request);\n if (syncResult !== undefined) {\n return resolve({\n jsonrpc: \"2.0\",\n id: request.id,\n result: syncResult,\n });\n }\n const filterPromise = this._handleAsynchronousFilterMethods(request);\n if (filterPromise !== undefined) {\n filterPromise\n .then(res => resolve(Object.assign(Object.assign({}, res), { id: request.id })))\n .catch(err => reject(err));\n return;\n }\n const subscriptionPromise = this._handleSubscriptionMethods(request);\n if (subscriptionPromise !== undefined) {\n subscriptionPromise\n .then(res => resolve({\n jsonrpc: \"2.0\",\n id: request.id,\n result: res.result,\n }))\n .catch(err => reject(err));\n return;\n }\n }\n catch (err) {\n return reject(err);\n }\n this._handleAsynchronousMethods(request)\n .then(res => res && resolve(Object.assign(Object.assign({}, res), { id: request.id })))\n .catch(err => reject(err));\n });\n }\n _sendMultipleRequestsAsync(requests) {\n return Promise.all(requests.map(r => this._sendRequestAsync(r)));\n }\n _handleSynchronousMethods(request) {\n const { method } = request;\n const params = request.params || [];\n switch (method) {\n case JSONRPC_1.JSONRPCMethod.eth_accounts:\n return this._eth_accounts();\n case JSONRPC_1.JSONRPCMethod.eth_coinbase:\n return this._eth_coinbase();\n case JSONRPC_1.JSONRPCMethod.eth_uninstallFilter:\n return this._eth_uninstallFilter(params);\n case JSONRPC_1.JSONRPCMethod.net_version:\n return this._net_version();\n case JSONRPC_1.JSONRPCMethod.eth_chainId:\n return this._eth_chainId();\n default:\n return undefined;\n }\n }\n async _handleAsynchronousMethods(request) {\n const { method } = request;\n const params = request.params || [];\n switch (method) {\n case JSONRPC_1.JSONRPCMethod.eth_requestAccounts:\n return this._eth_requestAccounts();\n case JSONRPC_1.JSONRPCMethod.eth_sign:\n return this._eth_sign(params);\n case JSONRPC_1.JSONRPCMethod.eth_ecRecover:\n return this._eth_ecRecover(params);\n case JSONRPC_1.JSONRPCMethod.personal_sign:\n return this._personal_sign(params);\n case JSONRPC_1.JSONRPCMethod.personal_ecRecover:\n return this._personal_ecRecover(params);\n case JSONRPC_1.JSONRPCMethod.eth_signTransaction:\n return this._eth_signTransaction(params);\n case JSONRPC_1.JSONRPCMethod.eth_sendRawTransaction:\n return this._eth_sendRawTransaction(params);\n case JSONRPC_1.JSONRPCMethod.eth_sendTransaction:\n return this._eth_sendTransaction(params);\n case JSONRPC_1.JSONRPCMethod.eth_signTypedData_v1:\n return this._eth_signTypedData_v1(params);\n case JSONRPC_1.JSONRPCMethod.eth_signTypedData_v2:\n return this._throwUnsupportedMethodError();\n case JSONRPC_1.JSONRPCMethod.eth_signTypedData_v3:\n return this._eth_signTypedData_v3(params);\n case JSONRPC_1.JSONRPCMethod.eth_signTypedData_v4:\n case JSONRPC_1.JSONRPCMethod.eth_signTypedData:\n return this._eth_signTypedData_v4(params);\n case JSONRPC_1.JSONRPCMethod.cbWallet_arbitrary:\n return this._cbwallet_arbitrary(params);\n case JSONRPC_1.JSONRPCMethod.wallet_addEthereumChain:\n return this._wallet_addEthereumChain(params);\n case JSONRPC_1.JSONRPCMethod.wallet_switchEthereumChain:\n return this._wallet_switchEthereumChain(params);\n case JSONRPC_1.JSONRPCMethod.wallet_watchAsset:\n return this._wallet_watchAsset(params);\n }\n const relay = await this.initializeRelay();\n return relay.makeEthereumJSONRPCRequest(request, this.jsonRpcUrl);\n }\n _handleAsynchronousFilterMethods(request) {\n const { method } = request;\n const params = request.params || [];\n switch (method) {\n case JSONRPC_1.JSONRPCMethod.eth_newFilter:\n return this._eth_newFilter(params);\n case JSONRPC_1.JSONRPCMethod.eth_newBlockFilter:\n return this._eth_newBlockFilter();\n case JSONRPC_1.JSONRPCMethod.eth_newPendingTransactionFilter:\n return this._eth_newPendingTransactionFilter();\n case JSONRPC_1.JSONRPCMethod.eth_getFilterChanges:\n return this._eth_getFilterChanges(params);\n case JSONRPC_1.JSONRPCMethod.eth_getFilterLogs:\n return this._eth_getFilterLogs(params);\n }\n return undefined;\n }\n _handleSubscriptionMethods(request) {\n switch (request.method) {\n case JSONRPC_1.JSONRPCMethod.eth_subscribe:\n case JSONRPC_1.JSONRPCMethod.eth_unsubscribe:\n return this._subscriptionManager.handleRequest(request);\n }\n return undefined;\n }\n _isKnownAddress(addressString) {\n try {\n const addressStr = (0, util_1.ensureAddressString)(addressString);\n const lowercaseAddresses = this._addresses.map(address => (0, util_1.ensureAddressString)(address));\n return lowercaseAddresses.includes(addressStr);\n }\n catch (_a) { }\n return false;\n }\n _ensureKnownAddress(addressString) {\n var _a;\n if (!this._isKnownAddress(addressString)) {\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.UNKNOWN_ADDRESS_ENCOUNTERED);\n throw new Error(\"Unknown Ethereum address\");\n }\n }\n _prepareTransactionParams(tx) {\n const fromAddress = tx.from\n ? (0, util_1.ensureAddressString)(tx.from)\n : this.selectedAddress;\n if (!fromAddress) {\n throw new Error(\"Ethereum address is unavailable\");\n }\n this._ensureKnownAddress(fromAddress);\n const toAddress = tx.to ? (0, util_1.ensureAddressString)(tx.to) : null;\n const weiValue = tx.value != null ? (0, util_1.ensureBN)(tx.value) : new bn_js_1.default(0);\n const data = tx.data ? (0, util_1.ensureBuffer)(tx.data) : Buffer.alloc(0);\n const nonce = tx.nonce != null ? (0, util_1.ensureIntNumber)(tx.nonce) : null;\n const gasPriceInWei = tx.gasPrice != null ? (0, util_1.ensureBN)(tx.gasPrice) : null;\n const maxFeePerGas = tx.maxFeePerGas != null ? (0, util_1.ensureBN)(tx.maxFeePerGas) : null;\n const maxPriorityFeePerGas = tx.maxPriorityFeePerGas != null\n ? (0, util_1.ensureBN)(tx.maxPriorityFeePerGas)\n : null;\n const gasLimit = tx.gas != null ? (0, util_1.ensureBN)(tx.gas) : null;\n const chainId = this.getChainId();\n return {\n fromAddress,\n toAddress,\n weiValue,\n data,\n nonce,\n gasPriceInWei,\n maxFeePerGas,\n maxPriorityFeePerGas,\n gasLimit,\n chainId,\n };\n }\n _isAuthorized() {\n return this._addresses.length > 0;\n }\n _requireAuthorization() {\n if (!this._isAuthorized()) {\n throw eth_rpc_errors_1.ethErrors.provider.unauthorized({});\n }\n }\n _throwUnsupportedMethodError() {\n throw eth_rpc_errors_1.ethErrors.provider.unsupportedMethod({});\n }\n async _signEthereumMessage(message, address, addPrefix, typedDataJson) {\n this._ensureKnownAddress(address);\n try {\n const relay = await this.initializeRelay();\n const res = await relay.signEthereumMessage(message, address, addPrefix, typedDataJson).promise;\n return { jsonrpc: \"2.0\", id: 0, result: res.result };\n }\n catch (err) {\n if (typeof err.message === \"string\" &&\n err.message.match(/(denied|rejected)/i)) {\n throw eth_rpc_errors_1.ethErrors.provider.userRejectedRequest(\"User denied message signature\");\n }\n throw err;\n }\n }\n async _ethereumAddressFromSignedMessage(message, signature, addPrefix) {\n const relay = await this.initializeRelay();\n const res = await relay.ethereumAddressFromSignedMessage(message, signature, addPrefix).promise;\n return { jsonrpc: \"2.0\", id: 0, result: res.result };\n }\n _eth_accounts() {\n return [...this._addresses];\n }\n _eth_coinbase() {\n return this.selectedAddress || null;\n }\n _net_version() {\n return this.getChainId().toString(10);\n }\n _eth_chainId() {\n return (0, util_1.hexStringFromIntNumber)(this.getChainId());\n }\n getChainId() {\n const chainIdStr = this._storage.getItem(DEFAULT_CHAIN_ID_KEY);\n if (!chainIdStr) {\n return (0, util_1.ensureIntNumber)(this._chainIdFromOpts);\n }\n const chainId = parseInt(chainIdStr, 10);\n return (0, util_1.ensureIntNumber)(chainId);\n }\n async _eth_requestAccounts() {\n var _a;\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.ETH_ACCOUNTS_STATE, {\n method: \"provider::_eth_requestAccounts\",\n addresses_length: this._addresses.length,\n sessionIdHash: this._relay\n ? Session_1.Session.hash(this._relay.session.id)\n : undefined,\n });\n if (this._addresses.length > 0) {\n return Promise.resolve({\n jsonrpc: \"2.0\",\n id: 0,\n result: this._addresses,\n });\n }\n let res;\n try {\n const relay = await this.initializeRelay();\n res = await relay.requestEthereumAccounts().promise;\n }\n catch (err) {\n if (typeof err.message === \"string\" &&\n err.message.match(/(denied|rejected)/i)) {\n throw eth_rpc_errors_1.ethErrors.provider.userRejectedRequest(\"User denied account authorization\");\n }\n throw err;\n }\n if (!res.result) {\n throw new Error(\"accounts received is empty\");\n }\n this._setAddresses(res.result);\n if (!(this.isLedger || this.isCoinbaseBrowser)) {\n await this.switchEthereumChain(this.getChainId());\n }\n return { jsonrpc: \"2.0\", id: 0, result: this._addresses };\n }\n _eth_sign(params) {\n this._requireAuthorization();\n const address = (0, util_1.ensureAddressString)(params[0]);\n const message = (0, util_1.ensureBuffer)(params[1]);\n return this._signEthereumMessage(message, address, false);\n }\n _eth_ecRecover(params) {\n const message = (0, util_1.ensureBuffer)(params[0]);\n const signature = (0, util_1.ensureBuffer)(params[1]);\n return this._ethereumAddressFromSignedMessage(message, signature, false);\n }\n _personal_sign(params) {\n this._requireAuthorization();\n const message = (0, util_1.ensureBuffer)(params[0]);\n const address = (0, util_1.ensureAddressString)(params[1]);\n return this._signEthereumMessage(message, address, true);\n }\n _personal_ecRecover(params) {\n const message = (0, util_1.ensureBuffer)(params[0]);\n const signature = (0, util_1.ensureBuffer)(params[1]);\n return this._ethereumAddressFromSignedMessage(message, signature, true);\n }\n async _eth_signTransaction(params) {\n this._requireAuthorization();\n const tx = this._prepareTransactionParams(params[0] || {});\n try {\n const relay = await this.initializeRelay();\n const res = await relay.signEthereumTransaction(tx).promise;\n return { jsonrpc: \"2.0\", id: 0, result: res.result };\n }\n catch (err) {\n if (typeof err.message === \"string\" &&\n err.message.match(/(denied|rejected)/i)) {\n throw eth_rpc_errors_1.ethErrors.provider.userRejectedRequest(\"User denied transaction signature\");\n }\n throw err;\n }\n }\n async _eth_sendRawTransaction(params) {\n const signedTransaction = (0, util_1.ensureBuffer)(params[0]);\n const relay = await this.initializeRelay();\n const res = await relay.submitEthereumTransaction(signedTransaction, this.getChainId()).promise;\n return { jsonrpc: \"2.0\", id: 0, result: res.result };\n }\n async _eth_sendTransaction(params) {\n this._requireAuthorization();\n const tx = this._prepareTransactionParams(params[0] || {});\n try {\n const relay = await this.initializeRelay();\n const res = await relay.signAndSubmitEthereumTransaction(tx).promise;\n return { jsonrpc: \"2.0\", id: 0, result: res.result };\n }\n catch (err) {\n if (typeof err.message === \"string\" &&\n err.message.match(/(denied|rejected)/i)) {\n throw eth_rpc_errors_1.ethErrors.provider.userRejectedRequest(\"User denied transaction signature\");\n }\n throw err;\n }\n }\n async _eth_signTypedData_v1(params) {\n this._requireAuthorization();\n const typedData = (0, util_1.ensureParsedJSONObject)(params[0]);\n const address = (0, util_1.ensureAddressString)(params[1]);\n this._ensureKnownAddress(address);\n const message = eth_eip712_util_1.default.hashForSignTypedDataLegacy({ data: typedData });\n const typedDataJSON = JSON.stringify(typedData, null, 2);\n return this._signEthereumMessage(message, address, false, typedDataJSON);\n }\n async _eth_signTypedData_v3(params) {\n this._requireAuthorization();\n const address = (0, util_1.ensureAddressString)(params[0]);\n const typedData = (0, util_1.ensureParsedJSONObject)(params[1]);\n this._ensureKnownAddress(address);\n const message = eth_eip712_util_1.default.hashForSignTypedData_v3({ data: typedData });\n const typedDataJSON = JSON.stringify(typedData, null, 2);\n return this._signEthereumMessage(message, address, false, typedDataJSON);\n }\n async _eth_signTypedData_v4(params) {\n this._requireAuthorization();\n const address = (0, util_1.ensureAddressString)(params[0]);\n const typedData = (0, util_1.ensureParsedJSONObject)(params[1]);\n this._ensureKnownAddress(address);\n const message = eth_eip712_util_1.default.hashForSignTypedData_v4({ data: typedData });\n const typedDataJSON = JSON.stringify(typedData, null, 2);\n return this._signEthereumMessage(message, address, false, typedDataJSON);\n }\n /** @deprecated */\n async _cbwallet_arbitrary(params) {\n const action = params[0];\n const data = params[1];\n if (typeof data !== \"string\") {\n throw new Error(\"parameter must be a string\");\n }\n if (typeof action !== \"object\" || action === null) {\n throw new Error(\"parameter must be an object\");\n }\n const result = await this.genericRequest(action, data);\n return { jsonrpc: \"2.0\", id: 0, result };\n }\n async _wallet_addEthereumChain(params) {\n var _a, _b, _c, _d;\n const request = params[0];\n if (((_a = request.rpcUrls) === null || _a === void 0 ? void 0 : _a.length) === 0) {\n return {\n jsonrpc: \"2.0\",\n id: 0,\n error: { code: 2, message: `please pass in at least 1 rpcUrl` },\n };\n }\n if (!request.chainName || request.chainName.trim() === \"\") {\n throw eth_rpc_errors_1.ethErrors.provider.custom({\n code: 0,\n message: \"chainName is a required field\",\n });\n }\n if (!request.nativeCurrency) {\n throw eth_rpc_errors_1.ethErrors.provider.custom({\n code: 0,\n message: \"nativeCurrency is a required field\",\n });\n }\n const chainIdNumber = parseInt(request.chainId, 16);\n const success = await this.addEthereumChain(chainIdNumber, (_b = request.rpcUrls) !== null && _b !== void 0 ? _b : [], (_c = request.blockExplorerUrls) !== null && _c !== void 0 ? _c : [], request.chainName, (_d = request.iconUrls) !== null && _d !== void 0 ? _d : [], request.nativeCurrency);\n if (success) {\n return { jsonrpc: \"2.0\", id: 0, result: null };\n }\n else {\n return {\n jsonrpc: \"2.0\",\n id: 0,\n error: { code: 2, message: `unable to add ethereum chain` },\n };\n }\n }\n async _wallet_switchEthereumChain(params) {\n const request = params[0];\n await this.switchEthereumChain(parseInt(request.chainId, 16));\n return { jsonrpc: \"2.0\", id: 0, result: null };\n }\n async _wallet_watchAsset(params) {\n const request = (Array.isArray(params) ? params[0] : params);\n if (!request.type) {\n throw eth_rpc_errors_1.ethErrors.rpc.invalidParams({\n message: \"Type is required\",\n });\n }\n if ((request === null || request === void 0 ? void 0 : request.type) !== \"ERC20\") {\n throw eth_rpc_errors_1.ethErrors.rpc.invalidParams({\n message: `Asset of type '${request.type}' is not supported`,\n });\n }\n if (!(request === null || request === void 0 ? void 0 : request.options)) {\n throw eth_rpc_errors_1.ethErrors.rpc.invalidParams({\n message: \"Options are required\",\n });\n }\n if (!(request === null || request === void 0 ? void 0 : request.options.address)) {\n throw eth_rpc_errors_1.ethErrors.rpc.invalidParams({\n message: \"Address is required\",\n });\n }\n const chainId = this.getChainId();\n const { address, symbol, image, decimals } = request.options;\n const res = await this.watchAsset(request.type, address, symbol, decimals, image, chainId);\n return { jsonrpc: \"2.0\", id: 0, result: res };\n }\n _eth_uninstallFilter(params) {\n const filterId = (0, util_1.ensureHexString)(params[0]);\n return this._filterPolyfill.uninstallFilter(filterId);\n }\n async _eth_newFilter(params) {\n const param = params[0];\n const filterId = await this._filterPolyfill.newFilter(param);\n return { jsonrpc: \"2.0\", id: 0, result: filterId };\n }\n async _eth_newBlockFilter() {\n const filterId = await this._filterPolyfill.newBlockFilter();\n return { jsonrpc: \"2.0\", id: 0, result: filterId };\n }\n async _eth_newPendingTransactionFilter() {\n const filterId = await this._filterPolyfill.newPendingTransactionFilter();\n return { jsonrpc: \"2.0\", id: 0, result: filterId };\n }\n _eth_getFilterChanges(params) {\n const filterId = (0, util_1.ensureHexString)(params[0]);\n return this._filterPolyfill.getFilterChanges(filterId);\n }\n _eth_getFilterLogs(params) {\n const filterId = (0, util_1.ensureHexString)(params[0]);\n return this._filterPolyfill.getFilterLogs(filterId);\n }\n initializeRelay() {\n if (this._relay) {\n return Promise.resolve(this._relay);\n }\n return this._relayProvider().then(relay => {\n relay.setAccountsCallback((accounts, isDisconnect) => this._setAddresses(accounts, isDisconnect));\n relay.setChainCallback((chainId, jsonRpcUrl) => {\n this.updateProviderInfo(jsonRpcUrl, parseInt(chainId, 10));\n });\n relay.setDappDefaultChainCallback(this._chainIdFromOpts);\n this._relay = relay;\n return relay;\n });\n }\n}\nexports.CoinbaseWalletProvider = CoinbaseWalletProvider;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.filterFromParam = exports.FilterPolyfill = void 0;\nconst types_1 = require(\"../types\");\nconst util_1 = require(\"../util\");\nconst TIMEOUT = 5 * 60 * 1000; // 5 minutes\nconst JSONRPC_TEMPLATE = {\n jsonrpc: \"2.0\",\n id: 0,\n};\nclass FilterPolyfill {\n constructor(provider) {\n this.logFilters = new Map(); // \n this.blockFilters = new Set(); // \n this.pendingTransactionFilters = new Set(); // \n this.cursors = new Map(); // \n this.timeouts = new Map(); // \n this.nextFilterId = (0, types_1.IntNumber)(1);\n this.provider = provider;\n }\n async newFilter(param) {\n const filter = filterFromParam(param);\n const id = this.makeFilterId();\n const cursor = await this.setInitialCursorPosition(id, filter.fromBlock);\n console.log(`Installing new log filter(${id}):`, filter, \"initial cursor position:\", cursor);\n this.logFilters.set(id, filter);\n this.setFilterTimeout(id);\n return (0, util_1.hexStringFromIntNumber)(id);\n }\n async newBlockFilter() {\n const id = this.makeFilterId();\n const cursor = await this.setInitialCursorPosition(id, \"latest\");\n console.log(`Installing new block filter (${id}) with initial cursor position:`, cursor);\n this.blockFilters.add(id);\n this.setFilterTimeout(id);\n return (0, util_1.hexStringFromIntNumber)(id);\n }\n async newPendingTransactionFilter() {\n const id = this.makeFilterId();\n const cursor = await this.setInitialCursorPosition(id, \"latest\");\n console.log(`Installing new block filter (${id}) with initial cursor position:`, cursor);\n this.pendingTransactionFilters.add(id);\n this.setFilterTimeout(id);\n return (0, util_1.hexStringFromIntNumber)(id);\n }\n uninstallFilter(filterId) {\n const id = (0, util_1.intNumberFromHexString)(filterId);\n console.log(`Uninstalling filter (${id})`);\n this.deleteFilter(id);\n return true;\n }\n getFilterChanges(filterId) {\n const id = (0, util_1.intNumberFromHexString)(filterId);\n if (this.timeouts.has(id)) {\n // extend timeout\n this.setFilterTimeout(id);\n }\n if (this.logFilters.has(id)) {\n return this.getLogFilterChanges(id);\n }\n else if (this.blockFilters.has(id)) {\n return this.getBlockFilterChanges(id);\n }\n else if (this.pendingTransactionFilters.has(id)) {\n return this.getPendingTransactionFilterChanges(id);\n }\n return Promise.resolve(filterNotFoundError());\n }\n async getFilterLogs(filterId) {\n const id = (0, util_1.intNumberFromHexString)(filterId);\n const filter = this.logFilters.get(id);\n if (!filter) {\n return filterNotFoundError();\n }\n return this.sendAsyncPromise(Object.assign(Object.assign({}, JSONRPC_TEMPLATE), { method: \"eth_getLogs\", params: [paramFromFilter(filter)] }));\n }\n makeFilterId() {\n return (0, types_1.IntNumber)(++this.nextFilterId);\n }\n sendAsyncPromise(request) {\n return new Promise((resolve, reject) => {\n this.provider.sendAsync(request, (err, response) => {\n if (err) {\n return reject(err);\n }\n if (Array.isArray(response) || response == null) {\n return reject(new Error(`unexpected response received: ${JSON.stringify(response)}`));\n }\n resolve(response);\n });\n });\n }\n deleteFilter(id) {\n console.log(`Deleting filter (${id})`);\n this.logFilters.delete(id);\n this.blockFilters.delete(id);\n this.pendingTransactionFilters.delete(id);\n this.cursors.delete(id);\n this.timeouts.delete(id);\n }\n async getLogFilterChanges(id) {\n const filter = this.logFilters.get(id);\n const cursorPosition = this.cursors.get(id);\n if (!cursorPosition || !filter) {\n return filterNotFoundError();\n }\n const currentBlockHeight = await this.getCurrentBlockHeight();\n const toBlock = filter.toBlock === \"latest\" ? currentBlockHeight : filter.toBlock;\n if (cursorPosition > currentBlockHeight) {\n return emptyResult();\n }\n if (cursorPosition > filter.toBlock) {\n return emptyResult();\n }\n console.log(`Fetching logs from ${cursorPosition} to ${toBlock} for filter ${id}`);\n const response = await this.sendAsyncPromise(Object.assign(Object.assign({}, JSONRPC_TEMPLATE), { method: \"eth_getLogs\", params: [\n paramFromFilter(Object.assign(Object.assign({}, filter), { fromBlock: cursorPosition, toBlock })),\n ] }));\n if (Array.isArray(response.result)) {\n const blocks = response.result.map(log => (0, util_1.intNumberFromHexString)(log.blockNumber || \"0x0\"));\n const highestBlock = Math.max(...blocks);\n if (highestBlock && highestBlock > cursorPosition) {\n const newCursorPosition = (0, types_1.IntNumber)(highestBlock + 1);\n console.log(`Moving cursor position for filter (${id}) from ${cursorPosition} to ${newCursorPosition}`);\n this.cursors.set(id, newCursorPosition);\n }\n }\n return response;\n }\n async getBlockFilterChanges(id) {\n const cursorPosition = this.cursors.get(id);\n if (!cursorPosition) {\n return filterNotFoundError();\n }\n const currentBlockHeight = await this.getCurrentBlockHeight();\n if (cursorPosition > currentBlockHeight) {\n return emptyResult();\n }\n console.log(`Fetching blocks from ${cursorPosition} to ${currentBlockHeight} for filter (${id})`);\n const blocks = (await Promise.all(\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n (0, util_1.range)(cursorPosition, currentBlockHeight + 1).map(i => this.getBlockHashByNumber((0, types_1.IntNumber)(i))))).filter(hash => !!hash);\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n const newCursorPosition = (0, types_1.IntNumber)(cursorPosition + blocks.length);\n console.log(`Moving cursor position for filter (${id}) from ${cursorPosition} to ${newCursorPosition}`);\n this.cursors.set(id, newCursorPosition);\n return Object.assign(Object.assign({}, JSONRPC_TEMPLATE), { result: blocks });\n }\n async getPendingTransactionFilterChanges(_id) {\n // pending transaction filters are not supported\n return Promise.resolve(emptyResult());\n }\n async setInitialCursorPosition(id, startBlock) {\n const currentBlockHeight = await this.getCurrentBlockHeight();\n const initialCursorPosition = typeof startBlock === \"number\" && startBlock > currentBlockHeight\n ? startBlock\n : currentBlockHeight;\n this.cursors.set(id, initialCursorPosition);\n return initialCursorPosition;\n }\n setFilterTimeout(id) {\n const existing = this.timeouts.get(id);\n if (existing) {\n window.clearTimeout(existing);\n }\n const timeout = window.setTimeout(() => {\n console.log(`Filter (${id}) timed out`);\n this.deleteFilter(id);\n }, TIMEOUT);\n this.timeouts.set(id, timeout);\n }\n async getCurrentBlockHeight() {\n const { result } = await this.sendAsyncPromise(Object.assign(Object.assign({}, JSONRPC_TEMPLATE), { method: \"eth_blockNumber\", params: [] }));\n return (0, util_1.intNumberFromHexString)((0, util_1.ensureHexString)(result));\n }\n async getBlockHashByNumber(blockNumber) {\n const response = await this.sendAsyncPromise(Object.assign(Object.assign({}, JSONRPC_TEMPLATE), { method: \"eth_getBlockByNumber\", params: [(0, util_1.hexStringFromIntNumber)(blockNumber), false] }));\n if (response.result && typeof response.result.hash === \"string\") {\n return (0, util_1.ensureHexString)(response.result.hash);\n }\n return null;\n }\n}\nexports.FilterPolyfill = FilterPolyfill;\nfunction filterFromParam(param) {\n return {\n fromBlock: intBlockHeightFromHexBlockHeight(param.fromBlock),\n toBlock: intBlockHeightFromHexBlockHeight(param.toBlock),\n addresses: param.address === undefined\n ? null\n : Array.isArray(param.address)\n ? param.address\n : [param.address],\n topics: param.topics || [],\n };\n}\nexports.filterFromParam = filterFromParam;\nfunction paramFromFilter(filter) {\n const param = {\n fromBlock: hexBlockHeightFromIntBlockHeight(filter.fromBlock),\n toBlock: hexBlockHeightFromIntBlockHeight(filter.toBlock),\n topics: filter.topics,\n };\n if (filter.addresses !== null) {\n param.address = filter.addresses;\n }\n return param;\n}\nfunction intBlockHeightFromHexBlockHeight(value) {\n if (value === undefined || value === \"latest\" || value === \"pending\") {\n return \"latest\";\n }\n else if (value === \"earliest\") {\n return (0, types_1.IntNumber)(0);\n }\n else if ((0, util_1.isHexString)(value)) {\n return (0, util_1.intNumberFromHexString)(value);\n }\n throw new Error(`Invalid block option: ${String(value)}`);\n}\nfunction hexBlockHeightFromIntBlockHeight(value) {\n if (value === \"latest\") {\n return value;\n }\n return (0, util_1.hexStringFromIntNumber)(value);\n}\nfunction filterNotFoundError() {\n return Object.assign(Object.assign({}, JSONRPC_TEMPLATE), { error: { code: -32000, message: \"filter not found\" } });\n}\nfunction emptyResult() {\n return Object.assign(Object.assign({}, JSONRPC_TEMPLATE), { result: [] });\n}\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.JSONRPCMethod = void 0;\nvar JSONRPCMethod;\n(function (JSONRPCMethod) {\n // synchronous or asynchronous\n JSONRPCMethod[\"eth_accounts\"] = \"eth_accounts\";\n JSONRPCMethod[\"eth_coinbase\"] = \"eth_coinbase\";\n JSONRPCMethod[\"net_version\"] = \"net_version\";\n JSONRPCMethod[\"eth_chainId\"] = \"eth_chainId\";\n JSONRPCMethod[\"eth_uninstallFilter\"] = \"eth_uninstallFilter\";\n // asynchronous only\n JSONRPCMethod[\"eth_requestAccounts\"] = \"eth_requestAccounts\";\n JSONRPCMethod[\"eth_sign\"] = \"eth_sign\";\n JSONRPCMethod[\"eth_ecRecover\"] = \"eth_ecRecover\";\n JSONRPCMethod[\"personal_sign\"] = \"personal_sign\";\n JSONRPCMethod[\"personal_ecRecover\"] = \"personal_ecRecover\";\n JSONRPCMethod[\"eth_signTransaction\"] = \"eth_signTransaction\";\n JSONRPCMethod[\"eth_sendRawTransaction\"] = \"eth_sendRawTransaction\";\n JSONRPCMethod[\"eth_sendTransaction\"] = \"eth_sendTransaction\";\n JSONRPCMethod[\"eth_signTypedData_v1\"] = \"eth_signTypedData_v1\";\n JSONRPCMethod[\"eth_signTypedData_v2\"] = \"eth_signTypedData_v2\";\n JSONRPCMethod[\"eth_signTypedData_v3\"] = \"eth_signTypedData_v3\";\n JSONRPCMethod[\"eth_signTypedData_v4\"] = \"eth_signTypedData_v4\";\n JSONRPCMethod[\"eth_signTypedData\"] = \"eth_signTypedData\";\n JSONRPCMethod[\"cbWallet_arbitrary\"] = \"walletlink_arbitrary\";\n JSONRPCMethod[\"wallet_addEthereumChain\"] = \"wallet_addEthereumChain\";\n JSONRPCMethod[\"wallet_switchEthereumChain\"] = \"wallet_switchEthereumChain\";\n JSONRPCMethod[\"wallet_watchAsset\"] = \"wallet_watchAsset\";\n // asynchronous pub/sub\n JSONRPCMethod[\"eth_subscribe\"] = \"eth_subscribe\";\n JSONRPCMethod[\"eth_unsubscribe\"] = \"eth_unsubscribe\";\n // asynchronous filter methods\n JSONRPCMethod[\"eth_newFilter\"] = \"eth_newFilter\";\n JSONRPCMethod[\"eth_newBlockFilter\"] = \"eth_newBlockFilter\";\n JSONRPCMethod[\"eth_newPendingTransactionFilter\"] = \"eth_newPendingTransactionFilter\";\n JSONRPCMethod[\"eth_getFilterChanges\"] = \"eth_getFilterChanges\";\n JSONRPCMethod[\"eth_getFilterLogs\"] = \"eth_getFilterLogs\";\n})(JSONRPCMethod = exports.JSONRPCMethod || (exports.JSONRPCMethod = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SubscriptionManager = void 0;\nconst PollingBlockTracker = require(\"eth-block-tracker\");\nconst createSubscriptionManager = require(\"eth-json-rpc-filters/subscriptionManager\");\nconst noop = () => { };\nclass SubscriptionManager {\n constructor(provider) {\n const blockTracker = new PollingBlockTracker({\n provider,\n pollingInterval: 15 * 1000,\n setSkipCacheFlag: true,\n });\n const { events, middleware } = createSubscriptionManager({\n blockTracker,\n provider,\n });\n this.events = events;\n this.subscriptionMiddleware = middleware;\n }\n async handleRequest(request) {\n const result = {};\n await this.subscriptionMiddleware(request, result, noop, noop);\n return result;\n }\n destroy() {\n this.subscriptionMiddleware.destroy();\n }\n}\nexports.SubscriptionManager = SubscriptionManager;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WalletSDKUI = void 0;\nconst LinkFlow_1 = require(\"../components/LinkFlow/LinkFlow\");\nconst Snackbar_1 = require(\"../components/Snackbar/Snackbar\");\nconst cssReset_1 = require(\"../lib/cssReset\");\nclass WalletSDKUI {\n constructor(options) {\n this.standalone = null;\n this.attached = false;\n this.appSrc = null;\n this.snackbar = new Snackbar_1.Snackbar({\n darkMode: options.darkMode,\n });\n this.linkFlow = new LinkFlow_1.LinkFlow({\n darkMode: options.darkMode,\n version: options.version,\n sessionId: options.session.id,\n sessionSecret: options.session.secret,\n linkAPIUrl: options.linkAPIUrl,\n connected$: options.connected$,\n chainId$: options.chainId$,\n isParentConnection: false,\n });\n }\n attach() {\n if (this.attached) {\n throw new Error(\"Coinbase Wallet SDK UI is already attached\");\n }\n const el = document.documentElement;\n const container = document.createElement(\"div\");\n container.className = \"-cbwsdk-css-reset\";\n el.appendChild(container);\n this.linkFlow.attach(container);\n this.snackbar.attach(container);\n this.attached = true;\n (0, cssReset_1.injectCssReset)();\n }\n setConnectDisabled(connectDisabled) {\n this.linkFlow.setConnectDisabled(connectDisabled);\n }\n /* istanbul ignore next */\n addEthereumChain(_options) {\n // no-op\n }\n /* istanbul ignore next */\n watchAsset(_options) {\n // no-op\n }\n /* istanbul ignore next */\n switchEthereumChain(_options) {\n // no-op\n }\n requestEthereumAccounts(options) {\n this.linkFlow.open({ onCancel: options.onCancel });\n }\n hideRequestEthereumAccounts() {\n this.linkFlow.close();\n }\n /* istanbul ignore next */\n signEthereumMessage(_) {\n // No-op\n }\n /* istanbul ignore next */\n signEthereumTransaction(_) {\n // No-op\n }\n /* istanbul ignore next */\n submitEthereumTransaction(_) {\n // No-op\n }\n /* istanbul ignore next */\n ethereumAddressFromSignedMessage(_) {\n // No-op\n }\n showConnecting(options) {\n let snackbarProps;\n if (options.isUnlinkedErrorState) {\n snackbarProps = {\n autoExpand: true,\n message: \"Connection lost\",\n appSrc: this.appSrc,\n menuItems: [\n {\n isRed: false,\n info: \"Reset connection\",\n svgWidth: \"10\",\n svgHeight: \"11\",\n path: \"M5.00008 0.96875C6.73133 0.96875 8.23758 1.94375 9.00008 3.375L10.0001 2.375V5.5H9.53133H7.96883H6.87508L7.80633 4.56875C7.41258 3.3875 6.31258 2.53125 5.00008 2.53125C3.76258 2.53125 2.70633 3.2875 2.25633 4.36875L0.812576 3.76875C1.50008 2.125 3.11258 0.96875 5.00008 0.96875ZM2.19375 6.43125C2.5875 7.6125 3.6875 8.46875 5 8.46875C6.2375 8.46875 7.29375 7.7125 7.74375 6.63125L9.1875 7.23125C8.5 8.875 6.8875 10.0312 5 10.0312C3.26875 10.0312 1.7625 9.05625 1 7.625L0 8.625V5.5H0.46875H2.03125H3.125L2.19375 6.43125Z\",\n defaultFillRule: \"evenodd\",\n defaultClipRule: \"evenodd\",\n onClick: options.onResetConnection,\n },\n ],\n };\n }\n else {\n snackbarProps = {\n message: \"Confirm on phone\",\n appSrc: this.appSrc,\n menuItems: [\n {\n isRed: true,\n info: \"Cancel transaction\",\n svgWidth: \"11\",\n svgHeight: \"11\",\n path: \"M10.3711 1.52346L9.21775 0.370117L5.37109 4.21022L1.52444 0.370117L0.371094 1.52346L4.2112 5.37012L0.371094 9.21677L1.52444 10.3701L5.37109 6.53001L9.21775 10.3701L10.3711 9.21677L6.53099 5.37012L10.3711 1.52346Z\",\n defaultFillRule: \"inherit\",\n defaultClipRule: \"inherit\",\n onClick: options.onCancel,\n },\n {\n isRed: false,\n info: \"Reset connection\",\n svgWidth: \"10\",\n svgHeight: \"11\",\n path: \"M5.00008 0.96875C6.73133 0.96875 8.23758 1.94375 9.00008 3.375L10.0001 2.375V5.5H9.53133H7.96883H6.87508L7.80633 4.56875C7.41258 3.3875 6.31258 2.53125 5.00008 2.53125C3.76258 2.53125 2.70633 3.2875 2.25633 4.36875L0.812576 3.76875C1.50008 2.125 3.11258 0.96875 5.00008 0.96875ZM2.19375 6.43125C2.5875 7.6125 3.6875 8.46875 5 8.46875C6.2375 8.46875 7.29375 7.7125 7.74375 6.63125L9.1875 7.23125C8.5 8.875 6.8875 10.0312 5 10.0312C3.26875 10.0312 1.7625 9.05625 1 7.625L0 8.625V5.5H0.46875H2.03125H3.125L2.19375 6.43125Z\",\n defaultFillRule: \"evenodd\",\n defaultClipRule: \"evenodd\",\n onClick: options.onResetConnection,\n },\n ],\n };\n }\n return this.snackbar.presentItem(snackbarProps);\n }\n /* istanbul ignore next */\n setAppSrc(appSrc) {\n this.appSrc = appSrc;\n }\n /* istanbul ignore next */\n reloadUI() {\n document.location.reload();\n }\n /* istanbul ignore next */\n inlineAccountsResponse() {\n return false;\n }\n /* istanbul ignore next */\n inlineAddEthereumChain(_chainId) {\n return false;\n }\n /* istanbul ignore next */\n inlineWatchAsset() {\n return false;\n }\n /* istanbul ignore next */\n inlineSwitchEthereumChain() {\n return false;\n }\n /* istanbul ignore next */\n setStandalone(status) {\n this.standalone = status;\n }\n /* istanbul ignore next */\n isStandalone() {\n var _a;\n return (_a = this.standalone) !== null && _a !== void 0 ? _a : false;\n }\n}\nexports.WalletSDKUI = WalletSDKUI;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WalletUIError = void 0;\nclass WalletUIError extends Error {\n constructor(message, errorCode) {\n super(message);\n this.message = message;\n this.errorCode = errorCode;\n }\n}\nexports.WalletUIError = WalletUIError;\nWalletUIError.UserRejectedRequest = new WalletUIError(\"User rejected request\");\nWalletUIError.SwitchEthereumChainUnsupportedChainId = new WalletUIError(\"Unsupported chainId\", 4902);\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RelayMessageType = void 0;\nvar RelayMessageType;\n(function (RelayMessageType) {\n RelayMessageType[\"SESSION_ID_REQUEST\"] = \"SESSION_ID_REQUEST\";\n RelayMessageType[\"SESSION_ID_RESPONSE\"] = \"SESSION_ID_RESPONSE\";\n RelayMessageType[\"LINKED\"] = \"LINKED\";\n RelayMessageType[\"UNLINKED\"] = \"UNLINKED\";\n RelayMessageType[\"WEB3_REQUEST\"] = \"WEB3_REQUEST\";\n RelayMessageType[\"WEB3_REQUEST_CANCELED\"] = \"WEB3_REQUEST_CANCELED\";\n RelayMessageType[\"WEB3_RESPONSE\"] = \"WEB3_RESPONSE\";\n})(RelayMessageType = exports.RelayMessageType || (exports.RelayMessageType = {}));\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Session = void 0;\nconst rxjs_1 = require(\"rxjs\");\nconst operators_1 = require(\"rxjs/operators\");\nconst sha_js_1 = require(\"sha.js\");\nconst util_1 = require(\"../util\");\nconst STORAGE_KEY_SESSION_ID = \"session:id\";\nconst STORAGE_KEY_SESSION_SECRET = \"session:secret\";\nconst STORAGE_KEY_SESSION_LINKED = \"session:linked\";\nclass Session {\n constructor(storage, id, secret, linked) {\n this._storage = storage;\n this._id = id || (0, util_1.randomBytesHex)(16);\n this._secret = secret || (0, util_1.randomBytesHex)(32);\n this._key = new sha_js_1.sha256()\n .update(`${this._id}, ${this._secret} WalletLink`) // ensure old sessions stay connected\n .digest(\"hex\");\n this._linked = !!linked;\n }\n static load(storage) {\n const id = storage.getItem(STORAGE_KEY_SESSION_ID);\n const linked = storage.getItem(STORAGE_KEY_SESSION_LINKED);\n const secret = storage.getItem(STORAGE_KEY_SESSION_SECRET);\n if (id && secret) {\n return new Session(storage, id, secret, linked === \"1\");\n }\n return null;\n }\n static get persistedSessionIdChange$() {\n return (0, rxjs_1.fromEvent)(window, \"storage\").pipe((0, operators_1.filter)(evt => evt.key === STORAGE_KEY_SESSION_ID), (0, operators_1.map)(evt => ({\n oldValue: evt.oldValue || null,\n newValue: evt.newValue || null,\n })));\n }\n /**\n * Takes in a session ID and returns the sha256 hash of it.\n * @param sessionId session ID\n */\n static hash(sessionId) {\n return new sha_js_1.sha256().update(sessionId).digest(\"hex\");\n }\n get id() {\n return this._id;\n }\n get secret() {\n return this._secret;\n }\n get key() {\n return this._key;\n }\n get linked() {\n return this._linked;\n }\n set linked(val) {\n this._linked = val;\n this.persistLinked();\n }\n save() {\n this._storage.setItem(STORAGE_KEY_SESSION_ID, this._id);\n this._storage.setItem(STORAGE_KEY_SESSION_SECRET, this._secret);\n this.persistLinked();\n return this;\n }\n persistLinked() {\n this._storage.setItem(STORAGE_KEY_SESSION_LINKED, this._linked ? \"1\" : \"0\");\n }\n}\nexports.Session = Session;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WalletSDKRelay = void 0;\nconst bind_decorator_1 = __importDefault(require(\"bind-decorator\"));\nconst eth_rpc_errors_1 = require(\"eth-rpc-errors\");\nconst rxjs_1 = require(\"rxjs\");\nconst operators_1 = require(\"rxjs/operators\");\nconst DiagnosticLogger_1 = require(\"../connection/DiagnosticLogger\");\nconst WalletSDKConnection_1 = require(\"../connection/WalletSDKConnection\");\nconst WalletUIError_1 = require(\"../provider/WalletUIError\");\nconst types_1 = require(\"../types\");\nconst util_1 = require(\"../util\");\nconst aes256gcm = __importStar(require(\"./aes256gcm\"));\nconst Session_1 = require(\"./Session\");\nconst WalletSDKRelayAbstract_1 = require(\"./WalletSDKRelayAbstract\");\nconst Web3Method_1 = require(\"./Web3Method\");\nconst Web3RequestCanceledMessage_1 = require(\"./Web3RequestCanceledMessage\");\nconst Web3RequestMessage_1 = require(\"./Web3RequestMessage\");\nconst Web3Response_1 = require(\"./Web3Response\");\nconst Web3ResponseMessage_1 = require(\"./Web3ResponseMessage\");\nclass WalletSDKRelay extends WalletSDKRelayAbstract_1.WalletSDKRelayAbstract {\n constructor(options) {\n var _a;\n super();\n this.accountsCallback = null;\n this.chainCallback = null;\n this.dappDefaultChainSubject = new rxjs_1.BehaviorSubject(1);\n this.dappDefaultChain = 1;\n this.appName = \"\";\n this.appLogoUrl = null;\n this.subscriptions = new rxjs_1.Subscription();\n this.linkAPIUrl = options.linkAPIUrl;\n this.storage = options.storage;\n this.options = options;\n const { session, ui, connection } = this.subscribe();\n this._session = session;\n this.connection = connection;\n this.relayEventManager = options.relayEventManager;\n if (options.diagnosticLogger && options.eventListener) {\n throw new Error(\"Can't have both eventListener and diagnosticLogger options, use only diagnosticLogger\");\n }\n if (options.eventListener) {\n this.diagnostic = {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n log: options.eventListener.onEvent,\n };\n }\n else {\n this.diagnostic = options.diagnosticLogger;\n }\n this._reloadOnDisconnect = (_a = options.reloadOnDisconnect) !== null && _a !== void 0 ? _a : true;\n this.ui = ui;\n }\n subscribe() {\n this.subscriptions.add(this.dappDefaultChainSubject.subscribe(chainId => {\n if (this.dappDefaultChain !== chainId) {\n this.dappDefaultChain = chainId;\n }\n }));\n const session = Session_1.Session.load(this.storage) || new Session_1.Session(this.storage).save();\n const connection = new WalletSDKConnection_1.WalletSDKConnection(session.id, session.key, this.linkAPIUrl, this.diagnostic);\n this.subscriptions.add(connection.sessionConfig$.subscribe({\n next: sessionConfig => {\n this.onSessionConfigChanged(sessionConfig);\n },\n error: () => {\n var _a;\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.GENERAL_ERROR, {\n message: \"error while invoking session config callback\",\n });\n },\n }));\n this.subscriptions.add(connection.incomingEvent$\n .pipe((0, operators_1.filter)(m => m.event === \"Web3Response\"))\n .subscribe({ next: this.handleIncomingEvent }));\n this.subscriptions.add(connection.linked$\n .pipe((0, operators_1.skip)(1), (0, operators_1.tap)((linked) => {\n var _a;\n this.isLinked = linked;\n const cachedAddresses = this.storage.getItem(WalletSDKRelayAbstract_1.LOCAL_STORAGE_ADDRESSES_KEY);\n if (linked) {\n // Only set linked session variable one way\n this.session.linked = linked;\n }\n this.isUnlinkedErrorState = false;\n if (cachedAddresses) {\n const addresses = cachedAddresses.split(\" \");\n const wasConnectedViaStandalone = this.storage.getItem(\"IsStandaloneSigning\") === \"true\";\n if (addresses[0] !== \"\" &&\n !linked &&\n this.session.linked &&\n !wasConnectedViaStandalone) {\n this.isUnlinkedErrorState = true;\n const sessionIdHash = this.getSessionIdHash();\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.UNLINKED_ERROR_STATE, {\n sessionIdHash,\n });\n }\n }\n }))\n .subscribe());\n // if session is marked destroyed, reset and reload\n this.subscriptions.add(connection.sessionConfig$\n .pipe((0, operators_1.filter)(c => !!c.metadata && c.metadata.__destroyed === \"1\"))\n .subscribe(() => {\n var _a;\n const alreadyDestroyed = connection.isDestroyed;\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.METADATA_DESTROYED, {\n alreadyDestroyed,\n sessionIdHash: this.getSessionIdHash(),\n });\n return this.resetAndReload();\n }));\n this.subscriptions.add(connection.sessionConfig$\n .pipe((0, operators_1.filter)(c => c.metadata && c.metadata.WalletUsername !== undefined))\n .pipe((0, operators_1.mergeMap)(c => aes256gcm.decrypt(c.metadata.WalletUsername, session.secret)))\n .subscribe({\n next: walletUsername => {\n this.storage.setItem(WalletSDKRelayAbstract_1.WALLET_USER_NAME_KEY, walletUsername);\n },\n error: () => {\n var _a;\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.GENERAL_ERROR, {\n message: \"Had error decrypting\",\n value: \"username\",\n });\n },\n }));\n this.subscriptions.add(connection.sessionConfig$\n .pipe((0, operators_1.filter)(c => c.metadata && c.metadata.AppVersion !== undefined))\n .pipe((0, operators_1.mergeMap)(c => aes256gcm.decrypt(c.metadata.AppVersion, session.secret)))\n .subscribe({\n next: appVersion => {\n this.storage.setItem(WalletSDKRelayAbstract_1.APP_VERSION_KEY, appVersion);\n },\n error: () => {\n var _a;\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.GENERAL_ERROR, {\n message: \"Had error decrypting\",\n value: \"appversion\",\n });\n },\n }));\n this.subscriptions.add(connection.sessionConfig$\n .pipe((0, operators_1.filter)(c => c.metadata &&\n c.metadata.ChainId !== undefined &&\n c.metadata.JsonRpcUrl !== undefined))\n .pipe((0, operators_1.mergeMap)(c => (0, rxjs_1.zip)(aes256gcm.decrypt(c.metadata.ChainId, session.secret), aes256gcm.decrypt(c.metadata.JsonRpcUrl, session.secret))))\n .pipe((0, operators_1.distinctUntilChanged)())\n .subscribe({\n next: ([chainId, jsonRpcUrl]) => {\n if (this.chainCallback) {\n this.chainCallback(chainId, jsonRpcUrl);\n }\n },\n error: () => {\n var _a;\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.GENERAL_ERROR, {\n message: \"Had error decrypting\",\n value: \"chainId|jsonRpcUrl\",\n });\n },\n }));\n this.subscriptions.add(connection.sessionConfig$\n .pipe((0, operators_1.filter)(c => c.metadata && c.metadata.EthereumAddress !== undefined))\n .pipe((0, operators_1.mergeMap)(c => aes256gcm.decrypt(c.metadata.EthereumAddress, session.secret)))\n .subscribe({\n next: selectedAddress => {\n if (this.accountsCallback) {\n this.accountsCallback([selectedAddress]);\n }\n if (WalletSDKRelay.accountRequestCallbackIds.size > 0) {\n // We get the ethereum address from the metadata. If for whatever\n // reason we don't get a response via an explicit web3 message\n // we can still fulfill the eip1102 request.\n Array.from(WalletSDKRelay.accountRequestCallbackIds.values()).forEach(id => {\n const message = (0, Web3ResponseMessage_1.Web3ResponseMessage)({\n id,\n response: (0, Web3Response_1.RequestEthereumAccountsResponse)([\n selectedAddress,\n ]),\n });\n this.invokeCallback(Object.assign(Object.assign({}, message), { id }));\n });\n WalletSDKRelay.accountRequestCallbackIds.clear();\n }\n },\n error: () => {\n var _a;\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.GENERAL_ERROR, {\n message: \"Had error decrypting\",\n value: \"selectedAddress\",\n });\n },\n }));\n this.subscriptions.add(connection.sessionConfig$\n .pipe((0, operators_1.filter)(c => c.metadata && c.metadata.AppSrc !== undefined))\n .pipe((0, operators_1.mergeMap)(c => aes256gcm.decrypt(c.metadata.AppSrc, session.secret)))\n .subscribe({\n next: appSrc => {\n this.ui.setAppSrc(appSrc);\n },\n error: () => {\n var _a;\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.GENERAL_ERROR, {\n message: \"Had error decrypting\",\n value: \"appSrc\",\n });\n },\n }));\n const ui = this.options.uiConstructor({\n linkAPIUrl: this.options.linkAPIUrl,\n version: this.options.version,\n darkMode: this.options.darkMode,\n session,\n connected$: connection.connected$,\n chainId$: this.dappDefaultChainSubject,\n });\n connection.connect();\n return { session, ui, connection };\n }\n attachUI() {\n this.ui.attach();\n }\n resetAndReload() {\n this.connection\n .setSessionMetadata(\"__destroyed\", \"1\")\n .pipe((0, operators_1.timeout)(1000), (0, operators_1.catchError)(_ => (0, rxjs_1.of)(null)))\n .subscribe(_ => {\n var _a, _b, _c;\n const isStandalone = this.ui.isStandalone();\n try {\n this.subscriptions.unsubscribe();\n }\n catch (err) {\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.GENERAL_ERROR, {\n message: \"Had error unsubscribing\",\n });\n }\n (_b = this.diagnostic) === null || _b === void 0 ? void 0 : _b.log(DiagnosticLogger_1.EVENTS.SESSION_STATE_CHANGE, {\n method: \"relay::resetAndReload\",\n sessionMetadataChange: \"__destroyed, 1\",\n sessionIdHash: this.getSessionIdHash(),\n });\n this.connection.destroy();\n /**\n * Only clear storage if the session id we have in memory matches the one on disk\n * Otherwise, in the case where we have 2 tabs, another tab might have cleared\n * storage already. In that case if we clear storage again, the user will be in\n * a state where the first tab allows the user to connect but the session that\n * was used isn't persisted. This leaves the user in a state where they aren't\n * connected to the mobile app.\n */\n const storedSession = Session_1.Session.load(this.storage);\n if ((storedSession === null || storedSession === void 0 ? void 0 : storedSession.id) === this._session.id) {\n this.storage.clear();\n }\n else if (storedSession) {\n (_c = this.diagnostic) === null || _c === void 0 ? void 0 : _c.log(DiagnosticLogger_1.EVENTS.SKIPPED_CLEARING_SESSION, {\n sessionIdHash: this.getSessionIdHash(),\n storedSessionIdHash: Session_1.Session.hash(storedSession.id),\n });\n }\n if (this._reloadOnDisconnect) {\n this.ui.reloadUI();\n return;\n }\n if (this.accountsCallback) {\n this.accountsCallback([], true);\n }\n const { session, ui, connection } = this.subscribe();\n this._session = session;\n this.connection = connection;\n this.ui = ui;\n if (isStandalone && this.ui.setStandalone)\n this.ui.setStandalone(true);\n this.attachUI();\n }, (err) => {\n var _a;\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.FAILURE, {\n method: \"relay::resetAndReload\",\n message: `failed to reset and reload with ${err}`,\n sessionIdHash: this.getSessionIdHash(),\n });\n });\n }\n setAppInfo(appName, appLogoUrl) {\n this.appName = appName;\n this.appLogoUrl = appLogoUrl;\n }\n getStorageItem(key) {\n return this.storage.getItem(key);\n }\n get session() {\n return this._session;\n }\n setStorageItem(key, value) {\n this.storage.setItem(key, value);\n }\n signEthereumMessage(message, address, addPrefix, typedDataJson) {\n return this.sendRequest({\n method: Web3Method_1.Web3Method.signEthereumMessage,\n params: {\n message: (0, util_1.hexStringFromBuffer)(message, true),\n address,\n addPrefix,\n typedDataJson: typedDataJson || null,\n },\n });\n }\n ethereumAddressFromSignedMessage(message, signature, addPrefix) {\n return this.sendRequest({\n method: Web3Method_1.Web3Method.ethereumAddressFromSignedMessage,\n params: {\n message: (0, util_1.hexStringFromBuffer)(message, true),\n signature: (0, util_1.hexStringFromBuffer)(signature, true),\n addPrefix,\n },\n });\n }\n signEthereumTransaction(params) {\n return this.sendRequest({\n method: Web3Method_1.Web3Method.signEthereumTransaction,\n params: {\n fromAddress: params.fromAddress,\n toAddress: params.toAddress,\n weiValue: (0, util_1.bigIntStringFromBN)(params.weiValue),\n data: (0, util_1.hexStringFromBuffer)(params.data, true),\n nonce: params.nonce,\n gasPriceInWei: params.gasPriceInWei\n ? (0, util_1.bigIntStringFromBN)(params.gasPriceInWei)\n : null,\n maxFeePerGas: params.gasPriceInWei\n ? (0, util_1.bigIntStringFromBN)(params.gasPriceInWei)\n : null,\n maxPriorityFeePerGas: params.gasPriceInWei\n ? (0, util_1.bigIntStringFromBN)(params.gasPriceInWei)\n : null,\n gasLimit: params.gasLimit ? (0, util_1.bigIntStringFromBN)(params.gasLimit) : null,\n chainId: params.chainId,\n shouldSubmit: false,\n },\n });\n }\n signAndSubmitEthereumTransaction(params) {\n return this.sendRequest({\n method: Web3Method_1.Web3Method.signEthereumTransaction,\n params: {\n fromAddress: params.fromAddress,\n toAddress: params.toAddress,\n weiValue: (0, util_1.bigIntStringFromBN)(params.weiValue),\n data: (0, util_1.hexStringFromBuffer)(params.data, true),\n nonce: params.nonce,\n gasPriceInWei: params.gasPriceInWei\n ? (0, util_1.bigIntStringFromBN)(params.gasPriceInWei)\n : null,\n maxFeePerGas: params.maxFeePerGas\n ? (0, util_1.bigIntStringFromBN)(params.maxFeePerGas)\n : null,\n maxPriorityFeePerGas: params.maxPriorityFeePerGas\n ? (0, util_1.bigIntStringFromBN)(params.maxPriorityFeePerGas)\n : null,\n gasLimit: params.gasLimit ? (0, util_1.bigIntStringFromBN)(params.gasLimit) : null,\n chainId: params.chainId,\n shouldSubmit: true,\n },\n });\n }\n submitEthereumTransaction(signedTransaction, chainId) {\n return this.sendRequest({\n method: Web3Method_1.Web3Method.submitEthereumTransaction,\n params: {\n signedTransaction: (0, util_1.hexStringFromBuffer)(signedTransaction, true),\n chainId,\n },\n });\n }\n scanQRCode(regExp) {\n return this.sendRequest({\n method: Web3Method_1.Web3Method.scanQRCode,\n params: { regExp },\n });\n }\n getQRCodeUrl() {\n return (0, util_1.createQrUrl)(this._session.id, this._session.secret, this.linkAPIUrl, false, this.options.version, this.dappDefaultChain);\n }\n genericRequest(data, action) {\n return this.sendRequest({\n method: Web3Method_1.Web3Method.generic,\n params: {\n action,\n data,\n },\n });\n }\n sendGenericMessage(request) {\n return this.sendRequest(request);\n }\n sendRequest(request) {\n let hideSnackbarItem = null;\n const id = (0, util_1.randomBytesHex)(8);\n const cancel = (error) => {\n this.publishWeb3RequestCanceledEvent(id);\n this.handleErrorResponse(id, request.method, error);\n hideSnackbarItem === null || hideSnackbarItem === void 0 ? void 0 : hideSnackbarItem();\n };\n const promise = new Promise((resolve, reject) => {\n if (!this.ui.isStandalone()) {\n hideSnackbarItem = this.ui.showConnecting({\n isUnlinkedErrorState: this.isUnlinkedErrorState,\n onCancel: cancel,\n onResetConnection: this.resetAndReload, // eslint-disable-line @typescript-eslint/unbound-method\n });\n }\n this.relayEventManager.callbacks.set(id, response => {\n hideSnackbarItem === null || hideSnackbarItem === void 0 ? void 0 : hideSnackbarItem();\n if (response.errorMessage) {\n return reject(new Error(response.errorMessage));\n }\n resolve(response);\n });\n if (this.ui.isStandalone()) {\n this.sendRequestStandalone(id, request);\n }\n else {\n this.publishWeb3RequestEvent(id, request);\n }\n });\n return { promise, cancel };\n }\n setConnectDisabled(disabled) {\n this.ui.setConnectDisabled(disabled);\n }\n setAccountsCallback(accountsCallback) {\n this.accountsCallback = accountsCallback;\n }\n setChainCallback(chainCallback) {\n this.chainCallback = chainCallback;\n }\n setDappDefaultChainCallback(chainId) {\n this.dappDefaultChainSubject.next(chainId);\n }\n publishWeb3RequestEvent(id, request) {\n var _a;\n const message = (0, Web3RequestMessage_1.Web3RequestMessage)({ id, request });\n const storedSession = Session_1.Session.load(this.storage);\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.WEB3_REQUEST, {\n eventId: message.id,\n method: `relay::${message.request.method}`,\n sessionIdHash: this.getSessionIdHash(),\n storedSessionIdHash: storedSession ? Session_1.Session.hash(storedSession.id) : \"\",\n isSessionMismatched: ((storedSession === null || storedSession === void 0 ? void 0 : storedSession.id) !== this._session.id).toString(),\n });\n this.subscriptions.add(this.publishEvent(\"Web3Request\", message, true).subscribe({\n next: _ => {\n var _a;\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.WEB3_REQUEST_PUBLISHED, {\n eventId: message.id,\n method: `relay::${message.request.method}`,\n sessionIdHash: this.getSessionIdHash(),\n storedSessionIdHash: storedSession\n ? Session_1.Session.hash(storedSession.id)\n : \"\",\n isSessionMismatched: ((storedSession === null || storedSession === void 0 ? void 0 : storedSession.id) !== this._session.id).toString(),\n });\n },\n error: err => {\n this.handleWeb3ResponseMessage((0, Web3ResponseMessage_1.Web3ResponseMessage)({\n id: message.id,\n response: {\n method: message.request.method,\n errorMessage: err.message,\n },\n }));\n },\n }));\n }\n publishWeb3RequestCanceledEvent(id) {\n const message = (0, Web3RequestCanceledMessage_1.Web3RequestCanceledMessage)(id);\n this.subscriptions.add(this.publishEvent(\"Web3RequestCanceled\", message, false).subscribe());\n }\n publishEvent(event, message, callWebhook) {\n const secret = this.session.secret;\n return new rxjs_1.Observable(subscriber => {\n void aes256gcm\n .encrypt(JSON.stringify(Object.assign(Object.assign({}, message), { origin: location.origin })), secret)\n .then((encrypted) => {\n subscriber.next(encrypted);\n subscriber.complete();\n });\n }).pipe((0, operators_1.mergeMap)((encrypted) => {\n return this.connection.publishEvent(event, encrypted, callWebhook);\n }));\n }\n handleIncomingEvent(event) {\n try {\n this.subscriptions.add(aes256gcm\n .decrypt(event.data, this.session.secret)\n .pipe((0, operators_1.map)(c => JSON.parse(c)))\n .subscribe({\n next: json => {\n const message = (0, Web3ResponseMessage_1.isWeb3ResponseMessage)(json) ? json : null;\n if (!message) {\n return;\n }\n this.handleWeb3ResponseMessage(message);\n },\n error: () => {\n var _a;\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.GENERAL_ERROR, {\n message: \"Had error decrypting\",\n value: \"incomingEvent\",\n });\n },\n }));\n }\n catch (_a) {\n return;\n }\n }\n handleWeb3ResponseMessage(message) {\n var _a;\n const { response } = message;\n (_a = this.diagnostic) === null || _a === void 0 ? void 0 : _a.log(DiagnosticLogger_1.EVENTS.WEB3_RESPONSE, {\n eventId: message.id,\n method: `relay::${response.method}`,\n sessionIdHash: this.getSessionIdHash(),\n });\n if ((0, Web3Response_1.isRequestEthereumAccountsResponse)(response)) {\n WalletSDKRelay.accountRequestCallbackIds.forEach(id => this.invokeCallback(Object.assign(Object.assign({}, message), { id })));\n WalletSDKRelay.accountRequestCallbackIds.clear();\n return;\n }\n this.invokeCallback(message);\n }\n handleErrorResponse(id, method, error, errorCode) {\n this.handleWeb3ResponseMessage((0, Web3ResponseMessage_1.Web3ResponseMessage)({\n id,\n response: (0, Web3Response_1.ErrorResponse)(method, (error !== null && error !== void 0 ? error : WalletUIError_1.WalletUIError.UserRejectedRequest).message, errorCode),\n }));\n }\n invokeCallback(message) {\n const callback = this.relayEventManager.callbacks.get(message.id);\n if (callback) {\n callback(message.response);\n this.relayEventManager.callbacks.delete(message.id);\n }\n }\n requestEthereumAccounts() {\n const request = {\n method: Web3Method_1.Web3Method.requestEthereumAccounts,\n params: {\n appName: this.appName,\n appLogoUrl: this.appLogoUrl || null,\n },\n };\n const hideSnackbarItem = null;\n const id = (0, util_1.randomBytesHex)(8);\n const cancel = (error) => {\n this.publishWeb3RequestCanceledEvent(id);\n this.handleErrorResponse(id, request.method, error);\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n hideSnackbarItem === null || hideSnackbarItem === void 0 ? void 0 : hideSnackbarItem();\n };\n const promise = new Promise((resolve, reject) => {\n var _a;\n this.relayEventManager.callbacks.set(id, response => {\n this.ui.hideRequestEthereumAccounts();\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n hideSnackbarItem === null || hideSnackbarItem === void 0 ? void 0 : hideSnackbarItem();\n if (response.errorMessage) {\n return reject(new Error(response.errorMessage));\n }\n resolve(response);\n });\n const userAgent = ((_a = window === null || window === void 0 ? void 0 : window.navigator) === null || _a === void 0 ? void 0 : _a.userAgent) || null;\n if (userAgent &&\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(userAgent)) {\n let location;\n try {\n if ((0, util_1.isInIFrame)() && window.top) {\n location = window.top.location;\n }\n else {\n location = window.location;\n }\n }\n catch (e) {\n location = window.location;\n }\n location.href = `https://www.coinbase.com/connect-dapp?uri=${encodeURIComponent(location.href)}`;\n return;\n }\n if (this.ui.inlineAccountsResponse()) {\n const onAccounts = (accounts) => {\n this.handleWeb3ResponseMessage((0, Web3ResponseMessage_1.Web3ResponseMessage)({\n id,\n response: (0, Web3Response_1.RequestEthereumAccountsResponse)(accounts),\n }));\n };\n this.ui.requestEthereumAccounts({\n onCancel: cancel,\n onAccounts,\n });\n }\n else {\n // Error if user closes TryExtensionLinkDialog without connecting\n const err = eth_rpc_errors_1.ethErrors.provider.userRejectedRequest(\"User denied account authorization\");\n this.ui.requestEthereumAccounts({\n onCancel: () => cancel(err),\n });\n }\n WalletSDKRelay.accountRequestCallbackIds.add(id);\n if (!this.ui.inlineAccountsResponse() && !this.ui.isStandalone()) {\n this.publishWeb3RequestEvent(id, request);\n }\n });\n return { promise, cancel };\n }\n selectProvider(providerOptions) {\n const request = {\n method: Web3Method_1.Web3Method.selectProvider,\n params: {\n providerOptions,\n },\n };\n const id = (0, util_1.randomBytesHex)(8);\n const cancel = (error) => {\n this.publishWeb3RequestCanceledEvent(id);\n this.handleErrorResponse(id, request.method, error);\n };\n const promise = new Promise((resolve, reject) => {\n this.relayEventManager.callbacks.set(id, response => {\n if (response.errorMessage) {\n return reject(new Error(response.errorMessage));\n }\n resolve(response);\n });\n const _cancel = (_error) => {\n this.handleWeb3ResponseMessage((0, Web3ResponseMessage_1.Web3ResponseMessage)({\n id,\n response: (0, Web3Response_1.SelectProviderResponse)(types_1.ProviderType.Unselected),\n }));\n };\n const approve = (selectedProviderKey) => {\n this.handleWeb3ResponseMessage((0, Web3ResponseMessage_1.Web3ResponseMessage)({\n id,\n response: (0, Web3Response_1.SelectProviderResponse)(selectedProviderKey),\n }));\n };\n if (this.ui.selectProvider)\n this.ui.selectProvider({\n onApprove: approve,\n onCancel: _cancel,\n providerOptions,\n });\n });\n return { cancel, promise };\n }\n watchAsset(type, address, symbol, decimals, image, chainId) {\n const request = {\n method: Web3Method_1.Web3Method.watchAsset,\n params: {\n type,\n options: {\n address,\n symbol,\n decimals,\n image,\n },\n chainId,\n },\n };\n let hideSnackbarItem = null;\n const id = (0, util_1.randomBytesHex)(8);\n const cancel = (error) => {\n this.publishWeb3RequestCanceledEvent(id);\n this.handleErrorResponse(id, request.method, error);\n hideSnackbarItem === null || hideSnackbarItem === void 0 ? void 0 : hideSnackbarItem();\n };\n if (!this.ui.inlineWatchAsset()) {\n hideSnackbarItem = this.ui.showConnecting({\n isUnlinkedErrorState: this.isUnlinkedErrorState,\n onCancel: cancel,\n onResetConnection: this.resetAndReload, // eslint-disable-line @typescript-eslint/unbound-method\n });\n }\n const promise = new Promise((resolve, reject) => {\n this.relayEventManager.callbacks.set(id, response => {\n hideSnackbarItem === null || hideSnackbarItem === void 0 ? void 0 : hideSnackbarItem();\n if (response.errorMessage) {\n return reject(new Error(response.errorMessage));\n }\n resolve(response);\n });\n const _cancel = (_error) => {\n this.handleWeb3ResponseMessage((0, Web3ResponseMessage_1.Web3ResponseMessage)({\n id,\n response: (0, Web3Response_1.WatchAssetReponse)(false),\n }));\n };\n const approve = () => {\n this.handleWeb3ResponseMessage((0, Web3ResponseMessage_1.Web3ResponseMessage)({\n id,\n response: (0, Web3Response_1.WatchAssetReponse)(true),\n }));\n };\n if (this.ui.inlineWatchAsset()) {\n this.ui.watchAsset({\n onApprove: approve,\n onCancel: _cancel,\n type,\n address,\n symbol,\n decimals,\n image,\n chainId,\n });\n }\n if (!this.ui.inlineWatchAsset() && !this.ui.isStandalone()) {\n this.publishWeb3RequestEvent(id, request);\n }\n });\n return { cancel, promise };\n }\n addEthereumChain(chainId, rpcUrls, iconUrls, blockExplorerUrls, chainName, nativeCurrency) {\n const request = {\n method: Web3Method_1.Web3Method.addEthereumChain,\n params: {\n chainId,\n rpcUrls,\n blockExplorerUrls,\n chainName,\n iconUrls,\n nativeCurrency,\n },\n };\n let hideSnackbarItem = null;\n const id = (0, util_1.randomBytesHex)(8);\n const cancel = (error) => {\n this.publishWeb3RequestCanceledEvent(id);\n this.handleErrorResponse(id, request.method, error);\n hideSnackbarItem === null || hideSnackbarItem === void 0 ? void 0 : hideSnackbarItem();\n };\n if (!this.ui.inlineAddEthereumChain(chainId)) {\n hideSnackbarItem = this.ui.showConnecting({\n isUnlinkedErrorState: this.isUnlinkedErrorState,\n onCancel: cancel,\n onResetConnection: this.resetAndReload, // eslint-disable-line @typescript-eslint/unbound-method\n });\n }\n const promise = new Promise((resolve, reject) => {\n this.relayEventManager.callbacks.set(id, response => {\n hideSnackbarItem === null || hideSnackbarItem === void 0 ? void 0 : hideSnackbarItem();\n if (response.errorMessage) {\n return reject(new Error(response.errorMessage));\n }\n resolve(response);\n });\n const _cancel = (_error) => {\n this.handleWeb3ResponseMessage((0, Web3ResponseMessage_1.Web3ResponseMessage)({\n id,\n response: (0, Web3Response_1.AddEthereumChainResponse)({\n isApproved: false,\n rpcUrl: \"\",\n }),\n }));\n };\n const approve = (rpcUrl) => {\n this.handleWeb3ResponseMessage((0, Web3ResponseMessage_1.Web3ResponseMessage)({\n id,\n response: (0, Web3Response_1.AddEthereumChainResponse)({ isApproved: true, rpcUrl }),\n }));\n };\n if (this.ui.inlineAddEthereumChain(chainId)) {\n this.ui.addEthereumChain({\n onCancel: _cancel,\n onApprove: approve,\n chainId: request.params.chainId,\n rpcUrls: request.params.rpcUrls,\n blockExplorerUrls: request.params.blockExplorerUrls,\n chainName: request.params.chainName,\n iconUrls: request.params.iconUrls,\n nativeCurrency: request.params.nativeCurrency,\n });\n }\n if (!this.ui.inlineAddEthereumChain(chainId) && !this.ui.isStandalone()) {\n this.publishWeb3RequestEvent(id, request);\n }\n });\n return { promise, cancel };\n }\n switchEthereumChain(chainId, address) {\n const request = {\n method: Web3Method_1.Web3Method.switchEthereumChain,\n params: Object.assign({ chainId }, { address }),\n };\n const id = (0, util_1.randomBytesHex)(8);\n const cancel = (error) => {\n this.publishWeb3RequestCanceledEvent(id);\n this.handleErrorResponse(id, request.method, error);\n };\n const promise = new Promise((resolve, reject) => {\n this.relayEventManager.callbacks.set(id, response => {\n if (response.errorMessage && response.errorCode) {\n return reject(eth_rpc_errors_1.ethErrors.provider.custom({\n code: response.errorCode,\n message: `Unrecognized chain ID. Try adding the chain using addEthereumChain first.`,\n }));\n }\n else if (response.errorMessage) {\n return reject(new Error(response.errorMessage));\n }\n resolve(response);\n });\n const _cancel = (error) => {\n if (typeof error === \"number\") {\n // backward compatibility\n const errorCode = error;\n this.handleWeb3ResponseMessage((0, Web3ResponseMessage_1.Web3ResponseMessage)({\n id,\n response: (0, Web3Response_1.ErrorResponse)(Web3Method_1.Web3Method.switchEthereumChain, WalletUIError_1.WalletUIError.SwitchEthereumChainUnsupportedChainId.message, errorCode),\n }));\n }\n else if (error instanceof WalletUIError_1.WalletUIError) {\n this.handleErrorResponse(id, Web3Method_1.Web3Method.switchEthereumChain, error, error.errorCode);\n }\n else {\n this.handleWeb3ResponseMessage((0, Web3ResponseMessage_1.Web3ResponseMessage)({\n id,\n response: (0, Web3Response_1.SwitchEthereumChainResponse)({\n isApproved: false,\n rpcUrl: \"\",\n }),\n }));\n }\n };\n const approve = (rpcUrl) => {\n this.handleWeb3ResponseMessage((0, Web3ResponseMessage_1.Web3ResponseMessage)({\n id,\n response: (0, Web3Response_1.SwitchEthereumChainResponse)({\n isApproved: true,\n rpcUrl,\n }),\n }));\n };\n this.ui.switchEthereumChain({\n onCancel: _cancel,\n onApprove: approve,\n chainId: request.params.chainId,\n address: request.params.address,\n });\n if (!this.ui.inlineSwitchEthereumChain() && !this.ui.isStandalone()) {\n this.publishWeb3RequestEvent(id, request);\n }\n });\n return { promise, cancel };\n }\n inlineAddEthereumChain(chainId) {\n return this.ui.inlineAddEthereumChain(chainId);\n }\n getSessionIdHash() {\n return Session_1.Session.hash(this._session.id);\n }\n sendRequestStandalone(id, request) {\n const _cancel = (error) => {\n this.handleErrorResponse(id, request.method, error);\n };\n const onSuccess = (response) => {\n this.handleWeb3ResponseMessage((0, Web3ResponseMessage_1.Web3ResponseMessage)({\n id,\n response,\n }));\n };\n switch (request.method) {\n case Web3Method_1.Web3Method.signEthereumMessage:\n this.ui.signEthereumMessage({\n request,\n onSuccess,\n onCancel: _cancel,\n });\n break;\n case Web3Method_1.Web3Method.signEthereumTransaction:\n this.ui.signEthereumTransaction({\n request,\n onSuccess,\n onCancel: _cancel,\n });\n break;\n case Web3Method_1.Web3Method.submitEthereumTransaction:\n this.ui.submitEthereumTransaction({\n request,\n onSuccess,\n onCancel: _cancel,\n });\n break;\n case Web3Method_1.Web3Method.ethereumAddressFromSignedMessage:\n this.ui.ethereumAddressFromSignedMessage({\n request,\n onSuccess,\n });\n break;\n default:\n _cancel();\n break;\n }\n }\n onSessionConfigChanged(_nextSessionConfig) { }\n}\nWalletSDKRelay.accountRequestCallbackIds = new Set();\n__decorate([\n bind_decorator_1.default\n], WalletSDKRelay.prototype, \"resetAndReload\", null);\n__decorate([\n bind_decorator_1.default\n], WalletSDKRelay.prototype, \"handleIncomingEvent\", null);\nexports.WalletSDKRelay = WalletSDKRelay;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WalletSDKRelayAbstract = exports.APP_VERSION_KEY = exports.LOCAL_STORAGE_ADDRESSES_KEY = exports.WALLET_USER_NAME_KEY = void 0;\nconst eth_rpc_errors_1 = require(\"eth-rpc-errors\");\nexports.WALLET_USER_NAME_KEY = \"walletUsername\";\nexports.LOCAL_STORAGE_ADDRESSES_KEY = \"Addresses\";\nexports.APP_VERSION_KEY = \"AppVersion\";\nclass WalletSDKRelayAbstract {\n async makeEthereumJSONRPCRequest(request, jsonRpcUrl) {\n if (!jsonRpcUrl)\n throw new Error(\"Error: No jsonRpcUrl provided\");\n return window\n .fetch(jsonRpcUrl, {\n method: \"POST\",\n body: JSON.stringify(request),\n mode: \"cors\",\n headers: { \"Content-Type\": \"application/json\" },\n })\n .then(res => res.json())\n .then(json => {\n if (!json) {\n throw eth_rpc_errors_1.ethErrors.rpc.parse({});\n }\n const response = json;\n const { error } = response;\n if (error) {\n throw (0, eth_rpc_errors_1.serializeError)(error);\n }\n return response;\n });\n }\n}\nexports.WalletSDKRelayAbstract = WalletSDKRelayAbstract;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WalletSDKRelayEventManager = void 0;\nconst util_1 = require(\"../util\");\nclass WalletSDKRelayEventManager {\n constructor() {\n this._nextRequestId = 0;\n this.callbacks = new Map();\n }\n makeRequestId() {\n // max nextId == max int32 for compatibility with mobile\n this._nextRequestId = (this._nextRequestId + 1) % 0x7fffffff;\n const id = this._nextRequestId;\n const idStr = (0, util_1.prepend0x)(id.toString(16));\n // unlikely that this will ever be an issue, but just to be safe\n const callback = this.callbacks.get(idStr);\n if (callback) {\n this.callbacks.delete(idStr);\n }\n return id;\n }\n}\nexports.WalletSDKRelayEventManager = WalletSDKRelayEventManager;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Web3Method = void 0;\nvar Web3Method;\n(function (Web3Method) {\n Web3Method[\"requestEthereumAccounts\"] = \"requestEthereumAccounts\";\n Web3Method[\"signEthereumMessage\"] = \"signEthereumMessage\";\n Web3Method[\"signEthereumTransaction\"] = \"signEthereumTransaction\";\n Web3Method[\"submitEthereumTransaction\"] = \"submitEthereumTransaction\";\n Web3Method[\"ethereumAddressFromSignedMessage\"] = \"ethereumAddressFromSignedMessage\";\n Web3Method[\"scanQRCode\"] = \"scanQRCode\";\n Web3Method[\"generic\"] = \"generic\";\n Web3Method[\"childRequestEthereumAccounts\"] = \"childRequestEthereumAccounts\";\n Web3Method[\"addEthereumChain\"] = \"addEthereumChain\";\n Web3Method[\"switchEthereumChain\"] = \"switchEthereumChain\";\n Web3Method[\"makeEthereumJSONRPCRequest\"] = \"makeEthereumJSONRPCRequest\";\n Web3Method[\"watchAsset\"] = \"watchAsset\";\n Web3Method[\"selectProvider\"] = \"selectProvider\";\n})(Web3Method = exports.Web3Method || (exports.Web3Method = {}));\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Web3RequestCanceledMessage = void 0;\nconst RelayMessage_1 = require(\"./RelayMessage\");\nfunction Web3RequestCanceledMessage(id) {\n return { type: RelayMessage_1.RelayMessageType.WEB3_REQUEST_CANCELED, id };\n}\nexports.Web3RequestCanceledMessage = Web3RequestCanceledMessage;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Web3RequestMessage = void 0;\nconst RelayMessage_1 = require(\"./RelayMessage\");\nfunction Web3RequestMessage(params) {\n return Object.assign({ type: RelayMessage_1.RelayMessageType.WEB3_REQUEST }, params);\n}\nexports.Web3RequestMessage = Web3RequestMessage;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EthereumAddressFromSignedMessageResponse = exports.SubmitEthereumTransactionResponse = exports.SignEthereumTransactionResponse = exports.SignEthereumMessageResponse = exports.isRequestEthereumAccountsResponse = exports.SelectProviderResponse = exports.WatchAssetReponse = exports.RequestEthereumAccountsResponse = exports.SwitchEthereumChainResponse = exports.AddEthereumChainResponse = exports.ErrorResponse = void 0;\nconst Web3Method_1 = require(\"./Web3Method\");\nfunction ErrorResponse(method, errorMessage, errorCode) {\n return { method, errorMessage, errorCode };\n}\nexports.ErrorResponse = ErrorResponse;\nfunction AddEthereumChainResponse(addResponse) {\n return {\n method: Web3Method_1.Web3Method.addEthereumChain,\n result: addResponse,\n };\n}\nexports.AddEthereumChainResponse = AddEthereumChainResponse;\nfunction SwitchEthereumChainResponse(switchResponse) {\n return {\n method: Web3Method_1.Web3Method.switchEthereumChain,\n result: switchResponse,\n };\n}\nexports.SwitchEthereumChainResponse = SwitchEthereumChainResponse;\nfunction RequestEthereumAccountsResponse(addresses) {\n return { method: Web3Method_1.Web3Method.requestEthereumAccounts, result: addresses };\n}\nexports.RequestEthereumAccountsResponse = RequestEthereumAccountsResponse;\nfunction WatchAssetReponse(success) {\n return { method: Web3Method_1.Web3Method.watchAsset, result: success };\n}\nexports.WatchAssetReponse = WatchAssetReponse;\nfunction SelectProviderResponse(selectedProviderKey) {\n return { method: Web3Method_1.Web3Method.selectProvider, result: selectedProviderKey };\n}\nexports.SelectProviderResponse = SelectProviderResponse;\nfunction isRequestEthereumAccountsResponse(res) {\n return res && res.method === Web3Method_1.Web3Method.requestEthereumAccounts;\n}\nexports.isRequestEthereumAccountsResponse = isRequestEthereumAccountsResponse;\nfunction SignEthereumMessageResponse(signature) {\n return { method: Web3Method_1.Web3Method.signEthereumMessage, result: signature };\n}\nexports.SignEthereumMessageResponse = SignEthereumMessageResponse;\nfunction SignEthereumTransactionResponse(signedData) {\n return { method: Web3Method_1.Web3Method.signEthereumTransaction, result: signedData };\n}\nexports.SignEthereumTransactionResponse = SignEthereumTransactionResponse;\nfunction SubmitEthereumTransactionResponse(txHash) {\n return { method: Web3Method_1.Web3Method.submitEthereumTransaction, result: txHash };\n}\nexports.SubmitEthereumTransactionResponse = SubmitEthereumTransactionResponse;\nfunction EthereumAddressFromSignedMessageResponse(address) {\n return {\n method: Web3Method_1.Web3Method.ethereumAddressFromSignedMessage,\n result: address,\n };\n}\nexports.EthereumAddressFromSignedMessageResponse = EthereumAddressFromSignedMessageResponse;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isWeb3ResponseMessage = exports.Web3ResponseMessage = void 0;\nconst RelayMessage_1 = require(\"./RelayMessage\");\nfunction Web3ResponseMessage(params) {\n return Object.assign({ type: RelayMessage_1.RelayMessageType.WEB3_RESPONSE }, params);\n}\nexports.Web3ResponseMessage = Web3ResponseMessage;\nfunction isWeb3ResponseMessage(msg) {\n return msg && msg.type === RelayMessage_1.RelayMessageType.WEB3_RESPONSE;\n}\nexports.isWeb3ResponseMessage = isWeb3ResponseMessage;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decrypt = exports.encrypt = void 0;\nconst rxjs_1 = require(\"rxjs\");\nconst util_1 = require(\"../util\");\n/**\n *\n * @param plainText string to be encrypted\n * @param secret hex representation of 32-byte secret\n * returns hex string representation of bytes in the order: initialization vector (iv),\n * auth tag, encrypted plaintext. IV is 12 bytes. Auth tag is 16 bytes. Remaining bytes are the\n * encrypted plainText.\n */\nasync function encrypt(plainText, secret) {\n if (secret.length !== 64)\n throw Error(`secret must be 256 bits`);\n const ivBytes = crypto.getRandomValues(new Uint8Array(12));\n const secretKey = await crypto.subtle.importKey(\"raw\", (0, util_1.hexStringToUint8Array)(secret), { name: \"aes-gcm\" }, false, [\"encrypt\", \"decrypt\"]);\n const enc = new TextEncoder();\n // Will return encrypted plainText with auth tag (ie MAC or checksum) appended at the end\n const encryptedResult = await window.crypto.subtle.encrypt({\n name: \"AES-GCM\",\n iv: ivBytes,\n }, secretKey, enc.encode(plainText));\n const tagLength = 16;\n const authTag = encryptedResult.slice(encryptedResult.byteLength - tagLength);\n const encryptedPlaintext = encryptedResult.slice(0, encryptedResult.byteLength - tagLength);\n const authTagBytes = new Uint8Array(authTag);\n const encryptedPlaintextBytes = new Uint8Array(encryptedPlaintext);\n const concatted = new Uint8Array([\n ...ivBytes,\n ...authTagBytes,\n ...encryptedPlaintextBytes,\n ]);\n return (0, util_1.uint8ArrayToHex)(concatted);\n}\nexports.encrypt = encrypt;\n/**\n *\n * @param cipherText hex string representation of bytes in the order: initialization vector (iv),\n * auth tag, encrypted plaintext. IV is 12 bytes. Auth tag is 16 bytes.\n * @param secret hex string representation of 32-byte secret\n *\n * TODO: Update rxjs for promises\n */\nfunction decrypt(cipherText, secret) {\n if (secret.length !== 64)\n throw Error(`secret must be 256 bits`);\n return new rxjs_1.Observable(subscriber => {\n void (async function () {\n const secretKey = await crypto.subtle.importKey(\"raw\", (0, util_1.hexStringToUint8Array)(secret), { name: \"aes-gcm\" }, false, [\"encrypt\", \"decrypt\"]);\n const encrypted = (0, util_1.hexStringToUint8Array)(cipherText);\n const ivBytes = encrypted.slice(0, 12);\n const authTagBytes = encrypted.slice(12, 28);\n const encryptedPlaintextBytes = encrypted.slice(28);\n const concattedBytes = new Uint8Array([\n ...encryptedPlaintextBytes,\n ...authTagBytes,\n ]);\n const algo = {\n name: \"AES-GCM\",\n iv: new Uint8Array(ivBytes),\n };\n try {\n const decrypted = await window.crypto.subtle.decrypt(algo, secretKey, concattedBytes);\n const decoder = new TextDecoder();\n subscriber.next(decoder.decode(decrypted));\n subscriber.complete();\n }\n catch (err) {\n subscriber.error(err);\n }\n })();\n });\n}\nexports.decrypt = decrypt;\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProviderType = exports.RegExpString = exports.IntNumber = exports.BigIntString = exports.AddressString = exports.HexString = exports.OpaqueType = void 0;\nfunction OpaqueType() {\n return (value) => value;\n}\nexports.OpaqueType = OpaqueType;\nexports.HexString = OpaqueType();\nexports.AddressString = OpaqueType();\nexports.BigIntString = OpaqueType();\nfunction IntNumber(num) {\n return Math.floor(num);\n}\nexports.IntNumber = IntNumber;\nexports.RegExpString = OpaqueType();\nvar ProviderType;\n(function (ProviderType) {\n ProviderType[\"CoinbaseWallet\"] = \"CoinbaseWallet\";\n ProviderType[\"MetaMask\"] = \"MetaMask\";\n ProviderType[\"Unselected\"] = \"\";\n})(ProviderType = exports.ProviderType || (exports.ProviderType = {}));\n","\"use strict\";\n// Copyright (c) 2018-2022 Coinbase, Inc. \n// Licensed under the Apache License, version 2.0\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isInIFrame = exports.createQrUrl = exports.getFavicon = exports.range = exports.isBigNumber = exports.ensureParsedJSONObject = exports.ensureBN = exports.ensureRegExpString = exports.ensureIntNumber = exports.ensureBuffer = exports.ensureAddressString = exports.ensureEvenLengthHexString = exports.ensureHexString = exports.isHexString = exports.prepend0x = exports.strip0x = exports.has0xPrefix = exports.hexStringFromIntNumber = exports.intNumberFromHexString = exports.bigIntStringFromBN = exports.hexStringFromBuffer = exports.hexStringToUint8Array = exports.uint8ArrayToHex = exports.randomBytesHex = void 0;\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst qs_1 = require(\"qs\");\nconst types_1 = require(\"./types\");\nconst INT_STRING_REGEX = /^[0-9]*$/;\nconst HEXADECIMAL_STRING_REGEX = /^[a-f0-9]*$/;\n/**\n * @param length number of bytes\n */\nfunction randomBytesHex(length) {\n return uint8ArrayToHex(crypto.getRandomValues(new Uint8Array(length)));\n}\nexports.randomBytesHex = randomBytesHex;\nfunction uint8ArrayToHex(value) {\n return [...value].map(b => b.toString(16).padStart(2, \"0\")).join(\"\");\n}\nexports.uint8ArrayToHex = uint8ArrayToHex;\nfunction hexStringToUint8Array(hexString) {\n return new Uint8Array(hexString.match(/.{1,2}/g).map(byte => parseInt(byte, 16)));\n}\nexports.hexStringToUint8Array = hexStringToUint8Array;\nfunction hexStringFromBuffer(buf, includePrefix = false) {\n const hex = buf.toString(\"hex\");\n return (0, types_1.HexString)(includePrefix ? \"0x\" + hex : hex);\n}\nexports.hexStringFromBuffer = hexStringFromBuffer;\nfunction bigIntStringFromBN(bn) {\n return (0, types_1.BigIntString)(bn.toString(10));\n}\nexports.bigIntStringFromBN = bigIntStringFromBN;\nfunction intNumberFromHexString(hex) {\n return (0, types_1.IntNumber)(new bn_js_1.default(ensureEvenLengthHexString(hex, false), 16).toNumber());\n}\nexports.intNumberFromHexString = intNumberFromHexString;\nfunction hexStringFromIntNumber(num) {\n return (0, types_1.HexString)(\"0x\" + new bn_js_1.default(num).toString(16));\n}\nexports.hexStringFromIntNumber = hexStringFromIntNumber;\nfunction has0xPrefix(str) {\n return str.startsWith(\"0x\") || str.startsWith(\"0X\");\n}\nexports.has0xPrefix = has0xPrefix;\nfunction strip0x(hex) {\n if (has0xPrefix(hex)) {\n return hex.slice(2);\n }\n return hex;\n}\nexports.strip0x = strip0x;\nfunction prepend0x(hex) {\n if (has0xPrefix(hex)) {\n return \"0x\" + hex.slice(2);\n }\n return \"0x\" + hex;\n}\nexports.prepend0x = prepend0x;\nfunction isHexString(hex) {\n if (typeof hex !== \"string\") {\n return false;\n }\n const s = strip0x(hex).toLowerCase();\n return HEXADECIMAL_STRING_REGEX.test(s);\n}\nexports.isHexString = isHexString;\nfunction ensureHexString(hex, includePrefix = false) {\n if (typeof hex === \"string\") {\n const s = strip0x(hex).toLowerCase();\n if (HEXADECIMAL_STRING_REGEX.test(s)) {\n return (0, types_1.HexString)(includePrefix ? \"0x\" + s : s);\n }\n }\n throw new Error(`\"${String(hex)}\" is not a hexadecimal string`);\n}\nexports.ensureHexString = ensureHexString;\nfunction ensureEvenLengthHexString(hex, includePrefix = false) {\n let h = ensureHexString(hex, false);\n if (h.length % 2 === 1) {\n h = (0, types_1.HexString)(\"0\" + h);\n }\n return includePrefix ? (0, types_1.HexString)(\"0x\" + h) : h;\n}\nexports.ensureEvenLengthHexString = ensureEvenLengthHexString;\nfunction ensureAddressString(str) {\n if (typeof str === \"string\") {\n const s = strip0x(str).toLowerCase();\n if (isHexString(s) && s.length === 40) {\n return (0, types_1.AddressString)(prepend0x(s));\n }\n }\n throw new Error(`Invalid Ethereum address: ${String(str)}`);\n}\nexports.ensureAddressString = ensureAddressString;\nfunction ensureBuffer(str) {\n if (Buffer.isBuffer(str)) {\n return str;\n }\n if (typeof str === \"string\") {\n if (isHexString(str)) {\n const s = ensureEvenLengthHexString(str, false);\n return Buffer.from(s, \"hex\");\n }\n else {\n return Buffer.from(str, \"utf8\");\n }\n }\n throw new Error(`Not binary data: ${String(str)}`);\n}\nexports.ensureBuffer = ensureBuffer;\nfunction ensureIntNumber(num) {\n if (typeof num === \"number\" && Number.isInteger(num)) {\n return (0, types_1.IntNumber)(num);\n }\n if (typeof num === \"string\") {\n if (INT_STRING_REGEX.test(num)) {\n return (0, types_1.IntNumber)(Number(num));\n }\n if (isHexString(num)) {\n return (0, types_1.IntNumber)(new bn_js_1.default(ensureEvenLengthHexString(num, false), 16).toNumber());\n }\n }\n throw new Error(`Not an integer: ${String(num)}`);\n}\nexports.ensureIntNumber = ensureIntNumber;\nfunction ensureRegExpString(regExp) {\n if (regExp instanceof RegExp) {\n return (0, types_1.RegExpString)(regExp.toString());\n }\n throw new Error(`Not a RegExp: ${String(regExp)}`);\n}\nexports.ensureRegExpString = ensureRegExpString;\nfunction ensureBN(val) {\n if (val !== null && (bn_js_1.default.isBN(val) || isBigNumber(val))) {\n return new bn_js_1.default(val.toString(10), 10);\n }\n if (typeof val === \"number\") {\n return new bn_js_1.default(ensureIntNumber(val));\n }\n if (typeof val === \"string\") {\n if (INT_STRING_REGEX.test(val)) {\n return new bn_js_1.default(val, 10);\n }\n if (isHexString(val)) {\n return new bn_js_1.default(ensureEvenLengthHexString(val, false), 16);\n }\n }\n throw new Error(`Not an integer: ${String(val)}`);\n}\nexports.ensureBN = ensureBN;\nfunction ensureParsedJSONObject(val) {\n if (typeof val === \"string\") {\n return JSON.parse(val);\n }\n if (typeof val === \"object\") {\n return val;\n }\n throw new Error(`Not a JSON string or an object: ${String(val)}`);\n}\nexports.ensureParsedJSONObject = ensureParsedJSONObject;\nfunction isBigNumber(val) {\n if (val == null || typeof val.constructor !== \"function\") {\n return false;\n }\n const { constructor } = val;\n return (typeof constructor.config === \"function\" &&\n typeof constructor.EUCLID === \"number\");\n}\nexports.isBigNumber = isBigNumber;\nfunction range(start, stop) {\n return Array.from({ length: stop - start }, (_, i) => start + i);\n}\nexports.range = range;\nfunction getFavicon() {\n const el = document.querySelector('link[sizes=\"192x192\"]') ||\n document.querySelector('link[sizes=\"180x180\"]') ||\n document.querySelector('link[rel=\"icon\"]') ||\n document.querySelector('link[rel=\"shortcut icon\"]');\n const { protocol, host } = document.location;\n const href = el ? el.getAttribute(\"href\") : null;\n if (!href || href.startsWith(\"javascript:\")) {\n return null;\n }\n if (href.startsWith(\"http://\") ||\n href.startsWith(\"https://\") ||\n href.startsWith(\"data:\")) {\n return href;\n }\n if (href.startsWith(\"//\")) {\n return protocol + href;\n }\n return `${protocol}//${host}${href}`;\n}\nexports.getFavicon = getFavicon;\nfunction createQrUrl(sessionId, sessionSecret, serverUrl, isParentConnection, version, chainId) {\n const sessionIdKey = isParentConnection ? \"parent-id\" : \"id\";\n const query = (0, qs_1.stringify)({\n [sessionIdKey]: sessionId,\n secret: sessionSecret,\n server: serverUrl,\n v: version,\n chainId,\n });\n const qrUrl = `${serverUrl}/#/link?${query}`;\n return qrUrl;\n}\nexports.createQrUrl = createQrUrl;\nfunction isInIFrame() {\n try {\n return window.frameElement !== null;\n }\n catch (e) {\n return false;\n }\n}\nexports.isInIFrame = isInIFrame;\n","// Extracted from https://github.com/ethereumjs/ethereumjs-abi and stripped out irrelevant code\n// Original code licensed under the MIT License - Copyright (c) 2015 Alex Beregszaszi\n\nconst util = require('./util')\nconst BN = require('bn.js')\n\n// Convert from short to canonical names\n// FIXME: optimise or make this nicer?\nfunction elementaryName (name) {\n if (name.startsWith('int[')) {\n return 'int256' + name.slice(3)\n } else if (name === 'int') {\n return 'int256'\n } else if (name.startsWith('uint[')) {\n return 'uint256' + name.slice(4)\n } else if (name === 'uint') {\n return 'uint256'\n } else if (name.startsWith('fixed[')) {\n return 'fixed128x128' + name.slice(5)\n } else if (name === 'fixed') {\n return 'fixed128x128'\n } else if (name.startsWith('ufixed[')) {\n return 'ufixed128x128' + name.slice(6)\n } else if (name === 'ufixed') {\n return 'ufixed128x128'\n }\n return name\n}\n\n// Parse N from type\nfunction parseTypeN (type) {\n return parseInt(/^\\D+(\\d+)$/.exec(type)[1], 10)\n}\n\n// Parse N,M from typex\nfunction parseTypeNxM (type) {\n var tmp = /^\\D+(\\d+)x(\\d+)$/.exec(type)\n return [ parseInt(tmp[1], 10), parseInt(tmp[2], 10) ]\n}\n\n// Parse N in type[] where \"type\" can itself be an array type.\nfunction parseTypeArray (type) {\n var tmp = type.match(/(.*)\\[(.*?)\\]$/)\n if (tmp) {\n return tmp[2] === '' ? 'dynamic' : parseInt(tmp[2], 10)\n }\n return null\n}\n\nfunction parseNumber (arg) {\n var type = typeof arg\n if (type === 'string') {\n if (util.isHexString(arg)) {\n return new BN(util.stripHexPrefix(arg), 16)\n } else {\n return new BN(arg, 10)\n }\n } else if (type === 'number') {\n return new BN(arg)\n } else if (arg.toArray) {\n // assume this is a BN for the moment, replace with BN.isBN soon\n return arg\n } else {\n throw new Error('Argument is not a number')\n }\n}\n\n// Encodes a single item (can be dynamic array)\n// @returns: Buffer\nfunction encodeSingle (type, arg) {\n var size, num, ret, i\n\n if (type === 'address') {\n return encodeSingle('uint160', parseNumber(arg))\n } else if (type === 'bool') {\n return encodeSingle('uint8', arg ? 1 : 0)\n } else if (type === 'string') {\n return encodeSingle('bytes', new Buffer(arg, 'utf8'))\n } else if (isArray(type)) {\n // this part handles fixed-length ([2]) and variable length ([]) arrays\n // NOTE: we catch here all calls to arrays, that simplifies the rest\n if (typeof arg.length === 'undefined') {\n throw new Error('Not an array?')\n }\n size = parseTypeArray(type)\n if (size !== 'dynamic' && size !== 0 && arg.length > size) {\n throw new Error('Elements exceed array size: ' + size)\n }\n ret = []\n type = type.slice(0, type.lastIndexOf('['))\n if (typeof arg === 'string') {\n arg = JSON.parse(arg)\n }\n for (i in arg) {\n ret.push(encodeSingle(type, arg[i]))\n }\n if (size === 'dynamic') {\n var length = encodeSingle('uint256', arg.length)\n ret.unshift(length)\n }\n return Buffer.concat(ret)\n } else if (type === 'bytes') {\n arg = new Buffer(arg)\n\n ret = Buffer.concat([ encodeSingle('uint256', arg.length), arg ])\n\n if ((arg.length % 32) !== 0) {\n ret = Buffer.concat([ ret, util.zeros(32 - (arg.length % 32)) ])\n }\n\n return ret\n } else if (type.startsWith('bytes')) {\n size = parseTypeN(type)\n if (size < 1 || size > 32) {\n throw new Error('Invalid bytes width: ' + size)\n }\n\n return util.setLengthRight(arg, 32)\n } else if (type.startsWith('uint')) {\n size = parseTypeN(type)\n if ((size % 8) || (size < 8) || (size > 256)) {\n throw new Error('Invalid uint width: ' + size)\n }\n\n num = parseNumber(arg)\n if (num.bitLength() > size) {\n throw new Error('Supplied uint exceeds width: ' + size + ' vs ' + num.bitLength())\n }\n\n if (num < 0) {\n throw new Error('Supplied uint is negative')\n }\n\n return num.toArrayLike(Buffer, 'be', 32)\n } else if (type.startsWith('int')) {\n size = parseTypeN(type)\n if ((size % 8) || (size < 8) || (size > 256)) {\n throw new Error('Invalid int width: ' + size)\n }\n\n num = parseNumber(arg)\n if (num.bitLength() > size) {\n throw new Error('Supplied int exceeds width: ' + size + ' vs ' + num.bitLength())\n }\n\n return num.toTwos(256).toArrayLike(Buffer, 'be', 32)\n } else if (type.startsWith('ufixed')) {\n size = parseTypeNxM(type)\n\n num = parseNumber(arg)\n\n if (num < 0) {\n throw new Error('Supplied ufixed is negative')\n }\n\n return encodeSingle('uint256', num.mul(new BN(2).pow(new BN(size[1]))))\n } else if (type.startsWith('fixed')) {\n size = parseTypeNxM(type)\n\n return encodeSingle('int256', parseNumber(arg).mul(new BN(2).pow(new BN(size[1]))))\n }\n\n throw new Error('Unsupported or invalid type: ' + type)\n}\n\n// Is a type dynamic?\nfunction isDynamic (type) {\n // FIXME: handle all types? I don't think anything is missing now\n return (type === 'string') || (type === 'bytes') || (parseTypeArray(type) === 'dynamic')\n}\n\n// Is a type an array?\nfunction isArray (type) {\n return type.lastIndexOf(']') === type.length - 1\n}\n\n// Encode a method/event with arguments\n// @types an array of string type names\n// @args an array of the appropriate values\nfunction rawEncode (types, values) {\n var output = []\n var data = []\n\n var headLength = 32 * types.length\n\n for (var i in types) {\n var type = elementaryName(types[i])\n var value = values[i]\n var cur = encodeSingle(type, value)\n\n // Use the head/tail method for storing dynamic data\n if (isDynamic(type)) {\n output.push(encodeSingle('uint256', headLength))\n data.push(cur)\n headLength += cur.length\n } else {\n output.push(cur)\n }\n }\n\n return Buffer.concat(output.concat(data))\n}\n\nfunction solidityPack (types, values) {\n if (types.length !== values.length) {\n throw new Error('Number of types are not matching the values')\n }\n\n var size, num\n var ret = []\n\n for (var i = 0; i < types.length; i++) {\n var type = elementaryName(types[i])\n var value = values[i]\n\n if (type === 'bytes') {\n ret.push(value)\n } else if (type === 'string') {\n ret.push(new Buffer(value, 'utf8'))\n } else if (type === 'bool') {\n ret.push(new Buffer(value ? '01' : '00', 'hex'))\n } else if (type === 'address') {\n ret.push(util.setLength(value, 20))\n } else if (type.startsWith('bytes')) {\n size = parseTypeN(type)\n if (size < 1 || size > 32) {\n throw new Error('Invalid bytes width: ' + size)\n }\n\n ret.push(util.setLengthRight(value, size))\n } else if (type.startsWith('uint')) {\n size = parseTypeN(type)\n if ((size % 8) || (size < 8) || (size > 256)) {\n throw new Error('Invalid uint width: ' + size)\n }\n\n num = parseNumber(value)\n if (num.bitLength() > size) {\n throw new Error('Supplied uint exceeds width: ' + size + ' vs ' + num.bitLength())\n }\n\n ret.push(num.toArrayLike(Buffer, 'be', size / 8))\n } else if (type.startsWith('int')) {\n size = parseTypeN(type)\n if ((size % 8) || (size < 8) || (size > 256)) {\n throw new Error('Invalid int width: ' + size)\n }\n\n num = parseNumber(value)\n if (num.bitLength() > size) {\n throw new Error('Supplied int exceeds width: ' + size + ' vs ' + num.bitLength())\n }\n\n ret.push(num.toTwos(size).toArrayLike(Buffer, 'be', size / 8))\n } else {\n // FIXME: support all other types\n throw new Error('Unsupported or invalid type: ' + type)\n }\n }\n\n return Buffer.concat(ret)\n}\n\nfunction soliditySHA3 (types, values) {\n return util.keccak(solidityPack(types, values))\n}\n\nmodule.exports = {\n rawEncode,\n solidityPack,\n soliditySHA3\n}\n","const util = require('./util')\nconst abi = require('./abi')\n\nconst TYPED_MESSAGE_SCHEMA = {\n type: 'object',\n properties: {\n types: {\n type: 'object',\n additionalProperties: {\n type: 'array',\n items: {\n type: 'object',\n properties: {\n name: {type: 'string'},\n type: {type: 'string'},\n },\n required: ['name', 'type'],\n },\n },\n },\n primaryType: {type: 'string'},\n domain: {type: 'object'},\n message: {type: 'object'},\n },\n required: ['types', 'primaryType', 'domain', 'message'],\n}\n\n/**\n * A collection of utility functions used for signing typed data\n */\nconst TypedDataUtils = {\n /**\n * Encodes an object by encoding and concatenating each of its members\n *\n * @param {string} primaryType - Root type\n * @param {Object} data - Object to encode\n * @param {Object} types - Type definitions\n * @returns {string} - Encoded representation of an object\n */\n encodeData (primaryType, data, types, useV4 = true) {\n const encodedTypes = ['bytes32']\n const encodedValues = [this.hashType(primaryType, types)]\n\n if(useV4) {\n const encodeField = (name, type, value) => {\n if (types[type] !== undefined) {\n return ['bytes32', value == null ?\n '0x0000000000000000000000000000000000000000000000000000000000000000' :\n util.keccak(this.encodeData(type, value, types, useV4))]\n }\n\n if(value === undefined)\n throw new Error(`missing value for field ${name} of type ${type}`)\n\n if (type === 'bytes') {\n return ['bytes32', util.keccak(value)]\n }\n\n if (type === 'string') {\n // convert string to buffer - prevents ethUtil from interpreting strings like '0xabcd' as hex\n if (typeof value === 'string') {\n value = Buffer.from(value, 'utf8')\n }\n return ['bytes32', util.keccak(value)]\n }\n\n if (type.lastIndexOf(']') === type.length - 1) {\n const parsedType = type.slice(0, type.lastIndexOf('['))\n const typeValuePairs = value.map(item =>\n encodeField(name, parsedType, item))\n return ['bytes32', util.keccak(abi.rawEncode(\n typeValuePairs.map(([type]) => type),\n typeValuePairs.map(([, value]) => value),\n ))]\n }\n\n return [type, value]\n }\n\n for (const field of types[primaryType]) {\n const [type, value] = encodeField(field.name, field.type, data[field.name])\n encodedTypes.push(type)\n encodedValues.push(value)\n }\n } else {\n for (const field of types[primaryType]) {\n let value = data[field.name]\n if (value !== undefined) {\n if (field.type === 'bytes') {\n encodedTypes.push('bytes32')\n value = util.keccak(value)\n encodedValues.push(value)\n } else if (field.type === 'string') {\n encodedTypes.push('bytes32')\n // convert string to buffer - prevents ethUtil from interpreting strings like '0xabcd' as hex\n if (typeof value === 'string') {\n value = Buffer.from(value, 'utf8')\n }\n value = util.keccak(value)\n encodedValues.push(value)\n } else if (types[field.type] !== undefined) {\n encodedTypes.push('bytes32')\n value = util.keccak(this.encodeData(field.type, value, types, useV4))\n encodedValues.push(value)\n } else if (field.type.lastIndexOf(']') === field.type.length - 1) {\n throw new Error('Arrays currently unimplemented in encodeData')\n } else {\n encodedTypes.push(field.type)\n encodedValues.push(value)\n }\n }\n }\n }\n\n return abi.rawEncode(encodedTypes, encodedValues)\n },\n\n /**\n * Encodes the type of an object by encoding a comma delimited list of its members\n *\n * @param {string} primaryType - Root type to encode\n * @param {Object} types - Type definitions\n * @returns {string} - Encoded representation of the type of an object\n */\n encodeType (primaryType, types) {\n let result = ''\n let deps = this.findTypeDependencies(primaryType, types).filter(dep => dep !== primaryType)\n deps = [primaryType].concat(deps.sort())\n for (const type of deps) {\n const children = types[type]\n if (!children) {\n throw new Error('No type definition specified: ' + type)\n }\n result += type + '(' + types[type].map(({ name, type }) => type + ' ' + name).join(',') + ')'\n }\n return result\n },\n\n /**\n * Finds all types within a type defintion object\n *\n * @param {string} primaryType - Root type\n * @param {Object} types - Type definitions\n * @param {Array} results - current set of accumulated types\n * @returns {Array} - Set of all types found in the type definition\n */\n findTypeDependencies (primaryType, types, results = []) {\n primaryType = primaryType.match(/^\\w*/)[0]\n if (results.includes(primaryType) || types[primaryType] === undefined) { return results }\n results.push(primaryType)\n for (const field of types[primaryType]) {\n for (const dep of this.findTypeDependencies(field.type, types, results)) {\n !results.includes(dep) && results.push(dep)\n }\n }\n return results\n },\n\n /**\n * Hashes an object\n *\n * @param {string} primaryType - Root type\n * @param {Object} data - Object to hash\n * @param {Object} types - Type definitions\n * @returns {Buffer} - Hash of an object\n */\n hashStruct (primaryType, data, types, useV4 = true) {\n return util.keccak(this.encodeData(primaryType, data, types, useV4))\n },\n\n /**\n * Hashes the type of an object\n *\n * @param {string} primaryType - Root type to hash\n * @param {Object} types - Type definitions\n * @returns {string} - Hash of an object\n */\n hashType (primaryType, types) {\n return util.keccak(this.encodeType(primaryType, types))\n },\n\n /**\n * Removes properties from a message object that are not defined per EIP-712\n *\n * @param {Object} data - typed message object\n * @returns {Object} - typed message object with only allowed fields\n */\n sanitizeData (data) {\n const sanitizedData = {}\n for (const key in TYPED_MESSAGE_SCHEMA.properties) {\n data[key] && (sanitizedData[key] = data[key])\n }\n if (sanitizedData.types) {\n sanitizedData.types = Object.assign({ EIP712Domain: [] }, sanitizedData.types)\n }\n return sanitizedData\n },\n\n /**\n * Returns the hash of a typed message as per EIP-712 for signing\n *\n * @param {Object} typedData - Types message data to sign\n * @returns {string} - sha3 hash for signing\n */\n hash (typedData, useV4 = true) {\n const sanitizedData = this.sanitizeData(typedData)\n const parts = [Buffer.from('1901', 'hex')]\n parts.push(this.hashStruct('EIP712Domain', sanitizedData.domain, sanitizedData.types, useV4))\n if (sanitizedData.primaryType !== 'EIP712Domain') {\n parts.push(this.hashStruct(sanitizedData.primaryType, sanitizedData.message, sanitizedData.types, useV4))\n }\n return util.keccak(Buffer.concat(parts))\n },\n}\n\nmodule.exports = {\n TYPED_MESSAGE_SCHEMA,\n TypedDataUtils,\n\n hashForSignTypedDataLegacy: function (msgParams) {\n return typedSignatureHashLegacy(msgParams.data)\n },\n\n hashForSignTypedData_v3: function (msgParams) {\n return TypedDataUtils.hash(msgParams.data, false)\n },\n\n hashForSignTypedData_v4: function (msgParams) {\n return TypedDataUtils.hash(msgParams.data)\n },\n}\n\n/**\n * @param typedData - Array of data along with types, as per EIP712.\n * @returns Buffer\n */\nfunction typedSignatureHashLegacy(typedData) {\n const error = new Error('Expect argument to be non-empty array')\n if (typeof typedData !== 'object' || !typedData.length) throw error\n\n const data = typedData.map(function (e) {\n return e.type === 'bytes' ? util.toBuffer(e.value) : e.value\n })\n const types = typedData.map(function (e) { return e.type })\n const schema = typedData.map(function (e) {\n if (!e.name) throw error\n return e.type + ' ' + e.name\n })\n\n return abi.soliditySHA3(\n ['bytes32', 'bytes32'],\n [\n abi.soliditySHA3(new Array(typedData.length).fill('string'), schema),\n abi.soliditySHA3(types, data)\n ]\n )\n}\n","// Extracted from https://github.com/ethereumjs/ethereumjs-util and stripped out irrelevant code\n// Original code licensed under the Mozilla Public License Version 2.0\n\nconst createKeccakHash = require('keccak/js')\nconst BN = require('bn.js')\n\n/**\n * Returns a buffer filled with 0s\n * @method zeros\n * @param {Number} bytes the number of bytes the buffer should be\n * @return {Buffer}\n */\nfunction zeros (bytes) {\n return Buffer.allocUnsafe(bytes).fill(0)\n}\n\n/**\n * Left Pads an `Array` or `Buffer` with leading zeros till it has `length` bytes.\n * Or it truncates the beginning if it exceeds.\n * @method setLength\n * @param {Buffer|Array} msg the value to pad\n * @param {Number} length the number of bytes the output should be\n * @param {Boolean} [right=false] whether to start padding form the left or right\n * @return {Buffer|Array}\n */\nfunction setLength (msg, length, right) {\n const buf = zeros(length)\n msg = toBuffer(msg)\n if (right) {\n if (msg.length < length) {\n msg.copy(buf)\n return buf\n }\n return msg.slice(0, length)\n } else {\n if (msg.length < length) {\n msg.copy(buf, length - msg.length)\n return buf\n }\n return msg.slice(-length)\n }\n}\n\n/**\n * Right Pads an `Array` or `Buffer` with leading zeros till it has `length` bytes.\n * Or it truncates the beginning if it exceeds.\n * @param {Buffer|Array} msg the value to pad\n * @param {Number} length the number of bytes the output should be\n * @return {Buffer|Array}\n */\nfunction setLengthRight (msg, length) {\n return setLength(msg, length, true)\n}\n\n/**\n * Attempts to turn a value into a `Buffer`. As input it supports `Buffer`, `String`, `Number`, null/undefined, `BN` and other objects with a `toArray()` method.\n * @param {*} v the value\n */\nfunction toBuffer (v) {\n if (!Buffer.isBuffer(v)) {\n if (Array.isArray(v)) {\n v = Buffer.from(v)\n } else if (typeof v === 'string') {\n if (isHexString(v)) {\n v = Buffer.from(padToEven(stripHexPrefix(v)), 'hex')\n } else {\n v = Buffer.from(v)\n }\n } else if (typeof v === 'number') {\n v = intToBuffer(v)\n } else if (v === null || v === undefined) {\n v = Buffer.allocUnsafe(0)\n } else if (BN.isBN(v)) {\n v = v.toArrayLike(Buffer)\n } else if (v.toArray) {\n // converts a BN to a Buffer\n v = Buffer.from(v.toArray())\n } else {\n throw new Error('invalid type')\n }\n }\n return v\n}\n\n/**\n * Converts a `Buffer` into a hex `String`\n * @param {Buffer} buf\n * @return {String}\n */\nfunction bufferToHex (buf) {\n buf = toBuffer(buf)\n return '0x' + buf.toString('hex')\n}\n\n/**\n * Creates Keccak hash of the input\n * @param {Buffer|Array|String|Number} a the input data\n * @param {Number} [bits=256] the Keccak width\n * @return {Buffer}\n */\nfunction keccak (a, bits) {\n a = toBuffer(a)\n if (!bits) bits = 256\n\n return createKeccakHash('keccak' + bits).update(a).digest()\n}\n\nfunction padToEven (str) {\n return str.length % 2 ? '0' + str : str\n}\n\nfunction isHexString (str) {\n return typeof str === 'string' && str.match(/^0x[0-9A-Fa-f]*$/)\n}\n\nfunction stripHexPrefix (str) {\n if (typeof str === 'string' && str.startsWith('0x')) {\n return str.slice(2)\n }\n return str\n}\n\nmodule.exports = {\n zeros,\n setLength,\n setLengthRight,\n isHexString,\n stripHexPrefix,\n toBuffer,\n bufferToHex,\n keccak\n}\n","/**\n * @fileoverview\n * - modified davidshimjs/qrcodejs library for use in node.js\n * - Using the 'QRCode for Javascript library'\n * - Fixed dataset of 'QRCode for Javascript library' for support full-spec.\n * - this library has no dependencies.\n *\n * @version 0.9.1 (2016-02-12)\n * @author davidshimjs, papnkukn\n * @see http://www.d-project.com/\n * @see http://jeromeetienne.github.com/jquery-qrcode/\n * @see https://github.com/davidshimjs/qrcodejs\n */\n\n//---------------------------------------------------------------------\n// QRCode for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n// http://www.opensource.org/licenses/mit-license.php\n//\n// The word \"QR Code\" is registered trademark of\n// DENSO WAVE INCORPORATED\n// http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\nfunction QR8bitByte(data) {\n this.mode = QRMode.MODE_8BIT_BYTE;\n this.data = data;\n this.parsedData = [];\n\n // Added to support UTF-8 Characters\n for (var i = 0, l = this.data.length; i < l; i++) {\n var byteArray = [];\n var code = this.data.charCodeAt(i);\n\n if (code > 0x10000) {\n byteArray[0] = 0xF0 | ((code & 0x1C0000) >>> 18);\n byteArray[1] = 0x80 | ((code & 0x3F000) >>> 12);\n byteArray[2] = 0x80 | ((code & 0xFC0) >>> 6);\n byteArray[3] = 0x80 | (code & 0x3F);\n } else if (code > 0x800) {\n byteArray[0] = 0xE0 | ((code & 0xF000) >>> 12);\n byteArray[1] = 0x80 | ((code & 0xFC0) >>> 6);\n byteArray[2] = 0x80 | (code & 0x3F);\n } else if (code > 0x80) {\n byteArray[0] = 0xC0 | ((code & 0x7C0) >>> 6);\n byteArray[1] = 0x80 | (code & 0x3F);\n } else {\n byteArray[0] = code;\n }\n\n this.parsedData.push(byteArray);\n }\n\n this.parsedData = Array.prototype.concat.apply([], this.parsedData);\n\n if (this.parsedData.length != this.data.length) {\n this.parsedData.unshift(191);\n this.parsedData.unshift(187);\n this.parsedData.unshift(239);\n }\n}\n\nQR8bitByte.prototype = {\n getLength: function (buffer) {\n return this.parsedData.length;\n },\n write: function (buffer) {\n for (var i = 0, l = this.parsedData.length; i < l; i++) {\n buffer.put(this.parsedData[i], 8);\n }\n }\n};\n\nfunction QRCodeModel(typeNumber, errorCorrectLevel) {\n this.typeNumber = typeNumber;\n this.errorCorrectLevel = errorCorrectLevel;\n this.modules = null;\n this.moduleCount = 0;\n this.dataCache = null;\n this.dataList = [];\n}\n\nQRCodeModel.prototype={addData:function(data){var newData=new QR8bitByte(data);this.dataList.push(newData);this.dataCache=null;},isDark:function(row,col){if(row<0||this.moduleCount<=row||col<0||this.moduleCount<=col){throw new Error(row+\",\"+col);}\nreturn this.modules[row][col];},getModuleCount:function(){return this.moduleCount;},make:function(){this.makeImpl(false,this.getBestMaskPattern());},makeImpl:function(test,maskPattern){this.moduleCount=this.typeNumber*4+17;this.modules=new Array(this.moduleCount);for(var row=0;row=7){this.setupTypeNumber(test);}\nif(this.dataCache==null){this.dataCache=QRCodeModel.createData(this.typeNumber,this.errorCorrectLevel,this.dataList);}\nthis.mapData(this.dataCache,maskPattern);},setupPositionProbePattern:function(row,col){for(var r=-1;r<=7;r++){if(row+r<=-1||this.moduleCount<=row+r)continue;for(var c=-1;c<=7;c++){if(col+c<=-1||this.moduleCount<=col+c)continue;if((0<=r&&r<=6&&(c==0||c==6))||(0<=c&&c<=6&&(r==0||r==6))||(2<=r&&r<=4&&2<=c&&c<=4)){this.modules[row+r][col+c]=true;}else{this.modules[row+r][col+c]=false;}}}},getBestMaskPattern:function(){var minLostPoint=0;var pattern=0;for(var i=0;i<8;i++){this.makeImpl(true,i);var lostPoint=QRUtil.getLostPoint(this);if(i==0||minLostPoint>lostPoint){minLostPoint=lostPoint;pattern=i;}}\nreturn pattern;},createMovieClip:function(target_mc,instance_name,depth){var qr_mc=target_mc.createEmptyMovieClip(instance_name,depth);var cs=1;this.make();for(var row=0;row>i)&1)==1);this.modules[Math.floor(i/3)][i%3+this.moduleCount-8-3]=mod;}\nfor(var i=0;i<18;i++){var mod=(!test&&((bits>>i)&1)==1);this.modules[i%3+this.moduleCount-8-3][Math.floor(i/3)]=mod;}},setupTypeInfo:function(test,maskPattern){var data=(this.errorCorrectLevel<<3)|maskPattern;var bits=QRUtil.getBCHTypeInfo(data);for(var i=0;i<15;i++){var mod=(!test&&((bits>>i)&1)==1);if(i<6){this.modules[i][8]=mod;}else if(i<8){this.modules[i+1][8]=mod;}else{this.modules[this.moduleCount-15+i][8]=mod;}}\nfor(var i=0;i<15;i++){var mod=(!test&&((bits>>i)&1)==1);if(i<8){this.modules[8][this.moduleCount-i-1]=mod;}else if(i<9){this.modules[8][15-i-1+1]=mod;}else{this.modules[8][15-i-1]=mod;}}\nthis.modules[this.moduleCount-8][8]=(!test);},mapData:function(data,maskPattern){var inc=-1;var row=this.moduleCount-1;var bitIndex=7;var byteIndex=0;for(var col=this.moduleCount-1;col>0;col-=2){if(col==6)col--;while(true){for(var c=0;c<2;c++){if(this.modules[row][col-c]==null){var dark=false;if(byteIndex>>bitIndex)&1)==1);}\nvar mask=QRUtil.getMask(maskPattern,row,col-c);if(mask){dark=!dark;}\nthis.modules[row][col-c]=dark;bitIndex--;if(bitIndex==-1){byteIndex++;bitIndex=7;}}}\nrow+=inc;if(row<0||this.moduleCount<=row){row-=inc;inc=-inc;break;}}}}};QRCodeModel.PAD0=0xEC;QRCodeModel.PAD1=0x11;QRCodeModel.createData=function(typeNumber,errorCorrectLevel,dataList){var rsBlocks=QRRSBlock.getRSBlocks(typeNumber,errorCorrectLevel);var buffer=new QRBitBuffer();for(var i=0;itotalDataCount*8){throw new Error(\"code length overflow. (\"\n+buffer.getLengthInBits()\n+\">\"\n+totalDataCount*8\n+\")\");}\nif(buffer.getLengthInBits()+4<=totalDataCount*8){buffer.put(0,4);}\nwhile(buffer.getLengthInBits()%8!=0){buffer.putBit(false);}\nwhile(true){if(buffer.getLengthInBits()>=totalDataCount*8){break;}\nbuffer.put(QRCodeModel.PAD0,8);if(buffer.getLengthInBits()>=totalDataCount*8){break;}\nbuffer.put(QRCodeModel.PAD1,8);}\nreturn QRCodeModel.createBytes(buffer,rsBlocks);};QRCodeModel.createBytes=function(buffer,rsBlocks){var offset=0;var maxDcCount=0;var maxEcCount=0;var dcdata=new Array(rsBlocks.length);var ecdata=new Array(rsBlocks.length);for(var r=0;r=0)?modPoly.get(modIndex):0;}}\nvar totalCodeCount=0;for(var i=0;i=0){d^=(QRUtil.G15<<(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G15)));}\nreturn((data<<10)|d)^QRUtil.G15_MASK;},getBCHTypeNumber:function(data){var d=data<<12;while(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G18)>=0){d^=(QRUtil.G18<<(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G18)));}\nreturn(data<<12)|d;},getBCHDigit:function(data){var digit=0;while(data!=0){digit++;data>>>=1;}\nreturn digit;},getPatternPosition:function(typeNumber){return QRUtil.PATTERN_POSITION_TABLE[typeNumber-1];},getMask:function(maskPattern,i,j){switch(maskPattern){case QRMaskPattern.PATTERN000:return(i+j)%2==0;case QRMaskPattern.PATTERN001:return i%2==0;case QRMaskPattern.PATTERN010:return j%3==0;case QRMaskPattern.PATTERN011:return(i+j)%3==0;case QRMaskPattern.PATTERN100:return(Math.floor(i/2)+Math.floor(j/3))%2==0;case QRMaskPattern.PATTERN101:return(i*j)%2+(i*j)%3==0;case QRMaskPattern.PATTERN110:return((i*j)%2+(i*j)%3)%2==0;case QRMaskPattern.PATTERN111:return((i*j)%3+(i+j)%2)%2==0;default:throw new Error(\"bad maskPattern:\"+maskPattern);}},getErrorCorrectPolynomial:function(errorCorrectLength){var a=new QRPolynomial([1],0);for(var i=0;i5){lostPoint+=(3+sameCount-5);}}}\nfor(var row=0;row=256){n-=255;}\nreturn QRMath.EXP_TABLE[n];},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)};for(var i=0;i<8;i++){QRMath.EXP_TABLE[i]=1<>>(7-index%8))&1)==1;},put:function(num,length){for(var i=0;i>>(length-i-1))&1)==1);}},getLengthInBits:function(){return this.length;},putBit:function(bit){var bufIndex=Math.floor(this.length/8);if(this.buffer.length<=bufIndex){this.buffer.push(0);}\nif(bit){this.buffer[bufIndex]|=(0x80>>>(this.length%8));}\nthis.length++;}};var QRCodeLimitLength=[[17,14,11,7],[32,26,20,14],[53,42,32,24],[78,62,46,34],[106,84,60,44],[134,106,74,58],[154,122,86,64],[192,152,108,84],[230,180,130,98],[271,213,151,119],[321,251,177,137],[367,287,203,155],[425,331,241,177],[458,362,258,194],[520,412,292,220],[586,450,322,250],[644,504,364,280],[718,560,394,310],[792,624,442,338],[858,666,482,382],[929,711,509,403],[1003,779,565,439],[1091,857,611,461],[1171,911,661,511],[1273,997,715,535],[1367,1059,751,593],[1465,1125,805,625],[1528,1190,868,658],[1628,1264,908,698],[1732,1370,982,742],[1840,1452,1030,790],[1952,1538,1112,842],[2068,1628,1168,898],[2188,1722,1228,958],[2303,1809,1283,983],[2431,1911,1351,1051],[2563,1989,1423,1093],[2699,2099,1499,1139],[2809,2213,1579,1219],[2953,2331,1663,1273]];\n\n\n/** Constructor */\nfunction QRCode(options) {\n var instance = this;\n\n //Default options\n this.options = {\n padding: 4,\n width: 256,\n height: 256,\n typeNumber: 4,\n color: \"#000000\",\n background: \"#ffffff\",\n ecl: \"M\",\n image:{\n svg:\"\",\n width:0,\n height:0\n }\n };\n\n //In case the options is string\n if (typeof options === 'string') {\n options = {\n content: options\n };\n }\n\n //Merge options\n if (options) {\n for (var i in options) {\n this.options[i] = options[i];\n }\n }\n\n if (typeof this.options.content !== 'string') {\n throw new Error(\"Expected 'content' as string!\");\n }\n\n if (this.options.content.length === 0 /* || this.options.content.length > 7089 */) {\n throw new Error(\"Expected 'content' to be non-empty!\");\n }\n\n if (!(this.options.padding >= 0)) {\n throw new Error(\"Expected 'padding' value to be non-negative!\");\n }\n\n if (!(this.options.width > 0) || !(this.options.height > 0)) {\n throw new Error(\"Expected 'width' or 'height' value to be higher than zero!\");\n }\n\n //Gets the error correction level\n function _getErrorCorrectLevel(ecl) {\n switch (ecl) {\n case \"L\":\n return QRErrorCorrectLevel.L;\n\n case \"M\":\n return QRErrorCorrectLevel.M;\n\n case \"Q\":\n return QRErrorCorrectLevel.Q;\n\n case \"H\":\n return QRErrorCorrectLevel.H;\n\n default:\n throw new Error(\"Unknwon error correction level: \" + ecl);\n }\n }\n\n //Get type number\n function _getTypeNumber(content, ecl) {\n var length = _getUTF8Length(content);\n\n var type = 1;\n var limit = 0;\n for (var i = 0, len = QRCodeLimitLength.length; i <= len; i++) {\n var table = QRCodeLimitLength[i];\n if (!table) {\n throw new Error(\"Content too long: expected \" + limit + \" but got \" + length);\n }\n\n switch (ecl) {\n case \"L\":\n limit = table[0];\n break;\n\n case \"M\":\n limit = table[1];\n break;\n\n case \"Q\":\n limit = table[2];\n break;\n\n case \"H\":\n limit = table[3];\n break;\n\n default:\n throw new Error(\"Unknwon error correction level: \" + ecl);\n }\n\n if (length <= limit) {\n break;\n }\n\n type++;\n }\n\n if (type > QRCodeLimitLength.length) {\n throw new Error(\"Content too long\");\n }\n\n return type;\n }\n\n //Gets text length\n function _getUTF8Length(content) {\n var result = encodeURI(content).toString().replace(/\\%[0-9a-fA-F]{2}/g, 'a');\n return result.length + (result.length != content ? 3 : 0);\n }\n\n //Generate QR Code matrix\n var content = this.options.content;\n var type = _getTypeNumber(content, this.options.ecl);\n var ecl = _getErrorCorrectLevel(this.options.ecl);\n this.qrcode = new QRCodeModel(type, ecl);\n this.qrcode.addData(content);\n this.qrcode.make();\n}\n\n/** Generates QR Code as SVG image */\nQRCode.prototype.svg = function(opt) {\n var options = this.options || { };\n var modules = this.qrcode.modules;\n\n if (typeof opt == \"undefined\") {\n opt = { container: options.container || \"svg\" };\n }\n\n //Apply new lines and indents in SVG?\n var pretty = typeof options.pretty != \"undefined\" ? !!options.pretty : true;\n\n var indent = pretty ? ' ' : '';\n var EOL = pretty ? '\\r\\n' : '';\n var width = options.width;\n var height = options.height;\n var length = modules.length;\n var xsize = width / (length + 2 * options.padding);\n var ysize = height / (length + 2 * options.padding);\n\n //Join (union, merge) rectangles into one shape?\n var join = typeof options.join != \"undefined\" ? !!options.join : false;\n\n //Swap the X and Y modules, pull request #2\n var swap = typeof options.swap != \"undefined\" ? !!options.swap : false;\n\n //Apply declaration in SVG?\n var xmlDeclaration = typeof options.xmlDeclaration != \"undefined\" ? !!options.xmlDeclaration : true;\n\n //Populate with predefined shape instead of \"rect\" elements, thanks to @kkocdko\n var predefined = typeof options.predefined != \"undefined\" ? !!options.predefined : false;\n var defs = predefined ? indent + '' + EOL : '';\n\n //Background rectangle\n var bgrect = indent + '' + EOL;\n\n //Rectangles representing modules\n var modrect = '';\n var pathdata = '';\n\n for (var y = 0; y < length; y++) {\n for (var x = 0; x < length; x++) {\n var module = modules[x][y];\n if (module) {\n\n var px = (x * xsize + options.padding * xsize);\n var py = (y * ysize + options.padding * ysize);\n\n //Some users have had issues with the QR Code, thanks to @danioso for the solution\n if (swap) {\n var t = px;\n px = py;\n py = t;\n }\n\n if (join) {\n //Module as a part of svg path data, thanks to @danioso\n var w = xsize + px\n var h = ysize + py\n\n px = (Number.isInteger(px))? Number(px): px.toFixed(2);\n py = (Number.isInteger(py))? Number(py): py.toFixed(2);\n w = (Number.isInteger(w))? Number(w): w.toFixed(2);\n h = (Number.isInteger(h))? Number(h): h.toFixed(2);\n\n pathdata += ('M' + px + ',' + py + ' V' + h + ' H' + w + ' V' + py + ' H' + px + ' Z ');\n }\n else if (predefined) {\n //Module as a predefined shape, thanks to @kkocdko\n modrect += indent + '' + EOL;\n }\n else {\n //Module as rectangle element\n modrect += indent + '' + EOL;\n }\n }\n }\n }\n\n if (join) {\n modrect = indent + '';\n }\n let imgSvg = \"\";\n if(this.options.image !== undefined && this.options.image.svg){\n const imgWidth = width * this.options.image.width / 100;\n const imgHeight = height * this.options.image.height / 100;\n const imgX = (width/2) - imgWidth/2;\n const imgY = (height/2) - imgHeight/2;\n imgSvg += ``;\n imgSvg += this.options.image.svg + EOL;\n imgSvg += '';\n }\n\n var svg = \"\";\n switch (opt.container) {\n //Wrapped in SVG document\n case \"svg\":\n if (xmlDeclaration) {\n svg += '' + EOL;\n }\n svg += '' + EOL;\n svg += defs + bgrect + modrect;\n svg += imgSvg;\n svg += '';\n break;\n\n //Viewbox for responsive use in a browser, thanks to @danioso\n case \"svg-viewbox\":\n if (xmlDeclaration) {\n svg += '' + EOL;\n }\n svg += '' + EOL;\n svg += defs + bgrect + modrect;\n svg += imgSvg;\n svg += '';\n break;\n\n\n //Wrapped in group element\n case \"g\":\n svg += '' + EOL;\n svg += defs + bgrect + modrect;\n svg += imgSvg;\n svg += '';\n\n break;\n\n //Without a container\n default:\n svg += (defs + bgrect + modrect + imgSvg).replace(/^\\s+/, \"\"); //Clear indents on each line\n break;\n }\n\n return svg;\n};\n\nmodule.exports = QRCode;\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LIB_VERSION = void 0;\nexports.LIB_VERSION = \"3.6.1\";\n",null,null,null,null,null,"'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\n\nmodule.exports = {\n 'default': Format.RFC3986,\n formatters: {\n RFC1738: function (value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function (value) {\n return String(value);\n }\n },\n RFC1738: Format.RFC1738,\n RFC3986: Format.RFC3986\n};\n","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n formats: formats,\n parse: parse,\n stringify: stringify\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n allowDots: false,\n allowPrototypes: false,\n allowSparse: false,\n arrayLimit: 20,\n charset: 'utf-8',\n charsetSentinel: false,\n comma: false,\n decoder: utils.decode,\n delimiter: '&',\n depth: 5,\n ignoreQueryPrefix: false,\n interpretNumericEntities: false,\n parameterLimit: 1000,\n parseArrays: true,\n plainObjects: false,\n strictNullHandling: false\n};\n\nvar interpretNumericEntities = function (str) {\n return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n return String.fromCharCode(parseInt(numberStr, 10));\n });\n};\n\nvar parseArrayValue = function (val, options) {\n if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n return val.split(',');\n }\n\n return val;\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n var obj = {};\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(options.delimiter, limit);\n var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n var i;\n\n var charset = options.charset;\n if (options.charsetSentinel) {\n for (i = 0; i < parts.length; ++i) {\n if (parts[i].indexOf('utf8=') === 0) {\n if (parts[i] === charsetSentinel) {\n charset = 'utf-8';\n } else if (parts[i] === isoSentinel) {\n charset = 'iso-8859-1';\n }\n skipIndex = i;\n i = parts.length; // The eslint settings do not allow break;\n }\n }\n }\n\n for (i = 0; i < parts.length; ++i) {\n if (i === skipIndex) {\n continue;\n }\n var part = parts[i];\n\n var bracketEqualsPos = part.indexOf(']=');\n var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n var key, val;\n if (pos === -1) {\n key = options.decoder(part, defaults.decoder, charset, 'key');\n val = options.strictNullHandling ? null : '';\n } else {\n key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n val = utils.maybeMap(\n parseArrayValue(part.slice(pos + 1), options),\n function (encodedVal) {\n return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n }\n );\n }\n\n if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n val = interpretNumericEntities(val);\n }\n\n if (part.indexOf('[]=') > -1) {\n val = isArray(val) ? [val] : val;\n }\n\n if (has.call(obj, key)) {\n obj[key] = utils.combine(obj[key], val);\n } else {\n obj[key] = val;\n }\n }\n\n return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n var leaf = valuesParsed ? val : parseArrayValue(val, options);\n\n for (var i = chain.length - 1; i >= 0; --i) {\n var obj;\n var root = chain[i];\n\n if (root === '[]' && options.parseArrays) {\n obj = [].concat(leaf);\n } else {\n obj = options.plainObjects ? Object.create(null) : {};\n var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n var index = parseInt(cleanRoot, 10);\n if (!options.parseArrays && cleanRoot === '') {\n obj = { 0: leaf };\n } else if (\n !isNaN(index)\n && root !== cleanRoot\n && String(index) === cleanRoot\n && index >= 0\n && (options.parseArrays && index <= options.arrayLimit)\n ) {\n obj = [];\n obj[index] = leaf;\n } else if (cleanRoot !== '__proto__') {\n obj[cleanRoot] = leaf;\n }\n }\n\n leaf = obj;\n }\n\n return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n if (!givenKey) {\n return;\n }\n\n // Transform dot notation to bracket notation\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n // The regex chunks\n\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n\n // Get the parent\n\n var segment = options.depth > 0 && brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n\n // Stash the parent if it exists\n\n var keys = [];\n if (parent) {\n // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties\n if (!options.plainObjects && has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(parent);\n }\n\n // Loop through children appending to the array until we hit depth\n\n var i = 0;\n while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {\n i += 1;\n if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n keys.push(segment[1]);\n }\n\n // If there's a remainder, just add whatever is left\n\n if (segment) {\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') {\n throw new TypeError('Decoder has to be a function.');\n }\n\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n return {\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,\n arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n parseArrays: opts.parseArrays !== false,\n plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (str, opts) {\n var options = normalizeParseOptions(opts);\n\n if (str === '' || str === null || typeof str === 'undefined') {\n return options.plainObjects ? Object.create(null) : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? Object.create(null) : {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n obj = utils.merge(obj, newObj, options);\n }\n\n if (options.allowSparse === true) {\n return obj;\n }\n\n return utils.compact(obj);\n};\n","'use strict';\n\nvar getSideChannel = require('side-channel');\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n brackets: function brackets(prefix) {\n return prefix + '[]';\n },\n comma: 'comma',\n indices: function indices(prefix, key) {\n return prefix + '[' + key + ']';\n },\n repeat: function repeat(prefix) {\n return prefix;\n }\n};\n\nvar isArray = Array.isArray;\nvar split = String.prototype.split;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n addQueryPrefix: false,\n allowDots: false,\n charset: 'utf-8',\n charsetSentinel: false,\n delimiter: '&',\n encode: true,\n encoder: utils.encode,\n encodeValuesOnly: false,\n format: defaultFormat,\n formatter: formats.formatters[defaultFormat],\n // deprecated\n indices: false,\n serializeDate: function serializeDate(date) {\n return toISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n return typeof v === 'string'\n || typeof v === 'number'\n || typeof v === 'boolean'\n || typeof v === 'symbol'\n || typeof v === 'bigint';\n};\n\nvar sentinel = {};\n\nvar stringify = function stringify(\n object,\n prefix,\n generateArrayPrefix,\n commaRoundTrip,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n sideChannel\n) {\n var obj = object;\n\n var tmpSc = sideChannel;\n var step = 0;\n var findFlag = false;\n while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) {\n // Where object last appeared in the ref tree\n var pos = tmpSc.get(object);\n step += 1;\n if (typeof pos !== 'undefined') {\n if (pos === step) {\n throw new RangeError('Cyclic object value');\n } else {\n findFlag = true; // Break while\n }\n }\n if (typeof tmpSc.get(sentinel) === 'undefined') {\n step = 0;\n }\n }\n\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n } else if (obj instanceof Date) {\n obj = serializeDate(obj);\n } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n obj = utils.maybeMap(obj, function (value) {\n if (value instanceof Date) {\n return serializeDate(value);\n }\n return value;\n });\n }\n\n if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;\n }\n\n obj = '';\n }\n\n if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n if (encoder) {\n var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n if (generateArrayPrefix === 'comma' && encodeValuesOnly) {\n var valuesArray = split.call(String(obj), ',');\n var valuesJoined = '';\n for (var i = 0; i < valuesArray.length; ++i) {\n valuesJoined += (i === 0 ? '' : ',') + formatter(encoder(valuesArray[i], defaults.encoder, charset, 'value', format));\n }\n return [formatter(keyValue) + (commaRoundTrip && isArray(obj) && valuesArray.length === 1 ? '[]' : '') + '=' + valuesJoined];\n }\n return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n }\n return [formatter(prefix) + '=' + formatter(String(obj))];\n }\n\n var values = [];\n\n if (typeof obj === 'undefined') {\n return values;\n }\n\n var objKeys;\n if (generateArrayPrefix === 'comma' && isArray(obj)) {\n // we need to join elements in\n objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n } else if (isArray(filter)) {\n objKeys = filter;\n } else {\n var keys = Object.keys(obj);\n objKeys = sort ? keys.sort(sort) : keys;\n }\n\n var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? prefix + '[]' : prefix;\n\n for (var j = 0; j < objKeys.length; ++j) {\n var key = objKeys[j];\n var value = typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key];\n\n if (skipNulls && value === null) {\n continue;\n }\n\n var keyPrefix = isArray(obj)\n ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, key) : adjustedPrefix\n : adjustedPrefix + (allowDots ? '.' + key : '[' + key + ']');\n\n sideChannel.set(object, step);\n var valueSideChannel = getSideChannel();\n valueSideChannel.set(sentinel, sideChannel);\n pushToArray(values, stringify(\n value,\n keyPrefix,\n generateArrayPrefix,\n commaRoundTrip,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n valueSideChannel\n ));\n }\n\n return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n\n var charset = opts.charset || defaults.charset;\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n\n var format = formats['default'];\n if (typeof opts.format !== 'undefined') {\n if (!has.call(formats.formatters, opts.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n format = opts.format;\n }\n var formatter = formats.formatters[format];\n\n var filter = defaults.filter;\n if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n filter = opts.filter;\n }\n\n return {\n addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n filter: filter,\n format: format,\n formatter: formatter,\n serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n sort: typeof opts.sort === 'function' ? opts.sort : null,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (object, opts) {\n var obj = object;\n var options = normalizeStringifyOptions(opts);\n\n var objKeys;\n var filter;\n\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n } else if (isArray(options.filter)) {\n filter = options.filter;\n objKeys = filter;\n }\n\n var keys = [];\n\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n\n var arrayFormat;\n if (opts && opts.arrayFormat in arrayPrefixGenerators) {\n arrayFormat = opts.arrayFormat;\n } else if (opts && 'indices' in opts) {\n arrayFormat = opts.indices ? 'indices' : 'repeat';\n } else {\n arrayFormat = 'indices';\n }\n\n var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];\n if (opts && 'commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {\n throw new TypeError('`commaRoundTrip` must be a boolean, or absent');\n }\n var commaRoundTrip = generateArrayPrefix === 'comma' && opts && opts.commaRoundTrip;\n\n if (!objKeys) {\n objKeys = Object.keys(obj);\n }\n\n if (options.sort) {\n objKeys.sort(options.sort);\n }\n\n var sideChannel = getSideChannel();\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (options.skipNulls && obj[key] === null) {\n continue;\n }\n pushToArray(keys, stringify(\n obj[key],\n key,\n generateArrayPrefix,\n commaRoundTrip,\n options.strictNullHandling,\n options.skipNulls,\n options.encode ? options.encoder : null,\n options.filter,\n options.sort,\n options.allowDots,\n options.serializeDate,\n options.format,\n options.formatter,\n options.encodeValuesOnly,\n options.charset,\n sideChannel\n ));\n }\n\n var joined = keys.join(options.delimiter);\n var prefix = options.addQueryPrefix === true ? '?' : '';\n\n if (options.charsetSentinel) {\n if (options.charset === 'iso-8859-1') {\n // encodeURIComponent('✓'), the \"numeric entity\" representation of a checkmark\n prefix += 'utf8=%26%2310003%3B&';\n } else {\n // encodeURIComponent('✓')\n prefix += 'utf8=%E2%9C%93&';\n }\n }\n\n return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar formats = require('./formats');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n while (queue.length > 1) {\n var item = queue.pop();\n var obj = item.obj[item.prop];\n\n if (isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n /* eslint no-param-reassign: 0 */\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (isArray(target)) {\n target.push(source);\n } else if (target && typeof target === 'object') {\n if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (!target || typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (isArray(target) && !isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (isArray(target) && isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n var targetItem = target[i];\n if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n target[i] = merge(targetItem, item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str, decoder, charset) {\n var strWithoutPlus = str.replace(/\\+/g, ' ');\n if (charset === 'iso-8859-1') {\n // unescape never throws, no try...catch needed:\n return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n }\n // utf-8\n try {\n return decodeURIComponent(strWithoutPlus);\n } catch (e) {\n return strWithoutPlus;\n }\n};\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = str;\n if (typeof str === 'symbol') {\n string = Symbol.prototype.toString.call(str);\n } else if (typeof str !== 'string') {\n string = String(str);\n }\n\n if (charset === 'iso-8859-1') {\n return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n });\n }\n\n var out = '';\n for (var i = 0; i < string.length; ++i) {\n var c = string.charCodeAt(i);\n\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n ) {\n out += string.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n out = out + hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n /* eslint operator-linebreak: [2, \"before\"] */\n out += hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n compactQueue(queue);\n\n return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b) {\n return [].concat(a, b);\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n if (isArray(val)) {\n var mapped = [];\n for (var i = 0; i < val.length; i += 1) {\n mapped.push(fn(val[i]));\n }\n return mapped;\n }\n return fn(val);\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n combine: combine,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n maybeMap: maybeMap,\n merge: merge\n};\n","export const version = \"address/5.7.0\";\n","\"use strict\";\n\nimport { arrayify, BytesLike, concat, hexDataLength, hexDataSlice, isHexString, stripZeros } from \"@ethersproject/bytes\";\nimport { BigNumber, BigNumberish, _base16To36, _base36To16 } from \"@ethersproject/bignumber\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { encode } from \"@ethersproject/rlp\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nfunction getChecksumAddress(address: string): string {\n if (!isHexString(address, 20)) {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n\n address = address.toLowerCase();\n\n const chars = address.substring(2).split(\"\");\n\n const expanded = new Uint8Array(40);\n for (let i = 0; i < 40; i++) {\n expanded[i] = chars[i].charCodeAt(0);\n }\n\n const hashed = arrayify(keccak256(expanded));\n\n for (let i = 0; i < 40; i += 2) {\n if ((hashed[i >> 1] >> 4) >= 8) {\n chars[i] = chars[i].toUpperCase();\n }\n if ((hashed[i >> 1] & 0x0f) >= 8) {\n chars[i + 1] = chars[i + 1].toUpperCase();\n }\n }\n\n return \"0x\" + chars.join(\"\");\n}\n\n// Shims for environments that are missing some required constants and functions\nconst MAX_SAFE_INTEGER: number = 0x1fffffffffffff;\n\nfunction log10(x: number): number {\n if (Math.log10) { return Math.log10(x); }\n return Math.log(x) / Math.LN10;\n}\n\n\n// See: https://en.wikipedia.org/wiki/International_Bank_Account_Number\n\n// Create lookup table\nconst ibanLookup: { [character: string]: string } = { };\nfor (let i = 0; i < 10; i++) { ibanLookup[String(i)] = String(i); }\nfor (let i = 0; i < 26; i++) { ibanLookup[String.fromCharCode(65 + i)] = String(10 + i); }\n\n// How many decimal digits can we process? (for 64-bit float, this is 15)\nconst safeDigits = Math.floor(log10(MAX_SAFE_INTEGER));\n\nfunction ibanChecksum(address: string): string {\n address = address.toUpperCase();\n address = address.substring(4) + address.substring(0, 2) + \"00\";\n\n let expanded = address.split(\"\").map((c) => { return ibanLookup[c]; }).join(\"\");\n\n // Javascript can handle integers safely up to 15 (decimal) digits\n while (expanded.length >= safeDigits){\n let block = expanded.substring(0, safeDigits);\n expanded = parseInt(block, 10) % 97 + expanded.substring(block.length);\n }\n\n let checksum = String(98 - (parseInt(expanded, 10) % 97));\n while (checksum.length < 2) { checksum = \"0\" + checksum; }\n\n return checksum;\n};\n\nexport function getAddress(address: string): string {\n let result = null;\n\n if (typeof(address) !== \"string\") {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n\n if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) {\n\n // Missing the 0x prefix\n if (address.substring(0, 2) !== \"0x\") { address = \"0x\" + address; }\n\n result = getChecksumAddress(address);\n\n // It is a checksummed address with a bad checksum\n if (address.match(/([A-F].*[a-f])|([a-f].*[A-F])/) && result !== address) {\n logger.throwArgumentError(\"bad address checksum\", \"address\", address);\n }\n\n // Maybe ICAP? (we only support direct mode)\n } else if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) {\n\n // It is an ICAP address with a bad checksum\n if (address.substring(2, 4) !== ibanChecksum(address)) {\n logger.throwArgumentError(\"bad icap checksum\", \"address\", address);\n }\n\n result = _base36To16(address.substring(4));\n while (result.length < 40) { result = \"0\" + result; }\n result = getChecksumAddress(\"0x\" + result);\n\n } else {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n\n return result;\n}\n\nexport function isAddress(address: string): boolean {\n try {\n getAddress(address);\n return true;\n } catch (error) { }\n return false;\n}\n\nexport function getIcapAddress(address: string): string {\n let base36 = _base16To36(getAddress(address).substring(2)).toUpperCase();\n while (base36.length < 30) { base36 = \"0\" + base36; }\n return \"XE\" + ibanChecksum(\"XE00\" + base36) + base36;\n}\n\n// http://ethereum.stackexchange.com/questions/760/how-is-the-address-of-an-ethereum-contract-computed\nexport function getContractAddress(transaction: { from: string, nonce: BigNumberish }) {\n let from: string = null;\n try {\n from = getAddress(transaction.from);\n } catch (error) {\n logger.throwArgumentError(\"missing from address\", \"transaction\", transaction);\n }\n\n const nonce = stripZeros(arrayify(BigNumber.from(transaction.nonce).toHexString()));\n\n return getAddress(hexDataSlice(keccak256(encode([ from, nonce ])), 12));\n}\n\nexport function getCreate2Address(from: string, salt: BytesLike, initCodeHash: BytesLike): string {\n if (hexDataLength(salt) !== 32) {\n logger.throwArgumentError(\"salt must be 32 bytes\", \"salt\", salt);\n }\n if (hexDataLength(initCodeHash) !== 32) {\n logger.throwArgumentError(\"initCodeHash must be 32 bytes\", \"initCodeHash\", initCodeHash);\n }\n return getAddress(hexDataSlice(keccak256(concat([ \"0xff\", getAddress(from), salt, initCodeHash ])), 12))\n}\n","export const version = \"bignumber/5.7.0\";\n","\"use strict\";\n\n/**\n * BigNumber\n *\n * A wrapper around the BN.js object. We use the BN.js library\n * because it is used by elliptic, so it is required regardless.\n *\n */\n\nimport _BN from \"bn.js\";\nimport BN = _BN.BN;\n\nimport { Bytes, Hexable, hexlify, isBytes, isHexString } from \"@ethersproject/bytes\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nconst _constructorGuard = { };\n\nconst MAX_SAFE = 0x1fffffffffffff;\n\n\nexport type BigNumberish = BigNumber | Bytes | bigint | string | number;\n\nexport function isBigNumberish(value: any): value is BigNumberish {\n return (value != null) && (\n BigNumber.isBigNumber(value) ||\n (typeof(value) === \"number\" && (value % 1) === 0) ||\n (typeof(value) === \"string\" && !!value.match(/^-?[0-9]+$/)) ||\n isHexString(value) ||\n (typeof(value) === \"bigint\") ||\n isBytes(value)\n );\n}\n\n// Only warn about passing 10 into radix once\nlet _warnedToStringRadix = false;\n\nexport class BigNumber implements Hexable {\n readonly _hex: string;\n readonly _isBigNumber: boolean;\n\n constructor(constructorGuard: any, hex: string) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot call constructor directly; use BigNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new (BigNumber)\"\n });\n }\n\n this._hex = hex;\n this._isBigNumber = true;\n\n Object.freeze(this);\n }\n\n fromTwos(value: number): BigNumber {\n return toBigNumber(toBN(this).fromTwos(value));\n }\n\n toTwos(value: number): BigNumber {\n return toBigNumber(toBN(this).toTwos(value));\n }\n\n abs(): BigNumber {\n if (this._hex[0] === \"-\") {\n return BigNumber.from(this._hex.substring(1));\n }\n return this;\n }\n\n add(other: BigNumberish): BigNumber {\n return toBigNumber(toBN(this).add(toBN(other)));\n }\n\n sub(other: BigNumberish): BigNumber {\n return toBigNumber(toBN(this).sub(toBN(other)));\n }\n\n div(other: BigNumberish): BigNumber {\n const o = BigNumber.from(other);\n if (o.isZero()) {\n throwFault(\"division-by-zero\", \"div\");\n }\n return toBigNumber(toBN(this).div(toBN(other)));\n }\n\n mul(other: BigNumberish): BigNumber {\n return toBigNumber(toBN(this).mul(toBN(other)));\n }\n\n mod(other: BigNumberish): BigNumber {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"division-by-zero\", \"mod\");\n }\n return toBigNumber(toBN(this).umod(value));\n }\n\n pow(other: BigNumberish): BigNumber {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"negative-power\", \"pow\");\n }\n return toBigNumber(toBN(this).pow(value));\n }\n\n and(other: BigNumberish): BigNumber {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"and\");\n }\n return toBigNumber(toBN(this).and(value));\n }\n\n or(other: BigNumberish): BigNumber {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"or\");\n }\n return toBigNumber(toBN(this).or(value));\n }\n\n xor(other: BigNumberish): BigNumber {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"xor\");\n }\n return toBigNumber(toBN(this).xor(value));\n }\n\n mask(value: number): BigNumber {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"mask\");\n }\n return toBigNumber(toBN(this).maskn(value));\n }\n\n shl(value: number): BigNumber {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"shl\");\n }\n return toBigNumber(toBN(this).shln(value));\n }\n\n shr(value: number): BigNumber {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"shr\");\n }\n return toBigNumber(toBN(this).shrn(value));\n }\n\n eq(other: BigNumberish): boolean {\n return toBN(this).eq(toBN(other));\n }\n\n lt(other: BigNumberish): boolean {\n return toBN(this).lt(toBN(other));\n }\n\n lte(other: BigNumberish): boolean {\n return toBN(this).lte(toBN(other));\n }\n\n gt(other: BigNumberish): boolean {\n return toBN(this).gt(toBN(other));\n }\n\n gte(other: BigNumberish): boolean {\n return toBN(this).gte(toBN(other));\n }\n\n isNegative(): boolean {\n return (this._hex[0] === \"-\");\n }\n\n isZero(): boolean {\n return toBN(this).isZero();\n }\n\n toNumber(): number {\n try {\n return toBN(this).toNumber();\n } catch (error) {\n throwFault(\"overflow\", \"toNumber\", this.toString());\n }\n return null;\n }\n\n toBigInt(): bigint {\n try {\n return BigInt(this.toString());\n } catch (e) { }\n\n return logger.throwError(\"this platform does not support BigInt\", Logger.errors.UNSUPPORTED_OPERATION, {\n value: this.toString()\n });\n }\n\n toString(): string {\n // Lots of people expect this, which we do not support, so check (See: #889)\n if (arguments.length > 0) {\n if (arguments[0] === 10) {\n if (!_warnedToStringRadix) {\n _warnedToStringRadix = true;\n logger.warn(\"BigNumber.toString does not accept any parameters; base-10 is assumed\");\n }\n } else if (arguments[0] === 16) {\n logger.throwError(\"BigNumber.toString does not accept any parameters; use bigNumber.toHexString()\", Logger.errors.UNEXPECTED_ARGUMENT, { });\n } else {\n logger.throwError(\"BigNumber.toString does not accept parameters\", Logger.errors.UNEXPECTED_ARGUMENT, { });\n }\n }\n return toBN(this).toString(10);\n }\n\n toHexString(): string {\n return this._hex;\n }\n\n toJSON(key?: string): any {\n return { type: \"BigNumber\", hex: this.toHexString() };\n }\n\n static from(value: any): BigNumber {\n if (value instanceof BigNumber) { return value; }\n\n if (typeof(value) === \"string\") {\n if (value.match(/^-?0x[0-9a-f]+$/i)) {\n return new BigNumber(_constructorGuard, toHex(value));\n }\n\n if (value.match(/^-?[0-9]+$/)) {\n return new BigNumber(_constructorGuard, toHex(new BN(value)));\n }\n\n return logger.throwArgumentError(\"invalid BigNumber string\", \"value\", value);\n }\n\n if (typeof(value) === \"number\") {\n if (value % 1) {\n throwFault(\"underflow\", \"BigNumber.from\", value);\n }\n\n if (value >= MAX_SAFE || value <= -MAX_SAFE) {\n throwFault(\"overflow\", \"BigNumber.from\", value);\n }\n\n return BigNumber.from(String(value));\n }\n\n const anyValue = value;\n\n if (typeof(anyValue) === \"bigint\") {\n return BigNumber.from(anyValue.toString());\n }\n\n if (isBytes(anyValue)) {\n return BigNumber.from(hexlify(anyValue));\n }\n\n if (anyValue) {\n\n // Hexable interface (takes priority)\n if (anyValue.toHexString) {\n const hex = anyValue.toHexString();\n if (typeof(hex) === \"string\") {\n return BigNumber.from(hex);\n }\n\n } else {\n // For now, handle legacy JSON-ified values (goes away in v6)\n let hex = anyValue._hex;\n\n // New-form JSON\n if (hex == null && anyValue.type === \"BigNumber\") {\n hex = anyValue.hex;\n }\n\n if (typeof(hex) === \"string\") {\n if (isHexString(hex) || (hex[0] === \"-\" && isHexString(hex.substring(1)))) {\n return BigNumber.from(hex);\n }\n }\n }\n }\n\n return logger.throwArgumentError(\"invalid BigNumber value\", \"value\", value);\n }\n\n static isBigNumber(value: any): value is BigNumber {\n return !!(value && value._isBigNumber);\n }\n}\n\n// Normalize the hex string\nfunction toHex(value: string | BN): string {\n\n // For BN, call on the hex string\n if (typeof(value) !== \"string\") {\n return toHex(value.toString(16));\n }\n\n // If negative, prepend the negative sign to the normalized positive value\n if (value[0] === \"-\") {\n // Strip off the negative sign\n value = value.substring(1);\n\n // Cannot have multiple negative signs (e.g. \"--0x04\")\n if (value[0] === \"-\") { logger.throwArgumentError(\"invalid hex\", \"value\", value); }\n\n // Call toHex on the positive component\n value = toHex(value);\n\n // Do not allow \"-0x00\"\n if (value === \"0x00\") { return value; }\n\n // Negate the value\n return \"-\" + value;\n }\n\n // Add a \"0x\" prefix if missing\n if (value.substring(0, 2) !== \"0x\") { value = \"0x\" + value; }\n\n // Normalize zero\n if (value === \"0x\") { return \"0x00\"; }\n\n // Make the string even length\n if (value.length % 2) { value = \"0x0\" + value.substring(2); }\n\n // Trim to smallest even-length string\n while (value.length > 4 && value.substring(0, 4) === \"0x00\") {\n value = \"0x\" + value.substring(4);\n }\n\n return value;\n}\n\nfunction toBigNumber(value: BN): BigNumber {\n return BigNumber.from(toHex(value));\n}\n\nfunction toBN(value: BigNumberish): BN {\n const hex = BigNumber.from(value).toHexString();\n if (hex[0] === \"-\") {\n return (new BN(\"-\" + hex.substring(3), 16));\n }\n return new BN(hex.substring(2), 16);\n}\n\nfunction throwFault(fault: string, operation: string, value?: any): never {\n const params: any = { fault: fault, operation: operation };\n if (value != null) { params.value = value; }\n\n return logger.throwError(fault, Logger.errors.NUMERIC_FAULT, params);\n}\n\n// value should have no prefix\nexport function _base36To16(value: string): string {\n return (new BN(value, 36)).toString(16);\n}\n\n// value should have no prefix\nexport function _base16To36(value: string): string {\n return (new BN(value, 16)).toString(36);\n}\n","export const version = \"bytes/5.7.0\";\n","\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n///////////////////////////////\n// Exported Types\n\nexport type Bytes = ArrayLike;\n\nexport type BytesLike = Bytes | string;\n\nexport type DataOptions = {\n allowMissingPrefix?: boolean;\n hexPad?: \"left\" | \"right\" | null;\n};\n\nexport interface Hexable {\n toHexString(): string;\n}\n\n\n/*\nexport interface HexString {\n length: number;\n substring: (start: number, end?: number) => string;\n\n [index: number]: string;\n}\n*/\n\nexport type SignatureLike = {\n r: string;\n s?: string;\n _vs?: string,\n recoveryParam?: number;\n v?: number;\n} | BytesLike;\n\nexport interface Signature {\n r: string;\n\n s: string;\n _vs: string,\n\n recoveryParam: number;\n v: number;\n\n yParityAndS: string\n compact: string;\n}\n\n///////////////////////////////\n\n\nfunction isHexable(value: any): value is Hexable {\n return !!(value.toHexString);\n}\n\nfunction addSlice(array: Uint8Array): Uint8Array {\n if (array.slice) { return array; }\n\n array.slice = function() {\n const args = Array.prototype.slice.call(arguments);\n return addSlice(new Uint8Array(Array.prototype.slice.apply(array, args)));\n }\n\n return array;\n}\n\nexport function isBytesLike(value: any): value is BytesLike {\n return ((isHexString(value) && !(value.length % 2)) || isBytes(value));\n}\n\nfunction isInteger(value: number) {\n return (typeof(value) === \"number\" && value == value && (value % 1) === 0);\n}\n\nexport function isBytes(value: any): value is Bytes {\n if (value == null) { return false; }\n\n if (value.constructor === Uint8Array) { return true; }\n if (typeof(value) === \"string\") { return false; }\n if (!isInteger(value.length) || value.length < 0) { return false; }\n\n for (let i = 0; i < value.length; i++) {\n const v = value[i];\n if (!isInteger(v) || v < 0 || v >= 256) { return false; }\n }\n return true;\n}\n\n\nexport function arrayify(value: BytesLike | Hexable | number, options?: DataOptions): Uint8Array {\n if (!options) { options = { }; }\n\n if (typeof(value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid arrayify value\");\n\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value = parseInt(String(value / 256));\n }\n if (result.length === 0) { result.push(0); }\n\n return addSlice(new Uint8Array(result));\n }\n\n if (options.allowMissingPrefix && typeof(value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n\n if (isHexable(value)) { value = value.toHexString(); }\n\n if (isHexString(value)) {\n let hex = (value).substring(2);\n if (hex.length % 2) {\n if (options.hexPad === \"left\") {\n hex = \"0\" + hex;\n } else if (options.hexPad === \"right\") {\n hex += \"0\";\n } else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n\n const result = [];\n for (let i = 0; i < hex.length; i += 2) {\n result.push(parseInt(hex.substring(i, i + 2), 16));\n }\n\n return addSlice(new Uint8Array(result));\n }\n\n if (isBytes(value)) {\n return addSlice(new Uint8Array(value));\n }\n\n return logger.throwArgumentError(\"invalid arrayify value\", \"value\", value);\n}\n\nexport function concat(items: ReadonlyArray): Uint8Array {\n const objects = items.map(item => arrayify(item));\n const length = objects.reduce((accum, item) => (accum + item.length), 0);\n\n const result = new Uint8Array(length);\n\n objects.reduce((offset, object) => {\n result.set(object, offset);\n return offset + object.length;\n }, 0);\n\n return addSlice(result);\n}\n\nexport function stripZeros(value: BytesLike): Uint8Array {\n let result: Uint8Array = arrayify(value);\n\n if (result.length === 0) { return result; }\n\n // Find the first non-zero entry\n let start = 0;\n while (start < result.length && result[start] === 0) { start++ }\n\n // If we started with zeros, strip them\n if (start) {\n result = result.slice(start);\n }\n\n return result;\n}\n\nexport function zeroPad(value: BytesLike, length: number): Uint8Array {\n value = arrayify(value);\n\n if (value.length > length) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[0]);\n }\n\n const result = new Uint8Array(length);\n result.set(value, length - value.length);\n return addSlice(result);\n}\n\n\nexport function isHexString(value: any, length?: number): boolean {\n if (typeof(value) !== \"string\" || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false\n }\n if (length && value.length !== 2 + 2 * length) { return false; }\n return true;\n}\n\nconst HexCharacters: string = \"0123456789abcdef\";\n\nexport function hexlify(value: BytesLike | Hexable | number | bigint, options?: DataOptions): string {\n if (!options) { options = { }; }\n\n if (typeof(value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid hexlify value\");\n\n let hex = \"\";\n while (value) {\n hex = HexCharacters[value & 0xf] + hex;\n value = Math.floor(value / 16);\n }\n\n if (hex.length) {\n if (hex.length % 2) { hex = \"0\" + hex; }\n return \"0x\" + hex;\n }\n\n return \"0x00\";\n }\n\n if (typeof(value) === \"bigint\") {\n value = value.toString(16);\n if (value.length % 2) { return (\"0x0\" + value); }\n return \"0x\" + value;\n }\n\n if (options.allowMissingPrefix && typeof(value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n\n if (isHexable(value)) { return value.toHexString(); }\n\n if (isHexString(value)) {\n if ((value).length % 2) {\n if (options.hexPad === \"left\") {\n value = \"0x0\" + (value).substring(2);\n } else if (options.hexPad === \"right\") {\n value += \"0\";\n } else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n return (value).toLowerCase();\n }\n\n if (isBytes(value)) {\n let result = \"0x\";\n for (let i = 0; i < value.length; i++) {\n let v = value[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n }\n\n return logger.throwArgumentError(\"invalid hexlify value\", \"value\", value);\n}\n\n/*\nfunction unoddify(value: BytesLike | Hexable | number): BytesLike | Hexable | number {\n if (typeof(value) === \"string\" && value.length % 2 && value.substring(0, 2) === \"0x\") {\n return \"0x0\" + value.substring(2);\n }\n return value;\n}\n*/\nexport function hexDataLength(data: BytesLike) {\n if (typeof(data) !== \"string\") {\n data = hexlify(data);\n } else if (!isHexString(data) || (data.length % 2)) {\n return null;\n }\n\n return (data.length - 2) / 2;\n}\n\nexport function hexDataSlice(data: BytesLike, offset: number, endOffset?: number): string {\n if (typeof(data) !== \"string\") {\n data = hexlify(data);\n } else if (!isHexString(data) || (data.length % 2)) {\n logger.throwArgumentError(\"invalid hexData\", \"value\", data );\n }\n\n offset = 2 + 2 * offset;\n\n if (endOffset != null) {\n return \"0x\" + data.substring(offset, 2 + 2 * endOffset);\n }\n\n return \"0x\" + data.substring(offset);\n}\n\nexport function hexConcat(items: ReadonlyArray): string {\n let result = \"0x\";\n items.forEach((item) => {\n result += hexlify(item).substring(2);\n });\n return result;\n}\n\nexport function hexValue(value: BytesLike | Hexable | number | bigint): string {\n const trimmed = hexStripZeros(hexlify(value, { hexPad: \"left\" }));\n if (trimmed === \"0x\") { return \"0x0\"; }\n return trimmed;\n}\n\nexport function hexStripZeros(value: BytesLike): string {\n if (typeof(value) !== \"string\") { value = hexlify(value); }\n\n if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n value = value.substring(2);\n let offset = 0;\n while (offset < value.length && value[offset] === \"0\") { offset++; }\n return \"0x\" + value.substring(offset);\n}\n\nexport function hexZeroPad(value: BytesLike, length: number): string {\n if (typeof(value) !== \"string\") {\n value = hexlify(value);\n } else if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n\n if (value.length > 2 * length + 2) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[1]);\n }\n\n while (value.length < 2 * length + 2) {\n value = \"0x0\" + value.substring(2);\n }\n\n return value;\n}\n\nexport function splitSignature(signature: SignatureLike): Signature {\n\n const result = {\n r: \"0x\",\n s: \"0x\",\n _vs: \"0x\",\n recoveryParam: 0,\n v: 0,\n yParityAndS: \"0x\",\n compact: \"0x\"\n };\n\n if (isBytesLike(signature)) {\n let bytes: Uint8Array = arrayify(signature);\n\n // Get the r, s and v\n if (bytes.length === 64) {\n // EIP-2098; pull the v from the top bit of s and clear it\n result.v = 27 + (bytes[32] >> 7);\n bytes[32] &= 0x7f;\n\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n\n } else if (bytes.length === 65) {\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n result.v = bytes[64];\n } else {\n\n logger.throwArgumentError(\"invalid signature string\", \"signature\", signature);\n }\n\n\n // Allow a recid to be used as the v\n if (result.v < 27) {\n if (result.v === 0 || result.v === 1) {\n result.v += 27;\n } else {\n logger.throwArgumentError(\"signature invalid v byte\", \"signature\", signature);\n }\n }\n\n // Compute recoveryParam from v\n result.recoveryParam = 1 - (result.v % 2);\n\n // Compute _vs from recoveryParam and s\n if (result.recoveryParam) { bytes[32] |= 0x80; }\n result._vs = hexlify(bytes.slice(32, 64))\n\n } else {\n result.r = signature.r;\n result.s = signature.s;\n result.v = signature.v;\n result.recoveryParam = signature.recoveryParam;\n result._vs = signature._vs;\n\n // If the _vs is available, use it to populate missing s, v and recoveryParam\n // and verify non-missing s, v and recoveryParam\n if (result._vs != null) {\n const vs = zeroPad(arrayify(result._vs), 32);\n result._vs = hexlify(vs);\n\n // Set or check the recid\n const recoveryParam = ((vs[0] >= 128) ? 1: 0);\n if (result.recoveryParam == null) {\n result.recoveryParam = recoveryParam;\n } else if (result.recoveryParam !== recoveryParam) {\n logger.throwArgumentError(\"signature recoveryParam mismatch _vs\", \"signature\", signature);\n }\n\n // Set or check the s\n vs[0] &= 0x7f;\n const s = hexlify(vs);\n if (result.s == null) {\n result.s = s;\n } else if (result.s !== s) {\n logger.throwArgumentError(\"signature v mismatch _vs\", \"signature\", signature);\n }\n }\n\n // Use recid and v to populate each other\n if (result.recoveryParam == null) {\n if (result.v == null) {\n logger.throwArgumentError(\"signature missing v and recoveryParam\", \"signature\", signature);\n } else if (result.v === 0 || result.v === 1) {\n result.recoveryParam = result.v;\n } else {\n result.recoveryParam = 1 - (result.v % 2);\n }\n } else {\n if (result.v == null) {\n result.v = 27 + result.recoveryParam;\n } else {\n const recId = (result.v === 0 || result.v === 1) ? result.v :(1 - (result.v % 2));\n if (result.recoveryParam !== recId) {\n logger.throwArgumentError(\"signature recoveryParam mismatch v\", \"signature\", signature);\n }\n }\n }\n\n if (result.r == null || !isHexString(result.r)) {\n logger.throwArgumentError(\"signature missing or invalid r\", \"signature\", signature);\n } else {\n result.r = hexZeroPad(result.r, 32);\n }\n\n if (result.s == null || !isHexString(result.s)) {\n logger.throwArgumentError(\"signature missing or invalid s\", \"signature\", signature);\n } else {\n result.s = hexZeroPad(result.s, 32);\n }\n\n const vs = arrayify(result.s);\n if (vs[0] >= 128) {\n logger.throwArgumentError(\"signature s out of range\", \"signature\", signature);\n }\n if (result.recoveryParam) { vs[0] |= 0x80; }\n const _vs = hexlify(vs);\n\n if (result._vs) {\n if (!isHexString(result._vs)) {\n logger.throwArgumentError(\"signature invalid _vs\", \"signature\", signature);\n }\n result._vs = hexZeroPad(result._vs, 32);\n }\n\n // Set or check the _vs\n if (result._vs == null) {\n result._vs = _vs;\n } else if (result._vs !== _vs) {\n logger.throwArgumentError(\"signature _vs mismatch v and s\", \"signature\", signature);\n }\n }\n\n result.yParityAndS = result._vs;\n result.compact = result.r + result.yParityAndS.substring(2);\n\n return result;\n}\n\nexport function joinSignature(signature: SignatureLike): string {\n signature = splitSignature(signature);\n\n return hexlify(concat([\n signature.r,\n signature.s,\n (signature.recoveryParam ? \"0x1c\": \"0x1b\")\n ]));\n}\n\n","\"use strict\";\n\nimport sha3 from \"js-sha3\";\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\n\nexport function keccak256(data: BytesLike): string {\n return '0x' + sha3.keccak_256(arrayify(data));\n}\n","\"use strict\";\n\nlet _permanentCensorErrors = false;\nlet _censorErrors = false;\n\nconst LogLevels: { [ name: string ]: number } = { debug: 1, \"default\": 2, info: 2, warning: 3, error: 4, off: 5 };\nlet _logLevel = LogLevels[\"default\"];\n\nimport { version } from \"./_version\";\n\nlet _globalLogger: Logger = null;\n\nfunction _checkNormalize(): string {\n try {\n const missing: Array = [ ];\n\n // Make sure all forms of normalization are supported\n [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].forEach((form) => {\n try {\n if (\"test\".normalize(form) !== \"test\") {\n throw new Error(\"bad normalize\");\n };\n } catch(error) {\n missing.push(form);\n }\n });\n\n if (missing.length) {\n throw new Error(\"missing \" + missing.join(\", \"));\n }\n\n if (String.fromCharCode(0xe9).normalize(\"NFD\") !== String.fromCharCode(0x65, 0x0301)) {\n throw new Error(\"broken implementation\")\n }\n } catch (error) {\n return error.message;\n }\n\n return null;\n}\n\nconst _normalizeError = _checkNormalize();\n\nexport enum LogLevel {\n DEBUG = \"DEBUG\",\n INFO = \"INFO\",\n WARNING = \"WARNING\",\n ERROR = \"ERROR\",\n OFF = \"OFF\"\n}\n\n\nexport enum ErrorCode {\n\n ///////////////////\n // Generic Errors\n\n // Unknown Error\n UNKNOWN_ERROR = \"UNKNOWN_ERROR\",\n\n // Not Implemented\n NOT_IMPLEMENTED = \"NOT_IMPLEMENTED\",\n\n // Unsupported Operation\n // - operation\n UNSUPPORTED_OPERATION = \"UNSUPPORTED_OPERATION\",\n\n // Network Error (i.e. Ethereum Network, such as an invalid chain ID)\n // - event (\"noNetwork\" is not re-thrown in provider.ready; otherwise thrown)\n NETWORK_ERROR = \"NETWORK_ERROR\",\n\n // Some sort of bad response from the server\n SERVER_ERROR = \"SERVER_ERROR\",\n\n // Timeout\n TIMEOUT = \"TIMEOUT\",\n\n ///////////////////\n // Operational Errors\n\n // Buffer Overrun\n BUFFER_OVERRUN = \"BUFFER_OVERRUN\",\n\n // Numeric Fault\n // - operation: the operation being executed\n // - fault: the reason this faulted\n NUMERIC_FAULT = \"NUMERIC_FAULT\",\n\n\n ///////////////////\n // Argument Errors\n\n // Missing new operator to an object\n // - name: The name of the class\n MISSING_NEW = \"MISSING_NEW\",\n\n // Invalid argument (e.g. value is incompatible with type) to a function:\n // - argument: The argument name that was invalid\n // - value: The value of the argument\n INVALID_ARGUMENT = \"INVALID_ARGUMENT\",\n\n // Missing argument to a function:\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n MISSING_ARGUMENT = \"MISSING_ARGUMENT\",\n\n // Too many arguments\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n UNEXPECTED_ARGUMENT = \"UNEXPECTED_ARGUMENT\",\n\n\n ///////////////////\n // Blockchain Errors\n\n // Call exception\n // - transaction: the transaction\n // - address?: the contract address\n // - args?: The arguments passed into the function\n // - method?: The Solidity method signature\n // - errorSignature?: The EIP848 error signature\n // - errorArgs?: The EIP848 error parameters\n // - reason: The reason (only for EIP848 \"Error(string)\")\n CALL_EXCEPTION = \"CALL_EXCEPTION\",\n\n // Insufficient funds (< value + gasLimit * gasPrice)\n // - transaction: the transaction attempted\n INSUFFICIENT_FUNDS = \"INSUFFICIENT_FUNDS\",\n\n // Nonce has already been used\n // - transaction: the transaction attempted\n NONCE_EXPIRED = \"NONCE_EXPIRED\",\n\n // The replacement fee for the transaction is too low\n // - transaction: the transaction attempted\n REPLACEMENT_UNDERPRICED = \"REPLACEMENT_UNDERPRICED\",\n\n // The gas limit could not be estimated\n // - transaction: the transaction passed to estimateGas\n UNPREDICTABLE_GAS_LIMIT = \"UNPREDICTABLE_GAS_LIMIT\",\n\n // The transaction was replaced by one with a higher gas price\n // - reason: \"cancelled\", \"replaced\" or \"repriced\"\n // - cancelled: true if reason == \"cancelled\" or reason == \"replaced\")\n // - hash: original transaction hash\n // - replacement: the full TransactionsResponse for the replacement\n // - receipt: the receipt of the replacement\n TRANSACTION_REPLACED = \"TRANSACTION_REPLACED\",\n\n\n ///////////////////\n // Interaction Errors\n\n // The user rejected the action, such as signing a message or sending\n // a transaction\n ACTION_REJECTED = \"ACTION_REJECTED\",\n};\n\nconst HEX = \"0123456789abcdef\";\n\nexport class Logger {\n readonly version: string;\n\n static errors = ErrorCode;\n\n static levels = LogLevel;\n\n constructor(version: string) {\n Object.defineProperty(this, \"version\", {\n enumerable: true,\n value: version,\n writable: false\n });\n }\n\n _log(logLevel: LogLevel, args: Array): void {\n const level = logLevel.toLowerCase();\n if (LogLevels[level] == null) {\n this.throwArgumentError(\"invalid log level name\", \"logLevel\", logLevel);\n }\n if (_logLevel > LogLevels[level]) { return; }\n console.log.apply(console, args);\n }\n\n debug(...args: Array): void {\n this._log(Logger.levels.DEBUG, args);\n }\n\n info(...args: Array): void {\n this._log(Logger.levels.INFO, args);\n }\n\n warn(...args: Array): void {\n this._log(Logger.levels.WARNING, args);\n }\n\n makeError(message: string, code?: ErrorCode, params?: any): Error {\n // Errors are being censored\n if (_censorErrors) {\n return this.makeError(\"censored error\", code, { });\n }\n\n if (!code) { code = Logger.errors.UNKNOWN_ERROR; }\n if (!params) { params = {}; }\n\n const messageDetails: Array = [];\n Object.keys(params).forEach((key) => {\n const value = params[key];\n try {\n if (value instanceof Uint8Array) {\n let hex = \"\";\n for (let i = 0; i < value.length; i++) {\n hex += HEX[value[i] >> 4];\n hex += HEX[value[i] & 0x0f];\n }\n messageDetails.push(key + \"=Uint8Array(0x\" + hex + \")\");\n } else {\n messageDetails.push(key + \"=\" + JSON.stringify(value));\n }\n } catch (error) {\n messageDetails.push(key + \"=\" + JSON.stringify(params[key].toString()));\n }\n });\n messageDetails.push(`code=${ code }`);\n messageDetails.push(`version=${ this.version }`);\n\n const reason = message;\n\n let url = \"\";\n\n switch (code) {\n case ErrorCode.NUMERIC_FAULT: {\n url = \"NUMERIC_FAULT\";\n const fault = message;\n\n switch (fault) {\n case \"overflow\": case \"underflow\": case \"division-by-zero\":\n url += \"-\" + fault;\n break;\n case \"negative-power\": case \"negative-width\":\n url += \"-unsupported\";\n break;\n case \"unbound-bitwise-result\":\n url += \"-unbound-result\";\n break;\n }\n break;\n }\n case ErrorCode.CALL_EXCEPTION:\n case ErrorCode.INSUFFICIENT_FUNDS:\n case ErrorCode.MISSING_NEW:\n case ErrorCode.NONCE_EXPIRED:\n case ErrorCode.REPLACEMENT_UNDERPRICED:\n case ErrorCode.TRANSACTION_REPLACED:\n case ErrorCode.UNPREDICTABLE_GAS_LIMIT:\n url = code;\n break;\n }\n\n if (url) {\n message += \" [ See: https:/\\/links.ethers.org/v5-errors-\" + url + \" ]\";\n }\n\n if (messageDetails.length) {\n message += \" (\" + messageDetails.join(\", \") + \")\";\n }\n\n // @TODO: Any??\n const error: any = new Error(message);\n error.reason = reason;\n error.code = code\n\n Object.keys(params).forEach(function(key) {\n error[key] = params[key];\n });\n\n return error;\n }\n\n throwError(message: string, code?: ErrorCode, params?: any): never {\n throw this.makeError(message, code, params);\n }\n\n throwArgumentError(message: string, name: string, value: any): never {\n return this.throwError(message, Logger.errors.INVALID_ARGUMENT, {\n argument: name,\n value: value\n });\n }\n\n assert(condition: any, message: string, code?: ErrorCode, params?: any): void {\n if (!!condition) { return; }\n this.throwError(message, code, params);\n }\n\n assertArgument(condition: any, message: string, name: string, value: any): void {\n if (!!condition) { return; }\n this.throwArgumentError(message, name, value);\n }\n\n checkNormalize(message?: string): void {\n if (message == null) { message = \"platform missing String.prototype.normalize\"; }\n if (_normalizeError) {\n this.throwError(\"platform missing String.prototype.normalize\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"String.prototype.normalize\", form: _normalizeError\n });\n }\n }\n\n checkSafeUint53(value: number, message?: string): void {\n if (typeof(value) !== \"number\") { return; }\n\n if (message == null) { message = \"value not safe\"; }\n\n if (value < 0 || value >= 0x1fffffffffffff) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"out-of-safe-range\",\n value: value\n });\n }\n\n if (value % 1) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"non-integer\",\n value: value\n });\n }\n }\n\n checkArgumentCount(count: number, expectedCount: number, message?: string): void {\n if (message) {\n message = \": \" + message;\n } else {\n message = \"\";\n }\n\n if (count < expectedCount) {\n this.throwError(\"missing argument\" + message, Logger.errors.MISSING_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n\n if (count > expectedCount) {\n this.throwError(\"too many arguments\" + message, Logger.errors.UNEXPECTED_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n }\n\n checkNew(target: any, kind: any): void {\n if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n\n checkAbstract(target: any, kind: any): void {\n if (target === kind) {\n this.throwError(\n \"cannot instantiate abstract class \" + JSON.stringify(kind.name) + \" directly; use a sub-class\",\n Logger.errors.UNSUPPORTED_OPERATION,\n { name: target.name, operation: \"new\" }\n );\n } else if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n\n static globalLogger(): Logger {\n if (!_globalLogger) { _globalLogger = new Logger(version); }\n return _globalLogger;\n }\n\n static setCensorship(censorship: boolean, permanent?: boolean): void {\n if (!censorship && permanent) {\n this.globalLogger().throwError(\"cannot permanently disable censorship\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n\n if (_permanentCensorErrors) {\n if (!censorship) { return; }\n this.globalLogger().throwError(\"error censorship permanent\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n\n _censorErrors = !!censorship;\n _permanentCensorErrors = !!permanent;\n }\n\n static setLogLevel(logLevel: LogLevel): void {\n const level = LogLevels[logLevel.toLowerCase()];\n if (level == null) {\n Logger.globalLogger().warn(\"invalid log level - \" + logLevel);\n return;\n }\n _logLevel = level;\n }\n\n static from(version: string): Logger {\n return new Logger(version);\n }\n}\n","export const version = \"logger/5.7.0\";\n","\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport function defineReadOnly(object: T, name: K, value: T[K]): void {\n Object.defineProperty(object, name, {\n enumerable: true,\n value: value,\n writable: false,\n });\n}\n\n// Crawl up the constructor chain to find a static method\nexport function getStatic(ctor: any, key: string): T {\n for (let i = 0; i < 32; i++) {\n if (ctor[key]) { return ctor[key]; }\n if (!ctor.prototype || typeof(ctor.prototype) !== \"object\") { break; }\n ctor = Object.getPrototypeOf(ctor.prototype).constructor;\n }\n return null;\n}\n\nexport type Deferrable = {\n [ K in keyof T ]: T[K] | Promise;\n}\n\n\ntype Result = { key: string, value: any};\n\nexport async function resolveProperties(object: Readonly>): Promise {\n const promises: Array> = Object.keys(object).map((key) => {\n const value = object[>key];\n return Promise.resolve(value).then((v) => ({ key: key, value: v }));\n });\n\n const results = await Promise.all(promises);\n\n return results.reduce((accum, result) => {\n accum[(result.key)] = result.value;\n return accum;\n }, { });\n}\n\nexport function checkProperties(object: any, properties: { [ name: string ]: boolean }): void {\n if (!object || typeof(object) !== \"object\") {\n logger.throwArgumentError(\"invalid object\", \"object\", object);\n }\n\n Object.keys(object).forEach((key) => {\n if (!properties[key]) {\n logger.throwArgumentError(\"invalid object key - \" + key, \"transaction:\" + key, object);\n }\n });\n}\n\nexport function shallowCopy(object: T): T {\n const result: any = {};\n for (const key in object) { result[key] = object[key]; }\n return result;\n}\n\nconst opaque: { [key: string]: boolean } = { bigint: true, boolean: true, \"function\": true, number: true, string: true };\n\nfunction _isFrozen(object: any): boolean {\n\n // Opaque objects are not mutable, so safe to copy by assignment\n if (object === undefined || object === null || opaque[typeof(object)]) { return true; }\n\n if (Array.isArray(object) || typeof(object) === \"object\") {\n if (!Object.isFrozen(object)) { return false; }\n\n const keys = Object.keys(object);\n for (let i = 0; i < keys.length; i++) {\n let value: any = null;\n try {\n value = object[keys[i]];\n } catch (error) {\n // If accessing a value triggers an error, it is a getter\n // designed to do so (e.g. Result) and is therefore \"frozen\"\n continue;\n }\n\n if (!_isFrozen(value)) { return false; }\n }\n\n return true;\n }\n\n return logger.throwArgumentError(`Cannot deepCopy ${ typeof(object) }`, \"object\", object);\n}\n\n// Returns a new copy of object, such that no properties may be replaced.\n// New properties may be added only to objects.\nfunction _deepCopy(object: any): any {\n\n if (_isFrozen(object)) { return object; }\n\n // Arrays are mutable, so we need to create a copy\n if (Array.isArray(object)) {\n return Object.freeze(object.map((item) => deepCopy(item)));\n }\n\n if (typeof(object) === \"object\") {\n const result: { [ key: string ]: any } = {};\n for (const key in object) {\n const value = object[key];\n if (value === undefined) { continue; }\n defineReadOnly(result, key, deepCopy(value));\n }\n\n return result;\n }\n\n return logger.throwArgumentError(`Cannot deepCopy ${ typeof(object) }`, \"object\", object);\n}\n\nexport function deepCopy(object: T): T {\n return _deepCopy(object);\n}\n\nexport class Description {\n constructor(info: { [ K in keyof T ]: T[K] }) {\n for (const key in info) {\n (this)[key] = deepCopy(info[key]);\n }\n }\n}\n","export const version = \"properties/5.7.0\";\n","\"use strict\";\n\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { BytesLike, isHexString } from \"@ethersproject/bytes\";\nimport { Network } from \"@ethersproject/networks\";\nimport { Deferrable, Description, defineReadOnly, resolveProperties } from \"@ethersproject/properties\";\nimport { AccessListish, Transaction } from \"@ethersproject/transactions\";\nimport { OnceBlockable } from \"@ethersproject/web\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n///////////////////////////////\n// Exported Types\n\n\nexport type TransactionRequest = {\n to?: string,\n from?: string,\n nonce?: BigNumberish,\n\n gasLimit?: BigNumberish,\n gasPrice?: BigNumberish,\n\n data?: BytesLike,\n value?: BigNumberish,\n chainId?: number\n\n type?: number;\n accessList?: AccessListish;\n\n maxPriorityFeePerGas?: BigNumberish;\n maxFeePerGas?: BigNumberish;\n\n customData?: Record;\n ccipReadEnabled?: boolean;\n}\n\nexport interface TransactionResponse extends Transaction {\n hash: string;\n\n // Only if a transaction has been mined\n blockNumber?: number,\n blockHash?: string,\n timestamp?: number,\n\n confirmations: number,\n\n // Not optional (as it is in Transaction)\n from: string;\n\n // The raw transaction\n raw?: string,\n\n // This function waits until the transaction has been mined\n wait: (confirmations?: number) => Promise\n};\n\nexport type BlockTag = string | number;\n\nexport interface _Block {\n hash: string;\n parentHash: string;\n number: number;\n\n timestamp: number;\n nonce: string;\n difficulty: number;\n _difficulty: BigNumber;\n\n gasLimit: BigNumber;\n gasUsed: BigNumber;\n\n miner: string;\n extraData: string;\n\n baseFeePerGas?: null | BigNumber;\n}\n\nexport interface Block extends _Block {\n transactions: Array;\n}\n\nexport interface BlockWithTransactions extends _Block {\n transactions: Array;\n}\n\n\nexport interface Log {\n blockNumber: number;\n blockHash: string;\n transactionIndex: number;\n\n removed: boolean;\n\n address: string;\n data: string;\n\n topics: Array;\n\n transactionHash: string;\n logIndex: number;\n}\n\nexport interface TransactionReceipt {\n to: string;\n from: string;\n contractAddress: string,\n transactionIndex: number,\n root?: string,\n gasUsed: BigNumber,\n logsBloom: string,\n blockHash: string,\n transactionHash: string,\n logs: Array,\n blockNumber: number,\n confirmations: number,\n cumulativeGasUsed: BigNumber,\n effectiveGasPrice: BigNumber,\n byzantium: boolean,\n type: number;\n status?: number\n};\n\nexport interface FeeData {\n lastBaseFeePerGas: null | BigNumber;\n maxFeePerGas: null | BigNumber;\n maxPriorityFeePerGas: null | BigNumber;\n gasPrice: null | BigNumber;\n}\n\nexport interface EventFilter {\n address?: string;\n topics?: Array | null>;\n}\n\nexport interface Filter extends EventFilter {\n fromBlock?: BlockTag,\n toBlock?: BlockTag,\n}\n\nexport interface FilterByBlockHash extends EventFilter {\n blockHash?: string;\n}\n\n//export type CallTransactionable = {\n// call(transaction: TransactionRequest): Promise;\n//};\n\nexport abstract class ForkEvent extends Description {\n readonly expiry: number;\n\n readonly _isForkEvent?: boolean;\n\n static isForkEvent(value: any): value is ForkEvent {\n return !!(value && value._isForkEvent);\n }\n}\n\nexport class BlockForkEvent extends ForkEvent {\n readonly blockHash: string;\n\n readonly _isBlockForkEvent?: boolean;\n\n constructor(blockHash: string, expiry?: number) {\n if (!isHexString(blockHash, 32)) {\n logger.throwArgumentError(\"invalid blockHash\", \"blockHash\", blockHash);\n }\n\n super({\n _isForkEvent: true,\n _isBlockForkEvent: true,\n expiry: (expiry || 0),\n blockHash: blockHash\n });\n }\n}\n\nexport class TransactionForkEvent extends ForkEvent {\n readonly hash: string;\n\n readonly _isTransactionOrderForkEvent?: boolean;\n\n constructor(hash: string, expiry?: number) {\n if (!isHexString(hash, 32)) {\n logger.throwArgumentError(\"invalid transaction hash\", \"hash\", hash);\n }\n\n super({\n _isForkEvent: true,\n _isTransactionForkEvent: true,\n expiry: (expiry || 0),\n hash: hash\n });\n }\n}\n\nexport class TransactionOrderForkEvent extends ForkEvent {\n readonly beforeHash: string;\n readonly afterHash: string;\n\n constructor(beforeHash: string, afterHash: string, expiry?: number) {\n if (!isHexString(beforeHash, 32)) {\n logger.throwArgumentError(\"invalid transaction hash\", \"beforeHash\", beforeHash);\n }\n if (!isHexString(afterHash, 32)) {\n logger.throwArgumentError(\"invalid transaction hash\", \"afterHash\", afterHash);\n }\n\n super({\n _isForkEvent: true,\n _isTransactionOrderForkEvent: true,\n expiry: (expiry || 0),\n beforeHash: beforeHash,\n afterHash: afterHash\n });\n }\n}\n\nexport type EventType = string | Array> | EventFilter | ForkEvent;\n\nexport type Listener = (...args: Array) => void;\n\n///////////////////////////////\n// Exported Abstracts\nexport abstract class Provider implements OnceBlockable {\n\n // Network\n abstract getNetwork(): Promise;\n\n // Latest State\n abstract getBlockNumber(): Promise;\n abstract getGasPrice(): Promise;\n async getFeeData(): Promise {\n const { block, gasPrice } = await resolveProperties({\n block: this.getBlock(\"latest\"),\n gasPrice: this.getGasPrice().catch((error) => {\n // @TODO: Why is this now failing on Calaveras?\n //console.log(error);\n return null;\n })\n });\n\n let lastBaseFeePerGas = null, maxFeePerGas = null, maxPriorityFeePerGas = null;\n\n if (block && block.baseFeePerGas) {\n // We may want to compute this more accurately in the future,\n // using the formula \"check if the base fee is correct\".\n // See: https://eips.ethereum.org/EIPS/eip-1559\n lastBaseFeePerGas = block.baseFeePerGas;\n maxPriorityFeePerGas = BigNumber.from(\"1500000000\");\n maxFeePerGas = block.baseFeePerGas.mul(2).add(maxPriorityFeePerGas);\n }\n\n return { lastBaseFeePerGas, maxFeePerGas, maxPriorityFeePerGas, gasPrice };\n }\n\n // Account\n abstract getBalance(addressOrName: string | Promise, blockTag?: BlockTag | Promise): Promise;\n abstract getTransactionCount(addressOrName: string | Promise, blockTag?: BlockTag | Promise): Promise;\n abstract getCode(addressOrName: string | Promise, blockTag?: BlockTag | Promise): Promise ;\n abstract getStorageAt(addressOrName: string | Promise, position: BigNumberish | Promise, blockTag?: BlockTag | Promise): Promise;\n\n // Execution\n abstract sendTransaction(signedTransaction: string | Promise): Promise;\n abstract call(transaction: Deferrable, blockTag?: BlockTag | Promise): Promise;\n abstract estimateGas(transaction: Deferrable): Promise;\n\n // Queries\n abstract getBlock(blockHashOrBlockTag: BlockTag | string | Promise): Promise;\n abstract getBlockWithTransactions(blockHashOrBlockTag: BlockTag | string | Promise): Promise;\n abstract getTransaction(transactionHash: string): Promise;\n abstract getTransactionReceipt(transactionHash: string): Promise;\n\n // Bloom-filter Queries\n abstract getLogs(filter: Filter): Promise>;\n\n // ENS\n abstract resolveName(name: string | Promise): Promise;\n abstract lookupAddress(address: string | Promise): Promise;\n\n // Event Emitter (ish)\n abstract on(eventName: EventType, listener: Listener): Provider;\n abstract once(eventName: EventType, listener: Listener): Provider;\n abstract emit(eventName: EventType, ...args: Array): boolean\n abstract listenerCount(eventName?: EventType): number;\n abstract listeners(eventName?: EventType): Array;\n abstract off(eventName: EventType, listener?: Listener): Provider;\n abstract removeAllListeners(eventName?: EventType): Provider;\n\n // Alias for \"on\"\n addListener(eventName: EventType, listener: Listener): Provider {\n return this.on(eventName, listener);\n }\n\n // Alias for \"off\"\n removeListener(eventName: EventType, listener: Listener): Provider {\n return this.off(eventName, listener);\n }\n\n // @TODO: This *could* be implemented here, but would pull in events...\n abstract waitForTransaction(transactionHash: string, confirmations?: number, timeout?: number): Promise;\n\n readonly _isProvider: boolean;\n\n constructor() {\n logger.checkAbstract(new.target, Provider);\n defineReadOnly(this, \"_isProvider\", true);\n }\n\n static isProvider(value: any): value is Provider {\n return !!(value && value._isProvider);\n }\n\n/*\n static getResolver(network: Network, callable: CallTransactionable, namehash: string): string {\n // No ENS...\n if (!network.ensAddress) {\n errors.throwError(\n \"network does support ENS\",\n errors.UNSUPPORTED_OPERATION,\n { operation: \"ENS\", network: network.name }\n );\n }\n\n // Not a namehash\n if (!isHexString(namehash, 32)) {\n errors.throwArgumentError(\"invalid name hash\", \"namehash\", namehash);\n }\n\n // keccak256(\"resolver(bytes32)\")\n let data = \"0x0178b8bf\" + namehash.substring(2);\n let transaction = { to: network.ensAddress, data: data };\n\n return provider.call(transaction).then((data) => {\n return provider.formatter.callAddress(data);\n });\n }\n\n static resolveNamehash(network: Network, callable: CallTransactionable, namehash: string): string {\n return this.getResolver(network, callable, namehash).then((resolverAddress) => {\n if (!resolverAddress) { return null; }\n\n // keccak256(\"addr(bytes32)\")\n let data = \"0x3b3b57de\" + namehash(name).substring(2);\n let transaction = { to: resolverAddress, data: data };\n return callable.call(transaction).then((data) => {\n return this.formatter.callAddress(data);\n });\n\n })\n }\n*/\n}\n","export const version = \"abstract-provider/5.7.0\";\n","export const version = \"networks/5.7.1\";\n","\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { Network, Networkish } from \"./types\";\n\nexport {\n Network,\n Networkish\n};\n\ntype DefaultProviderFunc = (providers: any, options?: any) => any;\n\ninterface Renetworkable extends DefaultProviderFunc {\n renetwork: (network: Network) => DefaultProviderFunc;\n};\n\nfunction isRenetworkable(value: any): value is Renetworkable {\n return (value && typeof(value.renetwork) === \"function\");\n}\n\nfunction ethDefaultProvider(network: string | Network): Renetworkable {\n const func = function(providers: any, options?: any): any {\n if (options == null) { options = { }; }\n const providerList: Array = [];\n\n if (providers.InfuraProvider && options.infura !== \"-\") {\n try {\n providerList.push(new providers.InfuraProvider(network, options.infura));\n } catch(error) { }\n }\n\n if (providers.EtherscanProvider && options.etherscan !== \"-\") {\n try {\n providerList.push(new providers.EtherscanProvider(network, options.etherscan));\n } catch(error) { }\n }\n\n if (providers.AlchemyProvider && options.alchemy !== \"-\") {\n try {\n providerList.push(new providers.AlchemyProvider(network, options.alchemy));\n } catch(error) { }\n }\n\n if (providers.PocketProvider && options.pocket !== \"-\") {\n // These networks are currently faulty on Pocket as their\n // network does not handle the Berlin hardfork, which is\n // live on these ones.\n // @TODO: This goes away once Pocket has upgraded their nodes\n const skip = [ \"goerli\", \"ropsten\", \"rinkeby\", \"sepolia\" ];\n try {\n const provider = new providers.PocketProvider(network, options.pocket);\n if (provider.network && skip.indexOf(provider.network.name) === -1) {\n providerList.push(provider);\n }\n } catch(error) { }\n }\n\n if (providers.CloudflareProvider && options.cloudflare !== \"-\") {\n try {\n providerList.push(new providers.CloudflareProvider(network));\n } catch(error) { }\n }\n\n if (providers.AnkrProvider && options.ankr !== \"-\") {\n try {\n const skip = [ \"ropsten\" ];\n const provider = new providers.AnkrProvider(network, options.ankr);\n if (provider.network && skip.indexOf(provider.network.name) === -1) {\n providerList.push(provider);\n }\n } catch(error) { }\n }\n\n if (providerList.length === 0) { return null; }\n\n if (providers.FallbackProvider) {\n let quorum = 1;\n if (options.quorum != null) {\n quorum = options.quorum;\n } else if (network === \"homestead\") {\n quorum = 2;\n }\n return new providers.FallbackProvider(providerList, quorum);\n }\n\n return providerList[0];\n };\n\n func.renetwork = function(network: Network) {\n return ethDefaultProvider(network);\n };\n\n return func;\n}\n\nfunction etcDefaultProvider(url: string, network: string | Network): Renetworkable {\n const func = function(providers: any, options?: any): any {\n if (providers.JsonRpcProvider) {\n return new providers.JsonRpcProvider(url, network);\n }\n\n return null;\n };\n\n func.renetwork = function(network: Network) {\n return etcDefaultProvider(url, network);\n };\n\n return func;\n}\n\nconst homestead: Network = {\n chainId: 1,\n ensAddress: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n name: \"homestead\",\n _defaultProvider: ethDefaultProvider(\"homestead\")\n};\n\nconst ropsten: Network = {\n chainId: 3,\n ensAddress: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n name: \"ropsten\",\n _defaultProvider: ethDefaultProvider(\"ropsten\")\n};\n\nconst classicMordor: Network = {\n chainId: 63,\n name: \"classicMordor\",\n _defaultProvider: etcDefaultProvider(\"https://www.ethercluster.com/mordor\", \"classicMordor\")\n};\n\n// See: https://chainlist.org\nconst networks: { [name: string]: Network } = {\n unspecified: { chainId: 0, name: \"unspecified\" },\n\n homestead: homestead,\n mainnet: homestead,\n\n morden: { chainId: 2, name: \"morden\" },\n\n ropsten: ropsten,\n testnet: ropsten,\n\n rinkeby: {\n chainId: 4,\n ensAddress: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n name: \"rinkeby\",\n _defaultProvider: ethDefaultProvider(\"rinkeby\")\n },\n\n kovan: {\n chainId: 42,\n name: \"kovan\",\n _defaultProvider: ethDefaultProvider(\"kovan\")\n },\n\n goerli: {\n chainId: 5,\n ensAddress: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n name: \"goerli\",\n _defaultProvider: ethDefaultProvider(\"goerli\")\n },\n\n kintsugi: { chainId: 1337702, name: \"kintsugi\" },\n\n sepolia: {\n chainId: 11155111,\n name: \"sepolia\",\n _defaultProvider: ethDefaultProvider(\"sepolia\")\n },\n\n\n // ETC (See: #351)\n classic: {\n chainId: 61,\n name: \"classic\",\n _defaultProvider: etcDefaultProvider(\"https:/\\/www.ethercluster.com/etc\", \"classic\")\n },\n\n classicMorden: { chainId: 62, name: \"classicMorden\" },\n\n classicMordor: classicMordor,\n classicTestnet: classicMordor,\n\n classicKotti: {\n chainId: 6,\n name: \"classicKotti\",\n _defaultProvider: etcDefaultProvider(\"https:/\\/www.ethercluster.com/kotti\", \"classicKotti\")\n },\n\n xdai: { chainId: 100, name: \"xdai\" },\n\n matic: {\n chainId: 137,\n name: \"matic\",\n _defaultProvider: ethDefaultProvider(\"matic\")\n },\n maticmum: { chainId: 80001, name: \"maticmum\" },\n\n optimism: {\n chainId: 10,\n name: \"optimism\",\n _defaultProvider: ethDefaultProvider(\"optimism\")\n },\n \"optimism-kovan\": { chainId: 69, name: \"optimism-kovan\" },\n \"optimism-goerli\": { chainId: 420, name: \"optimism-goerli\" },\n\n arbitrum: { chainId: 42161, name: \"arbitrum\" },\n \"arbitrum-rinkeby\": { chainId: 421611, name: \"arbitrum-rinkeby\" },\n \"arbitrum-goerli\": { chainId: 421613, name: \"arbitrum-goerli\" },\n\n bnb: { chainId: 56, name: \"bnb\" },\n bnbt: { chainId: 97, name: \"bnbt\" },\n}\n\n/**\n * getNetwork\n *\n * Converts a named common networks or chain ID (network ID) to a Network\n * and verifies a network is a valid Network..\n */\nexport function getNetwork(network: Networkish): Network {\n // No network (null)\n if (network == null) { return null; }\n\n if (typeof(network) === \"number\") {\n for (const name in networks) {\n const standard = networks[name];\n if (standard.chainId === network) {\n return {\n name: standard.name,\n chainId: standard.chainId,\n ensAddress: (standard.ensAddress || null),\n _defaultProvider: (standard._defaultProvider || null)\n };\n }\n }\n\n return {\n chainId: network,\n name: \"unknown\"\n };\n }\n\n if (typeof(network) === \"string\") {\n const standard = networks[network];\n if (standard == null) { return null; }\n return {\n name: standard.name,\n chainId: standard.chainId,\n ensAddress: standard.ensAddress,\n _defaultProvider: (standard._defaultProvider || null)\n };\n }\n\n const standard = networks[network.name];\n\n // Not a standard network; check that it is a valid network in general\n if (!standard) {\n if (typeof(network.chainId) !== \"number\") {\n logger.throwArgumentError(\"invalid network chainId\", \"network\", network);\n }\n return network;\n }\n\n // Make sure the chainId matches the expected network chainId (or is 0; disable EIP-155)\n if (network.chainId !== 0 && network.chainId !== standard.chainId) {\n logger.throwArgumentError(\"network chainId mismatch\", \"network\", network);\n }\n\n // @TODO: In the next major version add an attach function to a defaultProvider\n // class and move the _defaultProvider internal to this file (extend Network)\n let defaultProvider: DefaultProviderFunc = network._defaultProvider || null;\n if (defaultProvider == null && standard._defaultProvider) {\n if (isRenetworkable(standard._defaultProvider)) {\n defaultProvider = standard._defaultProvider.renetwork(network);\n } else {\n defaultProvider = standard._defaultProvider;\n }\n }\n\n // Standard Network (allow overriding the ENS address)\n return {\n name: network.name,\n chainId: standard.chainId,\n ensAddress: (network.ensAddress || standard.ensAddress || null),\n _defaultProvider: defaultProvider\n };\n}\n","\"use strict\";\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\n\nexport function decode(textData: string): Uint8Array {\n textData = atob(textData);\n const data = [];\n for (let i = 0; i < textData.length; i++) {\n data.push(textData.charCodeAt(i));\n }\n return arrayify(data);\n}\n\nexport function encode(data: BytesLike): string {\n data = arrayify(data);\n let textData = \"\";\n for (let i = 0; i < data.length; i++) {\n textData += String.fromCharCode(data[i]);\n }\n return btoa(textData);\n}\n\n\n","/**\n * var basex = require(\"base-x\");\n *\n * This implementation is heavily based on base-x. The main reason to\n * deviate was to prevent the dependency of Buffer.\n *\n * Contributors:\n *\n * base-x encoding\n * Forked from https://github.com/cryptocoinjs/bs58\n * Originally written by Mike Hearn for BitcoinJ\n * Copyright (c) 2011 Google Inc\n * Ported to JavaScript by Stefan Thomas\n * Merged Buffer refactorings from base58-native by Stephen Pair\n * Copyright (c) 2013 BitPay Inc\n *\n * The MIT License (MIT)\n *\n * Copyright base-x contributors (c) 2016\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n *\n */\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nexport class BaseX {\n readonly alphabet: string;\n readonly base: number;\n\n _alphabetMap: { [ character: string ]: number };\n _leader: string;\n\n constructor(alphabet: string) {\n defineReadOnly(this, \"alphabet\", alphabet);\n defineReadOnly(this, \"base\", alphabet.length);\n\n defineReadOnly(this, \"_alphabetMap\", { });\n defineReadOnly(this, \"_leader\", alphabet.charAt(0));\n\n // pre-compute lookup table\n for (let i = 0; i < alphabet.length; i++) {\n this._alphabetMap[alphabet.charAt(i)] = i;\n }\n }\n\n encode(value: BytesLike): string {\n let source = arrayify(value);\n\n if (source.length === 0) { return \"\"; }\n\n let digits = [ 0 ]\n for (let i = 0; i < source.length; ++i) {\n let carry = source[i];\n for (let j = 0; j < digits.length; ++j) {\n carry += digits[j] << 8;\n digits[j] = carry % this.base;\n carry = (carry / this.base) | 0;\n }\n\n while (carry > 0) {\n digits.push(carry % this.base);\n carry = (carry / this.base) | 0;\n }\n }\n\n let string = \"\"\n\n // deal with leading zeros\n for (let k = 0; source[k] === 0 && k < source.length - 1; ++k) {\n string += this._leader;\n }\n\n // convert digits to a string\n for (let q = digits.length - 1; q >= 0; --q) {\n string += this.alphabet[digits[q]];\n }\n\n return string;\n }\n\n decode(value: string): Uint8Array {\n if (typeof(value) !== \"string\") {\n throw new TypeError(\"Expected String\");\n }\n\n let bytes: Array = [];\n if (value.length === 0) { return new Uint8Array(bytes); }\n\n bytes.push(0);\n for (let i = 0; i < value.length; i++) {\n let byte = this._alphabetMap[value[i]];\n\n if (byte === undefined) {\n throw new Error(\"Non-base\" + this.base + \" character\");\n }\n\n let carry = byte;\n for (let j = 0; j < bytes.length; ++j) {\n carry += bytes[j] * this.base;\n bytes[j] = carry & 0xff;\n carry >>= 8;\n }\n\n while (carry > 0) {\n bytes.push(carry & 0xff);\n carry >>= 8;\n }\n }\n\n // deal with leading zeros\n for (let k = 0; value[k] === this._leader && k < value.length - 1; ++k) {\n bytes.push(0)\n }\n\n return arrayify(new Uint8Array(bytes.reverse()))\n }\n}\n\nconst Base32 = new BaseX(\"abcdefghijklmnopqrstuvwxyz234567\");\nconst Base58 = new BaseX(\"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz\");\n\nexport { Base32, Base58 };\n\n//console.log(Base58.decode(\"Qmd2V777o5XvJbYMeMb8k2nU5f8d3ciUQ5YpYuWhzv8iDj\"))\n//console.log(Base58.encode(Base58.decode(\"Qmd2V777o5XvJbYMeMb8k2nU5f8d3ciUQ5YpYuWhzv8iDj\")))\n","\"use strict\";\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n///////////////////////////////\n\nexport enum UnicodeNormalizationForm {\n current = \"\",\n NFC = \"NFC\",\n NFD = \"NFD\",\n NFKC = \"NFKC\",\n NFKD = \"NFKD\"\n};\n\nexport enum Utf8ErrorReason {\n // A continuation byte was present where there was nothing to continue\n // - offset = the index the codepoint began in\n UNEXPECTED_CONTINUE = \"unexpected continuation byte\",\n\n // An invalid (non-continuation) byte to start a UTF-8 codepoint was found\n // - offset = the index the codepoint began in\n BAD_PREFIX = \"bad codepoint prefix\",\n\n // The string is too short to process the expected codepoint\n // - offset = the index the codepoint began in\n OVERRUN = \"string overrun\",\n\n // A missing continuation byte was expected but not found\n // - offset = the index the continuation byte was expected at\n MISSING_CONTINUE = \"missing continuation byte\",\n\n // The computed code point is outside the range for UTF-8\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; outside the UTF-8 range\n OUT_OF_RANGE = \"out of UTF-8 range\",\n\n // UTF-8 strings may not contain UTF-16 surrogate pairs\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; inside the UTF-16 surrogate range\n UTF16_SURROGATE = \"UTF-16 surrogate\",\n\n // The string is an overlong representation\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; already bounds checked\n OVERLONG = \"overlong representation\",\n};\n\n\nexport type Utf8ErrorFunc = (reason: Utf8ErrorReason, offset: number, bytes: ArrayLike, output: Array, badCodepoint?: number) => number;\n\nfunction errorFunc(reason: Utf8ErrorReason, offset: number, bytes: ArrayLike, output: Array, badCodepoint?: number): number {\n return logger.throwArgumentError(`invalid codepoint at offset ${ offset }; ${ reason }`, \"bytes\", bytes);\n}\n\nfunction ignoreFunc(reason: Utf8ErrorReason, offset: number, bytes: ArrayLike, output: Array, badCodepoint?: number): number {\n\n // If there is an invalid prefix (including stray continuation), skip any additional continuation bytes\n if (reason === Utf8ErrorReason.BAD_PREFIX || reason === Utf8ErrorReason.UNEXPECTED_CONTINUE) {\n let i = 0;\n for (let o = offset + 1; o < bytes.length; o++) {\n if (bytes[o] >> 6 !== 0x02) { break; }\n i++;\n }\n return i;\n }\n\n // This byte runs us past the end of the string, so just jump to the end\n // (but the first byte was read already read and therefore skipped)\n if (reason === Utf8ErrorReason.OVERRUN) {\n return bytes.length - offset - 1;\n }\n\n // Nothing to skip\n return 0;\n}\n\nfunction replaceFunc(reason: Utf8ErrorReason, offset: number, bytes: ArrayLike, output: Array, badCodepoint?: number): number {\n\n // Overlong representations are otherwise \"valid\" code points; just non-deistingtished\n if (reason === Utf8ErrorReason.OVERLONG) {\n output.push(badCodepoint);\n return 0;\n }\n\n // Put the replacement character into the output\n output.push(0xfffd);\n\n // Otherwise, process as if ignoring errors\n return ignoreFunc(reason, offset, bytes, output, badCodepoint);\n}\n\n// Common error handing strategies\nexport const Utf8ErrorFuncs: { [ name: string ]: Utf8ErrorFunc } = Object.freeze({\n error: errorFunc,\n ignore: ignoreFunc,\n replace: replaceFunc\n});\n\n// http://stackoverflow.com/questions/13356493/decode-utf-8-with-javascript#13691499\nfunction getUtf8CodePoints(bytes: BytesLike, onError?: Utf8ErrorFunc): Array {\n if (onError == null) { onError = Utf8ErrorFuncs.error; }\n\n bytes = arrayify(bytes);\n\n const result: Array = [];\n let i = 0;\n\n // Invalid bytes are ignored\n while(i < bytes.length) {\n\n const c = bytes[i++];\n\n // 0xxx xxxx\n if (c >> 7 === 0) {\n result.push(c);\n continue;\n }\n\n // Multibyte; how many bytes left for this character?\n let extraLength = null;\n let overlongMask = null;\n\n // 110x xxxx 10xx xxxx\n if ((c & 0xe0) === 0xc0) {\n extraLength = 1;\n overlongMask = 0x7f;\n\n // 1110 xxxx 10xx xxxx 10xx xxxx\n } else if ((c & 0xf0) === 0xe0) {\n extraLength = 2;\n overlongMask = 0x7ff;\n\n // 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx\n } else if ((c & 0xf8) === 0xf0) {\n extraLength = 3;\n overlongMask = 0xffff;\n\n } else {\n if ((c & 0xc0) === 0x80) {\n i += onError(Utf8ErrorReason.UNEXPECTED_CONTINUE, i - 1, bytes, result);\n } else {\n i += onError(Utf8ErrorReason.BAD_PREFIX, i - 1, bytes, result);\n }\n continue;\n }\n\n // Do we have enough bytes in our data?\n if (i - 1 + extraLength >= bytes.length) {\n i += onError(Utf8ErrorReason.OVERRUN, i - 1, bytes, result);\n continue;\n }\n\n // Remove the length prefix from the char\n let res = c & ((1 << (8 - extraLength - 1)) - 1);\n\n for (let j = 0; j < extraLength; j++) {\n let nextChar = bytes[i];\n\n // Invalid continuation byte\n if ((nextChar & 0xc0) != 0x80) {\n i += onError(Utf8ErrorReason.MISSING_CONTINUE, i, bytes, result);\n res = null;\n break;\n };\n\n res = (res << 6) | (nextChar & 0x3f);\n i++;\n }\n\n // See above loop for invalid continuation byte\n if (res === null) { continue; }\n\n // Maximum code point\n if (res > 0x10ffff) {\n i += onError(Utf8ErrorReason.OUT_OF_RANGE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n\n // Reserved for UTF-16 surrogate halves\n if (res >= 0xd800 && res <= 0xdfff) {\n i += onError(Utf8ErrorReason.UTF16_SURROGATE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n\n // Check for overlong sequences (more bytes than needed)\n if (res <= overlongMask) {\n i += onError(Utf8ErrorReason.OVERLONG, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n\n result.push(res);\n }\n\n return result;\n}\n\n// http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\nexport function toUtf8Bytes(str: string, form: UnicodeNormalizationForm = UnicodeNormalizationForm.current): Uint8Array {\n\n if (form != UnicodeNormalizationForm.current) {\n logger.checkNormalize();\n str = str.normalize(form);\n }\n\n let result = [];\n for (let i = 0; i < str.length; i++) {\n const c = str.charCodeAt(i);\n\n if (c < 0x80) {\n result.push(c);\n\n } else if (c < 0x800) {\n result.push((c >> 6) | 0xc0);\n result.push((c & 0x3f) | 0x80);\n\n } else if ((c & 0xfc00) == 0xd800) {\n i++;\n const c2 = str.charCodeAt(i);\n\n if (i >= str.length || (c2 & 0xfc00) !== 0xdc00) {\n throw new Error(\"invalid utf-8 string\");\n }\n\n // Surrogate Pair\n const pair = 0x10000 + ((c & 0x03ff) << 10) + (c2 & 0x03ff);\n result.push((pair >> 18) | 0xf0);\n result.push(((pair >> 12) & 0x3f) | 0x80);\n result.push(((pair >> 6) & 0x3f) | 0x80);\n result.push((pair & 0x3f) | 0x80);\n\n } else {\n result.push((c >> 12) | 0xe0);\n result.push(((c >> 6) & 0x3f) | 0x80);\n result.push((c & 0x3f) | 0x80);\n }\n }\n\n return arrayify(result);\n};\n\nfunction escapeChar(value: number) {\n const hex = (\"0000\" + value.toString(16));\n return \"\\\\u\" + hex.substring(hex.length - 4);\n}\n\nexport function _toEscapedUtf8String(bytes: BytesLike, onError?: Utf8ErrorFunc): string {\n return '\"' + getUtf8CodePoints(bytes, onError).map((codePoint) => {\n if (codePoint < 256) {\n switch (codePoint) {\n case 8: return \"\\\\b\";\n case 9: return \"\\\\t\";\n case 10: return \"\\\\n\"\n case 13: return \"\\\\r\";\n case 34: return \"\\\\\\\"\";\n case 92: return \"\\\\\\\\\";\n }\n\n if (codePoint >= 32 && codePoint < 127) {\n return String.fromCharCode(codePoint);\n }\n }\n\n if (codePoint <= 0xffff) {\n return escapeChar(codePoint);\n }\n\n codePoint -= 0x10000;\n return escapeChar(((codePoint >> 10) & 0x3ff) + 0xd800) + escapeChar((codePoint & 0x3ff) + 0xdc00);\n }).join(\"\") + '\"';\n}\n\nexport function _toUtf8String(codePoints: Array): string {\n return codePoints.map((codePoint) => {\n if (codePoint <= 0xffff) {\n return String.fromCharCode(codePoint);\n }\n codePoint -= 0x10000;\n return String.fromCharCode(\n (((codePoint >> 10) & 0x3ff) + 0xd800),\n ((codePoint & 0x3ff) + 0xdc00)\n );\n }).join(\"\");\n}\n\nexport function toUtf8String(bytes: BytesLike, onError?: Utf8ErrorFunc): string {\n return _toUtf8String(getUtf8CodePoints(bytes, onError));\n}\n\nexport function toUtf8CodePoints(str: string, form: UnicodeNormalizationForm = UnicodeNormalizationForm.current): Array {\n return getUtf8CodePoints(toUtf8Bytes(str, form));\n}\n","export const version = \"strings/5.7.0\";\n","export const version = \"hash/5.7.0\";\n","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\n\nexport type Numbers = Uint8Array | Array;\nexport type NextFunc = (...args: Array) => number;\n\n// https://github.com/behnammodi/polyfill/blob/master/array.polyfill.js\nfunction flat(array: Array, depth?: number): Array {\n if (depth == null) { depth = 1; }\n const result: Array = [];\n\n const forEach = result.forEach;\n\n const flatDeep = function (arr: Array, depth: number) {\n forEach.call(arr, function (val: any) {\n if (depth > 0 && Array.isArray(val)) {\n flatDeep(val, depth - 1);\n } else {\n result.push(val);\n }\n });\n };\n\n flatDeep(array, depth);\n return result;\n}\n\nfunction fromEntries(array: Array<[T, U]>): Record {\n const result: Record = >{ };\n for (let i = 0; i < array.length; i++) {\n const value = array[i];\n result[value[0]] = value[1];\n }\n return result;\n}\n\nexport function decode_arithmetic(bytes: Numbers): Array {\n\tlet pos = 0;\n\tfunction u16() { return (bytes[pos++] << 8) | bytes[pos++]; }\n\t\n\t// decode the frequency table\n\tlet symbol_count = u16();\n\tlet total = 1;\n\tlet acc = [0, 1]; // first symbol has frequency 1\n\tfor (let i = 1; i < symbol_count; i++) {\n\t\tacc.push(total += u16());\n\t}\n\n\t// skip the sized-payload that the last 3 symbols index into\n\tlet skip = u16();\n\tlet pos_payload = pos;\n\tpos += skip;\n\n\tlet read_width = 0;\n\tlet read_buffer = 0; \n\tfunction read_bit() {\n\t\tif (read_width == 0) {\n\t\t\t// this will read beyond end of buffer\n\t\t\t// but (undefined|0) => zero pad\n\t\t\tread_buffer = (read_buffer << 8) | bytes[pos++];\n\t\t\tread_width = 8;\n\t\t}\n\t\treturn (read_buffer >> --read_width) & 1;\n\t}\n\n\tconst N = 31;\n\tconst FULL = 2**N;\n\tconst HALF = FULL >>> 1;\n\tconst QRTR = HALF >> 1;\n\tconst MASK = FULL - 1;\n\n\t// fill register\n\tlet register = 0;\n\tfor (let i = 0; i < N; i++) register = (register << 1) | read_bit();\n\n\tlet symbols = [];\n\tlet low = 0;\n\tlet range = FULL; // treat like a float\n\twhile (true) {\n\t\tlet value = Math.floor((((register - low + 1) * total) - 1) / range);\n\t\tlet start = 0;\n\t\tlet end = symbol_count;\n\t\twhile (end - start > 1) { // binary search\n\t\t\tlet mid = (start + end) >>> 1;\n\t\t\tif (value < acc[mid]) {\n\t\t\t\tend = mid;\n\t\t\t} else {\n\t\t\t\tstart = mid;\n\t\t\t}\n\t\t}\n\t\tif (start == 0) break; // first symbol is end mark\n\t\tsymbols.push(start);\n\t\tlet a = low + Math.floor(range * acc[start] / total);\n\t\tlet b = low + Math.floor(range * acc[start+1] / total) - 1\n\t\twhile (((a ^ b) & HALF) == 0) {\n\t\t\tregister = (register << 1) & MASK | read_bit();\n\t\t\ta = (a << 1) & MASK;\n\t\t\tb = (b << 1) & MASK | 1;\n\t\t}\n\t\twhile (a & ~b & QRTR) {\n\t\t\tregister = (register & HALF) | ((register << 1) & (MASK >>> 1)) | read_bit();\n\t\t\ta = (a << 1) ^ HALF;\n\t\t\tb = ((b ^ HALF) << 1) | HALF | 1;\n\t\t}\n\t\tlow = a;\n\t\trange = 1 + b - a;\n\t}\n\tlet offset = symbol_count - 4;\n\treturn symbols.map(x => { // index into payload\n\t\tswitch (x - offset) {\n\t\t\tcase 3: return offset + 0x10100 + ((bytes[pos_payload++] << 16) | (bytes[pos_payload++] << 8) | bytes[pos_payload++]);\n\t\t\tcase 2: return offset + 0x100 + ((bytes[pos_payload++] << 8) | bytes[pos_payload++]);\n\t\t\tcase 1: return offset + bytes[pos_payload++];\n\t\t\tdefault: return x - 1;\n\t\t}\n\t});\n}\t\n\n\n// returns an iterator which returns the next symbol\nexport function read_payload(v: Numbers): NextFunc {\n\tlet pos = 0;\n\treturn () => v[pos++];\n}\nexport function read_compressed_payload(bytes: Numbers): NextFunc {\n\treturn read_payload(decode_arithmetic(bytes));\n}\n\n// eg. [0,1,2,3...] => [0,-1,1,-2,...]\nexport function signed(i: number): number { \n\treturn (i & 1) ? (~i >> 1) : (i >> 1);\n}\n\nfunction read_counts(n: number, next: NextFunc): Array {\n\tlet v = Array(n);\n\tfor (let i = 0; i < n; i++) v[i] = 1 + next();\n\treturn v;\n}\n\nfunction read_ascending(n: number, next: NextFunc): Array {\n\tlet v = Array(n);\n\tfor (let i = 0, x = -1; i < n; i++) v[i] = x += 1 + next();\n\treturn v;\n}\n\nfunction read_deltas(n: number, next: NextFunc): Array {\n\tlet v = Array(n);\n\tfor (let i = 0, x = 0; i < n; i++) v[i] = x += signed(next());\n\treturn v;\n}\n\nexport function read_member_array(next: NextFunc, lookup?: Record) {\n let v = read_ascending(next(), next);\n let n = next();\n let vX = read_ascending(n, next);\n let vN = read_counts(n, next);\n for (let i = 0; i < n; i++) {\n for (let j = 0; j < vN[i]; j++) {\n v.push(vX[i] + j);\n }\n }\n return lookup ? v.map(x => lookup[x]) : v;\n}\n\n// returns array of \n// [x, ys] => single replacement rule\n// [x, ys, n, dx, dx] => linear map\nexport function read_mapped_map(next: NextFunc): Record> {\n\tlet ret = [];\n\twhile (true) {\n\t\tlet w = next();\n\t\tif (w == 0) break;\n\t\tret.push(read_linear_table(w, next));\n\t}\n\twhile (true) {\n\t\tlet w = next() - 1;\n\t\tif (w < 0) break;\n\t\tret.push(read_replacement_table(w, next));\n\t}\n\treturn fromEntries>(flat(ret));\n}\n\nexport function read_zero_terminated_array(next: NextFunc): Array {\n\tlet v = [];\n\twhile (true) {\n\t\tlet i = next();\n\t\tif (i == 0) break;\n\t\tv.push(i);\n\t}\n\treturn v;\n}\n\nfunction read_transposed(n: number, w: number, next: NextFunc): Array> {\n let m = Array(n).fill(undefined).map(() => []);\n for (let i = 0; i < w; i++) {\n read_deltas(n, next).forEach((x, j) => m[j].push(x));\n }\n return m;\n}\n\n\nfunction read_linear_table(w: number, next: NextFunc): Array>> {\n\tlet dx = 1 + next();\n\tlet dy = next();\n\tlet vN = read_zero_terminated_array(next);\n\tlet m = read_transposed(vN.length, 1+w, next);\n\treturn flat(m.map((v, i) => {\n\t const x = v[0], ys = v.slice(1);\n\t\t//let [x, ...ys] = v;\n\t\t//return Array(vN[i]).fill().map((_, j) => {\n\t\treturn Array(vN[i]).fill(undefined).map((_, j) => {\n\t\t\tlet j_dy = j * dy;\n\t\t\treturn [x + j * dx, ys.map(y => y + j_dy)];\n\t\t});\n\t}));\n}\n\nfunction read_replacement_table(w: number, next: NextFunc): Array<[ number, Array ]> {\n\tlet n = 1 + next();\n\tlet m = read_transposed(n, 1+w, next);\n\treturn m.map(v => [v[0], v.slice(1)]);\n}\n\nexport type Branch = {\n set: Set;\n node: Node;\n};\n\nexport type Node = {\n branches: Array;\n valid: number;\n fe0f: boolean;\n save: boolean;\n check: boolean;\n};\n\nexport function read_emoji_trie(next: NextFunc): Node {\n\tlet sorted = read_member_array(next).sort((a, b) => a - b);\n\treturn read();\n\tfunction read(): Node {\n\t\tlet branches = [];\n\t\twhile (true) {\n\t\t\tlet keys = read_member_array(next, sorted);\n\t\t\tif (keys.length == 0) break;\n\t\t\tbranches.push({set: new Set(keys), node: read()});\n\t\t}\n branches.sort((a, b) => b.set.size - a.set.size); // sort by likelihood\n \t\tlet temp = next();\n \t\tlet valid = temp % 3;\n \t\ttemp = (temp / 3)|0;\n \t\tlet fe0f = !!(temp & 1);\n \t\ttemp >>= 1;\n \t\tlet save = temp == 1;\n \t\tlet check = temp == 2;\n \t\treturn {branches, valid, fe0f, save, check};\n\t}\n}\n","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\n\nimport { toUtf8CodePoints } from \"@ethersproject/strings\";\n\nimport { getData } from './include.js';\nconst r = getData();\n\nimport {read_member_array, read_mapped_map, read_emoji_trie} from './decoder.js';\n\n// @TODO: This should be lazily loaded\n\nconst VALID = new Set(read_member_array(r));\nconst IGNORED = new Set(read_member_array(r));\nconst MAPPED = read_mapped_map(r);\nconst EMOJI_ROOT = read_emoji_trie(r);\n//const NFC_CHECK = new Set(read_member_array(r, Array.from(VALID.values()).sort((a, b) => a - b)));\n\n//const STOP = 0x2E;\nconst HYPHEN = 0x2D;\nconst UNDERSCORE = 0x5F;\n\nfunction explode_cp(name: string): Array {\n return toUtf8CodePoints(name);\n}\n\nfunction filter_fe0f(cps: Array): Array {\n return cps.filter(cp => cp != 0xFE0F);\n}\n\nexport function ens_normalize_post_check(name: string): string {\n\tfor (let label of name.split('.')) {\n\t\tlet cps = explode_cp(label);\n\t\ttry {\n\t\t\tfor (let i = cps.lastIndexOf(UNDERSCORE) - 1; i >= 0; i--) {\n\t\t\t\tif (cps[i] !== UNDERSCORE) {\n\t\t\t\t\tthrow new Error(`underscore only allowed at start`);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (cps.length >= 4 && cps.every(cp => cp < 0x80) && cps[2] === HYPHEN && cps[3] === HYPHEN) {\n\t\t\t\tthrow new Error(`invalid label extension`);\n\t\t\t}\n\t\t} catch (err) {\n\t\t\tthrow new Error(`Invalid label \"${label}\": ${err.message}`);\n\t\t}\n\t}\n\treturn name;\n}\n\nexport function ens_normalize(name: string): string {\n\treturn ens_normalize_post_check(normalize(name, filter_fe0f));\n}\n\nfunction normalize(name: string, emoji_filter: (a: Array) => Array): string {\n\tlet input = explode_cp(name).reverse(); // flip for pop\n\tlet output = [];\n\twhile (input.length) {\t\t\n\t\tlet emoji = consume_emoji_reversed(input);\n\t\tif (emoji) {\n\t\t\toutput.push(...emoji_filter(emoji));\n\t\t\tcontinue;\n\t\t}\n\t\tlet cp = input.pop();\n\t\tif (VALID.has(cp)) {\n\t\t\toutput.push(cp);\n\t\t\tcontinue;\n\t\t} \n\t\tif (IGNORED.has(cp)) {\n\t\t\tcontinue;\n\t\t}\n\t\tlet cps = MAPPED[cp];\n\t\tif (cps) {\n\t\t\toutput.push(...cps);\n\t\t\tcontinue;\n\t\t}\n\t\tthrow new Error(`Disallowed codepoint: 0x${cp.toString(16).toUpperCase()}`);\n\t}\n\treturn ens_normalize_post_check(nfc(String.fromCodePoint(...output)));\n}\n\nfunction nfc(s: string): string {\n return s.normalize('NFC');\n}\n\nfunction consume_emoji_reversed(cps: Array, eaten?: Array) {\n\tlet node = EMOJI_ROOT;\n\tlet emoji;\n\tlet saved;\n\tlet stack = [];\n\tlet pos = cps.length;\n\tif (eaten) eaten.length = 0; // clear input buffer (if needed)\n\twhile (pos) {\n\t\tlet cp = cps[--pos];\n\t\tnode = node.branches.find(x => x.set.has(cp))?.node;\n\t\tif (!node) break;\n\t\tif (node.save) { // remember\n\t\t\tsaved = cp;\n\t\t} else if (node.check) { // check exclusion\n\t\t\tif (cp === saved) break;\n\t\t}\n\t\tstack.push(cp);\n\t\tif (node.fe0f) {\n\t\t\tstack.push(0xFE0F);\n\t\t\tif (pos > 0 && cps[pos - 1] == 0xFE0F) pos--; // consume optional FE0F\n\t\t}\n\t\tif (node.valid) { // this is a valid emoji (so far)\n\t\t\temoji = stack.slice(); // copy stack\n\t\t\tif (node.valid == 2) emoji.splice(1, 1); // delete FE0F at position 1 (RGI ZWJ don't follow spec!)\n\t\t\tif (eaten) eaten.push(...cps.slice(pos).reverse()); // copy input (if needed)\n\t\t\tcps.length = pos; // truncate\n\t\t}\n\t}\n\treturn emoji;\n}\n","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\n\nimport { decode } from \"@ethersproject/base64\";\n\nimport {read_compressed_payload} from './decoder.js';\n\nexport function getData(): () => number {\n return read_compressed_payload(decode('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'));\n}\n\n","import { concat, hexlify } from \"@ethersproject/bytes\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { ens_normalize } from \"./ens-normalize/lib\";\n\nconst Zeros = new Uint8Array(32);\nZeros.fill(0);\n\nfunction checkComponent(comp: Uint8Array): Uint8Array {\n if (comp.length === 0) { throw new Error(\"invalid ENS name; empty component\"); }\n return comp;\n}\n\nfunction ensNameSplit(name: string): Array {\n const bytes = toUtf8Bytes(ens_normalize(name));\n const comps: Array = [ ];\n\n if (name.length === 0) { return comps; }\n\n let last = 0;\n for (let i = 0; i < bytes.length; i++) {\n const d = bytes[i];\n\n // A separator (i.e. \".\"); copy this component\n if (d === 0x2e) {\n comps.push(checkComponent(bytes.slice(last, i)));\n last = i + 1;\n }\n }\n\n // There was a stray separator at the end of the name\n if (last >= bytes.length) { throw new Error(\"invalid ENS name; empty component\"); }\n\n comps.push(checkComponent(bytes.slice(last)));\n return comps;\n}\n\nexport function ensNormalize(name: string): string {\n return ensNameSplit(name).map((comp) => toUtf8String(comp)).join(\".\");\n}\n\nexport function isValidName(name: string): boolean {\n try {\n return (ensNameSplit(name).length !== 0);\n } catch (error) { }\n return false;\n}\n\nexport function namehash(name: string): string {\n /* istanbul ignore if */\n if (typeof(name) !== \"string\") {\n logger.throwArgumentError(\"invalid ENS name; not a string\", \"name\", name);\n }\n\n let result: string | Uint8Array = Zeros;\n\n const comps = ensNameSplit(name);\n while (comps.length) {\n result = keccak256(concat([result, keccak256(comps.pop())]));\n }\n\n return hexlify(result);\n}\n\nexport function dnsEncode(name: string): string {\n return hexlify(concat(ensNameSplit(name).map((comp) => {\n // DNS does not allow components over 63 bytes in length\n if (comp.length > 63) {\n throw new Error(\"invalid DNS encoded entry; length exceeds 63 bytes\");\n }\n\n const bytes = new Uint8Array(comp.length + 1);\n bytes.set(comp, 1);\n bytes[0] = bytes.length - 1;\n return bytes;\n\n }))) + \"00\";\n}\n","\"use strict\";\n\nimport hash from \"hash.js\";\n//const _ripemd160 = _hash.ripemd160;\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\n\nimport { SupportedAlgorithm } from \"./types\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport function ripemd160(data: BytesLike): string {\n return \"0x\" + (hash.ripemd160().update(arrayify(data)).digest(\"hex\"));\n}\n\nexport function sha256(data: BytesLike): string {\n return \"0x\" + (hash.sha256().update(arrayify(data)).digest(\"hex\"));\n}\n\nexport function sha512(data: BytesLike): string {\n return \"0x\" + (hash.sha512().update(arrayify(data)).digest(\"hex\"));\n}\n\nexport function computeHmac(algorithm: SupportedAlgorithm, key: BytesLike, data: BytesLike): string {\n if (!SupportedAlgorithm[algorithm]) {\n logger.throwError(\"unsupported algorithm \" + algorithm, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"hmac\",\n algorithm: algorithm\n });\n }\n\n return \"0x\" + hash.hmac((hash)[algorithm], arrayify(key)).update(arrayify(data)).digest(\"hex\");\n}\n\n","export const version = \"sha2/5.7.0\";\n","\"use strict\";\n\nimport { arrayify } from \"@ethersproject/bytes\";\n\nimport type { GetUrlResponse, Options } from \"./types\";\n\nexport { GetUrlResponse, Options };\n\nexport async function getUrl(href: string, options?: Options): Promise {\n if (options == null) { options = { }; }\n\n const request: RequestInit = {\n method: (options.method || \"GET\"),\n headers: (options.headers || { }),\n body: (options.body || undefined),\n };\n\n if (options.skipFetchSetup !== true) {\n request.mode = \"cors\"; // no-cors, cors, *same-origin\n request.cache = \"no-cache\"; // *default, no-cache, reload, force-cache, only-if-cached\n request.credentials = \"same-origin\"; // include, *same-origin, omit\n request.redirect = \"follow\"; // manual, *follow, error\n request.referrer = \"client\"; // no-referrer, *client\n };\n\n if (options.fetchOptions != null) {\n const opts = options.fetchOptions;\n if (opts.mode) { request.mode = (opts.mode); }\n if (opts.cache) { request.cache = (opts.cache); }\n if (opts.credentials) { request.credentials = (opts.credentials); }\n if (opts.redirect) { request.redirect = (opts.redirect); }\n if (opts.referrer) { request.referrer = opts.referrer; }\n }\n\n const response = await fetch(href, request);\n const body = await response.arrayBuffer();\n\n const headers: { [ name: string ]: string } = { };\n if (response.headers.forEach) {\n response.headers.forEach((value, key) => {\n headers[key.toLowerCase()] = value;\n });\n } else {\n (<() => Array>(((response.headers)).keys))().forEach((key) => {\n headers[key.toLowerCase()] = response.headers.get(key);\n });\n }\n\n return {\n headers: headers,\n statusCode: response.status,\n statusMessage: response.statusText,\n body: arrayify(new Uint8Array(body)),\n }\n}\n","\"use strict\";\n\nimport { decode as base64Decode, encode as base64Encode } from \"@ethersproject/base64\";\nimport { hexlify, isBytesLike } from \"@ethersproject/bytes\";\nimport { shallowCopy } from \"@ethersproject/properties\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { getUrl, GetUrlResponse, Options } from \"./geturl\";\n\nfunction staller(duration: number): Promise {\n return new Promise((resolve) => {\n setTimeout(resolve, duration);\n });\n}\n\nfunction bodyify(value: any, type: string): string {\n if (value == null) { return null; }\n\n if (typeof(value) === \"string\") { return value; }\n\n if (isBytesLike(value)) {\n if (type && (type.split(\"/\")[0] === \"text\" || type.split(\";\")[0].trim() === \"application/json\")) {\n try {\n return toUtf8String(value);\n } catch (error) { };\n }\n return hexlify(value);\n }\n\n return value;\n}\n\n// Exported Types\nexport type ConnectionInfo = {\n url: string,\n headers?: { [key: string]: string | number }\n\n user?: string,\n password?: string,\n\n allowInsecureAuthentication?: boolean,\n allowGzip?: boolean,\n\n throttleLimit?: number,\n throttleSlotInterval?: number;\n throttleCallback?: (attempt: number, url: string) => Promise,\n\n skipFetchSetup?: boolean;\n fetchOptions?: Record;\n errorPassThrough?: boolean;\n\n timeout?: number,\n};\n\nexport interface OnceBlockable {\n once(eventName: \"block\", handler: () => void): void;\n}\n\nexport interface OncePollable {\n once(eventName: \"poll\", handler: () => void): void;\n}\n\nexport type PollOptions = {\n timeout?: number,\n floor?: number,\n ceiling?: number,\n interval?: number,\n retryLimit?: number,\n onceBlock?: OnceBlockable\n oncePoll?: OncePollable\n};\n\nexport type FetchJsonResponse = {\n statusCode: number;\n headers: { [ header: string ]: string };\n};\n\n\ntype Header = { key: string, value: string };\n\nfunction unpercent(value: string): Uint8Array {\n return toUtf8Bytes(value.replace(/%([0-9a-f][0-9a-f])/gi, (all, code) => {\n return String.fromCharCode(parseInt(code, 16));\n }));\n}\n\n// This API is still a work in progress; the future changes will likely be:\n// - ConnectionInfo => FetchDataRequest\n// - FetchDataRequest.body? = string | Uint8Array | { contentType: string, data: string | Uint8Array }\n// - If string => text/plain, Uint8Array => application/octet-stream (if content-type unspecified)\n// - FetchDataRequest.processFunc = (body: Uint8Array, response: FetchDataResponse) => T\n// For this reason, it should be considered internal until the API is finalized\nexport function _fetchData(connection: string | ConnectionInfo, body?: Uint8Array, processFunc?: (value: Uint8Array, response: FetchJsonResponse) => T): Promise {\n\n // How many times to retry in the event of a throttle\n const attemptLimit = (typeof(connection) === \"object\" && connection.throttleLimit != null) ? connection.throttleLimit: 12;\n logger.assertArgument((attemptLimit > 0 && (attemptLimit % 1) === 0),\n \"invalid connection throttle limit\", \"connection.throttleLimit\", attemptLimit);\n\n const throttleCallback = ((typeof(connection) === \"object\") ? connection.throttleCallback: null);\n const throttleSlotInterval = ((typeof(connection) === \"object\" && typeof(connection.throttleSlotInterval) === \"number\") ? connection.throttleSlotInterval: 100);\n logger.assertArgument((throttleSlotInterval > 0 && (throttleSlotInterval % 1) === 0),\n \"invalid connection throttle slot interval\", \"connection.throttleSlotInterval\", throttleSlotInterval);\n\n const errorPassThrough = ((typeof(connection) === \"object\") ? !!(connection.errorPassThrough): false);\n\n const headers: { [key: string]: Header } = { };\n\n let url: string = null;\n\n // @TODO: Allow ConnectionInfo to override some of these values\n const options: Options = {\n method: \"GET\",\n };\n\n let allow304 = false;\n\n let timeout = 2 * 60 * 1000;\n\n if (typeof(connection) === \"string\") {\n url = connection;\n\n } else if (typeof(connection) === \"object\") {\n if (connection == null || connection.url == null) {\n logger.throwArgumentError(\"missing URL\", \"connection.url\", connection);\n }\n\n url = connection.url;\n\n if (typeof(connection.timeout) === \"number\" && connection.timeout > 0) {\n timeout = connection.timeout;\n }\n\n if (connection.headers) {\n for (const key in connection.headers) {\n headers[key.toLowerCase()] = { key: key, value: String(connection.headers[key]) };\n if ([\"if-none-match\", \"if-modified-since\"].indexOf(key.toLowerCase()) >= 0) {\n allow304 = true;\n }\n }\n }\n\n options.allowGzip = !!connection.allowGzip;\n\n if (connection.user != null && connection.password != null) {\n if (url.substring(0, 6) !== \"https:\" && connection.allowInsecureAuthentication !== true) {\n logger.throwError(\n \"basic authentication requires a secure https url\",\n Logger.errors.INVALID_ARGUMENT,\n { argument: \"url\", url: url, user: connection.user, password: \"[REDACTED]\" }\n );\n }\n\n const authorization = connection.user + \":\" + connection.password;\n headers[\"authorization\"] = {\n key: \"Authorization\",\n value: \"Basic \" + base64Encode(toUtf8Bytes(authorization))\n };\n }\n\n if (connection.skipFetchSetup != null) {\n options.skipFetchSetup = !!connection.skipFetchSetup;\n }\n\n if (connection.fetchOptions != null) {\n options.fetchOptions = shallowCopy(connection.fetchOptions);\n }\n }\n\n const reData = new RegExp(\"^data:([^;:]*)?(;base64)?,(.*)$\", \"i\");\n const dataMatch = ((url) ? url.match(reData): null);\n if (dataMatch) {\n try {\n const response = {\n statusCode: 200,\n statusMessage: \"OK\",\n headers: { \"content-type\": (dataMatch[1] || \"text/plain\")},\n body: (dataMatch[2] ? base64Decode(dataMatch[3]): unpercent(dataMatch[3]))\n };\n\n let result: T = response.body;\n if (processFunc) {\n result = processFunc(response.body, response);\n }\n return Promise.resolve(result);\n\n } catch (error) {\n logger.throwError(\"processing response error\", Logger.errors.SERVER_ERROR, {\n body: bodyify(dataMatch[1], dataMatch[2]),\n error: error,\n requestBody: null,\n requestMethod: \"GET\",\n url: url\n });\n }\n }\n\n if (body) {\n options.method = \"POST\";\n options.body = body;\n if (headers[\"content-type\"] == null) {\n headers[\"content-type\"] = { key: \"Content-Type\", value: \"application/octet-stream\" };\n }\n if (headers[\"content-length\"] == null) {\n headers[\"content-length\"] = { key: \"Content-Length\", value: String(body.length) };\n }\n }\n\n const flatHeaders: { [ key: string ]: string } = { };\n Object.keys(headers).forEach((key) => {\n const header = headers[key];\n flatHeaders[header.key] = header.value;\n });\n options.headers = flatHeaders;\n\n const runningTimeout = (function() {\n let timer: NodeJS.Timer = null;\n const promise: Promise = new Promise(function(resolve, reject) {\n if (timeout) {\n timer = setTimeout(() => {\n if (timer == null) { return; }\n timer = null;\n\n reject(logger.makeError(\"timeout\", Logger.errors.TIMEOUT, {\n requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n requestMethod: options.method,\n timeout: timeout,\n url: url\n }));\n }, timeout);\n }\n });\n\n const cancel = function() {\n if (timer == null) { return; }\n clearTimeout(timer);\n timer = null;\n }\n\n return { promise, cancel };\n })();\n\n const runningFetch = (async function() {\n\n for (let attempt = 0; attempt < attemptLimit; attempt++) {\n let response: GetUrlResponse = null;\n\n try {\n response = await getUrl(url, options);\n\n if (attempt < attemptLimit) {\n if (response.statusCode === 301 || response.statusCode === 302) {\n // Redirection; for now we only support absolute locataions\n const location = response.headers.location || \"\";\n if (options.method === \"GET\" && location.match(/^https:/)) {\n url = response.headers.location;\n continue;\n }\n\n } else if (response.statusCode === 429) {\n // Exponential back-off throttling\n let tryAgain = true;\n if (throttleCallback) {\n tryAgain = await throttleCallback(attempt, url);\n }\n\n if (tryAgain) {\n let stall = 0;\n\n const retryAfter = response.headers[\"retry-after\"];\n if (typeof(retryAfter) === \"string\" && retryAfter.match(/^[1-9][0-9]*$/)) {\n stall = parseInt(retryAfter) * 1000;\n } else {\n stall = throttleSlotInterval * parseInt(String(Math.random() * Math.pow(2, attempt)));\n }\n\n //console.log(\"Stalling 429\");\n await staller(stall);\n continue;\n }\n }\n }\n\n } catch (error) {\n response = (error).response;\n if (response == null) {\n runningTimeout.cancel();\n logger.throwError(\"missing response\", Logger.errors.SERVER_ERROR, {\n requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n requestMethod: options.method,\n serverError: error,\n url: url\n });\n }\n }\n\n\n let body = response.body;\n\n if (allow304 && response.statusCode === 304) {\n body = null;\n } else if (!errorPassThrough && (response.statusCode < 200 || response.statusCode >= 300)) {\n runningTimeout.cancel();\n logger.throwError(\"bad response\", Logger.errors.SERVER_ERROR, {\n status: response.statusCode,\n headers: response.headers,\n body: bodyify(body, ((response.headers) ? response.headers[\"content-type\"]: null)),\n requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n requestMethod: options.method,\n url: url\n });\n }\n\n if (processFunc) {\n try {\n const result = await processFunc(body, response);\n runningTimeout.cancel();\n return result;\n\n } catch (error) {\n // Allow the processFunc to trigger a throttle\n if (error.throttleRetry && attempt < attemptLimit) {\n let tryAgain = true;\n if (throttleCallback) {\n tryAgain = await throttleCallback(attempt, url);\n }\n\n if (tryAgain) {\n const timeout = throttleSlotInterval * parseInt(String(Math.random() * Math.pow(2, attempt)));\n //console.log(\"Stalling callback\");\n await staller(timeout);\n continue;\n }\n }\n\n runningTimeout.cancel();\n logger.throwError(\"processing response error\", Logger.errors.SERVER_ERROR, {\n body: bodyify(body, ((response.headers) ? response.headers[\"content-type\"]: null)),\n error: error,\n requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n requestMethod: options.method,\n url: url\n });\n }\n }\n\n runningTimeout.cancel();\n\n // If we had a processFunc, it either returned a T or threw above.\n // The \"body\" is now a Uint8Array.\n return (body);\n }\n\n return logger.throwError(\"failed response\", Logger.errors.SERVER_ERROR, {\n requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n requestMethod: options.method,\n url: url\n });\n })();\n\n return Promise.race([ runningTimeout.promise, runningFetch ]);\n}\n\nexport function fetchJson(connection: string | ConnectionInfo, json?: string, processFunc?: (value: any, response: FetchJsonResponse) => any): Promise {\n let processJsonFunc = (value: Uint8Array, response: FetchJsonResponse) => {\n let result: any = null;\n if (value != null) {\n try {\n result = JSON.parse(toUtf8String(value));\n } catch (error) {\n logger.throwError(\"invalid JSON\", Logger.errors.SERVER_ERROR, {\n body: value,\n error: error\n });\n }\n }\n\n if (processFunc) {\n result = processFunc(result, response);\n }\n\n return result;\n }\n\n // If we have json to send, we must\n // - add content-type of application/json (unless already overridden)\n // - convert the json to bytes\n let body: Uint8Array = null;\n if (json != null) {\n body = toUtf8Bytes(json);\n\n // Create a connection with the content-type set for JSON\n const updated: ConnectionInfo = (typeof(connection) === \"string\") ? ({ url: connection }): shallowCopy(connection);\n if (updated.headers) {\n const hasContentType = (Object.keys(updated.headers).filter((k) => (k.toLowerCase() === \"content-type\")).length) !== 0;\n if (!hasContentType) {\n updated.headers = shallowCopy(updated.headers);\n updated.headers[\"content-type\"] = \"application/json\";\n }\n } else {\n updated.headers = { \"content-type\": \"application/json\" };\n }\n connection = updated;\n }\n\n return _fetchData(connection, body, processJsonFunc);\n}\n\nexport function poll(func: () => Promise, options?: PollOptions): Promise {\n if (!options) { options = {}; }\n options = shallowCopy(options);\n if (options.floor == null) { options.floor = 0; }\n if (options.ceiling == null) { options.ceiling = 10000; }\n if (options.interval == null) { options.interval = 250; }\n\n return new Promise(function(resolve, reject) {\n\n let timer: NodeJS.Timer = null;\n let done: boolean = false;\n\n // Returns true if cancel was successful. Unsuccessful cancel means we're already done.\n const cancel = (): boolean => {\n if (done) { return false; }\n done = true;\n if (timer) { clearTimeout(timer); }\n return true;\n };\n\n if (options.timeout) {\n timer = setTimeout(() => {\n if (cancel()) { reject(new Error(\"timeout\")); }\n }, options.timeout)\n }\n\n const retryLimit = options.retryLimit;\n\n let attempt = 0;\n function check() {\n return func().then(function(result) {\n\n // If we have a result, or are allowed null then we're done\n if (result !== undefined) {\n if (cancel()) { resolve(result); }\n\n } else if (options.oncePoll) {\n options.oncePoll.once(\"poll\", check);\n\n } else if (options.onceBlock) {\n options.onceBlock.once(\"block\", check);\n\n // Otherwise, exponential back-off (up to 10s) our next request\n } else if (!done) {\n attempt++;\n if (attempt > retryLimit) {\n if (cancel()) { reject(new Error(\"retry limit reached\")); }\n return;\n }\n\n let timeout = options.interval * parseInt(String(Math.random() * Math.pow(2, attempt)));\n if (timeout < options.floor) { timeout = options.floor; }\n if (timeout > options.ceiling) { timeout = options.ceiling; }\n\n setTimeout(check, timeout);\n }\n\n return null;\n }, function(error) {\n if (cancel()) { reject(error); }\n });\n }\n check();\n });\n}\n\n","export const version = \"web/5.7.1\";\n","export const version = \"providers/5.7.2\";\n","export const AddressZero = \"0x0000000000000000000000000000000000000000\";\n\n","import { BigNumber } from \"@ethersproject/bignumber\";\n\nconst NegativeOne: BigNumber = (/*#__PURE__*/BigNumber.from(-1));\nconst Zero: BigNumber = (/*#__PURE__*/BigNumber.from(0));\nconst One: BigNumber = (/*#__PURE__*/BigNumber.from(1));\nconst Two: BigNumber = (/*#__PURE__*/BigNumber.from(2));\nconst WeiPerEther: BigNumber = (/*#__PURE__*/BigNumber.from(\"1000000000000000000\"));\nconst MaxUint256: BigNumber = (/*#__PURE__*/BigNumber.from(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"));\n\nconst MinInt256: BigNumber = (/*#__PURE__*/BigNumber.from(\"-0x8000000000000000000000000000000000000000000000000000000000000000\"));\nconst MaxInt256: BigNumber = (/*#__PURE__*/BigNumber.from(\"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"));\n\nexport {\n NegativeOne,\n Zero,\n One,\n Two,\n WeiPerEther,\n MaxUint256,\n MinInt256,\n MaxInt256,\n};\n","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n","'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\nvar minAssert = require('minimalistic-assert');\nvar minUtils = require('minimalistic-crypto-utils');\n\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (var i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n","'use strict';\n\nvar curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n","'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve.edwards(options);\n else\n this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n","'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n","'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar HmacDRBG = require('hmac-drbg');\nvar utils = require('../utils');\nvar curves = require('../curves');\nvar rand = require('brorand');\nvar assert = utils.assert;\n\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert(Object.prototype.hasOwnProperty.call(curves, options),\n 'Unknown curve ' + options);\n\n options = curves[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nmodule.exports = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new KeyPair(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return KeyPair.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return KeyPair.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new Signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature = new Signature(signature, 'hex');\n\n // Perform primitive values validation\n var r = signature.r;\n var s = signature.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature, j, enc) {\n assert((3 & j) === j, 'The recovery param is more than two bits');\n signature = new Signature(signature, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {\n signature = new Signature(signature, enc);\n if (signature.recoveryParam !== null)\n return signature.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n","import _ec from \"elliptic\";\nvar EC = _ec.ec;\nexport { EC };\n//# sourceMappingURL=elliptic.js.map","'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n","export const version = \"signing-key/5.7.0\";\n","\"use strict\";\n\nimport { EC } from \"./elliptic\";\n\nimport { arrayify, BytesLike, hexDataLength, hexlify, hexZeroPad, Signature, SignatureLike, splitSignature } from \"@ethersproject/bytes\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nlet _curve: EC = null\nfunction getCurve() {\n if (!_curve) {\n _curve = new EC(\"secp256k1\");\n }\n return _curve;\n}\n\nexport class SigningKey {\n\n readonly curve: string;\n\n readonly privateKey: string;\n readonly publicKey: string;\n readonly compressedPublicKey: string;\n\n //readonly address: string;\n\n readonly _isSigningKey: boolean;\n\n constructor(privateKey: BytesLike) {\n defineReadOnly(this, \"curve\", \"secp256k1\");\n\n defineReadOnly(this, \"privateKey\", hexlify(privateKey));\n if (hexDataLength(this.privateKey) !== 32) {\n logger.throwArgumentError(\"invalid private key\", \"privateKey\", \"[[ REDACTED ]]\");\n }\n\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n\n defineReadOnly(this, \"publicKey\", \"0x\" + keyPair.getPublic(false, \"hex\"));\n defineReadOnly(this, \"compressedPublicKey\", \"0x\" + keyPair.getPublic(true, \"hex\"));\n\n defineReadOnly(this, \"_isSigningKey\", true);\n }\n\n _addPoint(other: BytesLike): string {\n const p0 = getCurve().keyFromPublic(arrayify(this.publicKey));\n const p1 = getCurve().keyFromPublic(arrayify(other));\n return \"0x\" + p0.pub.add(p1.pub).encodeCompressed(\"hex\");\n }\n\n signDigest(digest: BytesLike): Signature {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const digestBytes = arrayify(digest);\n if (digestBytes.length !== 32) {\n logger.throwArgumentError(\"bad digest length\", \"digest\", digest);\n }\n const signature = keyPair.sign(digestBytes, { canonical: true });\n return splitSignature({\n recoveryParam: signature.recoveryParam,\n r: hexZeroPad(\"0x\" + signature.r.toString(16), 32),\n s: hexZeroPad(\"0x\" + signature.s.toString(16), 32),\n })\n }\n\n computeSharedSecret(otherKey: BytesLike): string {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const otherKeyPair = getCurve().keyFromPublic(arrayify(computePublicKey(otherKey)));\n return hexZeroPad(\"0x\" + keyPair.derive(otherKeyPair.getPublic()).toString(16), 32);\n }\n\n static isSigningKey(value: any): value is SigningKey {\n return !!(value && value._isSigningKey);\n }\n}\n\nexport function recoverPublicKey(digest: BytesLike, signature: SignatureLike): string {\n const sig = splitSignature(signature);\n const rs = { r: arrayify(sig.r), s: arrayify(sig.s) };\n return \"0x\" + getCurve().recoverPubKey(arrayify(digest), rs, sig.recoveryParam).encode(\"hex\", false);\n}\n\nexport function computePublicKey(key: BytesLike, compressed?: boolean): string {\n const bytes = arrayify(key);\n\n if (bytes.length === 32) {\n const signingKey = new SigningKey(bytes);\n if (compressed) {\n return \"0x\" + getCurve().keyFromPrivate(bytes).getPublic(true, \"hex\");\n }\n return signingKey.publicKey;\n\n } else if (bytes.length === 33) {\n if (compressed) { return hexlify(bytes); }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(false, \"hex\");\n\n } else if (bytes.length === 65) {\n if (!compressed) { return hexlify(bytes); }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(true, \"hex\");\n }\n\n return logger.throwArgumentError(\"invalid public or private key\", \"key\", \"[REDACTED]\");\n}\n\n","export const version = \"transactions/5.7.0\";\n","\"use strict\";\n\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { arrayify, BytesLike, DataOptions, hexConcat, hexDataLength, hexDataSlice, hexlify, hexZeroPad, isBytesLike, SignatureLike, splitSignature, stripZeros, } from \"@ethersproject/bytes\";\nimport { Zero } from \"@ethersproject/constants\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { checkProperties } from \"@ethersproject/properties\";\nimport * as RLP from \"@ethersproject/rlp\";\nimport { computePublicKey, recoverPublicKey } from \"@ethersproject/signing-key\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n///////////////////////////////\n// Exported Types\n\nexport type AccessList = Array<{ address: string, storageKeys: Array }>;\n\n// Input allows flexibility in describing an access list\nexport type AccessListish = AccessList |\n Array<[ string, Array ]> |\n Record>;\n\nexport enum TransactionTypes {\n legacy = 0,\n eip2930 = 1,\n eip1559 = 2,\n};\n\nexport type UnsignedTransaction = {\n to?: string;\n nonce?: number;\n\n gasLimit?: BigNumberish;\n gasPrice?: BigNumberish;\n\n data?: BytesLike;\n value?: BigNumberish;\n chainId?: number;\n\n // Typed-Transaction features\n type?: number | null;\n\n // EIP-2930; Type 1 & EIP-1559; Type 2\n accessList?: AccessListish;\n\n // EIP-1559; Type 2\n maxPriorityFeePerGas?: BigNumberish;\n maxFeePerGas?: BigNumberish;\n}\n\nexport interface Transaction {\n hash?: string;\n\n to?: string;\n from?: string;\n nonce: number;\n\n gasLimit: BigNumber;\n gasPrice?: BigNumber;\n\n data: string;\n value: BigNumber;\n chainId: number;\n\n r?: string;\n s?: string;\n v?: number;\n\n // Typed-Transaction features\n type?: number | null;\n\n // EIP-2930; Type 1 & EIP-1559; Type 2\n accessList?: AccessList;\n\n // EIP-1559; Type 2\n maxPriorityFeePerGas?: BigNumber;\n maxFeePerGas?: BigNumber;\n}\n\n///////////////////////////////\n\nfunction handleAddress(value: string): string {\n if (value === \"0x\") { return null; }\n return getAddress(value);\n}\n\nfunction handleNumber(value: string): BigNumber {\n if (value === \"0x\") { return Zero; }\n return BigNumber.from(value);\n}\n\n// Legacy Transaction Fields\nconst transactionFields = [\n { name: \"nonce\", maxLength: 32, numeric: true },\n { name: \"gasPrice\", maxLength: 32, numeric: true },\n { name: \"gasLimit\", maxLength: 32, numeric: true },\n { name: \"to\", length: 20 },\n { name: \"value\", maxLength: 32, numeric: true },\n { name: \"data\" },\n];\n\nconst allowedTransactionKeys: { [ key: string ]: boolean } = {\n chainId: true, data: true, gasLimit: true, gasPrice:true, nonce: true, to: true, type: true, value: true\n}\n\nexport function computeAddress(key: BytesLike | string): string {\n const publicKey = computePublicKey(key);\n return getAddress(hexDataSlice(keccak256(hexDataSlice(publicKey, 1)), 12));\n}\n\nexport function recoverAddress(digest: BytesLike, signature: SignatureLike): string {\n return computeAddress(recoverPublicKey(arrayify(digest), signature));\n}\n\nfunction formatNumber(value: BigNumberish, name: string): Uint8Array {\n const result = stripZeros(BigNumber.from(value).toHexString());\n if (result.length > 32) {\n logger.throwArgumentError(\"invalid length for \" + name, (\"transaction:\" + name), value);\n }\n return result;\n}\n\nfunction accessSetify(addr: string, storageKeys: Array): { address: string,storageKeys: Array } {\n return {\n address: getAddress(addr),\n storageKeys: (storageKeys || []).map((storageKey, index) => {\n if (hexDataLength(storageKey) !== 32) {\n logger.throwArgumentError(\"invalid access list storageKey\", `accessList[${ addr }:${ index }]`, storageKey)\n }\n return storageKey.toLowerCase();\n })\n };\n}\n\nexport function accessListify(value: AccessListish): AccessList {\n if (Array.isArray(value)) {\n return (] | { address: string, storageKeys: Array}>>value).map((set, index) => {\n if (Array.isArray(set)) {\n if (set.length > 2) {\n logger.throwArgumentError(\"access list expected to be [ address, storageKeys[] ]\", `value[${ index }]`, set);\n }\n return accessSetify(set[0], set[1])\n }\n return accessSetify(set.address, set.storageKeys);\n });\n }\n\n const result: Array<{ address: string, storageKeys: Array }> = Object.keys(value).map((addr) => {\n const storageKeys: Record = value[addr].reduce((accum, storageKey) => {\n accum[storageKey] = true;\n return accum;\n }, >{ });\n return accessSetify(addr, Object.keys(storageKeys).sort())\n });\n result.sort((a, b) => (a.address.localeCompare(b.address)));\n return result;\n}\n\nfunction formatAccessList(value: AccessListish): Array<[ string, Array ]> {\n return accessListify(value).map((set) => [ set.address, set.storageKeys ]);\n}\n\nfunction _serializeEip1559(transaction: UnsignedTransaction, signature?: SignatureLike): string {\n // If there is an explicit gasPrice, make sure it matches the\n // EIP-1559 fees; otherwise they may not understand what they\n // think they are setting in terms of fee.\n if (transaction.gasPrice != null) {\n const gasPrice = BigNumber.from(transaction.gasPrice);\n const maxFeePerGas = BigNumber.from(transaction.maxFeePerGas || 0);\n if (!gasPrice.eq(maxFeePerGas)) {\n logger.throwArgumentError(\"mismatch EIP-1559 gasPrice != maxFeePerGas\", \"tx\", {\n gasPrice, maxFeePerGas\n });\n }\n }\n\n const fields: any = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.maxPriorityFeePerGas || 0, \"maxPriorityFeePerGas\"),\n formatNumber(transaction.maxFeePerGas || 0, \"maxFeePerGas\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to): \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n\n return hexConcat([ \"0x02\", RLP.encode(fields)]);\n}\n\nfunction _serializeEip2930(transaction: UnsignedTransaction, signature?: SignatureLike): string {\n const fields: any = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.gasPrice || 0, \"gasPrice\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to): \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n\n return hexConcat([ \"0x01\", RLP.encode(fields)]);\n}\n\n// Legacy Transactions and EIP-155\nfunction _serialize(transaction: UnsignedTransaction, signature?: SignatureLike): string {\n checkProperties(transaction, allowedTransactionKeys);\n\n const raw: Array = [];\n\n transactionFields.forEach(function(fieldInfo) {\n let value = (transaction)[fieldInfo.name] || ([]);\n const options: DataOptions = { };\n if (fieldInfo.numeric) { options.hexPad = \"left\"; }\n value = arrayify(hexlify(value, options));\n\n // Fixed-width field\n if (fieldInfo.length && value.length !== fieldInfo.length && value.length > 0) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value);\n }\n\n // Variable-width (with a maximum)\n if (fieldInfo.maxLength) {\n value = stripZeros(value);\n if (value.length > fieldInfo.maxLength) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value );\n }\n }\n\n raw.push(hexlify(value));\n });\n\n let chainId = 0;\n if (transaction.chainId != null) {\n // A chainId was provided; if non-zero we'll use EIP-155\n chainId = transaction.chainId;\n\n if (typeof(chainId) !== \"number\") {\n logger.throwArgumentError(\"invalid transaction.chainId\", \"transaction\", transaction);\n }\n\n } else if (signature && !isBytesLike(signature) && signature.v > 28) {\n // No chainId provided, but the signature is signing with EIP-155; derive chainId\n chainId = Math.floor((signature.v - 35) / 2);\n }\n\n // We have an EIP-155 transaction (chainId was specified and non-zero)\n if (chainId !== 0) {\n raw.push(hexlify(chainId)); // @TODO: hexValue?\n raw.push(\"0x\");\n raw.push(\"0x\");\n }\n\n // Requesting an unsigned transaction\n if (!signature) {\n return RLP.encode(raw);\n }\n\n // The splitSignature will ensure the transaction has a recoveryParam in the\n // case that the signTransaction function only adds a v.\n const sig = splitSignature(signature);\n\n // We pushed a chainId and null r, s on for hashing only; remove those\n let v = 27 + sig.recoveryParam\n if (chainId !== 0) {\n raw.pop();\n raw.pop();\n raw.pop();\n v += chainId * 2 + 8;\n\n // If an EIP-155 v (directly or indirectly; maybe _vs) was provided, check it!\n if (sig.v > 28 && sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n } else if (sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n\n raw.push(hexlify(v));\n raw.push(stripZeros(arrayify(sig.r)));\n raw.push(stripZeros(arrayify(sig.s)));\n\n return RLP.encode(raw);\n}\n\nexport function serialize(transaction: UnsignedTransaction, signature?: SignatureLike): string {\n // Legacy and EIP-155 Transactions\n if (transaction.type == null || transaction.type === 0) {\n if (transaction.accessList != null) {\n logger.throwArgumentError(\"untyped transactions do not support accessList; include type: 1\", \"transaction\", transaction);\n }\n return _serialize(transaction, signature);\n }\n\n // Typed Transactions (EIP-2718)\n switch (transaction.type) {\n case 1:\n return _serializeEip2930(transaction, signature);\n case 2:\n return _serializeEip1559(transaction, signature);\n default:\n break;\n }\n\n return logger.throwError(`unsupported transaction type: ${ transaction.type }`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"serializeTransaction\",\n transactionType: transaction.type\n });\n}\n\nfunction _parseEipSignature(tx: Transaction, fields: Array, serialize: (tx: UnsignedTransaction) => string): void {\n try {\n const recid = handleNumber(fields[0]).toNumber();\n if (recid !== 0 && recid !== 1) { throw new Error(\"bad recid\"); }\n tx.v = recid;\n } catch (error) {\n logger.throwArgumentError(\"invalid v for transaction type: 1\", \"v\", fields[0]);\n }\n\n tx.r = hexZeroPad(fields[1], 32);\n tx.s = hexZeroPad(fields[2], 32);\n\n try {\n const digest = keccak256(serialize(tx));\n tx.from = recoverAddress(digest, { r: tx.r, s: tx.s, recoveryParam: tx.v });\n } catch (error) { }\n}\n\nfunction _parseEip1559(payload: Uint8Array): Transaction {\n const transaction = RLP.decode(payload.slice(1));\n\n if (transaction.length !== 9 && transaction.length !== 12) {\n logger.throwArgumentError(\"invalid component count for transaction type: 2\", \"payload\", hexlify(payload));\n }\n\n const maxPriorityFeePerGas = handleNumber(transaction[2]);\n const maxFeePerGas = handleNumber(transaction[3]);\n const tx: Transaction = {\n type: 2,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n maxPriorityFeePerGas: maxPriorityFeePerGas,\n maxFeePerGas: maxFeePerGas,\n gasPrice: null,\n gasLimit: handleNumber(transaction[4]),\n to: handleAddress(transaction[5]),\n value: handleNumber(transaction[6]),\n data: transaction[7],\n accessList: accessListify(transaction[8]),\n };\n\n // Unsigned EIP-1559 Transaction\n if (transaction.length === 9) { return tx; }\n\n tx.hash = keccak256(payload);\n\n _parseEipSignature(tx, transaction.slice(9), _serializeEip1559);\n\n return tx;\n}\n\nfunction _parseEip2930(payload: Uint8Array): Transaction {\n const transaction = RLP.decode(payload.slice(1));\n\n if (transaction.length !== 8 && transaction.length !== 11) {\n logger.throwArgumentError(\"invalid component count for transaction type: 1\", \"payload\", hexlify(payload));\n }\n\n const tx: Transaction = {\n type: 1,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n gasPrice: handleNumber(transaction[2]),\n gasLimit: handleNumber(transaction[3]),\n to: handleAddress(transaction[4]),\n value: handleNumber(transaction[5]),\n data: transaction[6],\n accessList: accessListify(transaction[7])\n };\n\n // Unsigned EIP-2930 Transaction\n if (transaction.length === 8) { return tx; }\n\n tx.hash = keccak256(payload);\n\n _parseEipSignature(tx, transaction.slice(8), _serializeEip2930);\n\n return tx;\n}\n\n// Legacy Transactions and EIP-155\nfunction _parse(rawTransaction: Uint8Array): Transaction {\n const transaction = RLP.decode(rawTransaction);\n\n if (transaction.length !== 9 && transaction.length !== 6) {\n logger.throwArgumentError(\"invalid raw transaction\", \"rawTransaction\", rawTransaction);\n }\n\n const tx: Transaction = {\n nonce: handleNumber(transaction[0]).toNumber(),\n gasPrice: handleNumber(transaction[1]),\n gasLimit: handleNumber(transaction[2]),\n to: handleAddress(transaction[3]),\n value: handleNumber(transaction[4]),\n data: transaction[5],\n chainId: 0\n };\n\n // Legacy unsigned transaction\n if (transaction.length === 6) { return tx; }\n\n try {\n tx.v = BigNumber.from(transaction[6]).toNumber();\n\n } catch (error) {\n // @TODO: What makes snese to do? The v is too big\n return tx;\n }\n\n tx.r = hexZeroPad(transaction[7], 32);\n tx.s = hexZeroPad(transaction[8], 32);\n\n if (BigNumber.from(tx.r).isZero() && BigNumber.from(tx.s).isZero()) {\n // EIP-155 unsigned transaction\n tx.chainId = tx.v;\n tx.v = 0;\n\n } else {\n // Signed Transaction\n\n tx.chainId = Math.floor((tx.v - 35) / 2);\n if (tx.chainId < 0) { tx.chainId = 0; }\n\n let recoveryParam = tx.v - 27;\n\n const raw = transaction.slice(0, 6);\n\n if (tx.chainId !== 0) {\n raw.push(hexlify(tx.chainId));\n raw.push(\"0x\");\n raw.push(\"0x\");\n recoveryParam -= tx.chainId * 2 + 8;\n }\n\n const digest = keccak256(RLP.encode(raw));\n try {\n tx.from = recoverAddress(digest, { r: hexlify(tx.r), s: hexlify(tx.s), recoveryParam: recoveryParam });\n } catch (error) { }\n\n tx.hash = keccak256(rawTransaction);\n }\n\n tx.type = null;\n\n return tx;\n}\n\n\nexport function parse(rawTransaction: BytesLike): Transaction {\n const payload = arrayify(rawTransaction);\n\n // Legacy and EIP-155 Transactions\n if (payload[0] > 0x7f) { return _parse(payload); }\n\n // Typed Transaction (EIP-2718)\n switch (payload[0]) {\n case 1:\n return _parseEip2930(payload);\n case 2:\n return _parseEip1559(payload);\n default:\n break;\n }\n\n return logger.throwError(`unsupported transaction type: ${ payload[0] }`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"parseTransaction\",\n transactionType: payload[0]\n });\n}\n\n","\"use strict\";\n\nimport { Block, TransactionReceipt, TransactionResponse } from \"@ethersproject/abstract-provider\";\nimport { getAddress, getContractAddress } from \"@ethersproject/address\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { hexDataLength, hexDataSlice, hexValue, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { AddressZero } from \"@ethersproject/constants\";\nimport { shallowCopy } from \"@ethersproject/properties\";\nimport { AccessList, accessListify, parse as parseTransaction } from \"@ethersproject/transactions\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport type FormatFunc = (value: any) => any;\n\nexport type FormatFuncs = { [ key: string ]: FormatFunc };\n\nexport type Formats = {\n transaction: FormatFuncs,\n transactionRequest: FormatFuncs,\n receipt: FormatFuncs,\n receiptLog: FormatFuncs,\n block: FormatFuncs,\n blockWithTransactions: FormatFuncs,\n filter: FormatFuncs,\n filterLog: FormatFuncs,\n};\n\nexport class Formatter {\n readonly formats: Formats;\n\n constructor() {\n this.formats = this.getDefaultFormats();\n }\n\n getDefaultFormats(): Formats {\n const formats: Formats = ({ });\n\n const address = this.address.bind(this);\n const bigNumber = this.bigNumber.bind(this);\n const blockTag = this.blockTag.bind(this);\n const data = this.data.bind(this);\n const hash = this.hash.bind(this);\n const hex = this.hex.bind(this);\n const number = this.number.bind(this);\n const type = this.type.bind(this);\n\n const strictData = (v: any) => { return this.data(v, true); };\n\n formats.transaction = {\n hash: hash,\n\n type: type,\n accessList: Formatter.allowNull(this.accessList.bind(this), null),\n\n blockHash: Formatter.allowNull(hash, null),\n blockNumber: Formatter.allowNull(number, null),\n transactionIndex: Formatter.allowNull(number, null),\n\n confirmations: Formatter.allowNull(number, null),\n\n from: address,\n\n // either (gasPrice) or (maxPriorityFeePerGas + maxFeePerGas)\n // must be set\n gasPrice: Formatter.allowNull(bigNumber),\n maxPriorityFeePerGas: Formatter.allowNull(bigNumber),\n maxFeePerGas: Formatter.allowNull(bigNumber),\n\n gasLimit: bigNumber,\n to: Formatter.allowNull(address, null),\n value: bigNumber,\n nonce: number,\n data: data,\n\n r: Formatter.allowNull(this.uint256),\n s: Formatter.allowNull(this.uint256),\n v: Formatter.allowNull(number),\n\n creates: Formatter.allowNull(address, null),\n\n raw: Formatter.allowNull(data),\n };\n\n formats.transactionRequest = {\n from: Formatter.allowNull(address),\n nonce: Formatter.allowNull(number),\n gasLimit: Formatter.allowNull(bigNumber),\n gasPrice: Formatter.allowNull(bigNumber),\n maxPriorityFeePerGas: Formatter.allowNull(bigNumber),\n maxFeePerGas: Formatter.allowNull(bigNumber),\n to: Formatter.allowNull(address),\n value: Formatter.allowNull(bigNumber),\n data: Formatter.allowNull(strictData),\n type: Formatter.allowNull(number),\n accessList: Formatter.allowNull(this.accessList.bind(this), null),\n };\n\n formats.receiptLog = {\n transactionIndex: number,\n blockNumber: number,\n transactionHash: hash,\n address: address,\n topics: Formatter.arrayOf(hash),\n data: data,\n logIndex: number,\n blockHash: hash,\n };\n\n formats.receipt = {\n to: Formatter.allowNull(this.address, null),\n from: Formatter.allowNull(this.address, null),\n contractAddress: Formatter.allowNull(address, null),\n transactionIndex: number,\n // should be allowNull(hash), but broken-EIP-658 support is handled in receipt\n root: Formatter.allowNull(hex),\n gasUsed: bigNumber,\n logsBloom: Formatter.allowNull(data),// @TODO: should this be data?\n blockHash: hash,\n transactionHash: hash,\n logs: Formatter.arrayOf(this.receiptLog.bind(this)),\n blockNumber: number,\n confirmations: Formatter.allowNull(number, null),\n cumulativeGasUsed: bigNumber,\n effectiveGasPrice: Formatter.allowNull(bigNumber),\n status: Formatter.allowNull(number),\n type: type\n };\n\n formats.block = {\n hash: Formatter.allowNull(hash),\n parentHash: hash,\n number: number,\n\n timestamp: number,\n nonce: Formatter.allowNull(hex),\n difficulty: this.difficulty.bind(this),\n\n gasLimit: bigNumber,\n gasUsed: bigNumber,\n\n miner: Formatter.allowNull(address),\n extraData: data,\n\n transactions: Formatter.allowNull(Formatter.arrayOf(hash)),\n\n baseFeePerGas: Formatter.allowNull(bigNumber)\n };\n\n formats.blockWithTransactions = shallowCopy(formats.block);\n formats.blockWithTransactions.transactions = Formatter.allowNull(Formatter.arrayOf(this.transactionResponse.bind(this)));\n\n formats.filter = {\n fromBlock: Formatter.allowNull(blockTag, undefined),\n toBlock: Formatter.allowNull(blockTag, undefined),\n blockHash: Formatter.allowNull(hash, undefined),\n address: Formatter.allowNull(address, undefined),\n topics: Formatter.allowNull(this.topics.bind(this), undefined),\n };\n\n formats.filterLog = {\n blockNumber: Formatter.allowNull(number),\n blockHash: Formatter.allowNull(hash),\n transactionIndex: number,\n\n removed: Formatter.allowNull(this.boolean.bind(this)),\n\n address: address,\n data: Formatter.allowFalsish(data, \"0x\"),\n\n topics: Formatter.arrayOf(hash),\n\n transactionHash: hash,\n logIndex: number,\n };\n\n return formats;\n }\n\n accessList(accessList: Array): AccessList {\n return accessListify(accessList || []);\n }\n\n // Requires a BigNumberish that is within the IEEE754 safe integer range; returns a number\n // Strict! Used on input.\n number(number: any): number {\n if (number === \"0x\") { return 0; }\n return BigNumber.from(number).toNumber();\n }\n\n type(number: any): number {\n if (number === \"0x\" || number == null) { return 0; }\n return BigNumber.from(number).toNumber();\n }\n\n // Strict! Used on input.\n bigNumber(value: any): BigNumber {\n return BigNumber.from(value);\n }\n\n // Requires a boolean, \"true\" or \"false\"; returns a boolean\n boolean(value: any): boolean {\n if (typeof(value) === \"boolean\") { return value; }\n if (typeof(value) === \"string\") {\n value = value.toLowerCase();\n if (value === \"true\") { return true; }\n if (value === \"false\") { return false; }\n }\n throw new Error(\"invalid boolean - \" + value);\n }\n\n hex(value: any, strict?: boolean): string {\n if (typeof(value) === \"string\") {\n if (!strict && value.substring(0, 2) !== \"0x\") { value = \"0x\" + value; }\n if (isHexString(value)) {\n return value.toLowerCase();\n }\n }\n return logger.throwArgumentError(\"invalid hash\", \"value\", value);\n }\n\n data(value: any, strict?: boolean): string {\n const result = this.hex(value, strict);\n if ((result.length % 2) !== 0) {\n throw new Error(\"invalid data; odd-length - \" + value);\n }\n return result;\n }\n\n // Requires an address\n // Strict! Used on input.\n address(value: any): string {\n return getAddress(value);\n }\n\n callAddress(value: any): string {\n if (!isHexString(value, 32)) { return null; }\n const address = getAddress(hexDataSlice(value, 12));\n return (address === AddressZero) ? null: address;\n }\n\n contractAddress(value: any): string {\n return getContractAddress(value);\n }\n\n // Strict! Used on input.\n blockTag(blockTag: any): string {\n if (blockTag == null) { return \"latest\"; }\n\n if (blockTag === \"earliest\") { return \"0x0\"; }\n\n switch (blockTag) {\n case \"earliest\": return \"0x0\";\n case \"latest\": case \"pending\": case \"safe\": case \"finalized\":\n return blockTag;\n }\n\n if (typeof(blockTag) === \"number\" || isHexString(blockTag)) {\n return hexValue(blockTag);\n }\n\n throw new Error(\"invalid blockTag\");\n }\n\n // Requires a hash, optionally requires 0x prefix; returns prefixed lowercase hash.\n hash(value: any, strict?: boolean): string {\n const result = this.hex(value, strict);\n if (hexDataLength(result) !== 32) {\n return logger.throwArgumentError(\"invalid hash\", \"value\", value);\n }\n return result;\n }\n\n // Returns the difficulty as a number, or if too large (i.e. PoA network) null\n difficulty(value: any): number {\n if (value == null) { return null; }\n\n const v = BigNumber.from(value);\n\n try {\n return v.toNumber();\n } catch (error) { }\n\n return null;\n }\n\n uint256(value: any): string {\n if (!isHexString(value)) {\n throw new Error(\"invalid uint256\");\n }\n return hexZeroPad(value, 32);\n }\n\n _block(value: any, format: any): Block {\n if (value.author != null && value.miner == null) {\n value.miner = value.author;\n }\n // The difficulty may need to come from _difficulty in recursed blocks\n const difficulty = (value._difficulty != null) ? value._difficulty: value.difficulty;\n const result = Formatter.check(format, value);\n result._difficulty = ((difficulty == null) ? null: BigNumber.from(difficulty));\n return result;\n }\n\n block(value: any): Block {\n return this._block(value, this.formats.block);\n }\n\n blockWithTransactions(value: any): Block {\n return this._block(value, this.formats.blockWithTransactions);\n }\n\n // Strict! Used on input.\n transactionRequest(value: any): any {\n return Formatter.check(this.formats.transactionRequest, value);\n }\n\n transactionResponse(transaction: any): TransactionResponse {\n\n // Rename gas to gasLimit\n if (transaction.gas != null && transaction.gasLimit == null) {\n transaction.gasLimit = transaction.gas;\n }\n\n // Some clients (TestRPC) do strange things like return 0x0 for the\n // 0 address; correct this to be a real address\n if (transaction.to && BigNumber.from(transaction.to).isZero()) {\n transaction.to = \"0x0000000000000000000000000000000000000000\";\n }\n\n // Rename input to data\n if (transaction.input != null && transaction.data == null) {\n transaction.data = transaction.input;\n }\n\n // If to and creates are empty, populate the creates from the transaction\n if (transaction.to == null && transaction.creates == null) {\n transaction.creates = this.contractAddress(transaction);\n }\n\n if ((transaction.type === 1 || transaction.type === 2)&& transaction.accessList == null) {\n transaction.accessList = [ ];\n }\n\n const result: TransactionResponse = Formatter.check(this.formats.transaction, transaction);\n\n if (transaction.chainId != null) {\n let chainId = transaction.chainId;\n\n if (isHexString(chainId)) {\n chainId = BigNumber.from(chainId).toNumber();\n }\n\n result.chainId = chainId;\n\n } else {\n let chainId = transaction.networkId;\n\n // geth-etc returns chainId\n if (chainId == null && result.v == null) {\n chainId = transaction.chainId;\n }\n\n if (isHexString(chainId)) {\n chainId = BigNumber.from(chainId).toNumber();\n }\n\n if (typeof(chainId) !== \"number\" && result.v != null) {\n chainId = (result.v - 35) / 2;\n if (chainId < 0) { chainId = 0; }\n chainId = parseInt(chainId);\n }\n\n if (typeof(chainId) !== \"number\") { chainId = 0; }\n\n result.chainId = chainId;\n }\n\n // 0x0000... should actually be null\n if (result.blockHash && result.blockHash.replace(/0/g, \"\") === \"x\") {\n result.blockHash = null;\n }\n\n return result;\n }\n\n transaction(value: any): any {\n return parseTransaction(value);\n }\n\n receiptLog(value: any): any {\n return Formatter.check(this.formats.receiptLog, value);\n }\n\n receipt(value: any): TransactionReceipt {\n const result: TransactionReceipt = Formatter.check(this.formats.receipt, value);\n\n // RSK incorrectly implemented EIP-658, so we munge things a bit here for it\n if (result.root != null) {\n if (result.root.length <= 4) {\n // Could be 0x00, 0x0, 0x01 or 0x1\n const value = BigNumber.from(result.root).toNumber();\n if (value === 0 || value === 1) {\n // Make sure if both are specified, they match\n if (result.status != null && (result.status !== value)) {\n logger.throwArgumentError(\"alt-root-status/status mismatch\", \"value\", { root: result.root, status: result.status });\n }\n result.status = value;\n delete result.root;\n } else {\n logger.throwArgumentError(\"invalid alt-root-status\", \"value.root\", result.root);\n }\n } else if (result.root.length !== 66) {\n // Must be a valid bytes32\n logger.throwArgumentError(\"invalid root hash\", \"value.root\", result.root);\n }\n }\n\n if (result.status != null) {\n result.byzantium = true;\n }\n\n return result;\n }\n\n topics(value: any): any {\n if (Array.isArray(value)) {\n return value.map((v) => this.topics(v));\n\n } else if (value != null) {\n return this.hash(value, true);\n }\n\n return null;\n }\n\n filter(value: any): any {\n return Formatter.check(this.formats.filter, value);\n }\n\n filterLog(value: any): any {\n return Formatter.check(this.formats.filterLog, value);\n }\n\n static check(format: { [ name: string ]: FormatFunc }, object: any): any {\n const result: any = {};\n for (const key in format) {\n try {\n const value = format[key](object[key]);\n if (value !== undefined) { result[key] = value; }\n } catch (error) {\n error.checkKey = key;\n error.checkValue = object[key];\n throw error;\n }\n }\n return result;\n }\n\n // if value is null-ish, nullValue is returned\n static allowNull(format: FormatFunc, nullValue?: any): FormatFunc {\n return (function(value: any) {\n if (value == null) { return nullValue; }\n return format(value);\n });\n }\n\n // If value is false-ish, replaceValue is returned\n static allowFalsish(format: FormatFunc, replaceValue: any): FormatFunc {\n return (function(value: any) {\n if (!value) { return replaceValue; }\n return format(value);\n });\n }\n\n // Requires an Array satisfying check\n static arrayOf(format: FormatFunc): FormatFunc {\n return (function(array: any): Array {\n if (!Array.isArray(array)) { throw new Error(\"not an array\"); }\n\n const result: any = [];\n\n array.forEach(function(value) {\n result.push(format(value));\n });\n\n return result;\n });\n }\n}\n\nexport interface CommunityResourcable {\n isCommunityResource(): boolean;\n}\n\nexport function isCommunityResourcable(value: any): value is CommunityResourcable {\n return (value && typeof(value.isCommunityResource) === \"function\");\n}\n\nexport function isCommunityResource(value: any): boolean {\n return (isCommunityResourcable(value) && value.isCommunityResource());\n}\n\n// Show the throttle message only once\nlet throttleMessage = false;\nexport function showThrottleMessage() {\n if (throttleMessage) { return; }\n throttleMessage = true;\n\n console.log(\"========= NOTICE =========\")\n console.log(\"Request-Rate Exceeded (this message will not be repeated)\");\n console.log(\"\");\n console.log(\"The default API keys for each service are provided as a highly-throttled,\");\n console.log(\"community resource for low-traffic projects and early prototyping.\");\n console.log(\"\");\n console.log(\"While your application will continue to function, we highly recommended\");\n console.log(\"signing up for your own API keys to improve performance, increase your\");\n console.log(\"request rate/limit and enable other perks, such as metrics and advanced APIs.\");\n console.log(\"\");\n console.log(\"For more details: https:/\\/docs.ethers.io/api-keys/\");\n console.log(\"==========================\");\n}\n\n","\"use strict\";\n\nimport {\n Block, BlockTag, BlockWithTransactions, EventType, Filter, FilterByBlockHash, ForkEvent,\n Listener, Log, Provider, TransactionReceipt, TransactionRequest, TransactionResponse\n} from \"@ethersproject/abstract-provider\";\nimport { encode as base64Encode } from \"@ethersproject/base64\";\nimport { Base58 } from \"@ethersproject/basex\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { arrayify, BytesLike, concat, hexConcat, hexDataLength, hexDataSlice, hexlify, hexValue, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { HashZero } from \"@ethersproject/constants\";\nimport { dnsEncode, namehash } from \"@ethersproject/hash\";\nimport { getNetwork, Network, Networkish } from \"@ethersproject/networks\";\nimport { Deferrable, defineReadOnly, getStatic, resolveProperties } from \"@ethersproject/properties\";\nimport { Transaction } from \"@ethersproject/transactions\";\nimport { sha256 } from \"@ethersproject/sha2\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\nimport { fetchJson, poll } from \"@ethersproject/web\";\n\nimport bech32 from \"bech32\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { Formatter } from \"./formatter\";\n\nconst MAX_CCIP_REDIRECTS = 10;\n\n//////////////////////////////\n// Event Serializeing\n\nfunction checkTopic(topic: string): string {\n if (topic == null) { return \"null\"; }\n if (hexDataLength(topic) !== 32) {\n logger.throwArgumentError(\"invalid topic\", \"topic\", topic);\n }\n return topic.toLowerCase();\n}\n\nfunction serializeTopics(topics: Array>): string {\n // Remove trailing null AND-topics; they are redundant\n topics = topics.slice();\n while (topics.length > 0 && topics[topics.length - 1] == null) { topics.pop(); }\n\n return topics.map((topic) => {\n if (Array.isArray(topic)) {\n\n // Only track unique OR-topics\n const unique: { [ topic: string ]: boolean } = { }\n topic.forEach((topic) => {\n unique[checkTopic(topic)] = true;\n });\n\n // The order of OR-topics does not matter\n const sorted = Object.keys(unique);\n sorted.sort();\n\n return sorted.join(\"|\");\n\n } else {\n return checkTopic(topic);\n }\n }).join(\"&\");\n}\n\nfunction deserializeTopics(data: string): Array> {\n if (data === \"\") { return [ ]; }\n\n return data.split(/&/g).map((topic) => {\n if (topic === \"\") { return [ ]; }\n\n const comps = topic.split(\"|\").map((topic) => {\n return ((topic === \"null\") ? null: topic);\n });\n\n return ((comps.length === 1) ? comps[0]: comps);\n });\n}\n\nfunction getEventTag(eventName: EventType): string {\n if (typeof(eventName) === \"string\") {\n eventName = eventName.toLowerCase();\n\n if (hexDataLength(eventName) === 32) {\n return \"tx:\" + eventName;\n }\n\n if (eventName.indexOf(\":\") === -1) {\n return eventName;\n }\n\n } else if (Array.isArray(eventName)) {\n return \"filter:*:\" + serializeTopics(eventName);\n\n } else if (ForkEvent.isForkEvent(eventName)) {\n logger.warn(\"not implemented\");\n throw new Error(\"not implemented\");\n\n } else if (eventName && typeof(eventName) === \"object\") {\n return \"filter:\" + (eventName.address || \"*\") + \":\" + serializeTopics(eventName.topics || []);\n }\n\n throw new Error(\"invalid event - \" + eventName);\n}\n\n//////////////////////////////\n// Helper Object\n\nfunction getTime() {\n return (new Date()).getTime();\n}\n\nfunction stall(duration: number): Promise {\n return new Promise((resolve) => {\n setTimeout(resolve, duration);\n });\n}\n\n//////////////////////////////\n// Provider Object\n\n\n/**\n * EventType\n * - \"block\"\n * - \"poll\"\n * - \"didPoll\"\n * - \"pending\"\n * - \"error\"\n * - \"network\"\n * - filter\n * - topics array\n * - transaction hash\n */\n\nconst PollableEvents = [ \"block\", \"network\", \"pending\", \"poll\" ];\n\nexport class Event {\n readonly listener: Listener;\n readonly once: boolean;\n readonly tag: string;\n\n _lastBlockNumber: number\n _inflight: boolean;\n\n constructor(tag: string, listener: Listener, once: boolean) {\n defineReadOnly(this, \"tag\", tag);\n defineReadOnly(this, \"listener\", listener);\n defineReadOnly(this, \"once\", once);\n\n this._lastBlockNumber = -2;\n this._inflight = false;\n }\n\n get event(): EventType {\n switch (this.type) {\n case \"tx\":\n return this.hash;\n case \"filter\":\n return this.filter;\n }\n return this.tag;\n }\n\n get type(): string {\n return this.tag.split(\":\")[0]\n }\n\n get hash(): string {\n const comps = this.tag.split(\":\");\n if (comps[0] !== \"tx\") { return null; }\n return comps[1];\n }\n\n get filter(): Filter {\n const comps = this.tag.split(\":\");\n if (comps[0] !== \"filter\") { return null; }\n const address = comps[1];\n\n const topics = deserializeTopics(comps[2]);\n const filter: Filter = { };\n\n if (topics.length > 0) { filter.topics = topics; }\n if (address && address !== \"*\") { filter.address = address; }\n\n return filter;\n }\n\n pollable(): boolean {\n return (this.tag.indexOf(\":\") >= 0 || PollableEvents.indexOf(this.tag) >= 0);\n }\n}\n\nexport interface EnsResolver {\n\n // Name this Resolver is associated with\n readonly name: string;\n\n // The address of the resolver\n readonly address: string;\n\n // Multichain address resolution (also normal address resolution)\n // See: https://eips.ethereum.org/EIPS/eip-2304\n getAddress(coinType?: 60): Promise\n\n // Contenthash field\n // See: https://eips.ethereum.org/EIPS/eip-1577\n getContentHash(): Promise;\n\n // Storage of text records\n // See: https://eips.ethereum.org/EIPS/eip-634\n getText(key: string): Promise;\n};\n\nexport interface EnsProvider {\n resolveName(name: string): Promise;\n lookupAddress(address: string): Promise;\n getResolver(name: string): Promise;\n}\n\ntype CoinInfo = {\n symbol: string,\n ilk?: string, // General family\n prefix?: string, // Bech32 prefix\n p2pkh?: number, // Pay-to-Public-Key-Hash Version\n p2sh?: number, // Pay-to-Script-Hash Version\n};\n\n// https://github.com/satoshilabs/slips/blob/master/slip-0044.md\nconst coinInfos: { [ coinType: string ]: CoinInfo } = {\n \"0\": { symbol: \"btc\", p2pkh: 0x00, p2sh: 0x05, prefix: \"bc\" },\n \"2\": { symbol: \"ltc\", p2pkh: 0x30, p2sh: 0x32, prefix: \"ltc\" },\n \"3\": { symbol: \"doge\", p2pkh: 0x1e, p2sh: 0x16 },\n \"60\": { symbol: \"eth\", ilk: \"eth\" },\n \"61\": { symbol: \"etc\", ilk: \"eth\" },\n \"700\": { symbol: \"xdai\", ilk: \"eth\" },\n};\n\nfunction bytes32ify(value: number): string {\n return hexZeroPad(BigNumber.from(value).toHexString(), 32);\n}\n\n// Compute the Base58Check encoded data (checksum is first 4 bytes of sha256d)\nfunction base58Encode(data: Uint8Array): string {\n return Base58.encode(concat([ data, hexDataSlice(sha256(sha256(data)), 0, 4) ]));\n}\n\nexport interface Avatar {\n url: string;\n linkage: Array<{ type: string, content: string }>;\n}\n\nconst matcherIpfs = new RegExp(\"^(ipfs):/\\/(.*)$\", \"i\");\nconst matchers = [\n new RegExp(\"^(https):/\\/(.*)$\", \"i\"),\n new RegExp(\"^(data):(.*)$\", \"i\"),\n matcherIpfs,\n new RegExp(\"^eip155:[0-9]+/(erc[0-9]+):(.*)$\", \"i\"),\n];\n\nfunction _parseString(result: string, start: number): null | string {\n try {\n return toUtf8String(_parseBytes(result, start));\n } catch(error) { }\n return null;\n}\n\nfunction _parseBytes(result: string, start: number): null | string {\n if (result === \"0x\") { return null; }\n\n const offset = BigNumber.from(hexDataSlice(result, start, start + 32)).toNumber();\n const length = BigNumber.from(hexDataSlice(result, offset, offset + 32)).toNumber();\n\n return hexDataSlice(result, offset + 32, offset + 32 + length);\n}\n\n// Trim off the ipfs:// prefix and return the default gateway URL\nfunction getIpfsLink(link: string): string {\n if (link.match(/^ipfs:\\/\\/ipfs\\//i)) {\n link = link.substring(12);\n } else if (link.match(/^ipfs:\\/\\//i)) {\n link = link.substring(7);\n } else {\n logger.throwArgumentError(\"unsupported IPFS format\", \"link\", link);\n }\n\n return `https:/\\/gateway.ipfs.io/ipfs/${ link }`;\n}\n\nfunction numPad(value: number): Uint8Array {\n const result = arrayify(value);\n if (result.length > 32) { throw new Error(\"internal; should not happen\"); }\n\n const padded = new Uint8Array(32);\n padded.set(result, 32 - result.length);\n return padded;\n}\n\nfunction bytesPad(value: Uint8Array): Uint8Array {\n if ((value.length % 32) === 0) { return value; }\n\n const result = new Uint8Array(Math.ceil(value.length / 32) * 32);\n result.set(value);\n return result;\n}\n\n// ABI Encodes a series of (bytes, bytes, ...)\nfunction encodeBytes(datas: Array) {\n const result: Array = [ ];\n\n let byteCount = 0;\n\n // Add place-holders for pointers as we add items\n for (let i = 0; i < datas.length; i++) {\n result.push(null);\n byteCount += 32;\n }\n\n for (let i = 0; i < datas.length; i++) {\n const data = arrayify(datas[i]);\n\n // Update the bytes offset\n result[i] = numPad(byteCount);\n\n // The length and padded value of data\n result.push(numPad(data.length));\n result.push(bytesPad(data));\n byteCount += 32 + Math.ceil(data.length / 32) * 32;\n }\n\n return hexConcat(result);\n}\n\nexport class Resolver implements EnsResolver {\n readonly provider: BaseProvider;\n\n readonly name: string;\n readonly address: string;\n\n readonly _resolvedAddress: null | string;\n\n // For EIP-2544 names, the ancestor that provided the resolver\n _supportsEip2544: null | Promise;\n\n // The resolvedAddress is only for creating a ReverseLookup resolver\n constructor(provider: BaseProvider, address: string, name: string, resolvedAddress?: string) {\n defineReadOnly(this, \"provider\", provider);\n defineReadOnly(this, \"name\", name);\n defineReadOnly(this, \"address\", provider.formatter.address(address));\n defineReadOnly(this, \"_resolvedAddress\", resolvedAddress);\n }\n\n supportsWildcard(): Promise {\n if (!this._supportsEip2544) {\n // supportsInterface(bytes4 = selector(\"resolve(bytes,bytes)\"))\n this._supportsEip2544 = this.provider.call({\n to: this.address,\n data: \"0x01ffc9a79061b92300000000000000000000000000000000000000000000000000000000\"\n }).then((result) => {\n return BigNumber.from(result).eq(1);\n }).catch((error) => {\n if (error.code === Logger.errors.CALL_EXCEPTION) { return false; }\n // Rethrow the error: link is down, etc. Let future attempts retry.\n this._supportsEip2544 = null;\n throw error;\n });\n }\n\n return this._supportsEip2544;\n }\n\n async _fetch(selector: string, parameters?: string): Promise {\n\n // e.g. keccak256(\"addr(bytes32,uint256)\")\n const tx = {\n to: this.address,\n ccipReadEnabled: true,\n data: hexConcat([ selector, namehash(this.name), (parameters || \"0x\") ])\n };\n\n // Wildcard support; use EIP-2544 to resolve the request\n let parseBytes = false;\n if (await this.supportsWildcard()) {\n parseBytes = true;\n\n // selector(\"resolve(bytes,bytes)\")\n tx.data = hexConcat([ \"0x9061b923\", encodeBytes([ dnsEncode(this.name), tx.data ]) ]);\n }\n\n try {\n let result = await this.provider.call(tx);\n if ((arrayify(result).length % 32) === 4) {\n logger.throwError(\"resolver threw error\", Logger.errors.CALL_EXCEPTION, {\n transaction: tx, data: result\n });\n }\n if (parseBytes) { result = _parseBytes(result, 0); }\n return result;\n } catch (error) {\n if (error.code === Logger.errors.CALL_EXCEPTION) { return null; }\n throw error;\n }\n }\n\n async _fetchBytes(selector: string, parameters?: string): Promise {\n const result = await this._fetch(selector, parameters);\n if (result != null) { return _parseBytes(result, 0); }\n return null;\n }\n\n _getAddress(coinType: number, hexBytes: string): string {\n const coinInfo = coinInfos[String(coinType)];\n\n if (coinInfo == null) {\n logger.throwError(`unsupported coin type: ${ coinType }`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: `getAddress(${ coinType })`\n });\n }\n\n if (coinInfo.ilk === \"eth\") {\n return this.provider.formatter.address(hexBytes);\n }\n\n const bytes = arrayify(hexBytes);\n\n // P2PKH: OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG\n if (coinInfo.p2pkh != null) {\n const p2pkh = hexBytes.match(/^0x76a9([0-9a-f][0-9a-f])([0-9a-f]*)88ac$/);\n if (p2pkh) {\n const length = parseInt(p2pkh[1], 16);\n if (p2pkh[2].length === length * 2 && length >= 1 && length <= 75) {\n return base58Encode(concat([ [ coinInfo.p2pkh ], (\"0x\" + p2pkh[2]) ]));\n }\n }\n }\n\n // P2SH: OP_HASH160 OP_EQUAL\n if (coinInfo.p2sh != null) {\n const p2sh = hexBytes.match(/^0xa9([0-9a-f][0-9a-f])([0-9a-f]*)87$/);\n if (p2sh) {\n const length = parseInt(p2sh[1], 16);\n if (p2sh[2].length === length * 2 && length >= 1 && length <= 75) {\n return base58Encode(concat([ [ coinInfo.p2sh ], (\"0x\" + p2sh[2]) ]));\n }\n }\n }\n\n // Bech32\n if (coinInfo.prefix != null) {\n const length = bytes[1];\n\n // https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki#witness-program\n let version = bytes[0];\n if (version === 0x00) {\n if (length !== 20 && length !== 32) {\n version = -1;\n }\n } else {\n version = -1;\n }\n\n if (version >= 0 && bytes.length === 2 + length && length >= 1 && length <= 75) {\n const words = bech32.toWords(bytes.slice(2));\n words.unshift(version);\n return bech32.encode(coinInfo.prefix, words);\n }\n }\n\n return null;\n }\n\n\n async getAddress(coinType?: number): Promise {\n if (coinType == null) { coinType = 60; }\n\n // If Ethereum, use the standard `addr(bytes32)`\n if (coinType === 60) {\n try {\n // keccak256(\"addr(bytes32)\")\n const result = await this._fetch(\"0x3b3b57de\");\n\n // No address\n if (result === \"0x\" || result === HashZero) { return null; }\n\n return this.provider.formatter.callAddress(result);\n } catch (error) {\n if (error.code === Logger.errors.CALL_EXCEPTION) { return null; }\n throw error;\n }\n }\n\n // keccak256(\"addr(bytes32,uint256\")\n const hexBytes = await this._fetchBytes(\"0xf1cb7e06\", bytes32ify(coinType));\n\n // No address\n if (hexBytes == null || hexBytes === \"0x\") { return null; }\n\n // Compute the address\n const address = this._getAddress(coinType, hexBytes);\n\n if (address == null) {\n logger.throwError(`invalid or unsupported coin data`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: `getAddress(${ coinType })`,\n coinType: coinType,\n data: hexBytes\n });\n }\n\n return address;\n }\n\n async getAvatar(): Promise {\n const linkage: Array<{ type: string, content: string }> = [ { type: \"name\", content: this.name } ];\n try {\n // test data for ricmoo.eth\n //const avatar = \"eip155:1/erc721:0x265385c7f4132228A0d54EB1A9e7460b91c0cC68/29233\";\n const avatar = await this.getText(\"avatar\");\n if (avatar == null) { return null; }\n\n for (let i = 0; i < matchers.length; i++) {\n const match = avatar.match(matchers[i]);\n if (match == null) { continue; }\n\n const scheme = match[1].toLowerCase();\n\n switch (scheme) {\n case \"https\":\n linkage.push({ type: \"url\", content: avatar });\n return { linkage, url: avatar };\n\n case \"data\":\n linkage.push({ type: \"data\", content: avatar });\n return { linkage, url: avatar };\n\n case \"ipfs\":\n linkage.push({ type: \"ipfs\", content: avatar });\n return { linkage, url: getIpfsLink(avatar) };\n\n case \"erc721\":\n case \"erc1155\": {\n // Depending on the ERC type, use tokenURI(uint256) or url(uint256)\n const selector = (scheme === \"erc721\") ? \"0xc87b56dd\": \"0x0e89341c\";\n linkage.push({ type: scheme, content: avatar });\n\n // The owner of this name\n const owner = (this._resolvedAddress || await this.getAddress());\n\n const comps = (match[2] || \"\").split(\"/\");\n if (comps.length !== 2) { return null; }\n\n const addr = await this.provider.formatter.address(comps[0]);\n const tokenId = hexZeroPad(BigNumber.from(comps[1]).toHexString(), 32);\n\n // Check that this account owns the token\n if (scheme === \"erc721\") {\n // ownerOf(uint256 tokenId)\n const tokenOwner = this.provider.formatter.callAddress(await this.provider.call({\n to: addr, data: hexConcat([ \"0x6352211e\", tokenId ])\n }));\n if (owner !== tokenOwner) { return null; }\n linkage.push({ type: \"owner\", content: tokenOwner });\n\n } else if (scheme === \"erc1155\") {\n // balanceOf(address owner, uint256 tokenId)\n const balance = BigNumber.from(await this.provider.call({\n to: addr, data: hexConcat([ \"0x00fdd58e\", hexZeroPad(owner, 32), tokenId ])\n }));\n if (balance.isZero()) { return null; }\n linkage.push({ type: \"balance\", content: balance.toString() });\n }\n\n // Call the token contract for the metadata URL\n const tx = {\n to: this.provider.formatter.address(comps[0]),\n data: hexConcat([ selector, tokenId ])\n };\n\n let metadataUrl = _parseString(await this.provider.call(tx), 0);\n if (metadataUrl == null) { return null; }\n linkage.push({ type: \"metadata-url-base\", content: metadataUrl });\n\n // ERC-1155 allows a generic {id} in the URL\n if (scheme === \"erc1155\") {\n metadataUrl = metadataUrl.replace(\"{id}\", tokenId.substring(2));\n linkage.push({ type: \"metadata-url-expanded\", content: metadataUrl });\n }\n\n // Transform IPFS metadata links\n if (metadataUrl.match(/^ipfs:/i)) {\n metadataUrl = getIpfsLink(metadataUrl);\n }\n\n linkage.push({ type: \"metadata-url\", content: metadataUrl });\n\n // Get the token metadata\n const metadata = await fetchJson(metadataUrl);\n if (!metadata) { return null; }\n linkage.push({ type: \"metadata\", content: JSON.stringify(metadata) });\n\n // Pull the image URL out\n let imageUrl = metadata.image;\n if (typeof(imageUrl) !== \"string\") { return null; }\n\n if (imageUrl.match(/^(https:\\/\\/|data:)/i)) {\n // Allow\n } else {\n // Transform IPFS link to gateway\n const ipfs = imageUrl.match(matcherIpfs);\n if (ipfs == null) { return null; }\n\n linkage.push({ type: \"url-ipfs\", content: imageUrl });\n imageUrl = getIpfsLink(imageUrl);\n }\n\n linkage.push({ type: \"url\", content: imageUrl });\n\n return { linkage, url: imageUrl };\n }\n }\n }\n } catch (error) { }\n\n return null;\n }\n\n async getContentHash(): Promise {\n\n // keccak256(\"contenthash()\")\n const hexBytes = await this._fetchBytes(\"0xbc1c58d1\");\n\n // No contenthash\n if (hexBytes == null || hexBytes === \"0x\") { return null; }\n\n // IPFS (CID: 1, Type: DAG-PB)\n const ipfs = hexBytes.match(/^0xe3010170(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);\n if (ipfs) {\n const length = parseInt(ipfs[3], 16);\n if (ipfs[4].length === length * 2) {\n return \"ipfs:/\\/\" + Base58.encode(\"0x\" + ipfs[1]);\n }\n }\n\n // IPNS (CID: 1, Type: libp2p-key)\n const ipns = hexBytes.match(/^0xe5010172(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);\n if (ipns) {\n const length = parseInt(ipns[3], 16);\n if (ipns[4].length === length * 2) {\n return \"ipns:/\\/\" + Base58.encode(\"0x\" + ipns[1]);\n }\n }\n\n // Swarm (CID: 1, Type: swarm-manifest; hash/length hard-coded to keccak256/32)\n const swarm = hexBytes.match(/^0xe40101fa011b20([0-9a-f]*)$/)\n if (swarm) {\n if (swarm[1].length === (32 * 2)) {\n return \"bzz:/\\/\" + swarm[1]\n }\n }\n\n const skynet = hexBytes.match(/^0x90b2c605([0-9a-f]*)$/);\n if (skynet) {\n if (skynet[1].length === (34 * 2)) {\n // URL Safe base64; https://datatracker.ietf.org/doc/html/rfc4648#section-5\n const urlSafe: Record = { \"=\": \"\", \"+\": \"-\", \"/\": \"_\" };\n const hash = base64Encode(\"0x\" + skynet[1]).replace(/[=+\\/]/g, (a) => (urlSafe[a]));\n return \"sia:/\\/\" + hash;\n }\n }\n\n return logger.throwError(`invalid or unsupported content hash data`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"getContentHash()\",\n data: hexBytes\n });\n }\n\n async getText(key: string): Promise {\n\n // The key encoded as parameter to fetchBytes\n let keyBytes = toUtf8Bytes(key);\n\n // The nodehash consumes the first slot, so the string pointer targets\n // offset 64, with the length at offset 64 and data starting at offset 96\n keyBytes = concat([ bytes32ify(64), bytes32ify(keyBytes.length), keyBytes ]);\n\n // Pad to word-size (32 bytes)\n if ((keyBytes.length % 32) !== 0) {\n keyBytes = concat([ keyBytes, hexZeroPad(\"0x\", 32 - (key.length % 32)) ])\n }\n\n const hexBytes = await this._fetchBytes(\"0x59d1d43c\", hexlify(keyBytes));\n if (hexBytes == null || hexBytes === \"0x\") { return null; }\n\n return toUtf8String(hexBytes);\n }\n}\n\nlet defaultFormatter: Formatter = null;\n\nlet nextPollId = 1;\n\nexport class BaseProvider extends Provider implements EnsProvider {\n _networkPromise: Promise;\n _network: Network;\n\n _events: Array;\n\n formatter: Formatter;\n\n // To help mitigate the eventually consistent nature of the blockchain\n // we keep a mapping of events we emit. If we emit an event X, we expect\n // that a user should be able to query for that event in the callback,\n // if the node returns null, we stall the response until we get back a\n // meaningful value, since we may be hitting a re-org, or a node that\n // has not indexed the event yet.\n // Events:\n // - t:{hash} - Transaction hash\n // - b:{hash} - BlockHash\n // - block - The most recent emitted block\n _emitted: { [ eventName: string ]: number | \"pending\" };\n\n _pollingInterval: number;\n _poller: NodeJS.Timer;\n _bootstrapPoll: NodeJS.Timer;\n\n _lastBlockNumber: number;\n _maxFilterBlockRange: number;\n\n _fastBlockNumber: number;\n _fastBlockNumberPromise: Promise;\n _fastQueryDate: number;\n\n _maxInternalBlockNumber: number;\n _internalBlockNumber: Promise<{ blockNumber: number, reqTime: number, respTime: number }>;\n\n readonly anyNetwork: boolean;\n\n disableCcipRead: boolean;\n\n\n /**\n * ready\n *\n * A Promise that resolves only once the provider is ready.\n *\n * Sub-classes that call the super with a network without a chainId\n * MUST set this. Standard named networks have a known chainId.\n *\n */\n\n constructor(network: Networkish | Promise) {\n super();\n\n // Events being listened to\n this._events = [];\n\n this._emitted = { block: -2 };\n\n this.disableCcipRead = false;\n\n this.formatter = new.target.getFormatter();\n\n // If network is any, this Provider allows the underlying\n // network to change dynamically, and we auto-detect the\n // current network\n defineReadOnly(this, \"anyNetwork\", (network === \"any\"));\n if (this.anyNetwork) { network = this.detectNetwork(); }\n\n if (network instanceof Promise) {\n this._networkPromise = network;\n\n // Squash any \"unhandled promise\" errors; that do not need to be handled\n network.catch((error) => { });\n\n // Trigger initial network setting (async)\n this._ready().catch((error) => { });\n\n } else {\n const knownNetwork = getStatic<(network: Networkish) => Network>(new.target, \"getNetwork\")(network);\n if (knownNetwork) {\n defineReadOnly(this, \"_network\", knownNetwork);\n this.emit(\"network\", knownNetwork, null);\n\n } else {\n logger.throwArgumentError(\"invalid network\", \"network\", network);\n }\n }\n\n this._maxInternalBlockNumber = -1024;\n\n this._lastBlockNumber = -2;\n this._maxFilterBlockRange = 10;\n\n this._pollingInterval = 4000;\n\n this._fastQueryDate = 0;\n }\n\n async _ready(): Promise {\n if (this._network == null) {\n let network: Network = null;\n if (this._networkPromise) {\n try {\n network = await this._networkPromise;\n } catch (error) { }\n }\n\n // Try the Provider's network detection (this MUST throw if it cannot)\n if (network == null) {\n network = await this.detectNetwork();\n }\n\n // This should never happen; every Provider sub-class should have\n // suggested a network by here (or have thrown).\n if (!network) {\n logger.throwError(\"no network detected\", Logger.errors.UNKNOWN_ERROR, { });\n }\n\n // Possible this call stacked so do not call defineReadOnly again\n if (this._network == null) {\n if (this.anyNetwork) {\n this._network = network;\n } else {\n defineReadOnly(this, \"_network\", network);\n }\n this.emit(\"network\", network, null);\n }\n }\n\n return this._network;\n }\n\n // This will always return the most recently established network.\n // For \"any\", this can change (a \"network\" event is emitted before\n // any change is reflected); otherwise this cannot change\n get ready(): Promise {\n return poll(() => {\n return this._ready().then((network) => {\n return network;\n }, (error) => {\n // If the network isn't running yet, we will wait\n if (error.code === Logger.errors.NETWORK_ERROR && error.event === \"noNetwork\") {\n return undefined;\n }\n throw error;\n });\n });\n }\n\n // @TODO: Remove this and just create a singleton formatter\n static getFormatter(): Formatter {\n if (defaultFormatter == null) {\n defaultFormatter = new Formatter();\n }\n return defaultFormatter;\n }\n\n // @TODO: Remove this and just use getNetwork\n static getNetwork(network: Networkish): Network {\n return getNetwork((network == null) ? \"homestead\": network);\n }\n\n async ccipReadFetch(tx: Transaction, calldata: string, urls: Array): Promise {\n if (this.disableCcipRead || urls.length === 0) { return null; }\n\n const sender = tx.to.toLowerCase();\n const data = calldata.toLowerCase();\n\n const errorMessages: Array = [ ];\n\n for (let i = 0; i < urls.length; i++) {\n const url = urls[i];\n\n // URL expansion\n const href = url.replace(\"{sender}\", sender).replace(\"{data}\", data);\n\n // If no {data} is present, use POST; otherwise GET\n const json: string | null = (url.indexOf(\"{data}\") >= 0) ? null: JSON.stringify({ data, sender });\n\n const result = await fetchJson({ url: href, errorPassThrough: true }, json, (value, response) => {\n value.status = response.statusCode;\n return value;\n });\n\n if (result.data) { return result.data; }\n\n const errorMessage = (result.message || \"unknown error\");\n\n // 4xx indicates the result is not present; stop\n if (result.status >= 400 && result.status < 500) {\n return logger.throwError(`response not found during CCIP fetch: ${ errorMessage }`, Logger.errors.SERVER_ERROR, { url, errorMessage });\n }\n\n // 5xx indicates server issue; try the next url\n errorMessages.push(errorMessage);\n }\n\n return logger.throwError(`error encountered during CCIP fetch: ${ errorMessages.map((m) => JSON.stringify(m)).join(\", \") }`, Logger.errors.SERVER_ERROR, {\n urls, errorMessages\n });\n }\n\n // Fetches the blockNumber, but will reuse any result that is less\n // than maxAge old or has been requested since the last request\n async _getInternalBlockNumber(maxAge: number): Promise {\n await this._ready();\n\n // Allowing stale data up to maxAge old\n if (maxAge > 0) {\n\n // While there are pending internal block requests...\n while (this._internalBlockNumber) {\n\n // ...\"remember\" which fetch we started with\n const internalBlockNumber = this._internalBlockNumber;\n\n try {\n // Check the result is not too stale\n const result = await internalBlockNumber;\n if ((getTime() - result.respTime) <= maxAge) {\n return result.blockNumber;\n }\n\n // Too old; fetch a new value\n break;\n\n } catch(error) {\n\n // The fetch rejected; if we are the first to get the\n // rejection, drop through so we replace it with a new\n // fetch; all others blocked will then get that fetch\n // which won't match the one they \"remembered\" and loop\n if (this._internalBlockNumber === internalBlockNumber) {\n break;\n }\n }\n }\n }\n\n const reqTime = getTime();\n\n const checkInternalBlockNumber = resolveProperties({\n blockNumber: this.perform(\"getBlockNumber\", { }),\n networkError: this.getNetwork().then((network) => (null), (error) => (error))\n }).then(({ blockNumber, networkError }) => {\n if (networkError) {\n // Unremember this bad internal block number\n if (this._internalBlockNumber === checkInternalBlockNumber) {\n this._internalBlockNumber = null;\n }\n throw networkError;\n }\n\n const respTime = getTime();\n\n blockNumber = BigNumber.from(blockNumber).toNumber();\n if (blockNumber < this._maxInternalBlockNumber) { blockNumber = this._maxInternalBlockNumber; }\n\n this._maxInternalBlockNumber = blockNumber;\n this._setFastBlockNumber(blockNumber); // @TODO: Still need this?\n return { blockNumber, reqTime, respTime };\n });\n\n this._internalBlockNumber = checkInternalBlockNumber;\n\n // Swallow unhandled exceptions; if needed they are handled else where\n checkInternalBlockNumber.catch((error) => {\n // Don't null the dead (rejected) fetch, if it has already been updated\n if (this._internalBlockNumber === checkInternalBlockNumber) {\n this._internalBlockNumber = null;\n }\n });\n\n return (await checkInternalBlockNumber).blockNumber;\n }\n\n async poll(): Promise {\n const pollId = nextPollId++;\n\n // Track all running promises, so we can trigger a post-poll once they are complete\n const runners: Array> = [];\n\n let blockNumber: number = null;\n try {\n blockNumber = await this._getInternalBlockNumber(100 + this.pollingInterval / 2);\n } catch (error) {\n this.emit(\"error\", error);\n return;\n }\n this._setFastBlockNumber(blockNumber);\n\n // Emit a poll event after we have the latest (fast) block number\n this.emit(\"poll\", pollId, blockNumber);\n\n // If the block has not changed, meh.\n if (blockNumber === this._lastBlockNumber) {\n this.emit(\"didPoll\", pollId);\n return;\n }\n\n // First polling cycle, trigger a \"block\" events\n if (this._emitted.block === -2) {\n this._emitted.block = blockNumber - 1;\n }\n\n if (Math.abs(((this._emitted.block)) - blockNumber) > 1000) {\n logger.warn(`network block skew detected; skipping block events (emitted=${ this._emitted.block } blockNumber${ blockNumber })`);\n this.emit(\"error\", logger.makeError(\"network block skew detected\", Logger.errors.NETWORK_ERROR, {\n blockNumber: blockNumber,\n event: \"blockSkew\",\n previousBlockNumber: this._emitted.block\n }));\n this.emit(\"block\", blockNumber);\n\n } else {\n // Notify all listener for each block that has passed\n for (let i = (this._emitted.block) + 1; i <= blockNumber; i++) {\n this.emit(\"block\", i);\n }\n }\n\n // The emitted block was updated, check for obsolete events\n if ((this._emitted.block) !== blockNumber) {\n this._emitted.block = blockNumber;\n\n Object.keys(this._emitted).forEach((key) => {\n // The block event does not expire\n if (key === \"block\") { return; }\n\n // The block we were at when we emitted this event\n const eventBlockNumber = this._emitted[key];\n\n // We cannot garbage collect pending transactions or blocks here\n // They should be garbage collected by the Provider when setting\n // \"pending\" events\n if (eventBlockNumber === \"pending\") { return; }\n\n // Evict any transaction hashes or block hashes over 12 blocks\n // old, since they should not return null anyways\n if (blockNumber - eventBlockNumber > 12) {\n delete this._emitted[key];\n }\n });\n }\n\n // First polling cycle\n if (this._lastBlockNumber === -2) {\n this._lastBlockNumber = blockNumber - 1;\n }\n // Find all transaction hashes we are waiting on\n this._events.forEach((event) => {\n switch (event.type) {\n case \"tx\": {\n const hash = event.hash;\n let runner = this.getTransactionReceipt(hash).then((receipt) => {\n if (!receipt || receipt.blockNumber == null) { return null; }\n this._emitted[\"t:\" + hash] = receipt.blockNumber;\n this.emit(hash, receipt);\n return null;\n }).catch((error: Error) => { this.emit(\"error\", error); });\n\n runners.push(runner);\n\n break;\n }\n\n case \"filter\": {\n // We only allow a single getLogs to be in-flight at a time\n if (!event._inflight) {\n event._inflight = true;\n\n // This is the first filter for this event, so we want to\n // restrict events to events that happened no earlier than now\n if (event._lastBlockNumber === -2) {\n event._lastBlockNumber = blockNumber - 1;\n }\n\n // Filter from the last *known* event; due to load-balancing\n // and some nodes returning updated block numbers before\n // indexing events, a logs result with 0 entries cannot be\n // trusted and we must retry a range which includes it again\n const filter = event.filter;\n filter.fromBlock = event._lastBlockNumber + 1;\n filter.toBlock = blockNumber;\n\n // Prevent fitler ranges from growing too wild, since it is quite\n // likely there just haven't been any events to move the lastBlockNumber.\n const minFromBlock = filter.toBlock - this._maxFilterBlockRange;\n if (minFromBlock > filter.fromBlock) { filter.fromBlock = minFromBlock; }\n\n if (filter.fromBlock < 0) { filter.fromBlock = 0; }\n\n const runner = this.getLogs(filter).then((logs) => {\n // Allow the next getLogs\n event._inflight = false;\n\n if (logs.length === 0) { return; }\n\n logs.forEach((log: Log) => {\n // Only when we get an event for a given block number\n // can we trust the events are indexed\n if (log.blockNumber > event._lastBlockNumber) {\n event._lastBlockNumber = log.blockNumber;\n }\n\n // Make sure we stall requests to fetch blocks and txs\n this._emitted[\"b:\" + log.blockHash] = log.blockNumber;\n this._emitted[\"t:\" + log.transactionHash] = log.blockNumber;\n\n this.emit(filter, log);\n });\n }).catch((error: Error) => {\n this.emit(\"error\", error);\n\n // Allow another getLogs (the range was not updated)\n event._inflight = false;\n });\n runners.push(runner);\n }\n\n break;\n }\n }\n });\n\n this._lastBlockNumber = blockNumber;\n\n // Once all events for this loop have been processed, emit \"didPoll\"\n Promise.all(runners).then(() => {\n this.emit(\"didPoll\", pollId);\n }).catch((error) => { this.emit(\"error\", error); });\n\n return;\n }\n\n // Deprecated; do not use this\n resetEventsBlock(blockNumber: number): void {\n this._lastBlockNumber = blockNumber - 1;\n if (this.polling) { this.poll(); }\n }\n\n get network(): Network {\n return this._network;\n }\n\n // This method should query the network if the underlying network\n // can change, such as when connected to a JSON-RPC backend\n async detectNetwork(): Promise {\n return logger.throwError(\"provider does not support network detection\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"provider.detectNetwork\"\n });\n }\n\n async getNetwork(): Promise {\n const network = await this._ready();\n\n // Make sure we are still connected to the same network; this is\n // only an external call for backends which can have the underlying\n // network change spontaneously\n const currentNetwork = await this.detectNetwork();\n if (network.chainId !== currentNetwork.chainId) {\n\n // We are allowing network changes, things can get complex fast;\n // make sure you know what you are doing if you use \"any\"\n if (this.anyNetwork) {\n this._network = currentNetwork;\n\n // Reset all internal block number guards and caches\n this._lastBlockNumber = -2;\n this._fastBlockNumber = null;\n this._fastBlockNumberPromise = null;\n this._fastQueryDate = 0;\n this._emitted.block = -2;\n this._maxInternalBlockNumber = -1024;\n this._internalBlockNumber = null;\n\n // The \"network\" event MUST happen before this method resolves\n // so any events have a chance to unregister, so we stall an\n // additional event loop before returning from /this/ call\n this.emit(\"network\", currentNetwork, network);\n await stall(0);\n\n return this._network;\n }\n\n const error = logger.makeError(\"underlying network changed\", Logger.errors.NETWORK_ERROR, {\n event: \"changed\",\n network: network,\n detectedNetwork: currentNetwork\n });\n\n this.emit(\"error\", error);\n throw error;\n }\n\n return network;\n }\n\n get blockNumber(): number {\n this._getInternalBlockNumber(100 + this.pollingInterval / 2).then((blockNumber) => {\n this._setFastBlockNumber(blockNumber);\n }, (error) => { });\n\n return (this._fastBlockNumber != null) ? this._fastBlockNumber: -1;\n }\n\n get polling(): boolean {\n return (this._poller != null);\n }\n\n set polling(value: boolean) {\n if (value && !this._poller) {\n this._poller = setInterval(() => { this.poll(); }, this.pollingInterval);\n\n if (!this._bootstrapPoll) {\n this._bootstrapPoll = setTimeout(() => {\n this.poll();\n\n // We block additional polls until the polling interval\n // is done, to prevent overwhelming the poll function\n this._bootstrapPoll = setTimeout(() => {\n // If polling was disabled, something may require a poke\n // since starting the bootstrap poll and it was disabled\n if (!this._poller) { this.poll(); }\n\n // Clear out the bootstrap so we can do another\n this._bootstrapPoll = null;\n }, this.pollingInterval);\n }, 0);\n }\n\n } else if (!value && this._poller) {\n clearInterval(this._poller);\n this._poller = null;\n }\n }\n\n get pollingInterval(): number {\n return this._pollingInterval;\n }\n\n set pollingInterval(value: number) {\n if (typeof(value) !== \"number\" || value <= 0 || parseInt(String(value)) != value) {\n throw new Error(\"invalid polling interval\");\n }\n\n this._pollingInterval = value;\n\n if (this._poller) {\n clearInterval(this._poller);\n this._poller = setInterval(() => { this.poll(); }, this._pollingInterval);\n }\n }\n\n _getFastBlockNumber(): Promise {\n const now = getTime();\n\n // Stale block number, request a newer value\n if ((now - this._fastQueryDate) > 2 * this._pollingInterval) {\n this._fastQueryDate = now;\n this._fastBlockNumberPromise = this.getBlockNumber().then((blockNumber) => {\n if (this._fastBlockNumber == null || blockNumber > this._fastBlockNumber) {\n this._fastBlockNumber = blockNumber;\n }\n return this._fastBlockNumber;\n });\n }\n\n return this._fastBlockNumberPromise;\n }\n\n _setFastBlockNumber(blockNumber: number): void {\n // Older block, maybe a stale request\n if (this._fastBlockNumber != null && blockNumber < this._fastBlockNumber) { return; }\n\n // Update the time we updated the blocknumber\n this._fastQueryDate = getTime();\n\n // Newer block number, use it\n if (this._fastBlockNumber == null || blockNumber > this._fastBlockNumber) {\n this._fastBlockNumber = blockNumber;\n this._fastBlockNumberPromise = Promise.resolve(blockNumber);\n }\n }\n\n async waitForTransaction(transactionHash: string, confirmations?: number, timeout?: number): Promise {\n return this._waitForTransaction(transactionHash, (confirmations == null) ? 1: confirmations, timeout || 0, null);\n }\n\n async _waitForTransaction(transactionHash: string, confirmations: number, timeout: number, replaceable: { data: string, from: string, nonce: number, to: string, value: BigNumber, startBlock: number }): Promise {\n const receipt = await this.getTransactionReceipt(transactionHash);\n\n // Receipt is already good\n if ((receipt ? receipt.confirmations: 0) >= confirmations) { return receipt; }\n\n // Poll until the receipt is good...\n return new Promise((resolve, reject) => {\n const cancelFuncs: Array<() => void> = [];\n\n let done = false;\n const alreadyDone = function() {\n if (done) { return true; }\n done = true;\n cancelFuncs.forEach((func) => { func(); });\n return false;\n };\n\n const minedHandler = (receipt: TransactionReceipt) => {\n if (receipt.confirmations < confirmations) { return; }\n if (alreadyDone()) { return; }\n resolve(receipt);\n }\n this.on(transactionHash, minedHandler);\n cancelFuncs.push(() => { this.removeListener(transactionHash, minedHandler); });\n\n if (replaceable) {\n let lastBlockNumber = replaceable.startBlock;\n let scannedBlock: number = null;\n const replaceHandler = async (blockNumber: number) => {\n if (done) { return; }\n\n // Wait 1 second; this is only used in the case of a fault, so\n // we will trade off a little bit of latency for more consistent\n // results and fewer JSON-RPC calls\n await stall(1000);\n\n this.getTransactionCount(replaceable.from).then(async (nonce) => {\n if (done) { return; }\n\n if (nonce <= replaceable.nonce) {\n lastBlockNumber = blockNumber;\n\n } else {\n // First check if the transaction was mined\n {\n const mined = await this.getTransaction(transactionHash);\n if (mined && mined.blockNumber != null) { return; }\n }\n\n // First time scanning. We start a little earlier for some\n // wiggle room here to handle the eventually consistent nature\n // of blockchain (e.g. the getTransactionCount was for a\n // different block)\n if (scannedBlock == null) {\n scannedBlock = lastBlockNumber - 3;\n if (scannedBlock < replaceable.startBlock) {\n scannedBlock = replaceable.startBlock;\n }\n }\n\n while (scannedBlock <= blockNumber) {\n if (done) { return; }\n\n const block = await this.getBlockWithTransactions(scannedBlock);\n for (let ti = 0; ti < block.transactions.length; ti++) {\n const tx = block.transactions[ti];\n\n // Successfully mined!\n if (tx.hash === transactionHash) { return; }\n\n // Matches our transaction from and nonce; its a replacement\n if (tx.from === replaceable.from && tx.nonce === replaceable.nonce) {\n if (done) { return; }\n\n // Get the receipt of the replacement\n const receipt = await this.waitForTransaction(tx.hash, confirmations);\n\n // Already resolved or rejected (prolly a timeout)\n if (alreadyDone()) { return; }\n\n // The reason we were replaced\n let reason = \"replaced\";\n if (tx.data === replaceable.data && tx.to === replaceable.to && tx.value.eq(replaceable.value)) {\n reason = \"repriced\";\n } else if (tx.data === \"0x\" && tx.from === tx.to && tx.value.isZero()) {\n reason = \"cancelled\"\n }\n\n // Explain why we were replaced\n reject(logger.makeError(\"transaction was replaced\", Logger.errors.TRANSACTION_REPLACED, {\n cancelled: (reason === \"replaced\" || reason === \"cancelled\"),\n reason,\n replacement: this._wrapTransaction(tx),\n hash: transactionHash,\n receipt\n }));\n\n return;\n }\n }\n scannedBlock++;\n }\n }\n\n if (done) { return; }\n this.once(\"block\", replaceHandler);\n\n }, (error) => {\n if (done) { return; }\n this.once(\"block\", replaceHandler);\n });\n };\n\n if (done) { return; }\n this.once(\"block\", replaceHandler);\n\n cancelFuncs.push(() => {\n this.removeListener(\"block\", replaceHandler);\n });\n }\n\n if (typeof(timeout) === \"number\" && timeout > 0) {\n const timer = setTimeout(() => {\n if (alreadyDone()) { return; }\n reject(logger.makeError(\"timeout exceeded\", Logger.errors.TIMEOUT, { timeout: timeout }));\n }, timeout);\n if (timer.unref) { timer.unref(); }\n\n cancelFuncs.push(() => { clearTimeout(timer); });\n }\n });\n }\n\n async getBlockNumber(): Promise {\n return this._getInternalBlockNumber(0);\n }\n\n async getGasPrice(): Promise {\n await this.getNetwork();\n\n const result = await this.perform(\"getGasPrice\", { });\n try {\n return BigNumber.from(result);\n } catch (error) {\n return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n method: \"getGasPrice\",\n result, error\n });\n }\n }\n\n async getBalance(addressOrName: string | Promise, blockTag?: BlockTag | Promise): Promise {\n await this.getNetwork();\n const params = await resolveProperties({\n address: this._getAddress(addressOrName),\n blockTag: this._getBlockTag(blockTag)\n });\n\n const result = await this.perform(\"getBalance\", params);\n try {\n return BigNumber.from(result);\n } catch (error) {\n return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n method: \"getBalance\",\n params, result, error\n });\n }\n }\n\n async getTransactionCount(addressOrName: string | Promise, blockTag?: BlockTag | Promise): Promise {\n await this.getNetwork();\n const params = await resolveProperties({\n address: this._getAddress(addressOrName),\n blockTag: this._getBlockTag(blockTag)\n });\n\n const result = await this.perform(\"getTransactionCount\", params);\n try {\n return BigNumber.from(result).toNumber();\n } catch (error) {\n return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n method: \"getTransactionCount\",\n params, result, error\n });\n }\n }\n\n async getCode(addressOrName: string | Promise, blockTag?: BlockTag | Promise): Promise {\n await this.getNetwork();\n const params = await resolveProperties({\n address: this._getAddress(addressOrName),\n blockTag: this._getBlockTag(blockTag)\n });\n\n const result = await this.perform(\"getCode\", params);\n try {\n return hexlify(result);\n } catch (error) {\n return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n method: \"getCode\",\n params, result, error\n });\n }\n }\n\n async getStorageAt(addressOrName: string | Promise, position: BigNumberish | Promise, blockTag?: BlockTag | Promise): Promise {\n await this.getNetwork();\n const params = await resolveProperties({\n address: this._getAddress(addressOrName),\n blockTag: this._getBlockTag(blockTag),\n position: Promise.resolve(position).then((p) => hexValue(p))\n });\n const result = await this.perform(\"getStorageAt\", params);\n try {\n return hexlify(result);\n } catch (error) {\n return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n method: \"getStorageAt\",\n params, result, error\n });\n }\n }\n\n // This should be called by any subclass wrapping a TransactionResponse\n _wrapTransaction(tx: Transaction, hash?: string, startBlock?: number): TransactionResponse {\n if (hash != null && hexDataLength(hash) !== 32) { throw new Error(\"invalid response - sendTransaction\"); }\n\n const result = tx;\n\n // Check the hash we expect is the same as the hash the server reported\n if (hash != null && tx.hash !== hash) {\n logger.throwError(\"Transaction hash mismatch from Provider.sendTransaction.\", Logger.errors.UNKNOWN_ERROR, { expectedHash: tx.hash, returnedHash: hash });\n }\n\n result.wait = async (confirms?: number, timeout?: number) => {\n if (confirms == null) { confirms = 1; }\n if (timeout == null) { timeout = 0; }\n\n // Get the details to detect replacement\n let replacement = undefined;\n if (confirms !== 0 && startBlock != null) {\n replacement = {\n data: tx.data,\n from: tx.from,\n nonce: tx.nonce,\n to: tx.to,\n value: tx.value,\n startBlock\n };\n }\n\n const receipt = await this._waitForTransaction(tx.hash, confirms, timeout, replacement);\n if (receipt == null && confirms === 0) { return null; }\n\n // No longer pending, allow the polling loop to garbage collect this\n this._emitted[\"t:\" + tx.hash] = receipt.blockNumber;\n\n if (receipt.status === 0) {\n logger.throwError(\"transaction failed\", Logger.errors.CALL_EXCEPTION, {\n transactionHash: tx.hash,\n transaction: tx,\n receipt: receipt\n });\n }\n return receipt;\n };\n\n return result;\n }\n\n async sendTransaction(signedTransaction: string | Promise): Promise {\n await this.getNetwork();\n const hexTx = await Promise.resolve(signedTransaction).then(t => hexlify(t));\n const tx = this.formatter.transaction(signedTransaction);\n if (tx.confirmations == null) { tx.confirmations = 0; }\n const blockNumber = await this._getInternalBlockNumber(100 + 2 * this.pollingInterval);\n try {\n const hash = await this.perform(\"sendTransaction\", { signedTransaction: hexTx });\n return this._wrapTransaction(tx, hash, blockNumber);\n } catch (error) {\n (error).transaction = tx;\n (error).transactionHash = tx.hash;\n throw error;\n }\n }\n\n async _getTransactionRequest(transaction: Deferrable): Promise {\n const values: any = await transaction;\n\n const tx: any = { };\n\n [\"from\", \"to\"].forEach((key) => {\n if (values[key] == null) { return; }\n tx[key] = Promise.resolve(values[key]).then((v) => (v ? this._getAddress(v): null))\n });\n\n [\"gasLimit\", \"gasPrice\", \"maxFeePerGas\", \"maxPriorityFeePerGas\", \"value\"].forEach((key) => {\n if (values[key] == null) { return; }\n tx[key] = Promise.resolve(values[key]).then((v) => (v ? BigNumber.from(v): null));\n });\n\n [\"type\"].forEach((key) => {\n if (values[key] == null) { return; }\n tx[key] = Promise.resolve(values[key]).then((v) => ((v != null) ? v: null));\n });\n\n if (values.accessList) {\n tx.accessList = this.formatter.accessList(values.accessList);\n }\n\n [\"data\"].forEach((key) => {\n if (values[key] == null) { return; }\n tx[key] = Promise.resolve(values[key]).then((v) => (v ? hexlify(v): null));\n });\n\n return this.formatter.transactionRequest(await resolveProperties(tx));\n }\n\n async _getFilter(filter: Filter | FilterByBlockHash | Promise): Promise {\n filter = await filter;\n\n const result: any = { };\n\n if (filter.address != null) {\n result.address = this._getAddress(filter.address);\n }\n\n [\"blockHash\", \"topics\"].forEach((key) => {\n if ((filter)[key] == null) { return; }\n result[key] = (filter)[key];\n });\n\n [\"fromBlock\", \"toBlock\"].forEach((key) => {\n if ((filter)[key] == null) { return; }\n result[key] = this._getBlockTag((filter)[key]);\n });\n\n return this.formatter.filter(await resolveProperties(result));\n }\n\n async _call(transaction: TransactionRequest, blockTag: BlockTag, attempt: number): Promise {\n if (attempt >= MAX_CCIP_REDIRECTS) {\n logger.throwError(\"CCIP read exceeded maximum redirections\", Logger.errors.SERVER_ERROR, {\n redirects: attempt, transaction\n });\n }\n\n const txSender = transaction.to;\n\n const result = await this.perform(\"call\", { transaction, blockTag });\n\n // CCIP Read request via OffchainLookup(address,string[],bytes,bytes4,bytes)\n if (attempt >= 0 && blockTag === \"latest\" && txSender != null && result.substring(0, 10) === \"0x556f1830\" && (hexDataLength(result) % 32 === 4)) {\n try {\n const data = hexDataSlice(result, 4);\n\n // Check the sender of the OffchainLookup matches the transaction\n const sender = hexDataSlice(data, 0, 32);\n if (!BigNumber.from(sender).eq(txSender)) {\n logger.throwError(\"CCIP Read sender did not match\", Logger.errors.CALL_EXCEPTION, {\n name: \"OffchainLookup\",\n signature: \"OffchainLookup(address,string[],bytes,bytes4,bytes)\",\n transaction, data: result\n });\n }\n\n // Read the URLs from the response\n const urls: Array = [];\n const urlsOffset = BigNumber.from(hexDataSlice(data, 32, 64)).toNumber();\n const urlsLength = BigNumber.from(hexDataSlice(data, urlsOffset, urlsOffset + 32)).toNumber();\n const urlsData = hexDataSlice(data, urlsOffset + 32);\n for (let u = 0; u < urlsLength; u++) {\n const url = _parseString(urlsData, u * 32);\n if (url == null) {\n logger.throwError(\"CCIP Read contained corrupt URL string\", Logger.errors.CALL_EXCEPTION, {\n name: \"OffchainLookup\",\n signature: \"OffchainLookup(address,string[],bytes,bytes4,bytes)\",\n transaction, data: result\n });\n }\n urls.push(url);\n }\n\n // Get the CCIP calldata to forward\n const calldata = _parseBytes(data, 64);\n\n // Get the callbackSelector (bytes4)\n if (!BigNumber.from(hexDataSlice(data, 100, 128)).isZero()) {\n logger.throwError(\"CCIP Read callback selector included junk\", Logger.errors.CALL_EXCEPTION, {\n name: \"OffchainLookup\",\n signature: \"OffchainLookup(address,string[],bytes,bytes4,bytes)\",\n transaction, data: result\n });\n }\n const callbackSelector = hexDataSlice(data, 96, 100);\n\n // Get the extra data to send back to the contract as context\n const extraData = _parseBytes(data, 128);\n\n const ccipResult = await this.ccipReadFetch(transaction, calldata, urls);\n if (ccipResult == null) {\n logger.throwError(\"CCIP Read disabled or provided no URLs\", Logger.errors.CALL_EXCEPTION, {\n name: \"OffchainLookup\",\n signature: \"OffchainLookup(address,string[],bytes,bytes4,bytes)\",\n transaction, data: result\n });\n }\n\n const tx = {\n to: txSender,\n data: hexConcat([ callbackSelector, encodeBytes([ ccipResult, extraData ]) ])\n };\n\n return this._call(tx, blockTag, attempt + 1);\n\n } catch (error) {\n if (error.code === Logger.errors.SERVER_ERROR) { throw error; }\n }\n }\n\n try {\n return hexlify(result);\n } catch (error) {\n return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n method: \"call\",\n params: { transaction, blockTag }, result, error\n });\n }\n\n }\n\n async call(transaction: Deferrable, blockTag?: BlockTag | Promise): Promise {\n await this.getNetwork();\n const resolved = await resolveProperties({\n transaction: this._getTransactionRequest(transaction),\n blockTag: this._getBlockTag(blockTag),\n ccipReadEnabled: Promise.resolve(transaction.ccipReadEnabled)\n });\n return this._call(resolved.transaction, resolved.blockTag, resolved.ccipReadEnabled ? 0: -1);\n }\n\n async estimateGas(transaction: Deferrable): Promise {\n await this.getNetwork();\n const params = await resolveProperties({\n transaction: this._getTransactionRequest(transaction)\n });\n\n const result = await this.perform(\"estimateGas\", params);\n try {\n return BigNumber.from(result);\n } catch (error) {\n return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n method: \"estimateGas\",\n params, result, error\n });\n }\n }\n\n async _getAddress(addressOrName: string | Promise): Promise {\n addressOrName = await addressOrName;\n if (typeof(addressOrName) !== \"string\") {\n logger.throwArgumentError(\"invalid address or ENS name\", \"name\", addressOrName);\n }\n\n const address = await this.resolveName(addressOrName);\n if (address == null) {\n logger.throwError(\"ENS name not configured\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: `resolveName(${ JSON.stringify(addressOrName) })`\n });\n }\n return address;\n }\n\n async _getBlock(blockHashOrBlockTag: BlockTag | string | Promise, includeTransactions?: boolean): Promise {\n await this.getNetwork();\n\n blockHashOrBlockTag = await blockHashOrBlockTag;\n\n // If blockTag is a number (not \"latest\", etc), this is the block number\n let blockNumber = -128;\n\n const params: { [key: string]: any } = {\n includeTransactions: !!includeTransactions\n };\n\n if (isHexString(blockHashOrBlockTag, 32)) {\n params.blockHash = blockHashOrBlockTag;\n } else {\n try {\n params.blockTag = await this._getBlockTag(blockHashOrBlockTag);\n if (isHexString(params.blockTag)) {\n blockNumber = parseInt(params.blockTag.substring(2), 16);\n }\n } catch (error) {\n logger.throwArgumentError(\"invalid block hash or block tag\", \"blockHashOrBlockTag\", blockHashOrBlockTag);\n }\n }\n\n return poll(async () => {\n const block = await this.perform(\"getBlock\", params);\n\n // Block was not found\n if (block == null) {\n\n // For blockhashes, if we didn't say it existed, that blockhash may\n // not exist. If we did see it though, perhaps from a log, we know\n // it exists, and this node is just not caught up yet.\n if (params.blockHash != null) {\n if (this._emitted[\"b:\" + params.blockHash] == null) { return null; }\n }\n\n // For block tags, if we are asking for a future block, we return null\n if (params.blockTag != null) {\n if (blockNumber > this._emitted.block) { return null; }\n }\n\n // Retry on the next block\n return undefined;\n }\n\n // Add transactions\n if (includeTransactions) {\n let blockNumber: number = null;\n for (let i = 0; i < block.transactions.length; i++) {\n const tx = block.transactions[i];\n if (tx.blockNumber == null) {\n tx.confirmations = 0;\n\n } else if (tx.confirmations == null) {\n if (blockNumber == null) {\n blockNumber = await this._getInternalBlockNumber(100 + 2 * this.pollingInterval);\n }\n\n // Add the confirmations using the fast block number (pessimistic)\n let confirmations = (blockNumber - tx.blockNumber) + 1;\n if (confirmations <= 0) { confirmations = 1; }\n tx.confirmations = confirmations;\n }\n }\n\n const blockWithTxs: any = this.formatter.blockWithTransactions(block);\n blockWithTxs.transactions = blockWithTxs.transactions.map((tx: TransactionResponse) => this._wrapTransaction(tx));\n return blockWithTxs;\n }\n\n return this.formatter.block(block);\n\n }, { oncePoll: this });\n }\n\n getBlock(blockHashOrBlockTag: BlockTag | string | Promise): Promise {\n return >(this._getBlock(blockHashOrBlockTag, false));\n }\n\n getBlockWithTransactions(blockHashOrBlockTag: BlockTag | string | Promise): Promise {\n return >(this._getBlock(blockHashOrBlockTag, true));\n }\n\n async getTransaction(transactionHash: string | Promise): Promise {\n await this.getNetwork();\n transactionHash = await transactionHash;\n\n const params = { transactionHash: this.formatter.hash(transactionHash, true) };\n\n return poll(async () => {\n const result = await this.perform(\"getTransaction\", params);\n\n if (result == null) {\n if (this._emitted[\"t:\" + transactionHash] == null) {\n return null;\n }\n return undefined;\n }\n\n const tx = this.formatter.transactionResponse(result);\n\n if (tx.blockNumber == null) {\n tx.confirmations = 0;\n\n } else if (tx.confirmations == null) {\n const blockNumber = await this._getInternalBlockNumber(100 + 2 * this.pollingInterval);\n\n // Add the confirmations using the fast block number (pessimistic)\n let confirmations = (blockNumber - tx.blockNumber) + 1;\n if (confirmations <= 0) { confirmations = 1; }\n tx.confirmations = confirmations;\n }\n\n return this._wrapTransaction(tx);\n }, { oncePoll: this });\n }\n\n async getTransactionReceipt(transactionHash: string | Promise): Promise {\n await this.getNetwork();\n\n transactionHash = await transactionHash;\n\n const params = { transactionHash: this.formatter.hash(transactionHash, true) };\n\n return poll(async () => {\n const result = await this.perform(\"getTransactionReceipt\", params);\n\n if (result == null) {\n if (this._emitted[\"t:\" + transactionHash] == null) {\n return null;\n }\n return undefined;\n }\n\n // \"geth-etc\" returns receipts before they are ready\n if (result.blockHash == null) { return undefined; }\n\n const receipt = this.formatter.receipt(result);\n\n if (receipt.blockNumber == null) {\n receipt.confirmations = 0;\n\n } else if (receipt.confirmations == null) {\n const blockNumber = await this._getInternalBlockNumber(100 + 2 * this.pollingInterval);\n\n // Add the confirmations using the fast block number (pessimistic)\n let confirmations = (blockNumber - receipt.blockNumber) + 1;\n if (confirmations <= 0) { confirmations = 1; }\n receipt.confirmations = confirmations;\n }\n\n return receipt;\n }, { oncePoll: this });\n }\n\n async getLogs(filter: Filter | FilterByBlockHash | Promise): Promise> {\n await this.getNetwork();\n const params = await resolveProperties({ filter: this._getFilter(filter) });\n const logs: Array = await this.perform(\"getLogs\", params);\n logs.forEach((log) => {\n if (log.removed == null) { log.removed = false; }\n });\n return Formatter.arrayOf(this.formatter.filterLog.bind(this.formatter))(logs);\n }\n\n async getEtherPrice(): Promise {\n await this.getNetwork();\n return this.perform(\"getEtherPrice\", { });\n }\n\n async _getBlockTag(blockTag: BlockTag | Promise): Promise {\n blockTag = await blockTag;\n\n if (typeof(blockTag) === \"number\" && blockTag < 0) {\n if (blockTag % 1) {\n logger.throwArgumentError(\"invalid BlockTag\", \"blockTag\", blockTag);\n }\n\n let blockNumber = await this._getInternalBlockNumber(100 + 2 * this.pollingInterval);\n blockNumber += blockTag;\n if (blockNumber < 0) { blockNumber = 0; }\n return this.formatter.blockTag(blockNumber)\n }\n\n return this.formatter.blockTag(blockTag);\n }\n\n\n async getResolver(name: string): Promise {\n let currentName = name;\n while (true) {\n if (currentName === \"\" || currentName === \".\") { return null; }\n\n // Optimization since the eth node cannot change and does\n // not have a wildcard resolver\n if (name !== \"eth\" && currentName === \"eth\") { return null; }\n\n // Check the current node for a resolver\n const addr = await this._getResolver(currentName, \"getResolver\");\n\n // Found a resolver!\n if (addr != null) {\n const resolver = new Resolver(this, addr, name);\n\n // Legacy resolver found, using EIP-2544 so it isn't safe to use\n if (currentName !== name && !(await resolver.supportsWildcard())) { return null; }\n\n return resolver;\n }\n\n // Get the parent node\n currentName = currentName.split(\".\").slice(1).join(\".\");\n }\n\n }\n\n async _getResolver(name: string, operation?: string): Promise {\n if (operation == null) { operation = \"ENS\"; }\n\n const network = await this.getNetwork();\n\n // No ENS...\n if (!network.ensAddress) {\n logger.throwError(\n \"network does not support ENS\",\n Logger.errors.UNSUPPORTED_OPERATION,\n { operation, network: network.name }\n );\n }\n\n try {\n // keccak256(\"resolver(bytes32)\")\n const addrData = await this.call({\n to: network.ensAddress,\n data: (\"0x0178b8bf\" + namehash(name).substring(2))\n });\n return this.formatter.callAddress(addrData);\n } catch (error) {\n // ENS registry cannot throw errors on resolver(bytes32)\n }\n\n return null;\n }\n\n async resolveName(name: string | Promise): Promise {\n name = await name;\n\n // If it is already an address, nothing to resolve\n try {\n return Promise.resolve(this.formatter.address(name));\n } catch (error) {\n // If is is a hexstring, the address is bad (See #694)\n if (isHexString(name)) { throw error; }\n }\n\n if (typeof(name) !== \"string\") {\n logger.throwArgumentError(\"invalid ENS name\", \"name\", name);\n }\n\n // Get the addr from the resolver\n const resolver = await this.getResolver(name);\n if (!resolver) { return null; }\n\n return await resolver.getAddress();\n }\n\n async lookupAddress(address: string | Promise): Promise {\n address = await address;\n address = this.formatter.address(address);\n\n const node = address.substring(2).toLowerCase() + \".addr.reverse\";\n\n const resolverAddr = await this._getResolver(node, \"lookupAddress\");\n if (resolverAddr == null) { return null; }\n\n // keccak(\"name(bytes32)\")\n const name = _parseString(await this.call({\n to: resolverAddr,\n data: (\"0x691f3431\" + namehash(node).substring(2))\n }), 0);\n\n const addr = await this.resolveName(name);\n if (addr != address) { return null; }\n\n return name;\n }\n\n async getAvatar(nameOrAddress: string): Promise {\n let resolver: Resolver = null;\n if (isHexString(nameOrAddress)) {\n // Address; reverse lookup\n const address = this.formatter.address(nameOrAddress);\n\n const node = address.substring(2).toLowerCase() + \".addr.reverse\";\n\n const resolverAddress = await this._getResolver(node, \"getAvatar\");\n if (!resolverAddress) { return null; }\n\n // Try resolving the avatar against the addr.reverse resolver\n resolver = new Resolver(this, resolverAddress, node);\n try {\n const avatar = await resolver.getAvatar();\n if (avatar) { return avatar.url; }\n } catch (error) {\n if (error.code !== Logger.errors.CALL_EXCEPTION) { throw error; }\n }\n\n // Try getting the name and performing forward lookup; allowing wildcards\n try {\n // keccak(\"name(bytes32)\")\n const name = _parseString(await this.call({\n to: resolverAddress,\n data: (\"0x691f3431\" + namehash(node).substring(2))\n }), 0);\n resolver = await this.getResolver(name);\n } catch (error) {\n if (error.code !== Logger.errors.CALL_EXCEPTION) { throw error; }\n return null;\n }\n\n } else {\n // ENS name; forward lookup with wildcard\n resolver = await this.getResolver(nameOrAddress);\n if (!resolver) { return null; }\n }\n\n const avatar = await resolver.getAvatar();\n if (avatar == null) { return null; }\n\n return avatar.url;\n }\n\n perform(method: string, params: any): Promise {\n return logger.throwError(method + \" not implemented\", Logger.errors.NOT_IMPLEMENTED, { operation: method });\n }\n\n _startEvent(event: Event): void {\n this.polling = (this._events.filter((e) => e.pollable()).length > 0);\n }\n\n _stopEvent(event: Event): void {\n this.polling = (this._events.filter((e) => e.pollable()).length > 0);\n }\n\n _addEventListener(eventName: EventType, listener: Listener, once: boolean): this {\n const event = new Event(getEventTag(eventName), listener, once)\n this._events.push(event);\n this._startEvent(event);\n\n return this;\n }\n\n on(eventName: EventType, listener: Listener): this {\n return this._addEventListener(eventName, listener, false);\n }\n\n once(eventName: EventType, listener: Listener): this {\n return this._addEventListener(eventName, listener, true);\n }\n\n\n emit(eventName: EventType, ...args: Array): boolean {\n let result = false;\n\n let stopped: Array = [ ];\n\n let eventTag = getEventTag(eventName);\n this._events = this._events.filter((event) => {\n if (event.tag !== eventTag) { return true; }\n\n setTimeout(() => {\n event.listener.apply(this, args);\n }, 0);\n\n result = true;\n\n if (event.once) {\n stopped.push(event);\n return false;\n }\n\n return true;\n });\n\n stopped.forEach((event) => { this._stopEvent(event); });\n\n return result;\n }\n\n listenerCount(eventName?: EventType): number {\n if (!eventName) { return this._events.length; }\n\n let eventTag = getEventTag(eventName);\n return this._events.filter((event) => {\n return (event.tag === eventTag);\n }).length;\n }\n\n listeners(eventName?: EventType): Array {\n if (eventName == null) {\n return this._events.map((event) => event.listener);\n }\n\n let eventTag = getEventTag(eventName);\n return this._events\n .filter((event) => (event.tag === eventTag))\n .map((event) => event.listener);\n }\n\n off(eventName: EventType, listener?: Listener): this {\n if (listener == null) {\n return this.removeAllListeners(eventName);\n }\n\n const stopped: Array = [ ];\n\n let found = false;\n\n let eventTag = getEventTag(eventName);\n this._events = this._events.filter((event) => {\n if (event.tag !== eventTag || event.listener != listener) { return true; }\n if (found) { return true; }\n found = true;\n stopped.push(event);\n return false;\n });\n\n stopped.forEach((event) => { this._stopEvent(event); });\n\n return this;\n }\n\n removeAllListeners(eventName?: EventType): this {\n let stopped: Array = [ ];\n if (eventName == null) {\n stopped = this._events;\n\n this._events = [ ];\n } else {\n const eventTag = getEventTag(eventName);\n this._events = this._events.filter((event) => {\n if (event.tag !== eventTag) { return true; }\n stopped.push(event);\n return false;\n });\n }\n\n stopped.forEach((event) => { this._stopEvent(event); });\n\n return this;\n }\n}\n","export const HashZero = \"0x0000000000000000000000000000000000000000000000000000000000000000\";\n\n","\"use strict\";\n\nimport { BlockTag, FeeData, Provider, TransactionRequest, TransactionResponse } from \"@ethersproject/abstract-provider\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { Bytes, BytesLike } from \"@ethersproject/bytes\";\nimport { Deferrable, defineReadOnly, resolveProperties, shallowCopy } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nconst allowedTransactionKeys: Array = [\n \"accessList\", \"ccipReadEnabled\", \"chainId\", \"customData\", \"data\", \"from\", \"gasLimit\", \"gasPrice\", \"maxFeePerGas\", \"maxPriorityFeePerGas\", \"nonce\", \"to\", \"type\", \"value\"\n];\n\nconst forwardErrors = [\n Logger.errors.INSUFFICIENT_FUNDS,\n Logger.errors.NONCE_EXPIRED,\n Logger.errors.REPLACEMENT_UNDERPRICED,\n];\n\n// EIP-712 Typed Data\n// See: https://eips.ethereum.org/EIPS/eip-712\n\nexport interface TypedDataDomain {\n name?: string;\n version?: string;\n chainId?: BigNumberish;\n verifyingContract?: string;\n salt?: BytesLike;\n};\n\nexport interface TypedDataField {\n name: string;\n type: string;\n};\n\n// Sub-classes of Signer may optionally extend this interface to indicate\n// they have a private key available synchronously\nexport interface ExternallyOwnedAccount {\n readonly address: string;\n readonly privateKey: string;\n}\n\n// Sub-Class Notes:\n// - A Signer MUST always make sure, that if present, the \"from\" field\n// matches the Signer, before sending or signing a transaction\n// - A Signer SHOULD always wrap private information (such as a private\n// key or mnemonic) in a function, so that console.log does not leak\n// the data\n\n// @TODO: This is a temporary measure to preserve backwards compatibility\n// In v6, the method on TypedDataSigner will be added to Signer\nexport interface TypedDataSigner {\n _signTypedData(domain: TypedDataDomain, types: Record>, value: Record): Promise;\n}\n\nexport abstract class Signer {\n readonly provider?: Provider;\n\n ///////////////////\n // Sub-classes MUST implement these\n\n // Returns the checksum address\n abstract getAddress(): Promise\n\n // Returns the signed prefixed-message. This MUST treat:\n // - Bytes as a binary message\n // - string as a UTF8-message\n // i.e. \"0x1234\" is a SIX (6) byte string, NOT 2 bytes of data\n abstract signMessage(message: Bytes | string): Promise;\n\n // Signs a transaction and returns the fully serialized, signed transaction.\n // The EXACT transaction MUST be signed, and NO additional properties to be added.\n // - This MAY throw if signing transactions is not supports, but if\n // it does, sentTransaction MUST be overridden.\n abstract signTransaction(transaction: Deferrable): Promise;\n\n // Returns a new instance of the Signer, connected to provider.\n // This MAY throw if changing providers is not supported.\n abstract connect(provider: Provider): Signer;\n\n readonly _isSigner: boolean;\n\n\n ///////////////////\n // Sub-classes MUST call super\n constructor() {\n logger.checkAbstract(new.target, Signer);\n defineReadOnly(this, \"_isSigner\", true);\n }\n\n\n ///////////////////\n // Sub-classes MAY override these\n\n async getBalance(blockTag?: BlockTag): Promise {\n this._checkProvider(\"getBalance\");\n return await this.provider.getBalance(this.getAddress(), blockTag);\n }\n\n async getTransactionCount(blockTag?: BlockTag): Promise {\n this._checkProvider(\"getTransactionCount\");\n return await this.provider.getTransactionCount(this.getAddress(), blockTag);\n }\n\n // Populates \"from\" if unspecified, and estimates the gas for the transaction\n async estimateGas(transaction: Deferrable): Promise {\n this._checkProvider(\"estimateGas\");\n const tx = await resolveProperties(this.checkTransaction(transaction));\n return await this.provider.estimateGas(tx);\n }\n\n // Populates \"from\" if unspecified, and calls with the transaction\n async call(transaction: Deferrable, blockTag?: BlockTag): Promise {\n this._checkProvider(\"call\");\n const tx = await resolveProperties(this.checkTransaction(transaction));\n return await this.provider.call(tx, blockTag);\n }\n\n // Populates all fields in a transaction, signs it and sends it to the network\n async sendTransaction(transaction: Deferrable): Promise {\n this._checkProvider(\"sendTransaction\");\n const tx = await this.populateTransaction(transaction);\n const signedTx = await this.signTransaction(tx);\n return await this.provider.sendTransaction(signedTx);\n }\n\n async getChainId(): Promise {\n this._checkProvider(\"getChainId\");\n const network = await this.provider.getNetwork();\n return network.chainId;\n }\n\n async getGasPrice(): Promise {\n this._checkProvider(\"getGasPrice\");\n return await this.provider.getGasPrice();\n }\n\n async getFeeData(): Promise {\n this._checkProvider(\"getFeeData\");\n return await this.provider.getFeeData();\n }\n\n\n async resolveName(name: string): Promise {\n this._checkProvider(\"resolveName\");\n return await this.provider.resolveName(name);\n }\n\n\n\n // Checks a transaction does not contain invalid keys and if\n // no \"from\" is provided, populates it.\n // - does NOT require a provider\n // - adds \"from\" is not present\n // - returns a COPY (safe to mutate the result)\n // By default called from: (overriding these prevents it)\n // - call\n // - estimateGas\n // - populateTransaction (and therefor sendTransaction)\n checkTransaction(transaction: Deferrable): Deferrable {\n for (const key in transaction) {\n if (allowedTransactionKeys.indexOf(key) === -1) {\n logger.throwArgumentError(\"invalid transaction key: \" + key, \"transaction\", transaction);\n }\n }\n\n const tx = shallowCopy(transaction);\n\n if (tx.from == null) {\n tx.from = this.getAddress();\n\n } else {\n // Make sure any provided address matches this signer\n tx.from = Promise.all([\n Promise.resolve(tx.from),\n this.getAddress()\n ]).then((result) => {\n if (result[0].toLowerCase() !== result[1].toLowerCase()) {\n logger.throwArgumentError(\"from address mismatch\", \"transaction\", transaction);\n }\n return result[0];\n });\n }\n\n return tx;\n }\n\n // Populates ALL keys for a transaction and checks that \"from\" matches\n // this Signer. Should be used by sendTransaction but NOT by signTransaction.\n // By default called from: (overriding these prevents it)\n // - sendTransaction\n //\n // Notes:\n // - We allow gasPrice for EIP-1559 as long as it matches maxFeePerGas\n async populateTransaction(transaction: Deferrable): Promise {\n\n const tx: Deferrable = await resolveProperties(this.checkTransaction(transaction))\n\n if (tx.to != null) {\n tx.to = Promise.resolve(tx.to).then(async (to) => {\n if (to == null) { return null; }\n const address = await this.resolveName(to);\n if (address == null) {\n logger.throwArgumentError(\"provided ENS name resolves to null\", \"tx.to\", to);\n }\n return address;\n });\n\n // Prevent this error from causing an UnhandledPromiseException\n tx.to.catch((error) => { });\n }\n\n // Do not allow mixing pre-eip-1559 and eip-1559 properties\n const hasEip1559 = (tx.maxFeePerGas != null || tx.maxPriorityFeePerGas != null);\n if (tx.gasPrice != null && (tx.type === 2 || hasEip1559)) {\n logger.throwArgumentError(\"eip-1559 transaction do not support gasPrice\", \"transaction\", transaction);\n } else if ((tx.type === 0 || tx.type === 1) && hasEip1559) {\n logger.throwArgumentError(\"pre-eip-1559 transaction do not support maxFeePerGas/maxPriorityFeePerGas\", \"transaction\", transaction);\n }\n\n if ((tx.type === 2 || tx.type == null) && (tx.maxFeePerGas != null && tx.maxPriorityFeePerGas != null)) {\n // Fully-formed EIP-1559 transaction (skip getFeeData)\n tx.type = 2;\n\n } else if (tx.type === 0 || tx.type === 1) {\n // Explicit Legacy or EIP-2930 transaction\n\n // Populate missing gasPrice\n if (tx.gasPrice == null) { tx.gasPrice = this.getGasPrice(); }\n\n } else {\n\n // We need to get fee data to determine things\n const feeData = await this.getFeeData();\n\n if (tx.type == null) {\n // We need to auto-detect the intended type of this transaction...\n\n if (feeData.maxFeePerGas != null && feeData.maxPriorityFeePerGas != null) {\n // The network supports EIP-1559!\n\n // Upgrade transaction from null to eip-1559\n tx.type = 2;\n\n if (tx.gasPrice != null) {\n // Using legacy gasPrice property on an eip-1559 network,\n // so use gasPrice as both fee properties\n const gasPrice = tx.gasPrice;\n delete tx.gasPrice;\n tx.maxFeePerGas = gasPrice;\n tx.maxPriorityFeePerGas = gasPrice;\n\n } else {\n // Populate missing fee data\n if (tx.maxFeePerGas == null) { tx.maxFeePerGas = feeData.maxFeePerGas; }\n if (tx.maxPriorityFeePerGas == null) { tx.maxPriorityFeePerGas = feeData.maxPriorityFeePerGas; }\n }\n\n } else if (feeData.gasPrice != null) {\n // Network doesn't support EIP-1559...\n\n // ...but they are trying to use EIP-1559 properties\n if (hasEip1559) {\n logger.throwError(\"network does not support EIP-1559\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"populateTransaction\"\n });\n }\n\n // Populate missing fee data\n if (tx.gasPrice == null) { tx.gasPrice = feeData.gasPrice; }\n\n // Explicitly set untyped transaction to legacy\n tx.type = 0;\n\n } else {\n // getFeeData has failed us.\n logger.throwError(\"failed to get consistent fee data\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"signer.getFeeData\"\n });\n }\n\n } else if (tx.type === 2) {\n // Explicitly using EIP-1559\n\n // Populate missing fee data\n if (tx.maxFeePerGas == null) { tx.maxFeePerGas = feeData.maxFeePerGas; }\n if (tx.maxPriorityFeePerGas == null) { tx.maxPriorityFeePerGas = feeData.maxPriorityFeePerGas; }\n }\n }\n\n if (tx.nonce == null) { tx.nonce = this.getTransactionCount(\"pending\"); }\n\n if (tx.gasLimit == null) {\n tx.gasLimit = this.estimateGas(tx).catch((error) => {\n if (forwardErrors.indexOf(error.code) >= 0) {\n throw error;\n }\n\n return logger.throwError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", Logger.errors.UNPREDICTABLE_GAS_LIMIT, {\n error: error,\n tx: tx\n });\n });\n }\n\n if (tx.chainId == null) {\n tx.chainId = this.getChainId();\n } else {\n tx.chainId = Promise.all([\n Promise.resolve(tx.chainId),\n this.getChainId()\n ]).then((results) => {\n if (results[1] !== 0 && results[0] !== results[1]) {\n logger.throwArgumentError(\"chainId address mismatch\", \"transaction\", transaction);\n }\n return results[0];\n });\n }\n\n return await resolveProperties(tx);\n }\n\n\n ///////////////////\n // Sub-classes SHOULD leave these alone\n\n _checkProvider(operation?: string): void {\n if (!this.provider) { logger.throwError(\"missing provider\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: (operation || \"_checkProvider\") });\n }\n }\n\n static isSigner(value: any): value is Signer {\n return !!(value && value._isSigner);\n }\n}\n\nexport class VoidSigner extends Signer implements TypedDataSigner {\n readonly address: string;\n\n constructor(address: string, provider?: Provider) {\n super();\n defineReadOnly(this, \"address\", address);\n defineReadOnly(this, \"provider\", provider || null);\n }\n\n getAddress(): Promise {\n return Promise.resolve(this.address);\n }\n\n _fail(message: string, operation: string): Promise {\n return Promise.resolve().then(() => {\n logger.throwError(message, Logger.errors.UNSUPPORTED_OPERATION, { operation: operation });\n });\n }\n\n signMessage(message: Bytes | string): Promise {\n return this._fail(\"VoidSigner cannot sign messages\", \"signMessage\");\n }\n\n signTransaction(transaction: Deferrable): Promise {\n return this._fail(\"VoidSigner cannot sign transactions\", \"signTransaction\");\n }\n\n _signTypedData(domain: TypedDataDomain, types: Record>, value: Record): Promise {\n return this._fail(\"VoidSigner cannot sign typed data\", \"signTypedData\");\n }\n\n connect(provider: Provider): VoidSigner {\n return new VoidSigner(this.address, provider);\n }\n}\n\n","export const version = \"abstract-signer/5.7.0\";\n","import { keccak256 } from \"@ethersproject/keccak256\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\n\nexport function id(text: string): string {\n return keccak256(toUtf8Bytes(text));\n}\n","import { TypedDataDomain, TypedDataField } from \"@ethersproject/abstract-signer\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { arrayify, BytesLike, hexConcat, hexlify, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { deepCopy, defineReadOnly, shallowCopy } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { id } from \"./id\";\n\nconst padding = new Uint8Array(32);\npadding.fill(0);\n\nconst NegativeOne: BigNumber = BigNumber.from(-1);\nconst Zero: BigNumber = BigNumber.from(0);\nconst One: BigNumber = BigNumber.from(1);\nconst MaxUint256: BigNumber = BigNumber.from(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\n\nfunction hexPadRight(value: BytesLike) {\n const bytes = arrayify(value);\n const padOffset = bytes.length % 32\n if (padOffset) {\n return hexConcat([ bytes, padding.slice(padOffset) ]);\n }\n return hexlify(bytes);\n}\n\nconst hexTrue = hexZeroPad(One.toHexString(), 32);\nconst hexFalse = hexZeroPad(Zero.toHexString(), 32);\n\nconst domainFieldTypes: Record = {\n name: \"string\",\n version: \"string\",\n chainId: \"uint256\",\n verifyingContract: \"address\",\n salt: \"bytes32\"\n};\n\nconst domainFieldNames: Array = [\n \"name\", \"version\", \"chainId\", \"verifyingContract\", \"salt\"\n];\n\nfunction checkString(key: string): (value: any) => string {\n return function (value: any){\n if (typeof(value) !== \"string\") {\n logger.throwArgumentError(`invalid domain value for ${ JSON.stringify(key) }`, `domain.${ key }`, value);\n }\n return value;\n }\n}\n\nconst domainChecks: Record any> = {\n name: checkString(\"name\"),\n version: checkString(\"version\"),\n chainId: function(value: any) {\n try {\n return BigNumber.from(value).toString()\n } catch (error) { }\n return logger.throwArgumentError(`invalid domain value for \"chainId\"`, \"domain.chainId\", value);\n },\n verifyingContract: function(value: any) {\n try {\n return getAddress(value).toLowerCase();\n } catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"verifyingContract\"`, \"domain.verifyingContract\", value);\n },\n salt: function(value: any) {\n try {\n const bytes = arrayify(value);\n if (bytes.length !== 32) { throw new Error(\"bad length\"); }\n return hexlify(bytes);\n } catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"salt\"`, \"domain.salt\", value);\n }\n}\n\nfunction getBaseEncoder(type: string): (value: any) => string {\n // intXX and uintXX\n {\n const match = type.match(/^(u?)int(\\d*)$/);\n if (match) {\n const signed = (match[1] === \"\");\n\n const width = parseInt(match[2] || \"256\");\n if (width % 8 !== 0 || width > 256 || (match[2] && match[2] !== String(width))) {\n logger.throwArgumentError(\"invalid numeric width\", \"type\", type);\n }\n\n const boundsUpper = MaxUint256.mask(signed ? (width - 1): width);\n const boundsLower = signed ? boundsUpper.add(One).mul(NegativeOne): Zero;\n\n return function(value: BigNumberish) {\n const v = BigNumber.from(value);\n\n if (v.lt(boundsLower) || v.gt(boundsUpper)) {\n logger.throwArgumentError(`value out-of-bounds for ${ type }`, \"value\", value);\n }\n\n return hexZeroPad(v.toTwos(256).toHexString(), 32);\n };\n }\n }\n\n // bytesXX\n {\n const match = type.match(/^bytes(\\d+)$/);\n if (match) {\n const width = parseInt(match[1]);\n if (width === 0 || width > 32 || match[1] !== String(width)) {\n logger.throwArgumentError(\"invalid bytes width\", \"type\", type);\n }\n\n return function(value: BytesLike) {\n const bytes = arrayify(value);\n if (bytes.length !== width) {\n logger.throwArgumentError(`invalid length for ${ type }`, \"value\", value);\n }\n return hexPadRight(value);\n };\n }\n }\n\n switch (type) {\n case \"address\": return function(value: string) {\n return hexZeroPad(getAddress(value), 32);\n };\n case \"bool\": return function(value: boolean) {\n return ((!value) ? hexFalse: hexTrue);\n };\n case \"bytes\": return function(value: BytesLike) {\n return keccak256(value);\n };\n case \"string\": return function(value: string) {\n return id(value);\n };\n }\n\n return null;\n}\n\nfunction encodeType(name: string, fields: Array): string {\n return `${ name }(${ fields.map(({ name, type }) => (type + \" \" + name)).join(\",\") })`;\n}\n\nexport class TypedDataEncoder {\n readonly primaryType: string;\n readonly types: Record>;\n\n readonly _encoderCache: Record string>;\n readonly _types: Record;\n\n constructor(types: Record>) {\n defineReadOnly(this, \"types\", Object.freeze(deepCopy(types)));\n\n defineReadOnly(this, \"_encoderCache\", { });\n defineReadOnly(this, \"_types\", { });\n\n // Link struct types to their direct child structs\n const links: Record> = { };\n\n // Link structs to structs which contain them as a child\n const parents: Record> = { };\n\n // Link all subtypes within a given struct\n const subtypes: Record> = { };\n\n Object.keys(types).forEach((type) => {\n links[type] = { };\n parents[type] = [ ];\n subtypes[type] = { }\n });\n\n for (const name in types) {\n\n const uniqueNames: Record = { };\n\n types[name].forEach((field) => {\n\n // Check each field has a unique name\n if (uniqueNames[field.name]) {\n logger.throwArgumentError(`duplicate variable name ${ JSON.stringify(field.name) } in ${ JSON.stringify(name) }`, \"types\", types);\n }\n uniqueNames[field.name] = true;\n\n // Get the base type (drop any array specifiers)\n const baseType = field.type.match(/^([^\\x5b]*)(\\x5b|$)/)[1];\n if (baseType === name) {\n logger.throwArgumentError(`circular type reference to ${ JSON.stringify(baseType) }`, \"types\", types);\n }\n\n // Is this a base encoding type?\n const encoder = getBaseEncoder(baseType);\n if (encoder) { return ;}\n\n if (!parents[baseType]) {\n logger.throwArgumentError(`unknown type ${ JSON.stringify(baseType) }`, \"types\", types);\n }\n\n // Add linkage\n parents[baseType].push(name);\n links[name][baseType] = true;\n });\n }\n\n // Deduce the primary type\n const primaryTypes = Object.keys(parents).filter((n) => (parents[n].length === 0));\n\n if (primaryTypes.length === 0) {\n logger.throwArgumentError(\"missing primary type\", \"types\", types);\n } else if (primaryTypes.length > 1) {\n logger.throwArgumentError(`ambiguous primary types or unused types: ${ primaryTypes.map((t) => (JSON.stringify(t))).join(\", \") }`, \"types\", types);\n }\n\n defineReadOnly(this, \"primaryType\", primaryTypes[0]);\n\n // Check for circular type references\n function checkCircular(type: string, found: Record) {\n if (found[type]) {\n logger.throwArgumentError(`circular type reference to ${ JSON.stringify(type) }`, \"types\", types);\n }\n\n found[type] = true;\n\n Object.keys(links[type]).forEach((child) => {\n if (!parents[child]) { return; }\n\n // Recursively check children\n checkCircular(child, found);\n\n // Mark all ancestors as having this decendant\n Object.keys(found).forEach((subtype) => {\n subtypes[subtype][child] = true;\n });\n });\n\n delete found[type];\n }\n checkCircular(this.primaryType, { });\n\n // Compute each fully describe type\n for (const name in subtypes) {\n const st = Object.keys(subtypes[name]);\n st.sort();\n this._types[name] = encodeType(name, types[name]) + st.map((t) => encodeType(t, types[t])).join(\"\");\n }\n }\n\n getEncoder(type: string): (value: any) => string {\n let encoder = this._encoderCache[type];\n if (!encoder) {\n encoder = this._encoderCache[type] = this._getEncoder(type);\n }\n return encoder;\n }\n\n _getEncoder(type: string): (value: any) => string {\n\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) { return encoder; }\n }\n\n // Array\n const match = type.match(/^(.*)(\\x5b(\\d*)\\x5d)$/);\n if (match) {\n const subtype = match[1];\n const subEncoder = this.getEncoder(subtype);\n const length = parseInt(match[3]);\n return (value: Array) => {\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n\n let result = value.map(subEncoder);\n if (this._types[subtype]) {\n result = result.map(keccak256);\n }\n\n return keccak256(hexConcat(result));\n };\n }\n\n // Struct\n const fields = this.types[type];\n if (fields) {\n const encodedType = id(this._types[type]);\n return (value: Record) => {\n const values = fields.map(({ name, type }) => {\n const result = this.getEncoder(type)(value[name]);\n if (this._types[type]) { return keccak256(result); }\n return result;\n });\n values.unshift(encodedType);\n return hexConcat(values);\n }\n }\n\n return logger.throwArgumentError(`unknown type: ${ type }`, \"type\", type);\n }\n\n encodeType(name: string): string {\n const result = this._types[name];\n if (!result) {\n logger.throwArgumentError(`unknown type: ${ JSON.stringify(name) }`, \"name\", name);\n }\n return result;\n }\n\n encodeData(type: string, value: any): string {\n return this.getEncoder(type)(value);\n }\n\n hashStruct(name: string, value: Record): string {\n return keccak256(this.encodeData(name, value));\n }\n\n encode(value: Record): string {\n return this.encodeData(this.primaryType, value);\n }\n\n hash(value: Record): string {\n return this.hashStruct(this.primaryType, value);\n }\n\n _visit(type: string, value: any, callback: (type: string, data: any) => any): any {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) { return callback(type, value); }\n }\n\n // Array\n const match = type.match(/^(.*)(\\x5b(\\d*)\\x5d)$/);\n if (match) {\n const subtype = match[1];\n const length = parseInt(match[3]);\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n return value.map((v: any) => this._visit(subtype, v, callback));\n }\n\n // Struct\n const fields = this.types[type];\n if (fields) {\n return fields.reduce((accum, { name, type }) => {\n accum[name] = this._visit(type, value[name], callback);\n return accum;\n }, >{});\n }\n\n return logger.throwArgumentError(`unknown type: ${ type }`, \"type\", type);\n }\n\n visit(value: Record, callback: (type: string, data: any) => any): any {\n return this._visit(this.primaryType, value, callback);\n }\n\n static from(types: Record>): TypedDataEncoder {\n return new TypedDataEncoder(types);\n }\n\n static getPrimaryType(types: Record>): string {\n return TypedDataEncoder.from(types).primaryType;\n }\n\n static hashStruct(name: string, types: Record>, value: Record): string {\n return TypedDataEncoder.from(types).hashStruct(name, value);\n }\n\n static hashDomain(domain: TypedDataDomain): string {\n const domainFields: Array = [ ];\n for (const name in domain) {\n const type = domainFieldTypes[name];\n if (!type) {\n logger.throwArgumentError(`invalid typed-data domain key: ${ JSON.stringify(name) }`, \"domain\", domain);\n }\n domainFields.push({ name, type });\n }\n\n domainFields.sort((a, b) => {\n return domainFieldNames.indexOf(a.name) - domainFieldNames.indexOf(b.name);\n });\n\n return TypedDataEncoder.hashStruct(\"EIP712Domain\", { EIP712Domain: domainFields }, domain);\n }\n\n static encode(domain: TypedDataDomain, types: Record>, value: Record): string {\n return hexConcat([\n \"0x1901\",\n TypedDataEncoder.hashDomain(domain),\n TypedDataEncoder.from(types).hash(value)\n ]);\n }\n\n static hash(domain: TypedDataDomain, types: Record>, value: Record): string {\n return keccak256(TypedDataEncoder.encode(domain, types, value));\n }\n\n // Replaces all address types with ENS names with their looked up address\n static async resolveNames(domain: TypedDataDomain, types: Record>, value: Record, resolveName: (name: string) => Promise): Promise<{ domain: TypedDataDomain, value: any }> {\n // Make a copy to isolate it from the object passed in\n domain = shallowCopy(domain);\n\n // Look up all ENS names\n const ensCache: Record = { };\n\n // Do we need to look up the domain's verifyingContract?\n if (domain.verifyingContract && !isHexString(domain.verifyingContract, 20)) {\n ensCache[domain.verifyingContract] = \"0x\";\n }\n\n // We are going to use the encoder to visit all the base values\n const encoder = TypedDataEncoder.from(types);\n\n // Get a list of all the addresses\n encoder.visit(value, (type: string, value: any) => {\n if (type === \"address\" && !isHexString(value, 20)) {\n ensCache[value] = \"0x\";\n }\n return value;\n });\n\n // Lookup each name\n for (const name in ensCache) {\n ensCache[name] = await resolveName(name);\n }\n\n // Replace the domain verifyingContract if needed\n if (domain.verifyingContract && ensCache[domain.verifyingContract]) {\n domain.verifyingContract = ensCache[domain.verifyingContract];\n }\n\n // Replace all ENS names with their address\n value = encoder.visit(value, (type: string, value: any) => {\n if (type === \"address\" && ensCache[value]) { return ensCache[value]; }\n return value;\n });\n\n return { domain, value };\n }\n\n static getPayload(domain: TypedDataDomain, types: Record>, value: Record): any {\n // Validate the domain fields\n TypedDataEncoder.hashDomain(domain);\n\n // Derive the EIP712Domain Struct reference type\n const domainValues: Record = { };\n const domainTypes: Array<{ name: string, type:string }> = [ ];\n\n domainFieldNames.forEach((name) => {\n const value = (domain)[name];\n if (value == null) { return; }\n domainValues[name] = domainChecks[name](value);\n domainTypes.push({ name, type: domainFieldTypes[name] });\n });\n\n const encoder = TypedDataEncoder.from(types);\n\n const typesWithDomain = shallowCopy(types);\n if (typesWithDomain.EIP712Domain) {\n logger.throwArgumentError(\"types must not contain EIP712Domain type\", \"types.EIP712Domain\", types);\n } else {\n typesWithDomain.EIP712Domain = domainTypes;\n }\n\n // Validate the data structures and types\n encoder.encode(value);\n\n return {\n types: typesWithDomain,\n domain: domainValues,\n primaryType: encoder.primaryType,\n message: encoder.visit(value, (type: string, value: any) => {\n\n // bytes\n if (type.match(/^bytes(\\d*)/)) {\n return hexlify(arrayify(value));\n }\n\n // uint or int\n if (type.match(/^u?int/)) {\n return BigNumber.from(value).toString();\n }\n\n switch (type) {\n case \"address\":\n return value.toLowerCase();\n case \"bool\":\n return !!value;\n case \"string\":\n if (typeof(value) !== \"string\") {\n logger.throwArgumentError(`invalid string`, \"value\", value);\n }\n return value;\n }\n\n return logger.throwArgumentError(\"unsupported type\", \"type\", type);\n })\n };\n }\n}\n\n","\"use strict\";\n\n// See: https://github.com/ethereum/wiki/wiki/JSON-RPC\n\nimport { Provider, TransactionRequest, TransactionResponse } from \"@ethersproject/abstract-provider\";\nimport { Signer, TypedDataDomain, TypedDataField, TypedDataSigner } from \"@ethersproject/abstract-signer\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { Bytes, hexlify, hexValue, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { _TypedDataEncoder } from \"@ethersproject/hash\";\nimport { Network, Networkish } from \"@ethersproject/networks\";\nimport { checkProperties, deepCopy, Deferrable, defineReadOnly, getStatic, resolveProperties, shallowCopy } from \"@ethersproject/properties\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nimport { AccessList, accessListify } from \"@ethersproject/transactions\";\nimport { ConnectionInfo, fetchJson, poll } from \"@ethersproject/web\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { BaseProvider, Event } from \"./base-provider\";\n\n\nconst errorGas = [ \"call\", \"estimateGas\" ];\n\nfunction spelunk(value: any, requireData: boolean): null | { message: string, data: null | string } {\n if (value == null) { return null; }\n\n // These *are* the droids we're looking for.\n if (typeof(value.message) === \"string\" && value.message.match(\"reverted\")) {\n const data = isHexString(value.data) ? value.data: null;\n if (!requireData || data) {\n return { message: value.message, data };\n }\n }\n\n // Spelunk further...\n if (typeof(value) === \"object\") {\n for (const key in value) {\n const result = spelunk(value[key], requireData);\n if (result) { return result; }\n }\n return null;\n }\n\n // Might be a JSON string we can further descend...\n if (typeof(value) === \"string\") {\n try {\n return spelunk(JSON.parse(value), requireData);\n } catch (error) { }\n }\n\n return null;\n}\n\nfunction checkError(method: string, error: any, params: any): any {\n\n const transaction = params.transaction || params.signedTransaction;\n\n // Undo the \"convenience\" some nodes are attempting to prevent backwards\n // incompatibility; maybe for v6 consider forwarding reverts as errors\n if (method === \"call\") {\n const result = spelunk(error, true);\n if (result) { return result.data; }\n\n // Nothing descriptive..\n logger.throwError(\"missing revert data in call exception; Transaction reverted without a reason string\", Logger.errors.CALL_EXCEPTION, {\n data: \"0x\", transaction, error\n });\n }\n\n if (method === \"estimateGas\") {\n // Try to find something, with a preference on SERVER_ERROR body\n let result = spelunk(error.body, false);\n if (result == null) { result = spelunk(error, false); }\n\n // Found \"reverted\", this is a CALL_EXCEPTION\n if (result) {\n logger.throwError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", Logger.errors.UNPREDICTABLE_GAS_LIMIT, {\n reason: result.message, method, transaction, error\n });\n }\n }\n\n // @TODO: Should we spelunk for message too?\n\n let message = error.message;\n if (error.code === Logger.errors.SERVER_ERROR && error.error && typeof(error.error.message) === \"string\") {\n message = error.error.message;\n } else if (typeof(error.body) === \"string\") {\n message = error.body;\n } else if (typeof(error.responseText) === \"string\") {\n message = error.responseText;\n }\n message = (message || \"\").toLowerCase();\n\n // \"insufficient funds for gas * price + value + cost(data)\"\n if (message.match(/insufficient funds|base fee exceeds gas limit|InsufficientFunds/i)) {\n logger.throwError(\"insufficient funds for intrinsic transaction cost\", Logger.errors.INSUFFICIENT_FUNDS, {\n error, method, transaction\n });\n }\n\n // \"nonce too low\"\n if (message.match(/nonce (is )?too low/i)) {\n logger.throwError(\"nonce has already been used\", Logger.errors.NONCE_EXPIRED, {\n error, method, transaction\n });\n }\n\n // \"replacement transaction underpriced\"\n if (message.match(/replacement transaction underpriced|transaction gas price.*too low/i)) {\n logger.throwError(\"replacement fee too low\", Logger.errors.REPLACEMENT_UNDERPRICED, {\n error, method, transaction\n });\n }\n\n // \"replacement transaction underpriced\"\n if (message.match(/only replay-protected/i)) {\n logger.throwError(\"legacy pre-eip-155 transactions not supported\", Logger.errors.UNSUPPORTED_OPERATION, {\n error, method, transaction\n });\n }\n\n if (errorGas.indexOf(method) >= 0 && message.match(/gas required exceeds allowance|always failing transaction|execution reverted|revert/)) {\n logger.throwError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", Logger.errors.UNPREDICTABLE_GAS_LIMIT, {\n error, method, transaction\n });\n }\n\n throw error;\n}\n\nfunction timer(timeout: number): Promise {\n return new Promise(function(resolve) {\n setTimeout(resolve, timeout);\n });\n}\n\nfunction getResult(payload: { error?: { code?: number, data?: any, message?: string }, result?: any }): any {\n if (payload.error) {\n // @TODO: not any\n const error: any = new Error(payload.error.message);\n error.code = payload.error.code;\n error.data = payload.error.data;\n throw error;\n }\n\n return payload.result;\n}\n\nfunction getLowerCase(value: string): string {\n if (value) { return value.toLowerCase(); }\n return value;\n}\n\nconst _constructorGuard = {};\n\nexport class JsonRpcSigner extends Signer implements TypedDataSigner {\n readonly provider: JsonRpcProvider;\n _index: number;\n _address: string;\n\n constructor(constructorGuard: any, provider: JsonRpcProvider, addressOrIndex?: string | number) {\n super();\n\n if (constructorGuard !== _constructorGuard) {\n throw new Error(\"do not call the JsonRpcSigner constructor directly; use provider.getSigner\");\n }\n\n defineReadOnly(this, \"provider\", provider);\n\n if (addressOrIndex == null) { addressOrIndex = 0; }\n\n if (typeof(addressOrIndex) === \"string\") {\n defineReadOnly(this, \"_address\", this.provider.formatter.address(addressOrIndex));\n defineReadOnly(this, \"_index\", null);\n\n } else if (typeof(addressOrIndex) === \"number\") {\n defineReadOnly(this, \"_index\", addressOrIndex);\n defineReadOnly(this, \"_address\", null);\n\n } else {\n logger.throwArgumentError(\"invalid address or index\", \"addressOrIndex\", addressOrIndex);\n }\n }\n\n connect(provider: Provider): JsonRpcSigner {\n return logger.throwError(\"cannot alter JSON-RPC Signer connection\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"connect\"\n });\n }\n\n connectUnchecked(): JsonRpcSigner {\n return new UncheckedJsonRpcSigner(_constructorGuard, this.provider, this._address || this._index);\n }\n\n getAddress(): Promise {\n if (this._address) {\n return Promise.resolve(this._address);\n }\n\n return this.provider.send(\"eth_accounts\", []).then((accounts) => {\n if (accounts.length <= this._index) {\n logger.throwError(\"unknown account #\" + this._index, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"getAddress\"\n });\n }\n return this.provider.formatter.address(accounts[this._index])\n });\n }\n\n sendUncheckedTransaction(transaction: Deferrable): Promise {\n transaction = shallowCopy(transaction);\n\n const fromAddress = this.getAddress().then((address) => {\n if (address) { address = address.toLowerCase(); }\n return address;\n });\n\n // The JSON-RPC for eth_sendTransaction uses 90000 gas; if the user\n // wishes to use this, it is easy to specify explicitly, otherwise\n // we look it up for them.\n if (transaction.gasLimit == null) {\n const estimate = shallowCopy(transaction);\n estimate.from = fromAddress;\n transaction.gasLimit = this.provider.estimateGas(estimate);\n }\n\n if (transaction.to != null) {\n transaction.to = Promise.resolve(transaction.to).then(async (to) => {\n if (to == null) { return null; }\n const address = await this.provider.resolveName(to);\n if (address == null) {\n logger.throwArgumentError(\"provided ENS name resolves to null\", \"tx.to\", to);\n }\n return address;\n });\n }\n\n return resolveProperties({\n tx: resolveProperties(transaction),\n sender: fromAddress\n }).then(({ tx, sender }) => {\n\n if (tx.from != null) {\n if (tx.from.toLowerCase() !== sender) {\n logger.throwArgumentError(\"from address mismatch\", \"transaction\", transaction);\n }\n } else {\n tx.from = sender;\n }\n\n const hexTx = (this.provider.constructor).hexlifyTransaction(tx, { from: true });\n\n return this.provider.send(\"eth_sendTransaction\", [ hexTx ]).then((hash) => {\n return hash;\n }, (error) => {\n if (typeof(error.message) === \"string\" && error.message.match(/user denied/i)) {\n logger.throwError(\"user rejected transaction\", Logger.errors.ACTION_REJECTED, {\n action: \"sendTransaction\",\n transaction: tx\n });\n }\n\n return checkError(\"sendTransaction\", error, hexTx);\n });\n });\n }\n\n signTransaction(transaction: Deferrable): Promise {\n return logger.throwError(\"signing transactions is unsupported\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"signTransaction\"\n });\n }\n\n async sendTransaction(transaction: Deferrable): Promise {\n // This cannot be mined any earlier than any recent block\n const blockNumber = await this.provider._getInternalBlockNumber(100 + 2 * this.provider.pollingInterval);\n\n // Send the transaction\n const hash = await this.sendUncheckedTransaction(transaction);\n\n try {\n // Unfortunately, JSON-RPC only provides and opaque transaction hash\n // for a response, and we need the actual transaction, so we poll\n // for it; it should show up very quickly\n return await poll(async () => {\n const tx = await this.provider.getTransaction(hash);\n if (tx === null) { return undefined; }\n return this.provider._wrapTransaction(tx, hash, blockNumber);\n }, { oncePoll: this.provider });\n } catch (error) {\n (error).transactionHash = hash;\n throw error;\n }\n }\n\n async signMessage(message: Bytes | string): Promise {\n const data = ((typeof(message) === \"string\") ? toUtf8Bytes(message): message);\n const address = await this.getAddress();\n try {\n return await this.provider.send(\"personal_sign\", [ hexlify(data), address.toLowerCase() ]);\n } catch (error) {\n if (typeof(error.message) === \"string\" && error.message.match(/user denied/i)) {\n logger.throwError(\"user rejected signing\", Logger.errors.ACTION_REJECTED, {\n action: \"signMessage\",\n from: address,\n messageData: message\n });\n }\n throw error;\n }\n }\n\n async _legacySignMessage(message: Bytes | string): Promise {\n const data = ((typeof(message) === \"string\") ? toUtf8Bytes(message): message);\n const address = await this.getAddress();\n\n try {\n // https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sign\n return await this.provider.send(\"eth_sign\", [ address.toLowerCase(), hexlify(data) ]);\n } catch (error) {\n if (typeof(error.message) === \"string\" && error.message.match(/user denied/i)) {\n logger.throwError(\"user rejected signing\", Logger.errors.ACTION_REJECTED, {\n action: \"_legacySignMessage\",\n from: address,\n messageData: message\n });\n }\n throw error;\n }\n }\n\n async _signTypedData(domain: TypedDataDomain, types: Record>, value: Record): Promise {\n // Populate any ENS names (in-place)\n const populated = await _TypedDataEncoder.resolveNames(domain, types, value, (name: string) => {\n return this.provider.resolveName(name);\n });\n\n const address = await this.getAddress();\n\n try {\n return await this.provider.send(\"eth_signTypedData_v4\", [\n address.toLowerCase(),\n JSON.stringify(_TypedDataEncoder.getPayload(populated.domain, types, populated.value))\n ]);\n } catch (error) {\n if (typeof(error.message) === \"string\" && error.message.match(/user denied/i)) {\n logger.throwError(\"user rejected signing\", Logger.errors.ACTION_REJECTED, {\n action: \"_signTypedData\",\n from: address,\n messageData: { domain: populated.domain, types, value: populated.value }\n });\n }\n throw error;\n }\n }\n\n async unlock(password: string): Promise {\n const provider = this.provider;\n\n const address = await this.getAddress();\n\n return provider.send(\"personal_unlockAccount\", [ address.toLowerCase(), password, null ]);\n }\n}\n\nclass UncheckedJsonRpcSigner extends JsonRpcSigner {\n sendTransaction(transaction: Deferrable): Promise {\n return this.sendUncheckedTransaction(transaction).then((hash) => {\n return {\n hash: hash,\n nonce: null,\n gasLimit: null,\n gasPrice: null,\n data: null,\n value: null,\n chainId: null,\n confirmations: 0,\n from: null,\n wait: (confirmations?: number) => { return this.provider.waitForTransaction(hash, confirmations); }\n };\n });\n }\n}\n\nconst allowedTransactionKeys: { [ key: string ]: boolean } = {\n chainId: true, data: true, gasLimit: true, gasPrice:true, nonce: true, to: true, value: true,\n type: true, accessList: true,\n maxFeePerGas: true, maxPriorityFeePerGas: true\n}\n\nexport class JsonRpcProvider extends BaseProvider {\n readonly connection: ConnectionInfo;\n\n _pendingFilter: Promise;\n _nextId: number;\n\n // During any given event loop, the results for a given call will\n // all be the same, so we can dedup the calls to save requests and\n // bandwidth. @TODO: Try out generalizing this against send?\n _eventLoopCache: Record>;\n get _cache(): Record> {\n if (this._eventLoopCache == null) {\n this._eventLoopCache = { };\n }\n return this._eventLoopCache;\n }\n\n constructor(url?: ConnectionInfo | string, network?: Networkish) {\n let networkOrReady: Networkish | Promise = network;\n\n // The network is unknown, query the JSON-RPC for it\n if (networkOrReady == null) {\n networkOrReady = new Promise((resolve, reject) => {\n setTimeout(() => {\n this.detectNetwork().then((network) => {\n resolve(network);\n }, (error) => {\n reject(error);\n });\n }, 0);\n });\n }\n\n super(networkOrReady);\n\n // Default URL\n if (!url) { url = getStatic<() => string>(this.constructor, \"defaultUrl\")(); }\n\n if (typeof(url) === \"string\") {\n defineReadOnly(this, \"connection\",Object.freeze({\n url: url\n }));\n } else {\n defineReadOnly(this, \"connection\", Object.freeze(shallowCopy(url)));\n }\n\n this._nextId = 42;\n }\n\n static defaultUrl(): string {\n return \"http:/\\/localhost:8545\";\n }\n\n detectNetwork(): Promise {\n if (!this._cache[\"detectNetwork\"]) {\n this._cache[\"detectNetwork\"] = this._uncachedDetectNetwork();\n\n // Clear this cache at the beginning of the next event loop\n setTimeout(() => {\n this._cache[\"detectNetwork\"] = null;\n }, 0);\n }\n return this._cache[\"detectNetwork\"];\n }\n\n async _uncachedDetectNetwork(): Promise {\n await timer(0);\n\n let chainId = null;\n try {\n chainId = await this.send(\"eth_chainId\", [ ]);\n } catch (error) {\n try {\n chainId = await this.send(\"net_version\", [ ]);\n } catch (error) { }\n }\n\n if (chainId != null) {\n const getNetwork = getStatic<(network: Networkish) => Network>(this.constructor, \"getNetwork\");\n try {\n return getNetwork(BigNumber.from(chainId).toNumber());\n } catch (error) {\n return logger.throwError(\"could not detect network\", Logger.errors.NETWORK_ERROR, {\n chainId: chainId,\n event: \"invalidNetwork\",\n serverError: error\n });\n }\n }\n\n return logger.throwError(\"could not detect network\", Logger.errors.NETWORK_ERROR, {\n event: \"noNetwork\"\n });\n }\n\n getSigner(addressOrIndex?: string | number): JsonRpcSigner {\n return new JsonRpcSigner(_constructorGuard, this, addressOrIndex);\n }\n\n getUncheckedSigner(addressOrIndex?: string | number): UncheckedJsonRpcSigner {\n return this.getSigner(addressOrIndex).connectUnchecked();\n }\n\n listAccounts(): Promise> {\n return this.send(\"eth_accounts\", []).then((accounts: Array) => {\n return accounts.map((a) => this.formatter.address(a));\n });\n }\n\n send(method: string, params: Array): Promise {\n const request = {\n method: method,\n params: params,\n id: (this._nextId++),\n jsonrpc: \"2.0\"\n };\n\n this.emit(\"debug\", {\n action: \"request\",\n request: deepCopy(request),\n provider: this\n });\n\n // We can expand this in the future to any call, but for now these\n // are the biggest wins and do not require any serializing parameters.\n const cache = ([ \"eth_chainId\", \"eth_blockNumber\" ].indexOf(method) >= 0);\n if (cache && this._cache[method]) {\n return this._cache[method];\n }\n\n const result = fetchJson(this.connection, JSON.stringify(request), getResult).then((result) => {\n this.emit(\"debug\", {\n action: \"response\",\n request: request,\n response: result,\n provider: this\n });\n\n return result;\n\n }, (error) => {\n this.emit(\"debug\", {\n action: \"response\",\n error: error,\n request: request,\n provider: this\n });\n\n throw error;\n });\n\n // Cache the fetch, but clear it on the next event loop\n if (cache) {\n this._cache[method] = result;\n setTimeout(() => {\n this._cache[method] = null;\n }, 0);\n }\n\n return result;\n }\n\n prepareRequest(method: string, params: any): [ string, Array ] {\n switch (method) {\n case \"getBlockNumber\":\n return [ \"eth_blockNumber\", [] ];\n\n case \"getGasPrice\":\n return [ \"eth_gasPrice\", [] ];\n\n case \"getBalance\":\n return [ \"eth_getBalance\", [ getLowerCase(params.address), params.blockTag ] ];\n\n case \"getTransactionCount\":\n return [ \"eth_getTransactionCount\", [ getLowerCase(params.address), params.blockTag ] ];\n\n case \"getCode\":\n return [ \"eth_getCode\", [ getLowerCase(params.address), params.blockTag ] ];\n\n case \"getStorageAt\":\n return [ \"eth_getStorageAt\", [ getLowerCase(params.address), hexZeroPad(params.position, 32), params.blockTag ] ];\n\n case \"sendTransaction\":\n return [ \"eth_sendRawTransaction\", [ params.signedTransaction ] ]\n\n case \"getBlock\":\n if (params.blockTag) {\n return [ \"eth_getBlockByNumber\", [ params.blockTag, !!params.includeTransactions ] ];\n } else if (params.blockHash) {\n return [ \"eth_getBlockByHash\", [ params.blockHash, !!params.includeTransactions ] ];\n }\n return null;\n\n case \"getTransaction\":\n return [ \"eth_getTransactionByHash\", [ params.transactionHash ] ];\n\n case \"getTransactionReceipt\":\n return [ \"eth_getTransactionReceipt\", [ params.transactionHash ] ];\n\n case \"call\": {\n const hexlifyTransaction = getStatic<(t: TransactionRequest, a?: { [key: string]: boolean }) => { [key: string]: string }>(this.constructor, \"hexlifyTransaction\");\n return [ \"eth_call\", [ hexlifyTransaction(params.transaction, { from: true }), params.blockTag ] ];\n }\n\n case \"estimateGas\": {\n const hexlifyTransaction = getStatic<(t: TransactionRequest, a?: { [key: string]: boolean }) => { [key: string]: string }>(this.constructor, \"hexlifyTransaction\");\n return [ \"eth_estimateGas\", [ hexlifyTransaction(params.transaction, { from: true }) ] ];\n }\n\n case \"getLogs\":\n if (params.filter && params.filter.address != null) {\n params.filter.address = getLowerCase(params.filter.address);\n }\n return [ \"eth_getLogs\", [ params.filter ] ];\n\n default:\n break;\n }\n\n return null;\n }\n\n async perform(method: string, params: any): Promise {\n // Legacy networks do not like the type field being passed along (which\n // is fair), so we delete type if it is 0 and a non-EIP-1559 network\n if (method === \"call\" || method === \"estimateGas\") {\n const tx = params.transaction;\n if (tx && tx.type != null && BigNumber.from(tx.type).isZero()) {\n // If there are no EIP-1559 properties, it might be non-EIP-1559\n if (tx.maxFeePerGas == null && tx.maxPriorityFeePerGas == null) {\n const feeData = await this.getFeeData();\n if (feeData.maxFeePerGas == null && feeData.maxPriorityFeePerGas == null) {\n // Network doesn't know about EIP-1559 (and hence type)\n params = shallowCopy(params);\n params.transaction = shallowCopy(tx);\n delete params.transaction.type;\n }\n }\n }\n }\n\n const args = this.prepareRequest(method, params);\n\n if (args == null) {\n logger.throwError(method + \" not implemented\", Logger.errors.NOT_IMPLEMENTED, { operation: method });\n }\n try {\n return await this.send(args[0], args[1])\n } catch (error) {\n return checkError(method, error, params);\n }\n }\n\n _startEvent(event: Event): void {\n if (event.tag === \"pending\") { this._startPending(); }\n super._startEvent(event);\n }\n\n _startPending(): void {\n if (this._pendingFilter != null) { return; }\n const self = this;\n\n const pendingFilter: Promise = this.send(\"eth_newPendingTransactionFilter\", []);\n this._pendingFilter = pendingFilter;\n\n pendingFilter.then(function(filterId) {\n function poll() {\n self.send(\"eth_getFilterChanges\", [ filterId ]).then(function(hashes: Array) {\n if (self._pendingFilter != pendingFilter) { return null; }\n\n let seq = Promise.resolve();\n hashes.forEach(function(hash) {\n // @TODO: This should be garbage collected at some point... How? When?\n self._emitted[\"t:\" + hash.toLowerCase()] = \"pending\";\n seq = seq.then(function() {\n return self.getTransaction(hash).then(function(tx) {\n self.emit(\"pending\", tx);\n return null;\n });\n });\n });\n\n return seq.then(function() {\n return timer(1000);\n });\n }).then(function() {\n if (self._pendingFilter != pendingFilter) {\n self.send(\"eth_uninstallFilter\", [ filterId ]);\n return;\n }\n setTimeout(function() { poll(); }, 0);\n\n return null;\n }).catch((error: Error) => { });\n }\n poll();\n\n return filterId;\n }).catch((error: Error) => { });\n }\n\n _stopEvent(event: Event): void {\n if (event.tag === \"pending\" && this.listenerCount(\"pending\") === 0) {\n this._pendingFilter = null;\n }\n super._stopEvent(event);\n }\n\n // Convert an ethers.js transaction into a JSON-RPC transaction\n // - gasLimit => gas\n // - All values hexlified\n // - All numeric values zero-striped\n // - All addresses are lowercased\n // NOTE: This allows a TransactionRequest, but all values should be resolved\n // before this is called\n // @TODO: This will likely be removed in future versions and prepareRequest\n // will be the preferred method for this.\n static hexlifyTransaction(transaction: TransactionRequest, allowExtra?: { [key: string]: boolean }): { [key: string]: string | AccessList } {\n // Check only allowed properties are given\n const allowed = shallowCopy(allowedTransactionKeys);\n if (allowExtra) {\n for (const key in allowExtra) {\n if (allowExtra[key]) { allowed[key] = true; }\n }\n }\n\n checkProperties(transaction, allowed);\n\n const result: { [key: string]: string | AccessList } = {};\n\n // JSON-RPC now requires numeric values to be \"quantity\" values\n [\"chainId\", \"gasLimit\", \"gasPrice\", \"type\", \"maxFeePerGas\", \"maxPriorityFeePerGas\", \"nonce\", \"value\"].forEach(function(key) {\n if ((transaction)[key] == null) { return; }\n const value = hexValue(BigNumber.from((transaction)[key]));\n if (key === \"gasLimit\") { key = \"gas\"; }\n result[key] = value;\n });\n\n [\"from\", \"to\", \"data\"].forEach(function(key) {\n if ((transaction)[key] == null) { return; }\n result[key] = hexlify((transaction)[key]);\n });\n\n if ((transaction).accessList) {\n result[\"accessList\"] = accessListify((transaction).accessList);\n }\n\n return result;\n }\n}\n","\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\n\nlet WS: any = null;\n\ntry {\n WS = (WebSocket as any);\n if (WS == null) { throw new Error(\"inject please\"); }\n} catch (error) {\n const logger = new Logger(version);\n WS = function() {\n logger.throwError(\"WebSockets not supported in this environment\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new WebSocket()\"\n });\n }\n}\n//export default WS;\n//module.exports = WS;\nexport { WS as WebSocket };\n","\"use strict\";\n\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { Network, Networkish } from \"@ethersproject/networks\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Event } from \"./base-provider\";\nimport { JsonRpcProvider } from \"./json-rpc-provider\";\nimport { WebSocket } from \"./ws\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n/**\n * Notes:\n *\n * This provider differs a bit from the polling providers. One main\n * difference is how it handles consistency. The polling providers\n * will stall responses to ensure a consistent state, while this\n * WebSocket provider assumes the connected backend will manage this.\n *\n * For example, if a polling provider emits an event which indicates\n * the event occurred in blockhash XXX, a call to fetch that block by\n * its hash XXX, if not present will retry until it is present. This\n * can occur when querying a pool of nodes that are mildly out of sync\n * with each other.\n */\n\nlet NextId = 1;\n\nexport type InflightRequest = {\n callback: (error: Error, result: any) => void;\n payload: string;\n};\n\nexport type Subscription = {\n tag: string;\n processFunc: (payload: any) => void;\n};\n\nexport interface WebSocketLike {\n onopen: ((...args: Array) => any) | null;\n onmessage: ((...args: Array) => any) | null;\n onerror: ((...args: Array) => any) | null;\n\n readyState: number;\n\n send(payload: any): void;\n close(code?: number, reason?: string): void;\n}\n\n// For more info about the Real-time Event API see:\n// https://geth.ethereum.org/docs/rpc/pubsub\n\nexport class WebSocketProvider extends JsonRpcProvider {\n readonly _websocket: any;\n readonly _requests: { [ name: string ]: InflightRequest };\n readonly _detectNetwork: Promise;\n\n // Maps event tag to subscription ID (we dedupe identical events)\n readonly _subIds: { [ tag: string ]: Promise };\n\n // Maps Subscription ID to Subscription\n readonly _subs: { [ name: string ]: Subscription };\n\n _wsReady: boolean;\n\n constructor(url: string | WebSocketLike, network?: Networkish) {\n\n // This will be added in the future; please open an issue to expedite\n if (network === \"any\") {\n logger.throwError(\"WebSocketProvider does not support 'any' network yet\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"network:any\"\n });\n }\n\n if (typeof(url) === \"string\") {\n super(url, network);\n } else {\n super(\"_websocket\", network);\n }\n\n this._pollingInterval = -1;\n\n this._wsReady = false;\n\n if (typeof(url) === \"string\") {\n defineReadOnly(this, \"_websocket\", new WebSocket(this.connection.url));\n } else {\n defineReadOnly(this, \"_websocket\", url);\n }\n\n defineReadOnly(this, \"_requests\", { });\n defineReadOnly(this, \"_subs\", { });\n defineReadOnly(this, \"_subIds\", { });\n defineReadOnly(this, \"_detectNetwork\", super.detectNetwork());\n\n // Stall sending requests until the socket is open...\n this.websocket.onopen = () => {\n this._wsReady = true;\n Object.keys(this._requests).forEach((id) => {\n this.websocket.send(this._requests[id].payload);\n });\n };\n\n this.websocket.onmessage = (messageEvent: { data: string }) => {\n const data = messageEvent.data;\n const result = JSON.parse(data);\n if (result.id != null) {\n const id = String(result.id);\n const request = this._requests[id];\n delete this._requests[id];\n\n if (result.result !== undefined) {\n request.callback(null, result.result);\n\n this.emit(\"debug\", {\n action: \"response\",\n request: JSON.parse(request.payload),\n response: result.result,\n provider: this\n });\n\n } else {\n let error: Error = null;\n if (result.error) {\n error = new Error(result.error.message || \"unknown error\");\n defineReadOnly(error, \"code\", result.error.code || null);\n defineReadOnly(error, \"response\", data);\n } else {\n error = new Error(\"unknown error\");\n }\n\n request.callback(error, undefined);\n\n this.emit(\"debug\", {\n action: \"response\",\n error: error,\n request: JSON.parse(request.payload),\n provider: this\n });\n\n }\n\n } else if (result.method === \"eth_subscription\") {\n // Subscription...\n const sub = this._subs[result.params.subscription];\n if (sub) {\n //this.emit.apply(this, );\n sub.processFunc(result.params.result)\n }\n\n } else {\n console.warn(\"this should not happen\");\n }\n };\n\n // This Provider does not actually poll, but we want to trigger\n // poll events for things that depend on them (like stalling for\n // block and transaction lookups)\n const fauxPoll = setInterval(() => {\n this.emit(\"poll\");\n }, 1000);\n if (fauxPoll.unref) { fauxPoll.unref(); }\n }\n\n // Cannot narrow the type of _websocket, as that is not backwards compatible\n // so we add a getter and let the WebSocket be a public API.\n get websocket(): WebSocketLike { return this._websocket; }\n\n detectNetwork(): Promise {\n return this._detectNetwork;\n }\n\n get pollingInterval(): number {\n return 0;\n }\n\n resetEventsBlock(blockNumber: number): void {\n logger.throwError(\"cannot reset events block on WebSocketProvider\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"resetEventBlock\"\n });\n }\n\n set pollingInterval(value: number) {\n logger.throwError(\"cannot set polling interval on WebSocketProvider\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setPollingInterval\"\n });\n }\n\n async poll(): Promise {\n return null;\n }\n\n set polling(value: boolean) {\n if (!value) { return; }\n\n logger.throwError(\"cannot set polling on WebSocketProvider\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setPolling\"\n });\n }\n\n send(method: string, params?: Array): Promise {\n const rid = NextId++;\n\n return new Promise((resolve, reject) => {\n function callback(error: Error, result: any) {\n if (error) { return reject(error); }\n return resolve(result);\n }\n\n const payload = JSON.stringify({\n method: method,\n params: params,\n id: rid,\n jsonrpc: \"2.0\"\n });\n\n this.emit(\"debug\", {\n action: \"request\",\n request: JSON.parse(payload),\n provider: this\n });\n\n this._requests[String(rid)] = { callback, payload };\n\n if (this._wsReady) { this.websocket.send(payload); }\n });\n }\n\n static defaultUrl(): string {\n return \"ws:/\\/localhost:8546\";\n }\n\n async _subscribe(tag: string, param: Array, processFunc: (result: any) => void): Promise {\n let subIdPromise = this._subIds[tag];\n if (subIdPromise == null) {\n subIdPromise = Promise.all(param).then((param) => {\n return this.send(\"eth_subscribe\", param);\n });\n this._subIds[tag] = subIdPromise;\n }\n const subId = await subIdPromise;\n this._subs[subId] = { tag, processFunc };\n }\n\n _startEvent(event: Event): void {\n switch (event.type) {\n case \"block\":\n this._subscribe(\"block\", [ \"newHeads\" ], (result: any) => {\n const blockNumber = BigNumber.from(result.number).toNumber();\n this._emitted.block = blockNumber;\n this.emit(\"block\", blockNumber);\n });\n break;\n\n case \"pending\":\n this._subscribe(\"pending\", [ \"newPendingTransactions\" ], (result: any) => {\n this.emit(\"pending\", result);\n });\n break;\n\n case \"filter\":\n this._subscribe(event.tag, [ \"logs\", this._getFilter(event.filter) ], (result: any) => {\n if (result.removed == null) { result.removed = false; }\n this.emit(event.filter, this.formatter.filterLog(result));\n });\n break;\n\n case \"tx\": {\n const emitReceipt = (event: Event) => {\n const hash = event.hash;\n this.getTransactionReceipt(hash).then((receipt) => {\n if (!receipt) { return; }\n this.emit(hash, receipt);\n });\n };\n\n // In case it is already mined\n emitReceipt(event);\n\n // To keep things simple, we start up a single newHeads subscription\n // to keep an eye out for transactions we are watching for.\n // Starting a subscription for an event (i.e. \"tx\") that is already\n // running is (basically) a nop.\n this._subscribe(\"tx\", [ \"newHeads\" ], (result: any) => {\n this._events.filter((e) => (e.type === \"tx\")).forEach(emitReceipt);\n });\n break;\n }\n\n // Nothing is needed\n case \"debug\":\n case \"poll\":\n case \"willPoll\":\n case \"didPoll\":\n case \"error\":\n break;\n\n default:\n console.log(\"unhandled:\", event);\n break;\n }\n }\n\n _stopEvent(event: Event): void {\n let tag = event.tag;\n\n if (event.type === \"tx\") {\n // There are remaining transaction event listeners\n if (this._events.filter((e) => (e.type === \"tx\")).length) {\n return;\n }\n tag = \"tx\";\n } else if (this.listenerCount(event.event)) {\n // There are remaining event listeners\n return;\n }\n\n const subId = this._subIds[tag];\n if (!subId) { return; }\n\n delete this._subIds[tag];\n subId.then((subId) => {\n if (!this._subs[subId]) { return; }\n delete this._subs[subId];\n this.send(\"eth_unsubscribe\", [ subId ]);\n });\n }\n\n async destroy(): Promise {\n // Wait until we have connected before trying to disconnect\n if (this.websocket.readyState === WebSocket.CONNECTING) {\n await (new Promise((resolve) => {\n this.websocket.onopen = function() {\n resolve(true);\n };\n\n this.websocket.onerror = function() {\n resolve(false);\n };\n }));\n }\n\n // Hangup\n // See: https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent#Status_codes\n this.websocket.close(1000);\n }\n}\n","\n\"use strict\";\n\nimport { Network, Networkish } from \"@ethersproject/networks\";\nimport { defineReadOnly, getStatic } from \"@ethersproject/properties\";\nimport { ConnectionInfo } from \"@ethersproject/web\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { CommunityResourcable } from \"./formatter\";\nimport { JsonRpcProvider, JsonRpcSigner } from \"./json-rpc-provider\";\n\ntype getUrlFunc = (network: Network, apiKey: string) => string | ConnectionInfo;\n\n// A StaticJsonRpcProvider is useful when you *know* for certain that\n// the backend will never change, as it never calls eth_chainId to\n// verify its backend. However, if the backend does change, the effects\n// are undefined and may include:\n// - inconsistent results\n// - locking up the UI\n// - block skew warnings\n// - wrong results\n// If the network is not explicit (i.e. auto-detection is expected), the\n// node MUST be running and available to respond to requests BEFORE this\n// is instantiated.\nexport class StaticJsonRpcProvider extends JsonRpcProvider {\n async detectNetwork(): Promise {\n let network = this.network;\n if (network == null) {\n network = await super.detectNetwork();\n\n if (!network) {\n logger.throwError(\"no network detected\", Logger.errors.UNKNOWN_ERROR, { });\n }\n\n // If still not set, set it\n if (this._network == null) {\n // A static network does not support \"any\"\n defineReadOnly(this, \"_network\", network);\n\n this.emit(\"network\", network, null);\n }\n }\n return network;\n }\n}\n\nexport abstract class UrlJsonRpcProvider extends StaticJsonRpcProvider implements CommunityResourcable {\n readonly apiKey: any;\n\n constructor(network?: Networkish, apiKey?: any) {\n logger.checkAbstract(new.target, UrlJsonRpcProvider);\n\n // Normalize the Network and API Key\n network = getStatic<(network: Networkish) => Network>(new.target, \"getNetwork\")(network);\n apiKey = getStatic<(apiKey: string) => string>(new.target, \"getApiKey\")(apiKey);\n\n const connection = getStatic(new.target, \"getUrl\")(network, apiKey);\n\n super(connection, network);\n\n if (typeof(apiKey) === \"string\") {\n defineReadOnly(this, \"apiKey\", apiKey);\n } else if (apiKey != null) {\n Object.keys(apiKey).forEach((key) => {\n defineReadOnly(this, key, apiKey[key]);\n });\n }\n }\n\n _startPending(): void {\n logger.warn(\"WARNING: API provider does not support pending filters\");\n }\n\n isCommunityResource(): boolean {\n return false;\n }\n\n getSigner(address?: string): JsonRpcSigner {\n return logger.throwError(\n \"API provider does not support signing\",\n Logger.errors.UNSUPPORTED_OPERATION,\n { operation: \"getSigner\" }\n );\n }\n\n listAccounts(): Promise> {\n return Promise.resolve([]);\n }\n\n // Return a defaultApiKey if null, otherwise validate the API key\n static getApiKey(apiKey: any): any {\n return apiKey;\n }\n\n // Returns the url or connection for the given network and API key. The\n // API key will have been sanitized by the getApiKey first, so any validation\n // or transformations can be done there.\n static getUrl(network: Network, apiKey: any): string | ConnectionInfo {\n return logger.throwError(\"not implemented; sub-classes must override getUrl\", Logger.errors.NOT_IMPLEMENTED, {\n operation: \"getUrl\"\n });\n }\n}\n","\"use strict\";\n\nimport { Network, Networkish } from \"@ethersproject/networks\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { ConnectionInfo } from \"@ethersproject/web\";\n\nimport { CommunityResourcable, showThrottleMessage } from \"./formatter\";\nimport { WebSocketProvider } from \"./websocket-provider\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\n\n// This key was provided to ethers.js by Alchemy to be used by the\n// default provider, but it is recommended that for your own\n// production environments, that you acquire your own API key at:\n// https://dashboard.alchemyapi.io\n\nconst defaultApiKey = \"_gg7wSSi0KMBsdKnGVfHDueq6xMB9EkC\"\n\nexport class AlchemyWebSocketProvider extends WebSocketProvider implements CommunityResourcable {\n readonly apiKey: string;\n\n constructor(network?: Networkish, apiKey?: any) {\n const provider = new AlchemyProvider(network, apiKey);\n\n const url = provider.connection.url.replace(/^http/i, \"ws\")\n .replace(\".alchemyapi.\", \".ws.alchemyapi.\");\n\n super(url, provider.network);\n defineReadOnly(this, \"apiKey\", provider.apiKey);\n }\n\n isCommunityResource(): boolean {\n return (this.apiKey === defaultApiKey);\n }\n}\n\nexport class AlchemyProvider extends UrlJsonRpcProvider {\n\n static getWebSocketProvider(network?: Networkish, apiKey?: any): AlchemyWebSocketProvider {\n return new AlchemyWebSocketProvider(network, apiKey);\n }\n\n static getApiKey(apiKey: any): any {\n if (apiKey == null) { return defaultApiKey; }\n if (apiKey && typeof(apiKey) !== \"string\") {\n logger.throwArgumentError(\"invalid apiKey\", \"apiKey\", apiKey);\n }\n return apiKey;\n }\n\n static getUrl(network: Network, apiKey: string): ConnectionInfo {\n let host = null;\n switch (network.name) {\n case \"homestead\":\n host = \"eth-mainnet.alchemyapi.io/v2/\";\n break;\n case \"goerli\":\n host = \"eth-goerli.g.alchemy.com/v2/\";\n break;\n case \"matic\":\n host = \"polygon-mainnet.g.alchemy.com/v2/\";\n break;\n case \"maticmum\":\n host = \"polygon-mumbai.g.alchemy.com/v2/\";\n break;\n case \"arbitrum\":\n host = \"arb-mainnet.g.alchemy.com/v2/\";\n break;\n case \"arbitrum-goerli\":\n host = \"arb-goerli.g.alchemy.com/v2/\";\n break;\n case \"optimism\":\n host = \"opt-mainnet.g.alchemy.com/v2/\";\n break;\n case \"optimism-goerli\":\n host = \"opt-goerli.g.alchemy.com/v2/\"\n break;\n default:\n logger.throwArgumentError(\"unsupported network\", \"network\", arguments[0]);\n }\n\n return {\n allowGzip: true,\n url: (\"https:/\" + \"/\" + host + apiKey),\n throttleCallback: (attempt: number, url: string) => {\n if (apiKey === defaultApiKey) {\n showThrottleMessage();\n }\n return Promise.resolve(true);\n }\n };\n }\n\n isCommunityResource(): boolean {\n return (this.apiKey === defaultApiKey);\n }\n}\n","\nimport { Network } from \"@ethersproject/networks\";\n\nimport { showThrottleMessage } from \"./formatter\";\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\n\nimport type { ConnectionInfo } from \"@ethersproject/web\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n\nconst defaultApiKey = \"9f7d929b018cdffb338517efa06f58359e86ff1ffd350bc889738523659e7972\";\n\nfunction getHost(name: string): string {\n switch (name) {\n case \"homestead\":\n return \"rpc.ankr.com/eth/\";\n case \"ropsten\":\n return \"rpc.ankr.com/eth_ropsten/\";\n case \"rinkeby\":\n return \"rpc.ankr.com/eth_rinkeby/\";\n case \"goerli\":\n return \"rpc.ankr.com/eth_goerli/\";\n\n case \"matic\":\n return \"rpc.ankr.com/polygon/\";\n\n case \"arbitrum\":\n return \"rpc.ankr.com/arbitrum/\";\n }\n return logger.throwArgumentError(\"unsupported network\", \"name\", name);\n}\n\nexport class AnkrProvider extends UrlJsonRpcProvider {\n readonly apiKey: string;\n\n isCommunityResource(): boolean {\n return (this.apiKey === defaultApiKey);\n }\n\n static getApiKey(apiKey: any): any {\n if (apiKey == null) { return defaultApiKey; }\n return apiKey;\n }\n\n static getUrl(network: Network, apiKey: any): ConnectionInfo {\n if (apiKey == null) { apiKey = defaultApiKey; }\n const connection: ConnectionInfo = {\n allowGzip: true,\n url: (\"https:/\\/\" + getHost(network.name) + apiKey),\n throttleCallback: (attempt: number, url: string) => {\n if (apiKey.apiKey === defaultApiKey) {\n showThrottleMessage();\n }\n return Promise.resolve(true);\n }\n };\n\n if (apiKey.projectSecret != null) {\n connection.user = \"\";\n connection.password = apiKey.projectSecret\n }\n\n return connection;\n }\n}\n","\"use strict\";\n\nimport { Network } from \"@ethersproject/networks\";\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport class CloudflareProvider extends UrlJsonRpcProvider {\n\n static getApiKey(apiKey: any): any {\n if (apiKey != null) {\n logger.throwArgumentError(\"apiKey not supported for cloudflare\", \"apiKey\", apiKey);\n }\n return null;\n }\n\n static getUrl(network: Network, apiKey?: any): string {\n let host = null;\n switch (network.name) {\n case \"homestead\":\n host = \"https://cloudflare-eth.com/\";\n break;\n default:\n logger.throwArgumentError(\"unsupported network\", \"network\", arguments[0]);\n }\n\n return host;\n }\n\n async perform(method: string, params: any): Promise {\n // The Cloudflare provider does not support eth_blockNumber,\n // so we get the latest block and pull it from that\n if (method === \"getBlockNumber\") {\n const block = await super.perform(\"getBlock\", { blockTag: \"latest\" });\n return block.number;\n }\n\n return super.perform(method, params);\n }\n}\n","\"use strict\";\n\nimport { BlockTag, TransactionRequest, TransactionResponse } from \"@ethersproject/abstract-provider\";\nimport { hexlify, hexValue, isHexString } from \"@ethersproject/bytes\";\nimport { Network, Networkish } from \"@ethersproject/networks\";\nimport { deepCopy, defineReadOnly } from \"@ethersproject/properties\";\nimport { accessListify } from \"@ethersproject/transactions\";\nimport { ConnectionInfo, fetchJson } from \"@ethersproject/web\";\n\nimport { showThrottleMessage } from \"./formatter\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { BaseProvider } from \"./base-provider\";\n\n\n// The transaction has already been sanitized by the calls in Provider\nfunction getTransactionPostData(transaction: TransactionRequest): Record {\n const result: Record = { };\n for (let key in transaction) {\n if ((transaction)[key] == null) { continue; }\n let value = (transaction)[key];\n if (key === \"type\" && value === 0) { continue; }\n\n // Quantity-types require no leading zero, unless 0\n if (({ type: true, gasLimit: true, gasPrice: true, maxFeePerGs: true, maxPriorityFeePerGas: true, nonce: true, value: true })[key]) {\n value = hexValue(hexlify(value));\n } else if (key === \"accessList\") {\n value = \"[\" + accessListify(value).map((set) => {\n return `{address:\"${ set.address }\",storageKeys:[\"${ set.storageKeys.join('\",\"') }\"]}`;\n }).join(\",\") + \"]\";\n } else {\n value = hexlify(value);\n }\n result[key] = value;\n }\n return result;\n}\n\nfunction getResult(result: { status?: number, message?: string, result?: any }): any {\n // getLogs, getHistory have weird success responses\n if (result.status == 0 && (result.message === \"No records found\" || result.message === \"No transactions found\")) {\n return result.result;\n }\n\n if (result.status != 1 || typeof(result.message) !== \"string\" || !result.message.match(/^OK/)) {\n const error: any = new Error(\"invalid response\");\n error.result = JSON.stringify(result);\n if ((result.result || \"\").toLowerCase().indexOf(\"rate limit\") >= 0) {\n error.throttleRetry = true;\n }\n throw error;\n }\n\n return result.result;\n}\n\nfunction getJsonResult(result: { jsonrpc: string, result?: any, error?: { code?: number, data?: any, message?: string} } ): any {\n // This response indicates we are being throttled\n if (result && (result).status == 0 && (result).message == \"NOTOK\" && (result.result || \"\").toLowerCase().indexOf(\"rate limit\") >= 0) {\n const error: any = new Error(\"throttled response\");\n error.result = JSON.stringify(result);\n error.throttleRetry = true;\n throw error;\n }\n\n if (result.jsonrpc != \"2.0\") {\n // @TODO: not any\n const error: any = new Error(\"invalid response\");\n error.result = JSON.stringify(result);\n throw error;\n }\n\n if (result.error) {\n // @TODO: not any\n const error: any = new Error(result.error.message || \"unknown error\");\n if (result.error.code) { error.code = result.error.code; }\n if (result.error.data) { error.data = result.error.data; }\n throw error;\n }\n\n return result.result;\n}\n\n// The blockTag was normalized as a string by the Provider pre-perform operations\nfunction checkLogTag(blockTag: string): number | \"latest\" {\n if (blockTag === \"pending\") { throw new Error(\"pending not supported\"); }\n if (blockTag === \"latest\") { return blockTag; }\n\n return parseInt(blockTag.substring(2), 16);\n}\n\n\nfunction checkError(method: string, error: any, transaction: any): any {\n // Undo the \"convenience\" some nodes are attempting to prevent backwards\n // incompatibility; maybe for v6 consider forwarding reverts as errors\n if (method === \"call\" && error.code === Logger.errors.SERVER_ERROR) {\n const e = error.error;\n\n // Etherscan keeps changing their string\n if (e && (e.message.match(/reverted/i) || e.message.match(/VM execution error/i))) {\n // Etherscan prefixes the data like \"Reverted 0x1234\"\n let data = e.data;\n if (data) { data = \"0x\" + data.replace(/^.*0x/i, \"\"); }\n\n if (isHexString(data)) { return data; }\n\n logger.throwError(\"missing revert data in call exception\", Logger.errors.CALL_EXCEPTION, {\n error, data: \"0x\"\n });\n }\n }\n\n // Get the message from any nested error structure\n let message = error.message;\n if (error.code === Logger.errors.SERVER_ERROR) {\n if (error.error && typeof(error.error.message) === \"string\") {\n message = error.error.message;\n } else if (typeof(error.body) === \"string\") {\n message = error.body;\n } else if (typeof(error.responseText) === \"string\") {\n message = error.responseText;\n }\n }\n message = (message || \"\").toLowerCase();\n\n // \"Insufficient funds. The account you tried to send transaction from does not have enough funds. Required 21464000000000 and got: 0\"\n if (message.match(/insufficient funds/)) {\n logger.throwError(\"insufficient funds for intrinsic transaction cost\", Logger.errors.INSUFFICIENT_FUNDS, {\n error, method, transaction\n });\n }\n\n // \"Transaction with the same hash was already imported.\"\n if (message.match(/same hash was already imported|transaction nonce is too low|nonce too low/)) {\n logger.throwError(\"nonce has already been used\", Logger.errors.NONCE_EXPIRED, {\n error, method, transaction\n });\n }\n\n // \"Transaction gas price is too low. There is another transaction with same nonce in the queue. Try increasing the gas price or incrementing the nonce.\"\n if (message.match(/another transaction with same nonce/)) {\n logger.throwError(\"replacement fee too low\", Logger.errors.REPLACEMENT_UNDERPRICED, {\n error, method, transaction\n });\n }\n\n if (message.match(/execution failed due to an exception|execution reverted/)) {\n logger.throwError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", Logger.errors.UNPREDICTABLE_GAS_LIMIT, {\n error, method, transaction\n });\n }\n\n throw error;\n}\n\nexport class EtherscanProvider extends BaseProvider{\n readonly baseUrl: string;\n readonly apiKey: string | null;\n\n constructor(network?: Networkish, apiKey?: string) {\n super(network);\n\n defineReadOnly(this, \"baseUrl\", this.getBaseUrl());\n defineReadOnly(this, \"apiKey\", apiKey || null);\n }\n\n getBaseUrl(): string {\n switch(this.network ? this.network.name: \"invalid\") {\n case \"homestead\":\n return \"https:/\\/api.etherscan.io\";\n case \"goerli\":\n return \"https:/\\/api-goerli.etherscan.io\";\n case \"sepolia\":\n return \"https:/\\/api-sepolia.etherscan.io\";\n case \"matic\":\n return \"https:/\\/api.polygonscan.com\";\n case \"maticmum\":\n return \"https:/\\/api-testnet.polygonscan.com\";\n case \"arbitrum\":\n return \"https:/\\/api.arbiscan.io\";\n case \"arbitrum-goerli\":\n return \"https:/\\/api-goerli.arbiscan.io\";\n case \"optimism\":\n return \"https:/\\/api-optimistic.etherscan.io\";\n case \"optimism-goerli\":\n return \"https:/\\/api-goerli-optimistic.etherscan.io\";\n default:\n }\n\n return logger.throwArgumentError(\"unsupported network\", \"network\", this.network.name);\n }\n\n getUrl(module: string, params: Record): string {\n const query = Object.keys(params).reduce((accum, key) => {\n const value = params[key];\n if (value != null) {\n accum += `&${ key }=${ value }`\n }\n return accum\n }, \"\");\n const apiKey = ((this.apiKey) ? `&apikey=${ this.apiKey }`: \"\");\n return `${ this.baseUrl }/api?module=${ module }${ query }${ apiKey }`;\n }\n\n getPostUrl(): string {\n return `${ this.baseUrl }/api`;\n }\n\n getPostData(module: string, params: Record): Record {\n params.module = module;\n params.apikey = this.apiKey;\n return params;\n }\n\n async fetch(module: string, params: Record, post?: boolean): Promise {\n const url = (post ? this.getPostUrl(): this.getUrl(module, params));\n const payload = (post ? this.getPostData(module, params): null);\n const procFunc = (module === \"proxy\") ? getJsonResult: getResult;\n\n this.emit(\"debug\", {\n action: \"request\",\n request: url,\n provider: this\n });\n\n const connection: ConnectionInfo = {\n url: url,\n throttleSlotInterval: 1000,\n throttleCallback: (attempt: number, url: string) => {\n if (this.isCommunityResource()) {\n showThrottleMessage();\n }\n return Promise.resolve(true);\n }\n };\n\n let payloadStr: string = null;\n if (payload) {\n connection.headers = { \"content-type\": \"application/x-www-form-urlencoded; charset=UTF-8\" };\n payloadStr = Object.keys(payload).map((key) => {\n return `${ key }=${ payload[key] }`\n }).join(\"&\");\n }\n\n const result = await fetchJson(connection, payloadStr, procFunc || getJsonResult);\n\n this.emit(\"debug\", {\n action: \"response\",\n request: url,\n response: deepCopy(result),\n provider: this\n });\n\n return result;\n }\n\n async detectNetwork(): Promise {\n return this.network;\n }\n\n async perform(method: string, params: any): Promise {\n\n switch (method) {\n case \"getBlockNumber\":\n return this.fetch(\"proxy\", { action: \"eth_blockNumber\" });\n\n case \"getGasPrice\":\n return this.fetch(\"proxy\", { action: \"eth_gasPrice\" });\n\n case \"getBalance\":\n // Returns base-10 result\n return this.fetch(\"account\", {\n action: \"balance\",\n address: params.address,\n tag: params.blockTag\n });\n\n case \"getTransactionCount\":\n return this.fetch(\"proxy\", {\n action: \"eth_getTransactionCount\",\n address: params.address,\n tag: params.blockTag\n });\n\n case \"getCode\":\n return this.fetch(\"proxy\", {\n action: \"eth_getCode\",\n address: params.address,\n tag: params.blockTag\n });\n\n case \"getStorageAt\":\n return this.fetch(\"proxy\", {\n action: \"eth_getStorageAt\",\n address: params.address,\n position: params.position,\n tag: params.blockTag\n });\n\n case \"sendTransaction\":\n return this.fetch(\"proxy\", {\n action: \"eth_sendRawTransaction\",\n hex: params.signedTransaction\n }, true).catch((error) => {\n return checkError(\"sendTransaction\", error, params.signedTransaction);\n });\n\n case \"getBlock\":\n if (params.blockTag) {\n return this.fetch(\"proxy\", {\n action: \"eth_getBlockByNumber\",\n tag: params.blockTag,\n boolean: (params.includeTransactions ? \"true\": \"false\")\n });\n }\n throw new Error(\"getBlock by blockHash not implemented\");\n\n case \"getTransaction\":\n return this.fetch(\"proxy\", {\n action: \"eth_getTransactionByHash\",\n txhash: params.transactionHash\n });\n\n case \"getTransactionReceipt\":\n return this.fetch(\"proxy\", {\n action: \"eth_getTransactionReceipt\",\n txhash: params.transactionHash\n });\n\n case \"call\": {\n if (params.blockTag !== \"latest\") {\n throw new Error(\"EtherscanProvider does not support blockTag for call\");\n }\n\n const postData = getTransactionPostData(params.transaction);\n postData.module = \"proxy\";\n postData.action = \"eth_call\";\n\n try {\n return await this.fetch(\"proxy\", postData, true);\n } catch (error) {\n return checkError(\"call\", error, params.transaction);\n }\n }\n\n case \"estimateGas\": {\n const postData = getTransactionPostData(params.transaction);\n postData.module = \"proxy\";\n postData.action = \"eth_estimateGas\";\n\n try {\n return await this.fetch(\"proxy\", postData, true);\n } catch (error) {\n return checkError(\"estimateGas\", error, params.transaction);\n }\n }\n\n case \"getLogs\": {\n const args: Record = { action: \"getLogs\" }\n\n if (params.filter.fromBlock) {\n args.fromBlock = checkLogTag(params.filter.fromBlock);\n }\n\n if (params.filter.toBlock) {\n args.toBlock = checkLogTag(params.filter.toBlock);\n }\n\n if (params.filter.address) {\n args.address = params.filter.address;\n }\n\n // @TODO: We can handle slightly more complicated logs using the logs API\n if (params.filter.topics && params.filter.topics.length > 0) {\n if (params.filter.topics.length > 1) {\n logger.throwError(\"unsupported topic count\", Logger.errors.UNSUPPORTED_OPERATION, { topics: params.filter.topics });\n }\n\n if (params.filter.topics.length === 1) {\n const topic0 = params.filter.topics[0];\n if (typeof(topic0) !== \"string\" || topic0.length !== 66) {\n logger.throwError(\"unsupported topic format\", Logger.errors.UNSUPPORTED_OPERATION, { topic0: topic0 });\n }\n args.topic0 = topic0;\n }\n }\n\n const logs: Array = await this.fetch(\"logs\", args);\n\n // Cache txHash => blockHash\n let blocks: { [tag: string]: string } = {};\n\n // Add any missing blockHash to the logs\n for (let i = 0; i < logs.length; i++) {\n const log = logs[i];\n if (log.blockHash != null) { continue; }\n if (blocks[log.blockNumber] == null) {\n const block = await this.getBlock(log.blockNumber);\n if (block) {\n blocks[log.blockNumber] = block.hash;\n }\n }\n log.blockHash = blocks[log.blockNumber];\n }\n\n return logs;\n }\n\n case \"getEtherPrice\":\n if (this.network.name !== \"homestead\") { return 0.0; }\n return parseFloat((await this.fetch(\"stats\", { action: \"ethprice\" })).ethusd);\n\n default:\n break;\n }\n\n return super.perform(method, params);\n }\n\n // Note: The `page` page parameter only allows pagination within the\n // 10,000 window available without a page and offset parameter\n // Error: Result window is too large, PageNo x Offset size must\n // be less than or equal to 10000\n async getHistory(addressOrName: string | Promise, startBlock?: BlockTag, endBlock?: BlockTag): Promise> {\n const params = {\n action: \"txlist\",\n address: (await this.resolveName(addressOrName)),\n startblock: ((startBlock == null) ? 0: startBlock),\n endblock: ((endBlock == null) ? 99999999: endBlock),\n sort: \"asc\"\n };\n\n const result = await this.fetch(\"account\", params);\n\n return result.map((tx: any) => {\n [\"contractAddress\", \"to\"].forEach(function(key) {\n if (tx[key] == \"\") { delete tx[key]; }\n });\n if (tx.creates == null && tx.contractAddress != null) {\n tx.creates = tx.contractAddress;\n }\n const item = this.formatter.transactionResponse(tx);\n if (tx.timeStamp) { item.timestamp = parseInt(tx.timeStamp); }\n return item;\n });\n }\n\n isCommunityResource(): boolean {\n return (this.apiKey == null);\n }\n}\n","\"use strict\";\n\nimport { Block, BlockWithTransactions, Provider } from \"@ethersproject/abstract-provider\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { isHexString } from \"@ethersproject/bytes\";\nimport { Network } from \"@ethersproject/networks\";\nimport { deepCopy, defineReadOnly, shallowCopy } from \"@ethersproject/properties\";\nimport { shuffled } from \"@ethersproject/random\";\nimport { poll } from \"@ethersproject/web\";\n\nimport { BaseProvider } from \"./base-provider\";\nimport { isCommunityResource } from \"./formatter\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nfunction now() { return (new Date()).getTime(); }\n\n// Returns to network as long as all agree, or null if any is null.\n// Throws an error if any two networks do not match.\nfunction checkNetworks(networks: Array): Network {\n let result = null;\n\n for (let i = 0; i < networks.length; i++) {\n const network = networks[i];\n\n // Null! We do not know our network; bail.\n if (network == null) { return null; }\n\n if (result) {\n // Make sure the network matches the previous networks\n if (!(result.name === network.name && result.chainId === network.chainId &&\n ((result.ensAddress === network.ensAddress) || (result.ensAddress == null && network.ensAddress == null)))) {\n\n logger.throwArgumentError(\"provider mismatch\", \"networks\", networks);\n }\n } else {\n result = network;\n }\n }\n\n return result;\n}\n\nfunction median(values: Array, maxDelta?: number): number {\n values = values.slice().sort();\n const middle = Math.floor(values.length / 2);\n\n // Odd length; take the middle\n if (values.length % 2) {\n return values[middle];\n }\n\n // Even length; take the average of the two middle\n const a = values[middle - 1], b = values[middle];\n\n if (maxDelta != null && Math.abs(a - b) > maxDelta) {\n return null;\n }\n\n return (a + b) / 2;\n}\n\nfunction serialize(value: any): string {\n if (value === null) {\n return \"null\";\n } else if (typeof(value) === \"number\" || typeof(value) === \"boolean\") {\n return JSON.stringify(value);\n } else if (typeof(value) === \"string\") {\n return value;\n } else if (BigNumber.isBigNumber(value)) {\n return value.toString();\n } else if (Array.isArray(value)) {\n return JSON.stringify(value.map((i) => serialize(i)));\n } else if (typeof(value) === \"object\") {\n const keys = Object.keys(value);\n keys.sort();\n return \"{\" + keys.map((key) => {\n let v = value[key];\n if (typeof(v) === \"function\") {\n v = \"[function]\";\n } else {\n v = serialize(v);\n }\n return JSON.stringify(key) + \":\" + v;\n }).join(\",\") + \"}\";\n }\n\n throw new Error(\"unknown value type: \" + typeof(value));\n}\n\n// Next request ID to use for emitting debug info\nlet nextRid = 1;\n\n\nexport interface FallbackProviderConfig {\n // The Provider\n provider: Provider;\n\n // The priority to favour this Provider; lower values are used first (higher priority)\n priority?: number;\n\n // Timeout before also triggering the next provider; this does not stop\n // this provider and if its result comes back before a quorum is reached\n // it will be incorporated into the vote\n // - lower values will cause more network traffic but may result in a\n // faster result.\n stallTimeout?: number;\n\n // How much this provider contributes to the quorum; sometimes a specific\n // provider may be more reliable or trustworthy than others, but usually\n // this should be left as the default\n weight?: number;\n};\n\n// A Staller is used to provide a delay to give a Provider a chance to response\n// before asking the next Provider to try.\ntype Staller = {\n wait: (func: () => void) => Promise\n getPromise: () => Promise,\n cancel: () => void\n};\n\nfunction stall(duration: number): Staller {\n let cancel: () => void = null;\n\n let timer: NodeJS.Timer = null;\n let promise = >(new Promise((resolve) => {\n cancel = function() {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n resolve();\n }\n timer = setTimeout(cancel, duration);\n }));\n\n const wait = (func: () => void) => {\n promise = promise.then(func);\n return promise;\n }\n\n function getPromise(): Promise {\n return promise;\n }\n\n return { cancel, getPromise, wait };\n}\n\nconst ForwardErrors = [\n Logger.errors.CALL_EXCEPTION,\n Logger.errors.INSUFFICIENT_FUNDS,\n Logger.errors.NONCE_EXPIRED,\n Logger.errors.REPLACEMENT_UNDERPRICED,\n Logger.errors.UNPREDICTABLE_GAS_LIMIT\n];\n\nconst ForwardProperties = [\n \"address\",\n \"args\",\n \"errorArgs\",\n \"errorSignature\",\n \"method\",\n \"transaction\",\n];\n\n\n// @TODO: Make this an object with staller and cancel built-in\ninterface RunningConfig extends FallbackProviderConfig {\n start?: number;\n done?: boolean;\n cancelled?: boolean;\n runner?: Promise;\n staller?: Staller;\n result?: any;\n error?: Error;\n};\n\nfunction exposeDebugConfig(config: RunningConfig, now?: number): any {\n const result: any = {\n weight: config.weight\n };\n Object.defineProperty(result, \"provider\", { get: () => config.provider });\n if (config.start) { result.start = config.start; }\n if (now) { result.duration = (now - config.start); }\n if (config.done) {\n if (config.error) {\n result.error = config.error;\n } else {\n result.result = config.result || null;\n }\n }\n return result;\n}\n\nfunction normalizedTally(normalize: (value: any) => string, quorum: number): (configs: Array) => any {\n return function(configs: Array): any {\n\n // Count the votes for each result\n const tally: { [ key: string]: { count: number, result: any } } = { };\n configs.forEach((c) => {\n const value = normalize(c.result);\n if (!tally[value]) { tally[value] = { count: 0, result: c.result }; }\n tally[value].count++;\n });\n\n // Check for a quorum on any given result\n const keys = Object.keys(tally);\n for (let i = 0; i < keys.length; i++) {\n const check = tally[keys[i]];\n if (check.count >= quorum) {\n return check.result;\n }\n }\n\n // No quroum\n return undefined;\n }\n}\nfunction getProcessFunc(provider: FallbackProvider, method: string, params: { [ key: string ]: any }): (configs: Array) => any {\n\n let normalize = serialize;\n\n switch (method) {\n case \"getBlockNumber\":\n // Return the median value, unless there is (median + 1) is also\n // present, in which case that is probably true and the median\n // is going to be stale soon. In the event of a malicious node,\n // the lie will be true soon enough.\n return function(configs: Array): number {\n const values = configs.map((c) => c.result);\n\n // Get the median block number\n let blockNumber = median(configs.map((c) => c.result), 2);\n if (blockNumber == null) { return undefined; }\n\n blockNumber = Math.ceil(blockNumber);\n\n // If the next block height is present, its prolly safe to use\n if (values.indexOf(blockNumber + 1) >= 0) { blockNumber++; }\n\n // Don't ever roll back the blockNumber\n if (blockNumber >= provider._highestBlockNumber) {\n provider._highestBlockNumber = blockNumber;\n }\n\n return provider._highestBlockNumber;\n };\n\n case \"getGasPrice\":\n // Return the middle (round index up) value, similar to median\n // but do not average even entries and choose the higher.\n // Malicious actors must compromise 50% of the nodes to lie.\n return function(configs: Array): BigNumber {\n const values = configs.map((c) => c.result);\n values.sort();\n return values[Math.floor(values.length / 2)];\n }\n\n case \"getEtherPrice\":\n // Returns the median price. Malicious actors must compromise at\n // least 50% of the nodes to lie (in a meaningful way).\n return function(configs: Array): number {\n return median(configs.map((c) => c.result));\n }\n\n // No additional normalizing required; serialize is enough\n case \"getBalance\":\n case \"getTransactionCount\":\n case \"getCode\":\n case \"getStorageAt\":\n case \"call\":\n case \"estimateGas\":\n case \"getLogs\":\n break;\n\n // We drop the confirmations from transactions as it is approximate\n case \"getTransaction\":\n case \"getTransactionReceipt\":\n normalize = function(tx: any): string {\n if (tx == null) { return null; }\n\n tx = shallowCopy(tx);\n tx.confirmations = -1;\n return serialize(tx);\n }\n break;\n\n // We drop the confirmations from transactions as it is approximate\n case \"getBlock\":\n // We drop the confirmations from transactions as it is approximate\n if (params.includeTransactions) {\n normalize = function(block: BlockWithTransactions): string {\n if (block == null) { return null; }\n\n block = shallowCopy(block);\n block.transactions = block.transactions.map((tx) => {\n tx = shallowCopy(tx);\n tx.confirmations = -1;\n return tx;\n });\n return serialize(block);\n };\n } else {\n normalize = function(block: Block): string {\n if (block == null) { return null; }\n return serialize(block);\n }\n }\n break;\n\n default:\n throw new Error(\"unknown method: \" + method);\n }\n\n // Return the result if and only if the expected quorum is\n // satisfied and agreed upon for the final result.\n return normalizedTally(normalize, provider.quorum);\n\n}\n\n// If we are doing a blockTag query, we need to make sure the backend is\n// caught up to the FallbackProvider, before sending a request to it.\nasync function waitForSync(config: RunningConfig, blockNumber: number): Promise {\n const provider = (config.provider);\n\n if ((provider.blockNumber != null && provider.blockNumber >= blockNumber) || blockNumber === -1) {\n return provider;\n }\n\n return poll(() => {\n return new Promise((resolve, reject) => {\n setTimeout(function() {\n\n // We are synced\n if (provider.blockNumber >= blockNumber) { return resolve(provider); }\n\n // We're done; just quit\n if (config.cancelled) { return resolve(null); }\n\n // Try again, next block\n return resolve(undefined);\n }, 0);\n });\n }, { oncePoll: provider });\n}\n\nasync function getRunner(config: RunningConfig, currentBlockNumber: number, method: string, params: { [ key: string]: any }): Promise {\n let provider = config.provider;\n\n switch (method) {\n case \"getBlockNumber\":\n case \"getGasPrice\":\n return provider[method]();\n case \"getEtherPrice\":\n if ((provider).getEtherPrice) {\n return (provider).getEtherPrice();\n }\n break;\n case \"getBalance\":\n case \"getTransactionCount\":\n case \"getCode\":\n if (params.blockTag && isHexString(params.blockTag)) {\n provider = await waitForSync(config, currentBlockNumber)\n }\n return provider[method](params.address, params.blockTag || \"latest\");\n case \"getStorageAt\":\n if (params.blockTag && isHexString(params.blockTag)) {\n provider = await waitForSync(config, currentBlockNumber)\n }\n return provider.getStorageAt(params.address, params.position, params.blockTag || \"latest\");\n case \"getBlock\":\n if (params.blockTag && isHexString(params.blockTag)) {\n provider = await waitForSync(config, currentBlockNumber)\n }\n return provider[(params.includeTransactions ? \"getBlockWithTransactions\": \"getBlock\")](params.blockTag || params.blockHash);\n case \"call\":\n case \"estimateGas\":\n if (params.blockTag && isHexString(params.blockTag)) {\n provider = await waitForSync(config, currentBlockNumber)\n }\n if (method === \"call\" && params.blockTag) {\n return provider[method](params.transaction, params.blockTag);\n }\n return provider[method](params.transaction);\n case \"getTransaction\":\n case \"getTransactionReceipt\":\n return provider[method](params.transactionHash);\n case \"getLogs\": {\n let filter = params.filter;\n if ((filter.fromBlock && isHexString(filter.fromBlock)) || (filter.toBlock && isHexString(filter.toBlock))) {\n provider = await waitForSync(config, currentBlockNumber)\n }\n return provider.getLogs(filter);\n }\n }\n\n return logger.throwError(\"unknown method error\", Logger.errors.UNKNOWN_ERROR, {\n method: method,\n params: params\n });\n}\n\nexport class FallbackProvider extends BaseProvider {\n readonly providerConfigs: ReadonlyArray;\n readonly quorum: number;\n\n // Due to the highly asyncronous nature of the blockchain, we need\n // to make sure we never unroll the blockNumber due to our random\n // sample of backends\n _highestBlockNumber: number;\n\n constructor(providers: Array, quorum?: number) {\n if (providers.length === 0) {\n logger.throwArgumentError(\"missing providers\", \"providers\", providers);\n }\n\n const providerConfigs: Array = providers.map((configOrProvider, index) => {\n if (Provider.isProvider(configOrProvider)) {\n const stallTimeout = isCommunityResource(configOrProvider) ? 2000: 750;\n const priority = 1;\n return Object.freeze({ provider: configOrProvider, weight: 1, stallTimeout, priority });\n }\n\n const config: FallbackProviderConfig = shallowCopy(configOrProvider);\n\n if (config.priority == null) { config.priority = 1; }\n if (config.stallTimeout == null) {\n config.stallTimeout = isCommunityResource(configOrProvider) ? 2000: 750;\n }\n if (config.weight == null) { config.weight = 1; }\n\n const weight = config.weight;\n if (weight % 1 || weight > 512 || weight < 1) {\n logger.throwArgumentError(\"invalid weight; must be integer in [1, 512]\", `providers[${ index }].weight`, weight);\n }\n\n return Object.freeze(config);\n });\n\n const total = providerConfigs.reduce((accum, c) => (accum + c.weight), 0);\n\n if (quorum == null) {\n quorum = total / 2;\n } else if (quorum > total) {\n logger.throwArgumentError(\"quorum will always fail; larger than total weight\", \"quorum\", quorum);\n }\n\n // Are all providers' networks are known\n let networkOrReady: Network | Promise = checkNetworks(providerConfigs.map((c) => ((c.provider)).network));\n\n // Not all networks are known; we must stall\n if (networkOrReady == null) {\n networkOrReady = new Promise((resolve, reject) => {\n setTimeout(() => {\n this.detectNetwork().then(resolve, reject);\n }, 0);\n });\n }\n\n super(networkOrReady);\n\n // Preserve a copy, so we do not get mutated\n defineReadOnly(this, \"providerConfigs\", Object.freeze(providerConfigs));\n defineReadOnly(this, \"quorum\", quorum);\n\n this._highestBlockNumber = -1;\n }\n\n async detectNetwork(): Promise {\n const networks = await Promise.all(this.providerConfigs.map((c) => c.provider.getNetwork()));\n return checkNetworks(networks);\n }\n\n async perform(method: string, params: { [name: string]: any }): Promise {\n // Sending transactions is special; always broadcast it to all backends\n if (method === \"sendTransaction\") {\n const results: Array = await Promise.all(this.providerConfigs.map((c) => {\n return c.provider.sendTransaction(params.signedTransaction).then((result) => {\n return result.hash;\n }, (error) => {\n return error;\n });\n }));\n\n // Any success is good enough (other errors are likely \"already seen\" errors\n for (let i = 0; i < results.length; i++) {\n const result = results[i];\n if (typeof(result) === \"string\") { return result; }\n }\n\n // They were all an error; pick the first error\n throw results[0];\n }\n\n // We need to make sure we are in sync with our backends, so we need\n // to know this before we can make a lot of calls\n if (this._highestBlockNumber === -1 && method !== \"getBlockNumber\") {\n await this.getBlockNumber();\n }\n\n const processFunc = getProcessFunc(this, method, params);\n\n // Shuffle the providers and then sort them by their priority; we\n // shallowCopy them since we will store the result in them too\n const configs: Array = shuffled(this.providerConfigs.map(shallowCopy));\n configs.sort((a, b) => (a.priority - b.priority));\n\n const currentBlockNumber = this._highestBlockNumber;\n\n let i = 0;\n let first = true;\n while (true) {\n const t0 = now();\n\n // Compute the inflight weight (exclude anything past)\n let inflightWeight = configs.filter((c) => (c.runner && ((t0 - c.start) < c.stallTimeout)))\n .reduce((accum, c) => (accum + c.weight), 0);\n\n // Start running enough to meet quorum\n while (inflightWeight < this.quorum && i < configs.length) {\n const config = configs[i++];\n\n const rid = nextRid++;\n\n config.start = now();\n config.staller = stall(config.stallTimeout);\n config.staller.wait(() => { config.staller = null; });\n\n config.runner = getRunner(config, currentBlockNumber, method, params).then((result) => {\n config.done = true;\n config.result = result;\n\n if (this.listenerCount(\"debug\")) {\n this.emit(\"debug\", {\n action: \"request\",\n rid: rid,\n backend: exposeDebugConfig(config, now()),\n request: { method: method, params: deepCopy(params) },\n provider: this\n });\n }\n\n }, (error) => {\n config.done = true;\n config.error = error;\n\n if (this.listenerCount(\"debug\")) {\n this.emit(\"debug\", {\n action: \"request\",\n rid: rid,\n backend: exposeDebugConfig(config, now()),\n request: { method: method, params: deepCopy(params) },\n provider: this\n });\n }\n });\n\n if (this.listenerCount(\"debug\")) {\n this.emit(\"debug\", {\n action: \"request\",\n rid: rid,\n backend: exposeDebugConfig(config, null),\n request: { method: method, params: deepCopy(params) },\n provider: this\n });\n }\n\n inflightWeight += config.weight;\n }\n\n // Wait for anything meaningful to finish or stall out\n const waiting: Array> = [ ];\n configs.forEach((c) => {\n if (c.done || !c.runner) { return; }\n waiting.push(c.runner);\n if (c.staller) { waiting.push(c.staller.getPromise()); }\n });\n\n if (waiting.length) { await Promise.race(waiting); }\n\n // Check the quorum and process the results; the process function\n // may additionally decide the quorum is not met\n const results = configs.filter((c) => (c.done && c.error == null));\n if (results.length >= this.quorum) {\n const result = processFunc(results);\n if (result !== undefined) {\n // Shut down any stallers\n configs.forEach(c => {\n if (c.staller) { c.staller.cancel(); }\n c.cancelled = true;\n });\n return result;\n }\n if (!first) { await stall(100).getPromise(); }\n first = false;\n }\n\n // No result, check for errors that should be forwarded\n const errors = configs.reduce((accum, c) => {\n if (!c.done || c.error == null) { return accum; }\n\n const code = ((c.error)).code;\n if (ForwardErrors.indexOf(code) >= 0) {\n if (!accum[code]) { accum[code] = { error: c.error, weight: 0 }; }\n accum[code].weight += c.weight;\n }\n\n return accum;\n }, <{ [ code: string ]: { error: Error, weight: number } }>({ }));\n\n Object.keys(errors).forEach((errorCode: string) => {\n const tally = errors[errorCode];\n if (tally.weight < this.quorum) { return; }\n\n // Shut down any stallers\n configs.forEach(c => {\n if (c.staller) { c.staller.cancel(); }\n c.cancelled = true;\n });\n\n const e = (tally.error);\n\n const props: { [ name: string ]: any } = { };\n ForwardProperties.forEach((name) => {\n if (e[name] == null) { return; }\n props[name] = e[name];\n });\n\n logger.throwError(e.reason || e.message, errorCode, props);\n });\n\n // All configs have run to completion; we will never get more data\n if (configs.filter((c) => !c.done).length === 0) { break; }\n }\n\n // Shut down any stallers; shouldn't be any\n configs.forEach(c => {\n if (c.staller) { c.staller.cancel(); }\n c.cancelled = true;\n });\n\n return logger.throwError(\"failed to meet quorum\", Logger.errors.SERVER_ERROR, {\n method: method,\n params: params,\n //results: configs.map((c) => c.result),\n //errors: configs.map((c) => c.error),\n results: configs.map((c) => exposeDebugConfig(c)),\n provider: this\n });\n }\n}\n","\"use strict\";\n\nexport function shuffled(array: Array): Array {\n array = array.slice();\n\n for (let i = array.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n const tmp = array[i];\n array[i] = array[j];\n array[j] = tmp;\n }\n\n return array;\n}\n","\"use strict\";\n\nconst IpcProvider: any = null;\n\nexport {\n IpcProvider\n};\n","\"use strict\";\n\nimport { Network, Networkish } from \"@ethersproject/networks\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { ConnectionInfo } from \"@ethersproject/web\";\n\nimport { WebSocketProvider } from \"./websocket-provider\";\nimport { CommunityResourcable, showThrottleMessage } from \"./formatter\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\n\n\nconst defaultProjectId = \"84842078b09946638c03157f83405213\"\n\nexport class InfuraWebSocketProvider extends WebSocketProvider implements CommunityResourcable {\n readonly apiKey: string;\n readonly projectId: string;\n readonly projectSecret: string;\n\n constructor(network?: Networkish, apiKey?: any) {\n const provider = new InfuraProvider(network, apiKey);\n const connection = provider.connection;\n if (connection.password) {\n logger.throwError(\"INFURA WebSocket project secrets unsupported\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"InfuraProvider.getWebSocketProvider()\"\n });\n }\n\n const url = connection.url.replace(/^http/i, \"ws\").replace(\"/v3/\", \"/ws/v3/\");\n super(url, network);\n\n defineReadOnly(this, \"apiKey\", provider.projectId);\n defineReadOnly(this, \"projectId\", provider.projectId);\n defineReadOnly(this, \"projectSecret\", provider.projectSecret);\n }\n\n isCommunityResource(): boolean {\n return (this.projectId === defaultProjectId);\n }\n}\n\nexport class InfuraProvider extends UrlJsonRpcProvider {\n readonly projectId: string;\n readonly projectSecret: string;\n\n static getWebSocketProvider(network?: Networkish, apiKey?: any): InfuraWebSocketProvider {\n return new InfuraWebSocketProvider(network, apiKey);\n }\n\n static getApiKey(apiKey: any): any {\n const apiKeyObj: { apiKey: string, projectId: string, projectSecret: string } = {\n apiKey: defaultProjectId,\n projectId: defaultProjectId,\n projectSecret: null\n };\n\n if (apiKey == null) { return apiKeyObj; }\n\n if (typeof(apiKey) === \"string\") {\n apiKeyObj.projectId = apiKey;\n\n } else if (apiKey.projectSecret != null) {\n logger.assertArgument((typeof(apiKey.projectId) === \"string\"),\n \"projectSecret requires a projectId\", \"projectId\", apiKey.projectId);\n logger.assertArgument((typeof(apiKey.projectSecret) === \"string\"),\n \"invalid projectSecret\", \"projectSecret\", \"[REDACTED]\");\n\n apiKeyObj.projectId = apiKey.projectId;\n apiKeyObj.projectSecret = apiKey.projectSecret;\n\n } else if (apiKey.projectId) {\n apiKeyObj.projectId = apiKey.projectId;\n }\n\n apiKeyObj.apiKey = apiKeyObj.projectId;\n\n return apiKeyObj;\n }\n\n static getUrl(network: Network, apiKey: any): ConnectionInfo {\n let host: string = null;\n switch(network ? network.name: \"unknown\") {\n case \"homestead\":\n host = \"mainnet.infura.io\";\n break;\n case \"goerli\":\n host = \"goerli.infura.io\";\n break;\n case \"sepolia\":\n host = \"sepolia.infura.io\";\n break;\n case \"matic\":\n host = \"polygon-mainnet.infura.io\";\n break;\n case \"maticmum\":\n host = \"polygon-mumbai.infura.io\";\n break;\n case \"optimism\":\n host = \"optimism-mainnet.infura.io\";\n break;\n case \"optimism-goerli\":\n host = \"optimism-goerli.infura.io\";\n break;\n case \"arbitrum\":\n host = \"arbitrum-mainnet.infura.io\";\n break;\n case \"arbitrum-goerli\":\n host = \"arbitrum-goerli.infura.io\";\n break;\n default:\n logger.throwError(\"unsupported network\", Logger.errors.INVALID_ARGUMENT, {\n argument: \"network\",\n value: network\n });\n }\n\n const connection: ConnectionInfo = {\n allowGzip: true,\n url: (\"https:/\" + \"/\" + host + \"/v3/\" + apiKey.projectId),\n throttleCallback: (attempt: number, url: string) => {\n if (apiKey.projectId === defaultProjectId) {\n showThrottleMessage();\n }\n return Promise.resolve(true);\n }\n };\n\n if (apiKey.projectSecret != null) {\n connection.user = \"\";\n connection.password = apiKey.projectSecret\n }\n\n return connection;\n }\n\n isCommunityResource(): boolean {\n return (this.projectId === defaultProjectId);\n }\n}\n","\nimport { deepCopy } from \"@ethersproject/properties\";\nimport { fetchJson } from \"@ethersproject/web\";\n\nimport { JsonRpcProvider } from \"./json-rpc-provider\";\n\n// Experimental\n\nexport class JsonRpcBatchProvider extends JsonRpcProvider {\n _pendingBatchAggregator: NodeJS.Timer;\n _pendingBatch: Array<{\n request: { method: string, params: Array, id: number, jsonrpc: \"2.0\" },\n resolve: (result: any) => void,\n reject: (error: Error) => void\n }>;\n\n send(method: string, params: Array): Promise {\n const request = {\n method: method,\n params: params,\n id: (this._nextId++),\n jsonrpc: \"2.0\"\n };\n\n if (this._pendingBatch == null) {\n this._pendingBatch = [ ];\n }\n\n const inflightRequest: any = { request, resolve: null, reject: null };\n\n const promise = new Promise((resolve, reject) => {\n inflightRequest.resolve = resolve;\n inflightRequest.reject = reject;\n });\n\n this._pendingBatch.push(inflightRequest);\n\n if (!this._pendingBatchAggregator) {\n // Schedule batch for next event loop + short duration\n this._pendingBatchAggregator = setTimeout(() => {\n\n // Get teh current batch and clear it, so new requests\n // go into the next batch\n const batch = this._pendingBatch;\n this._pendingBatch = null;\n this._pendingBatchAggregator = null;\n\n // Get the request as an array of requests\n const request = batch.map((inflight) => inflight.request);\n\n this.emit(\"debug\", {\n action: \"requestBatch\",\n request: deepCopy(request),\n provider: this\n });\n\n return fetchJson(this.connection, JSON.stringify(request)).then((result) => {\n this.emit(\"debug\", {\n action: \"response\",\n request: request,\n response: result,\n provider: this\n });\n\n // For each result, feed it to the correct Promise, depending\n // on whether it was a success or error\n batch.forEach((inflightRequest, index) => {\n const payload = result[index];\n if (payload.error) {\n const error = new Error(payload.error.message);\n (error).code = payload.error.code;\n (error).data = payload.error.data;\n inflightRequest.reject(error);\n } else {\n inflightRequest.resolve(payload.result);\n }\n });\n\n }, (error) => {\n this.emit(\"debug\", {\n action: \"response\",\n error: error,\n request: request,\n provider: this\n });\n\n batch.forEach((inflightRequest) => {\n inflightRequest.reject(error);\n });\n });\n\n }, 10);\n }\n\n return promise;\n }\n}\n","/* istanbul ignore file */\n\n\"use strict\";\n\nimport { Network } from \"@ethersproject/networks\";\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n// Special API key provided by Nodesmith for ethers.js\nconst defaultApiKey = \"ETHERS_JS_SHARED\";\n\nexport class NodesmithProvider extends UrlJsonRpcProvider {\n\n static getApiKey(apiKey: any): any {\n if (apiKey && typeof(apiKey) !== \"string\") {\n logger.throwArgumentError(\"invalid apiKey\", \"apiKey\", apiKey);\n }\n return apiKey || defaultApiKey;\n }\n\n static getUrl(network: Network, apiKey?: any): string {\n logger.warn(\"NodeSmith will be discontinued on 2019-12-20; please migrate to another platform.\");\n\n let host = null;\n switch (network.name) {\n case \"homestead\":\n host = \"https://ethereum.api.nodesmith.io/v1/mainnet/jsonrpc\";\n break;\n case \"ropsten\":\n host = \"https://ethereum.api.nodesmith.io/v1/ropsten/jsonrpc\";\n break;\n case \"rinkeby\":\n host = \"https://ethereum.api.nodesmith.io/v1/rinkeby/jsonrpc\";\n break;\n case \"goerli\":\n host = \"https://ethereum.api.nodesmith.io/v1/goerli/jsonrpc\";\n break;\n case \"kovan\":\n host = \"https://ethereum.api.nodesmith.io/v1/kovan/jsonrpc\";\n break;\n default:\n logger.throwArgumentError(\"unsupported network\", \"network\", arguments[0]);\n }\n\n return (host + \"?apiKey=\" + apiKey);\n }\n}\n","\"use strict\";\n\nimport { Network } from \"@ethersproject/networks\";\nimport { ConnectionInfo } from \"@ethersproject/web\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\n\nconst defaultApplicationId = \"62e1ad51b37b8e00394bda3b\";\n\n\nexport class PocketProvider extends UrlJsonRpcProvider {\n readonly applicationId: string;\n readonly applicationSecretKey: string;\n readonly loadBalancer: boolean;\n\n static getApiKey(apiKey: any): any {\n const apiKeyObj: { applicationId: string, applicationSecretKey: string, loadBalancer: boolean } = {\n applicationId: null,\n loadBalancer: true,\n applicationSecretKey: null\n };\n\n // Parse applicationId and applicationSecretKey\n if (apiKey == null) {\n apiKeyObj.applicationId = defaultApplicationId;\n\n } else if (typeof (apiKey) === \"string\") {\n apiKeyObj.applicationId = apiKey;\n\n } else if (apiKey.applicationSecretKey != null) {\n apiKeyObj.applicationId = apiKey.applicationId;\n apiKeyObj.applicationSecretKey = apiKey.applicationSecretKey;\n\n } else if (apiKey.applicationId) {\n apiKeyObj.applicationId = apiKey.applicationId;\n\n } else {\n logger.throwArgumentError(\"unsupported PocketProvider apiKey\", \"apiKey\", apiKey);\n }\n\n return apiKeyObj;\n }\n\n static getUrl(network: Network, apiKey: any): ConnectionInfo {\n let host: string = null;\n switch (network ? network.name : \"unknown\") {\n case \"goerli\":\n host = \"eth-goerli.gateway.pokt.network\";\n break;\n case \"homestead\":\n host = \"eth-mainnet.gateway.pokt.network\";\n break;\n case \"kovan\":\n host = \"poa-kovan.gateway.pokt.network\";\n break;\n case \"matic\":\n host = \"poly-mainnet.gateway.pokt.network\";\n break;\n case \"maticmum\":\n host = \"polygon-mumbai-rpc.gateway.pokt.network\";\n break;\n case \"rinkeby\":\n host = \"eth-rinkeby.gateway.pokt.network\";\n break;\n case \"ropsten\":\n host = \"eth-ropsten.gateway.pokt.network\";\n break;\n default:\n logger.throwError(\"unsupported network\", Logger.errors.INVALID_ARGUMENT, {\n argument: \"network\",\n value: network\n });\n }\n\n const url = `https:/\\/${ host }/v1/lb/${ apiKey.applicationId }`\n\n const connection: ConnectionInfo = { headers: { }, url };\n if (apiKey.applicationSecretKey != null) {\n connection.user = \"\";\n connection.password = apiKey.applicationSecretKey\n }\n\n return connection;\n }\n\n isCommunityResource(): boolean {\n return (this.applicationId === defaultApplicationId);\n }\n}\n","\"use strict\";\n\nimport { Networkish } from \"@ethersproject/networks\";\nimport { deepCopy, defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { JsonRpcProvider } from \"./json-rpc-provider\";\n\n// Exported Types\nexport type ExternalProvider = {\n isMetaMask?: boolean;\n isStatus?: boolean;\n host?: string;\n path?: string;\n sendAsync?: (request: { method: string, params?: Array }, callback: (error: any, response: any) => void) => void\n send?: (request: { method: string, params?: Array }, callback: (error: any, response: any) => void) => void\n request?: (request: { method: string, params?: Array }) => Promise\n}\n\nlet _nextId = 1;\n\nexport type JsonRpcFetchFunc = (method: string, params?: Array) => Promise;\n\ntype Web3LegacySend = (request: any, callback: (error: Error, response: any) => void) => void;\n\nfunction buildWeb3LegacyFetcher(provider: ExternalProvider, sendFunc: Web3LegacySend) : JsonRpcFetchFunc {\n const fetcher = \"Web3LegacyFetcher\";\n\n return function(method: string, params: Array): Promise {\n const request = {\n method: method,\n params: params,\n id: (_nextId++),\n jsonrpc: \"2.0\"\n };\n\n return new Promise((resolve, reject) => {\n this.emit(\"debug\", {\n action: \"request\",\n fetcher,\n request: deepCopy(request),\n provider: this\n });\n\n sendFunc(request, (error, response) => {\n\n if (error) {\n this.emit(\"debug\", {\n action: \"response\",\n fetcher,\n error,\n request,\n provider: this\n });\n\n return reject(error);\n }\n\n this.emit(\"debug\", {\n action: \"response\",\n fetcher,\n request,\n response,\n provider: this\n });\n\n if (response.error) {\n const error = new Error(response.error.message);\n (error).code = response.error.code;\n (error).data = response.error.data;\n return reject(error);\n }\n\n resolve(response.result);\n });\n });\n }\n}\n\nfunction buildEip1193Fetcher(provider: ExternalProvider): JsonRpcFetchFunc {\n return function(method: string, params: Array): Promise {\n if (params == null) { params = [ ]; }\n\n const request = { method, params };\n\n this.emit(\"debug\", {\n action: \"request\",\n fetcher: \"Eip1193Fetcher\",\n request: deepCopy(request),\n provider: this\n });\n\n return provider.request(request).then((response) => {\n this.emit(\"debug\", {\n action: \"response\",\n fetcher: \"Eip1193Fetcher\",\n request,\n response,\n provider: this\n });\n\n return response;\n\n }, (error) => {\n this.emit(\"debug\", {\n action: \"response\",\n fetcher: \"Eip1193Fetcher\",\n request,\n error,\n provider: this\n });\n\n throw error;\n });\n }\n}\n\nexport class Web3Provider extends JsonRpcProvider {\n readonly provider: ExternalProvider;\n readonly jsonRpcFetchFunc: JsonRpcFetchFunc;\n\n constructor(provider: ExternalProvider | JsonRpcFetchFunc, network?: Networkish) {\n if (provider == null) {\n logger.throwArgumentError(\"missing provider\", \"provider\", provider);\n }\n\n let path: string = null;\n let jsonRpcFetchFunc: JsonRpcFetchFunc = null;\n let subprovider: ExternalProvider = null;\n\n if (typeof(provider) === \"function\") {\n path = \"unknown:\";\n jsonRpcFetchFunc = provider;\n\n } else {\n path = provider.host || provider.path || \"\";\n if (!path && provider.isMetaMask) {\n path = \"metamask\";\n }\n\n subprovider = provider;\n\n if (provider.request) {\n if (path === \"\") { path = \"eip-1193:\"; }\n jsonRpcFetchFunc = buildEip1193Fetcher(provider);\n } else if (provider.sendAsync) {\n jsonRpcFetchFunc = buildWeb3LegacyFetcher(provider, provider.sendAsync.bind(provider));\n } else if (provider.send) {\n jsonRpcFetchFunc = buildWeb3LegacyFetcher(provider, provider.send.bind(provider));\n } else {\n logger.throwArgumentError(\"unsupported provider\", \"provider\", provider);\n }\n\n if (!path) { path = \"unknown:\"; }\n }\n\n super(path, network);\n\n defineReadOnly(this, \"jsonRpcFetchFunc\", jsonRpcFetchFunc);\n defineReadOnly(this, \"provider\", subprovider);\n }\n\n send(method: string, params: Array): Promise {\n return this.jsonRpcFetchFunc(method, params);\n }\n}\n","\"use strict\";\n\nimport {\n Block,\n BlockTag,\n EventType,\n FeeData,\n Filter,\n Log,\n Listener,\n Provider,\n TransactionReceipt,\n TransactionRequest,\n TransactionResponse\n} from \"@ethersproject/abstract-provider\";\n\nimport { getNetwork } from \"@ethersproject/networks\";\nimport { Network, Networkish } from \"@ethersproject/networks\";\n\nimport { BaseProvider, EnsProvider, EnsResolver, Resolver } from \"./base-provider\";\n\nimport { AlchemyProvider, AlchemyWebSocketProvider } from \"./alchemy-provider\";\nimport { AnkrProvider } from \"./ankr-provider\";\nimport { CloudflareProvider } from \"./cloudflare-provider\";\nimport { EtherscanProvider } from \"./etherscan-provider\";\nimport { FallbackProvider, FallbackProviderConfig } from \"./fallback-provider\";\nimport { IpcProvider } from \"./ipc-provider\";\nimport { InfuraProvider, InfuraWebSocketProvider } from \"./infura-provider\";\nimport { JsonRpcProvider, JsonRpcSigner } from \"./json-rpc-provider\";\nimport { JsonRpcBatchProvider } from \"./json-rpc-batch-provider\";\nimport { NodesmithProvider } from \"./nodesmith-provider\";\nimport { PocketProvider } from \"./pocket-provider\";\nimport { StaticJsonRpcProvider, UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\nimport { Web3Provider } from \"./web3-provider\";\nimport { WebSocketProvider } from \"./websocket-provider\";\nimport { ExternalProvider, JsonRpcFetchFunc } from \"./web3-provider\";\n\nimport { CommunityResourcable, Formatter, isCommunityResourcable, isCommunityResource, showThrottleMessage } from \"./formatter\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n////////////////////////\n// Helper Functions\n\nfunction getDefaultProvider(network?: Networkish, options?: any): BaseProvider {\n if (network == null) { network = \"homestead\"; }\n\n // If passed a URL, figure out the right type of provider based on the scheme\n if (typeof(network) === \"string\") {\n // @TODO: Add support for IpcProvider; maybe if it ends in \".ipc\"?\n\n // Handle http and ws (and their secure variants)\n const match = network.match(/^(ws|http)s?:/i);\n if (match) {\n switch (match[1].toLowerCase()) {\n case \"http\": case \"https\":\n return new JsonRpcProvider(network);\n case \"ws\": case \"wss\":\n return new WebSocketProvider(network);\n default:\n logger.throwArgumentError(\"unsupported URL scheme\", \"network\", network);\n }\n }\n }\n\n const n = getNetwork(network);\n if (!n || !n._defaultProvider) {\n logger.throwError(\"unsupported getDefaultProvider network\", Logger.errors.NETWORK_ERROR, {\n operation: \"getDefaultProvider\",\n network: network\n });\n }\n\n return n._defaultProvider({\n FallbackProvider,\n\n AlchemyProvider,\n AnkrProvider,\n CloudflareProvider,\n EtherscanProvider,\n InfuraProvider,\n JsonRpcProvider,\n NodesmithProvider,\n PocketProvider,\n Web3Provider,\n\n IpcProvider,\n }, options);\n}\n\n////////////////////////\n// Exports\n\nexport {\n\n // Abstract Providers (or Abstract-ish)\n Provider,\n BaseProvider,\n\n Resolver,\n\n UrlJsonRpcProvider,\n\n ///////////////////////\n // Concrete Providers\n\n FallbackProvider,\n\n AlchemyProvider,\n AlchemyWebSocketProvider,\n AnkrProvider,\n CloudflareProvider,\n EtherscanProvider,\n InfuraProvider,\n InfuraWebSocketProvider,\n JsonRpcProvider,\n JsonRpcBatchProvider,\n NodesmithProvider,\n PocketProvider,\n StaticJsonRpcProvider,\n Web3Provider,\n WebSocketProvider,\n\n IpcProvider,\n\n\n ///////////////////////\n // Signer\n\n JsonRpcSigner,\n\n\n ///////////////////////\n // Functions\n\n getDefaultProvider,\n getNetwork,\n isCommunityResource,\n isCommunityResourcable,\n showThrottleMessage,\n\n\n ///////////////////////\n // Objects\n\n Formatter,\n\n\n ///////////////////////\n // Types\n\n Block,\n BlockTag,\n EventType,\n FeeData,\n Filter,\n Log,\n Listener,\n TransactionReceipt,\n TransactionRequest,\n TransactionResponse,\n\n ExternalProvider,\n JsonRpcFetchFunc,\n\n FallbackProviderConfig,\n\n Network,\n Networkish,\n\n EnsProvider,\n EnsResolver,\n\n CommunityResourcable\n};\n\n","export const version = \"rlp/5.7.0\";\n","\"use strict\";\n\n//See: https://github.com/ethereum/wiki/wiki/RLP\n\nimport { arrayify, BytesLike, hexlify, isBytesLike } from \"@ethersproject/bytes\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nfunction arrayifyInteger(value: number): Array {\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value >>= 8;\n }\n return result;\n}\n\nfunction unarrayifyInteger(data: Uint8Array, offset: number, length: number): number {\n let result = 0;\n for (let i = 0; i < length; i++) {\n result = (result * 256) + data[offset + i];\n }\n return result;\n}\n\nfunction _encode(object: Array | string): Array {\n if (Array.isArray(object)) {\n let payload: Array = [];\n object.forEach(function(child) {\n payload = payload.concat(_encode(child));\n });\n\n if (payload.length <= 55) {\n payload.unshift(0xc0 + payload.length)\n return payload;\n }\n\n const length = arrayifyInteger(payload.length);\n length.unshift(0xf7 + length.length);\n\n return length.concat(payload);\n\n }\n\n if (!isBytesLike(object)) {\n logger.throwArgumentError(\"RLP object must be BytesLike\", \"object\", object);\n }\n\n const data: Array = Array.prototype.slice.call(arrayify(object));\n\n if (data.length === 1 && data[0] <= 0x7f) {\n return data;\n\n } else if (data.length <= 55) {\n data.unshift(0x80 + data.length);\n return data;\n }\n\n const length = arrayifyInteger(data.length);\n length.unshift(0xb7 + length.length);\n\n return length.concat(data);\n}\n\nexport function encode(object: any): string {\n return hexlify(_encode(object));\n}\n\ntype Decoded = {\n result: any;\n consumed: number;\n};\n\nfunction _decodeChildren(data: Uint8Array, offset: number, childOffset: number, length: number): Decoded {\n const result = [];\n\n while (childOffset < offset + 1 + length) {\n const decoded = _decode(data, childOffset);\n\n result.push(decoded.result);\n\n childOffset += decoded.consumed;\n if (childOffset > offset + 1 + length) {\n logger.throwError(\"child data too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n }\n\n return {consumed: (1 + length), result: result};\n}\n\n// returns { consumed: number, result: Object }\nfunction _decode(data: Uint8Array, offset: number): { consumed: number, result: any } {\n if (data.length === 0) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n // Array with extra length prefix\n if (data[offset] >= 0xf8) {\n const lengthLength = data[offset] - 0xf7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data short segment too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data long segment too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n return _decodeChildren(data, offset, offset + 1 + lengthLength, lengthLength + length);\n\n } else if (data[offset] >= 0xc0) {\n const length = data[offset] - 0xc0;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n return _decodeChildren(data, offset, offset + 1, length);\n\n } else if (data[offset] >= 0xb8) {\n const lengthLength = data[offset] - 0xb7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n const result = hexlify(data.slice(offset + 1 + lengthLength, offset + 1 + lengthLength + length));\n return { consumed: (1 + lengthLength + length), result: result }\n\n } else if (data[offset] >= 0x80) {\n const length = data[offset] - 0x80;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n const result = hexlify(data.slice(offset + 1, offset + 1 + length));\n return { consumed: (1 + length), result: result }\n }\n return { consumed: 1, result: hexlify(data[offset]) };\n}\n\nexport function decode(data: BytesLike): any {\n const bytes = arrayify(data);\n const decoded = _decode(bytes, 0);\n if (decoded.consumed !== bytes.length) {\n logger.throwArgumentError(\"invalid rlp data\", \"data\", data);\n }\n return decoded.result;\n}\n\n",null,"var __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nvar BrowserInfo = /** @class */ (function () {\n function BrowserInfo(name, version, os) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.type = 'browser';\n }\n return BrowserInfo;\n}());\nexport { BrowserInfo };\nvar NodeInfo = /** @class */ (function () {\n function NodeInfo(version) {\n this.version = version;\n this.type = 'node';\n this.name = 'node';\n this.os = process.platform;\n }\n return NodeInfo;\n}());\nexport { NodeInfo };\nvar SearchBotDeviceInfo = /** @class */ (function () {\n function SearchBotDeviceInfo(name, version, os, bot) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.bot = bot;\n this.type = 'bot-device';\n }\n return SearchBotDeviceInfo;\n}());\nexport { SearchBotDeviceInfo };\nvar BotInfo = /** @class */ (function () {\n function BotInfo() {\n this.type = 'bot';\n this.bot = true; // NOTE: deprecated test name instead\n this.name = 'bot';\n this.version = null;\n this.os = null;\n }\n return BotInfo;\n}());\nexport { BotInfo };\nvar ReactNativeInfo = /** @class */ (function () {\n function ReactNativeInfo() {\n this.type = 'react-native';\n this.name = 'react-native';\n this.version = null;\n this.os = null;\n }\n return ReactNativeInfo;\n}());\nexport { ReactNativeInfo };\n// tslint:disable-next-line:max-line-length\nvar SEARCHBOX_UA_REGEX = /alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/;\nvar SEARCHBOT_OS_REGEX = /(nuhk|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask\\ Jeeves\\/Teoma|ia_archiver)/;\nvar REQUIRED_VERSION_PARTS = 3;\nvar userAgentRules = [\n ['aol', /AOLShield\\/([0-9\\._]+)/],\n ['edge', /Edge\\/([0-9\\._]+)/],\n ['edge-ios', /EdgiOS\\/([0-9\\._]+)/],\n ['yandexbrowser', /YaBrowser\\/([0-9\\._]+)/],\n ['kakaotalk', /KAKAOTALK\\s([0-9\\.]+)/],\n ['samsung', /SamsungBrowser\\/([0-9\\.]+)/],\n ['silk', /\\bSilk\\/([0-9._-]+)\\b/],\n ['miui', /MiuiBrowser\\/([0-9\\.]+)$/],\n ['beaker', /BeakerBrowser\\/([0-9\\.]+)/],\n ['edge-chromium', /EdgA?\\/([0-9\\.]+)/],\n [\n 'chromium-webview',\n /(?!Chrom.*OPR)wv\\).*Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/,\n ],\n ['chrome', /(?!Chrom.*OPR)Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/],\n ['phantomjs', /PhantomJS\\/([0-9\\.]+)(:?\\s|$)/],\n ['crios', /CriOS\\/([0-9\\.]+)(:?\\s|$)/],\n ['firefox', /Firefox\\/([0-9\\.]+)(?:\\s|$)/],\n ['fxios', /FxiOS\\/([0-9\\.]+)/],\n ['opera-mini', /Opera Mini.*Version\\/([0-9\\.]+)/],\n ['opera', /Opera\\/([0-9\\.]+)(?:\\s|$)/],\n ['opera', /OPR\\/([0-9\\.]+)(:?\\s|$)/],\n ['ie', /Trident\\/7\\.0.*rv\\:([0-9\\.]+).*\\).*Gecko$/],\n ['ie', /MSIE\\s([0-9\\.]+);.*Trident\\/[4-7].0/],\n ['ie', /MSIE\\s(7\\.0)/],\n ['bb10', /BB10;\\sTouch.*Version\\/([0-9\\.]+)/],\n ['android', /Android\\s([0-9\\.]+)/],\n ['ios', /Version\\/([0-9\\._]+).*Mobile.*Safari.*/],\n ['safari', /Version\\/([0-9\\._]+).*Safari/],\n ['facebook', /FBAV\\/([0-9\\.]+)/],\n ['instagram', /Instagram\\s([0-9\\.]+)/],\n ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Mobile/],\n ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Gecko\\)$/],\n ['searchbot', SEARCHBOX_UA_REGEX],\n];\nvar operatingSystemRules = [\n ['iOS', /iP(hone|od|ad)/],\n ['Android OS', /Android/],\n ['BlackBerry OS', /BlackBerry|BB10/],\n ['Windows Mobile', /IEMobile/],\n ['Amazon OS', /Kindle/],\n ['Windows 3.11', /Win16/],\n ['Windows 95', /(Windows 95)|(Win95)|(Windows_95)/],\n ['Windows 98', /(Windows 98)|(Win98)/],\n ['Windows 2000', /(Windows NT 5.0)|(Windows 2000)/],\n ['Windows XP', /(Windows NT 5.1)|(Windows XP)/],\n ['Windows Server 2003', /(Windows NT 5.2)/],\n ['Windows Vista', /(Windows NT 6.0)/],\n ['Windows 7', /(Windows NT 6.1)/],\n ['Windows 8', /(Windows NT 6.2)/],\n ['Windows 8.1', /(Windows NT 6.3)/],\n ['Windows 10', /(Windows NT 10.0)/],\n ['Windows ME', /Windows ME/],\n ['Open BSD', /OpenBSD/],\n ['Sun OS', /SunOS/],\n ['Chrome OS', /CrOS/],\n ['Linux', /(Linux)|(X11)/],\n ['Mac OS', /(Mac_PowerPC)|(Macintosh)/],\n ['QNX', /QNX/],\n ['BeOS', /BeOS/],\n ['OS/2', /OS\\/2/],\n];\nexport function detect(userAgent) {\n if (!!userAgent) {\n return parseUserAgent(userAgent);\n }\n if (typeof document === 'undefined' &&\n typeof navigator !== 'undefined' &&\n navigator.product === 'ReactNative') {\n return new ReactNativeInfo();\n }\n if (typeof navigator !== 'undefined') {\n return parseUserAgent(navigator.userAgent);\n }\n return getNodeVersion();\n}\nfunction matchUserAgent(ua) {\n // opted for using reduce here rather than Array#first with a regex.test call\n // this is primarily because using the reduce we only perform the regex\n // execution once rather than once for the test and for the exec again below\n // probably something that needs to be benchmarked though\n return (ua !== '' &&\n userAgentRules.reduce(function (matched, _a) {\n var browser = _a[0], regex = _a[1];\n if (matched) {\n return matched;\n }\n var uaMatch = regex.exec(ua);\n return !!uaMatch && [browser, uaMatch];\n }, false));\n}\nexport function browserName(ua) {\n var data = matchUserAgent(ua);\n return data ? data[0] : null;\n}\nexport function parseUserAgent(ua) {\n var matchedRule = matchUserAgent(ua);\n if (!matchedRule) {\n return null;\n }\n var name = matchedRule[0], match = matchedRule[1];\n if (name === 'searchbot') {\n return new BotInfo();\n }\n var versionParts = match[1] && match[1].split(/[._]/).slice(0, 3);\n if (versionParts) {\n if (versionParts.length < REQUIRED_VERSION_PARTS) {\n versionParts = __spreadArrays(versionParts, createVersionParts(REQUIRED_VERSION_PARTS - versionParts.length));\n }\n }\n else {\n versionParts = [];\n }\n var version = versionParts.join('.');\n var os = detectOS(ua);\n var searchBotMatch = SEARCHBOT_OS_REGEX.exec(ua);\n if (searchBotMatch && searchBotMatch[1]) {\n return new SearchBotDeviceInfo(name, version, os, searchBotMatch[1]);\n }\n return new BrowserInfo(name, version, os);\n}\nexport function detectOS(ua) {\n for (var ii = 0, count = operatingSystemRules.length; ii < count; ii++) {\n var _a = operatingSystemRules[ii], os = _a[0], regex = _a[1];\n var match = regex.exec(ua);\n if (match) {\n return os;\n }\n }\n return null;\n}\nexport function getNodeVersion() {\n var isNode = typeof process !== 'undefined' && process.version;\n return isNode ? new NodeInfo(process.version.slice(1)) : null;\n}\nfunction createVersionParts(count) {\n var output = [];\n for (var ii = 0; ii < count; ii++) {\n output.push('0');\n }\n return output;\n}\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"// A type of promise-like that resolves synchronously and supports only one observer\nexport const _Pact = /*#__PURE__*/(function() {\n\tfunction _Pact() {}\n\t_Pact.prototype.then = function(onFulfilled, onRejected) {\n\t\tconst result = new _Pact();\n\t\tconst state = this.s;\n\t\tif (state) {\n\t\t\tconst callback = state & 1 ? onFulfilled : onRejected;\n\t\t\tif (callback) {\n\t\t\t\ttry {\n\t\t\t\t\t_settle(result, 1, callback(this.v));\n\t\t\t\t} catch (e) {\n\t\t\t\t\t_settle(result, 2, e);\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t} else {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}\n\t\tthis.o = function(_this) {\n\t\t\ttry {\n\t\t\t\tconst value = _this.v;\n\t\t\t\tif (_this.s & 1) {\n\t\t\t\t\t_settle(result, 1, onFulfilled ? onFulfilled(value) : value);\n\t\t\t\t} else if (onRejected) {\n\t\t\t\t\t_settle(result, 1, onRejected(value));\n\t\t\t\t} else {\n\t\t\t\t\t_settle(result, 2, value);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(result, 2, e);\n\t\t\t}\n\t\t};\n\t\treturn result;\n\t}\n\treturn _Pact;\n})();\n\n// Settles a pact synchronously\nexport function _settle(pact, state, value) {\n\tif (!pact.s) {\n\t\tif (value instanceof _Pact) {\n\t\t\tif (value.s) {\n\t\t\t\tif (state & 1) {\n\t\t\t\t\tstate = value.s;\n\t\t\t\t}\n\t\t\t\tvalue = value.v;\n\t\t\t} else {\n\t\t\t\tvalue.o = _settle.bind(null, pact, state);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif (value && value.then) {\n\t\t\tvalue.then(_settle.bind(null, pact, state), _settle.bind(null, pact, 2));\n\t\t\treturn;\n\t\t}\n\t\tpact.s = state;\n\t\tpact.v = value;\n\t\tconst observer = pact.o;\n\t\tif (observer) {\n\t\t\tobserver(pact);\n\t\t}\n\t}\n}\n\nexport function _isSettledPact(thenable) {\n\treturn thenable instanceof _Pact && thenable.s & 1;\n}\n\n// Converts argument to a function that always returns a Promise\nexport function _async(f) {\n\treturn function() {\n\t\tfor (var args = [], i = 0; i < arguments.length; i++) {\n\t\t\targs[i] = arguments[i];\n\t\t}\n\t\ttry {\n\t\t\treturn Promise.resolve(f.apply(this, args));\n\t\t} catch(e) {\n\t\t\treturn Promise.reject(e);\n\t\t}\n\t}\n}\n\n// Awaits on a value that may or may not be a Promise (equivalent to the await keyword in ES2015, with continuations passed explicitly)\nexport function _await(value, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(value) : value;\n\t}\n\tif (!value || !value.then) {\n\t\tvalue = Promise.resolve(value);\n\t}\n\treturn then ? value.then(then) : value;\n}\n\n// Awaits on a value that may or may not be a Promise, then ignores it\nexport function _awaitIgnored(value, direct) {\n\tif (!direct) {\n\t\treturn value && value.then ? value.then(_empty) : Promise.resolve();\n\t}\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continue(value, then) {\n\treturn value && value.then ? value.then(then) : then(value);\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continueIgnored(value) {\n\tif (value && value.then) {\n\t\treturn value.then(_empty);\n\t}\n}\n\n// Asynchronously iterate through an object that has a length property, passing the index as the first argument to the callback (even as the length property changes)\nexport function _forTo(array, body, check) {\n\tvar i = -1, pact, reject;\n\tfunction _cycle(result) {\n\t\ttry {\n\t\t\twhile (++i < array.length && (!check || !check())) {\n\t\t\t\tresult = body(i);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (pact) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t} else {\n\t\t\t\tpact = result;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t}\n\t}\n\t_cycle();\n\treturn pact;\n}\n\n// Asynchronously iterate through an object's properties (including properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forIn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tkeys.push(key);\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\n// Asynchronously iterate through an object's own properties (excluding properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forOwn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tif (Object.prototype.hasOwnProperty.call(target, key)) {\n\t\t\tkeys.push(key);\n\t\t}\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\nexport const _iteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.iterator || (Symbol.iterator = Symbol(\"Symbol.iterator\"))) : \"@@iterator\";\n\n// Asynchronously iterate through an object's values\n// Uses for...of if the runtime supports it, otherwise iterates until length on a copy\nexport function _forOf(target, body, check) {\n\tif (typeof target[_iteratorSymbol] === \"function\") {\n\t\tvar iterator = target[_iteratorSymbol](), step, pact, reject;\n\t\tfunction _cycle(result) {\n\t\t\ttry {\n\t\t\t\twhile (!(step = iterator.next()).done && (!check || !check())) {\n\t\t\t\t\tresult = body(step.value);\n\t\t\t\t\tif (result && result.then) {\n\t\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (pact) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t} else {\n\t\t\t\t\tpact = result;\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t\t}\n\t\t}\n\t\t_cycle();\n\t\tif (iterator.return) {\n\t\t\tvar _fixup = function(value) {\n\t\t\t\ttry {\n\t\t\t\t\tif (!step.done) {\n\t\t\t\t\t\titerator.return();\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t}\n\t\t\tif (pact && pact.then) {\n\t\t\t\treturn pact.then(_fixup, function(e) {\n\t\t\t\t\tthrow _fixup(e);\n\t\t\t\t});\n\t\t\t}\n\t\t\t_fixup();\n\t\t}\n\t\treturn pact;\n\t}\n\t// No support for Symbol.iterator\n\tif (!(\"length\" in target)) {\n\t\tthrow new TypeError(\"Object is not iterable\");\n\t}\n\t// Handle live collections properly\n\tvar values = [];\n\tfor (var i = 0; i < target.length; i++) {\n\t\tvalues.push(target[i]);\n\t}\n\treturn _forTo(values, function(i) { return body(values[i]); }, check);\n}\n\nexport const _asyncIteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.asyncIterator || (Symbol.asyncIterator = Symbol(\"Symbol.asyncIterator\"))) : \"@@asyncIterator\";\n\n// Asynchronously iterate on a value using it's async iterator if present, or its synchronous iterator if missing\nexport function _forAwaitOf(target, body, check) {\n\tif (typeof target[_asyncIteratorSymbol] === \"function\") {\n\t\tvar pact = new _Pact();\n\t\tvar iterator = target[_asyncIteratorSymbol]();\n\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\treturn pact;\n\t\tfunction _resumeAfterBody(result) {\n\t\t\tif (check && check()) {\n\t\t\t\treturn _settle(pact, 1, iterator.return ? iterator.return().then(function() { return result; }) : result);\n\t\t\t}\n\t\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\t}\n\t\tfunction _resumeAfterNext(step) {\n\t\t\tif (step.done) {\n\t\t\t\t_settle(pact, 1);\n\t\t\t} else {\n\t\t\t\tPromise.resolve(body(step.value)).then(_resumeAfterBody).then(void 0, _reject);\n\t\t\t}\n\t\t}\n\t\tfunction _reject(error) {\n\t\t\t_settle(pact, 2, iterator.return ? iterator.return().then(function() { return error; }) : error);\n\t\t}\n\t}\n\treturn Promise.resolve(_forOf(target, function(value) { return Promise.resolve(value).then(body); }, check));\n}\n\n// Asynchronously implement a generic for loop\nexport function _for(test, update, body) {\n\tvar stage;\n\tfor (;;) {\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t\tif (shouldContinue.then) {\n\t\t\tstage = 0;\n\t\t\tbreak;\n\t\t}\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.s;\n\t\t\t} else {\n\t\t\t\tstage = 1;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (update) {\n\t\t\tvar updateValue = update();\n\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\tstage = 2;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tvar pact = new _Pact();\n\tvar reject = _settle.bind(null, pact, 2);\n\t(stage === 0 ? shouldContinue.then(_resumeAfterTest) : stage === 1 ? result.then(_resumeAfterBody) : updateValue.then(_resumeAfterUpdate)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tdo {\n\t\t\tif (update) {\n\t\t\t\tupdateValue = update();\n\t\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\t\tupdateValue.then(_resumeAfterUpdate).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tshouldContinue = test();\n\t\t\tif (!shouldContinue || (_isSettledPact(shouldContinue) && !shouldContinue.v)) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t}\n\t\t} while (!result || !result.then);\n\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterBody(result);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n\tfunction _resumeAfterUpdate() {\n\t\tif (shouldContinue = test()) {\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterTest(shouldContinue);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a do ... while loop\nexport function _do(body, test) {\n\tvar awaitBody;\n\tdo {\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t} else {\n\t\t\t\tawaitBody = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t} while (!shouldContinue.then);\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : shouldContinue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tfor (;;) {\n\t\t\tshouldContinue = test();\n\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t}\n\t\t\tif (!shouldContinue) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\tresult = result.v;\n\t\t\t\t} else {\n\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tdo {\n\t\t\t\tresult = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tshouldContinue = test();\n\t\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t\t}\n\t\t\t\tif (!shouldContinue) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} while (!shouldContinue.then);\n\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a switch statement\nexport function _switch(discriminant, cases) {\n\tvar dispatchIndex = -1;\n\tvar awaitBody;\n\touter: {\n\t\tfor (var i = 0; i < cases.length; i++) {\n\t\t\tvar test = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvar testValue = test();\n\t\t\t\tif (testValue && testValue.then) {\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tif (testValue === discriminant) {\n\t\t\t\t\tdispatchIndex = i;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Found the default case, set it as the pending dispatch case\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tif (dispatchIndex !== -1) {\n\t\t\tdo {\n\t\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\t\twhile (!body) {\n\t\t\t\t\tdispatchIndex++;\n\t\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t\t}\n\t\t\t\tvar result = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tawaitBody = true;\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\t\tdispatchIndex++;\n\t\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t\treturn result;\n\t\t}\n\t}\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : testValue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterTest(value) {\n\t\tfor (;;) {\n\t\t\tif (value === discriminant) {\n\t\t\t\tdispatchIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (++i === cases.length) {\n\t\t\t\tif (dispatchIndex !== -1) {\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\ttest = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvalue = test();\n\t\t\t\tif (value && value.then) {\n\t\t\t\t\tvalue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tdo {\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tvar result = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tdispatchIndex++;\n\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterBody(result) {\n\t\tfor (;;) {\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tif (!fallthroughCheck || fallthroughCheck()) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdispatchIndex++;\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _call(body, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(body()) : body();\n\t}\n\ttry {\n\t\tvar result = Promise.resolve(body());\n\t\treturn then ? result.then(then) : result;\n\t} catch (e) {\n\t\treturn Promise.reject(e);\n\t}\n}\n\n// Asynchronously call a function and swallow the result\nexport function _callIgnored(body, direct) {\n\treturn _call(body, _empty, direct);\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _invoke(body, then) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(then);\n\t}\n\treturn then(result);\n}\n\n// Asynchronously call a function and swallow the result\nexport function _invokeIgnored(body) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(_empty);\n\t}\n}\n\n// Asynchronously call a function and send errors to recovery continuation\nexport function _catch(body, recover) {\n\ttry {\n\t\tvar result = body();\n\t} catch(e) {\n\t\treturn recover(e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(void 0, recover);\n\t}\n\treturn result;\n}\n\n// Asynchronously await a promise and pass the result to a finally continuation\nexport function _finallyRethrows(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer(true, e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer.bind(null, false), finalizer.bind(null, true));\n\t}\n\treturn finalizer(false, result);\n}\n\n// Asynchronously await a promise and invoke a finally continuation that always overrides the result\nexport function _finally(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer();\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer, finalizer);\n\t}\n\treturn finalizer();\n}\n\n// Rethrow or return a value from a finally continuation\nexport function _rethrow(thrown, value) {\n\tif (thrown)\n\t\tthrow value;\n\treturn value;\n}\n\n// Empty function to implement break and other control flow that ignores asynchronous results\nexport function _empty() {\n}\n\n// Sentinel value for early returns in generators \nexport const _earlyReturn = /*#__PURE__*/ {};\n\n// Asynchronously call a function and send errors to recovery continuation, skipping early returns\nexport function _catchInGenerator(body, recover) {\n\treturn _catch(body, function(e) {\n\t\tif (e === _earlyReturn) {\n\t\t\tthrow e;\n\t\t}\n\t\treturn recover(e);\n\t});\n}\n\n// Asynchronous generator class; accepts the entrypoint of the generator, to which it passes itself when the generator should start\nexport const _AsyncGenerator = /*#__PURE__*/(function() {\n\tfunction _AsyncGenerator(entry) {\n\t\tthis._entry = entry;\n\t\tthis._pact = null;\n\t\tthis._resolve = null;\n\t\tthis._return = null;\n\t\tthis._promise = null;\n\t}\n\n\tfunction _wrapReturnedValue(value) {\n\t\treturn { value: value, done: true };\n\t}\n\tfunction _wrapYieldedValue(value) {\n\t\treturn { value: value, done: false };\n\t}\n\n\t_AsyncGenerator.prototype._yield = function(value) {\n\t\t// Yield the value to the pending next call\n\t\tthis._resolve(value && value.then ? value.then(_wrapYieldedValue) : _wrapYieldedValue(value));\n\t\t// Return a pact for an upcoming next/return/throw call\n\t\treturn this._pact = new _Pact();\n\t};\n\t_AsyncGenerator.prototype.next = function(value) {\n\t\t// Advance the generator, starting it if it has yet to be started\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tconst _entry = _this._entry;\n\t\t\t\tif (_entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the next call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Start the generator\n\t\t\t\t_this._entry = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\tfunction returnValue(value) {\n\t\t\t\t\t_this._resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t_this._resolve = null;\n\t\t\t\t}\n\t\t\t\tvar result = _entry(_this);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tresult.then(returnValue, function(error) {\n\t\t\t\t\t\tif (error === _earlyReturn) {\n\t\t\t\t\t\t\treturnValue(_this._return);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst pact = new _Pact();\n\t\t\t\t\t\t\t_this._resolve(pact);\n\t\t\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t\t\t_this._resolve = null;\n\t\t\t\t\t\t\t_resolve(pact, 2, error);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\treturnValue(result);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Generator is started and a yield expression is pending, settle it\n\t\t\t\t_this._pact = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\t_settle(_pact, 1, value);\n\t\t\t}\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.return = function(value) {\n\t\t// Early return from the generator if started, otherwise abandons the generator\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the return call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return the specified value\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t}\n\t\t\t// Settle the yield expression with a rejected \"early return\" value\n\t\t\t_this._return = value;\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, _earlyReturn);\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.throw = function(error) {\n\t\t// Inject an exception into the pending yield expression\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve, reject) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the throw call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return a rejected Promise containing the error\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn reject(error);\n\t\t\t}\n\t\t\t// Settle the yield expression with the value as a rejection\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, error);\n\t\t});\n\t};\n\n\t_AsyncGenerator.prototype[_asyncIteratorSymbol] = function() {\n\t\treturn this;\n\t};\n\t\n\treturn _AsyncGenerator;\n})();\n","export const WALLETCONNECT_LOGO_SVG_URL = `data:image/svg+xml,%3Csvg height='185' viewBox='0 0 300 185' width='300' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m61.4385429 36.2562612c48.9112241-47.8881663 128.2119871-47.8881663 177.1232091 0l5.886545 5.7634174c2.445561 2.3944081 2.445561 6.2765112 0 8.6709204l-20.136695 19.715503c-1.222781 1.1972051-3.2053 1.1972051-4.428081 0l-8.100584-7.9311479c-34.121692-33.4079817-89.443886-33.4079817-123.5655788 0l-8.6750562 8.4936051c-1.2227816 1.1972041-3.205301 1.1972041-4.4280806 0l-20.1366949-19.7155031c-2.4455612-2.3944092-2.4455612-6.2765122 0-8.6709204zm218.7677961 40.7737449 17.921697 17.546897c2.445549 2.3943969 2.445563 6.2764769.000031 8.6708899l-80.810171 79.121134c-2.445544 2.394426-6.410582 2.394453-8.85616.000062-.00001-.00001-.000022-.000022-.000032-.000032l-57.354143-56.154572c-.61139-.598602-1.60265-.598602-2.21404 0-.000004.000004-.000007.000008-.000011.000011l-57.3529212 56.154531c-2.4455368 2.394432-6.4105755 2.394472-8.8561612.000087-.0000143-.000014-.0000296-.000028-.0000449-.000044l-80.81241943-79.122185c-2.44556021-2.394408-2.44556021-6.2765115 0-8.6709197l17.92172963-17.5468673c2.4455602-2.3944082 6.4105989-2.3944082 8.8561602 0l57.3549775 56.155357c.6113908.598602 1.602649.598602 2.2140398 0 .0000092-.000009.0000174-.000017.0000265-.000024l57.3521031-56.155333c2.445505-2.3944633 6.410544-2.3945531 8.856161-.0002.000034.0000336.000068.0000673.000101.000101l57.354902 56.155432c.61139.598601 1.60265.598601 2.21404 0l57.353975-56.1543249c2.445561-2.3944092 6.410599-2.3944092 8.85616 0z' fill='%233b99fc'/%3E%3C/svg%3E`;","export const WALLETCONNECT_HEADER_TEXT = \"WalletConnect\";\n\nexport const ANIMATION_DURATION = 300;\nexport const DEFAULT_BUTTON_COLOR = \"rgb(64, 153, 255)\";\n\nexport const WALLETCONNECT_WRAPPER_ID = \"walletconnect-wrapper\";\nexport const WALLETCONNECT_STYLE_ID = \"walletconnect-style-sheet\";\nexport const WALLETCONNECT_MODAL_ID = \"walletconnect-qrcode-modal\";\nexport const WALLETCONNECT_CLOSE_BUTTON_ID = \"walletconnect-qrcode-close\";\nexport const WALLETCONNECT_CTA_TEXT_ID = \"walletconnect-qrcode-text\";\nexport const WALLETCONNECT_CONNECT_BUTTON_ID = \"walletconnect-connect-button\";\n","// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport * as React from \"react\";\n\nimport { WALLETCONNECT_LOGO_SVG_URL } from \"../assets/logo\";\nimport { WALLETCONNECT_HEADER_TEXT, WALLETCONNECT_CLOSE_BUTTON_ID } from \"../constants\";\n\ninterface HeaderProps {\n onClose: any;\n}\n\nfunction Header(props: HeaderProps) {\n return (\n
\n \n

{WALLETCONNECT_HEADER_TEXT}

\n
\n
\n
\n
\n
\n
\n
\n );\n}\n\nexport default Header;\n","import * as React from \"react\";\n\nimport { WALLETCONNECT_CONNECT_BUTTON_ID } from \"../constants\";\n\ninterface ConnectButtonProps {\n name: string;\n color: string;\n href: string;\n onClick: (event: React.MouseEvent) => void;\n}\n\nfunction ConnectButton(props: ConnectButtonProps) {\n return (\n \n {props.name}\n \n );\n}\n\nexport default ConnectButton;\n","import * as React from \"react\";\nimport { CARET_SVG_URL } from \"../assets/caret\";\n\ninterface WalletButtonProps {\n color: string;\n name: string;\n logo: string;\n href: string;\n onClick: (event: React.MouseEvent) => void;\n}\n\nfunction WalletButton(props: WalletButtonProps) {\n const { color, href, name, logo, onClick } = props;\n return (\n \n

{name}

\n
\n
\n \n \n \n );\n}\n\nexport default WalletButton;\n","export const CARET_SVG_URL = `data:image/svg+xml,%3Csvg fill='none' height='18' viewBox='0 0 8 18' width='8' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath clip-rule='evenodd' d='m.586301.213898c-.435947.33907-.5144813.967342-.175411 1.403292l4.87831 6.27212c.28087.36111.28087.86677 0 1.22788l-4.878311 6.27211c-.33907.436-.260536 1.0642.175412 1.4033.435949.3391 1.064219.2605 1.403289-.1754l4.87832-6.2721c.84259-1.08336.84259-2.60034 0-3.68367l-4.87832-6.27212c-.33907-.4359474-.96734-.514482-1.403289-.175412z' fill='%233c4252' fill-rule='evenodd'/%3E%3C/svg%3E`;","import * as React from \"react\";\n\ninterface WalletIconProps {\n color: string;\n logo: string;\n href: string;\n name: string;\n onClick: (event: React.MouseEvent) => void;\n}\n\nfunction WalletIcon(props: WalletIconProps) {\n const { color, href, name, logo, onClick } = props;\n const fontSize = window.innerWidth < 768 ? `${name.length > 8 ? 2.5 : 2.7}vw` : \"inherit\";\n return (\n \n \n
\n {name}\n
\n \n );\n}\n\nexport default WalletIcon;\n","import * as React from \"react\";\nimport { IMobileRegistryEntry, IQRCodeModalOptions } from \"@walletconnect/types\";\nimport { isAndroid, formatIOSMobile, saveMobileLinkInfo } from \"@walletconnect/browser-utils\";\n\nimport { DEFAULT_BUTTON_COLOR, WALLETCONNECT_CTA_TEXT_ID } from \"../constants\";\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport ConnectButton from \"./ConnectButton\";\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport WalletButton from \"./WalletButton\";\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport WalletIcon from \"./WalletIcon\";\nimport { TextMap } from \"../types\";\n\ninterface LinkDisplayProps {\n mobile: boolean;\n text: TextMap;\n uri: string;\n qrcodeModalOptions?: IQRCodeModalOptions;\n links: IMobileRegistryEntry[];\n errorMessage: string;\n}\n\nconst GRID_MIN_COUNT = 5;\nconst LINKS_PER_PAGE = 12;\n\nfunction LinkDisplay(props: LinkDisplayProps) {\n const android = isAndroid();\n const [input, setInput] = React.useState(\"\");\n const [filter, setFilter] = React.useState(\"\");\n const [page, setPage] = React.useState(1);\n const links = filter\n ? props.links.filter(link => link.name.toLowerCase().includes(filter.toLowerCase()))\n : props.links;\n const errorMessage = props.errorMessage;\n const grid = filter || links.length > GRID_MIN_COUNT;\n const pages = Math.ceil(links.length / LINKS_PER_PAGE);\n const range = [(page - 1) * LINKS_PER_PAGE + 1, page * LINKS_PER_PAGE];\n const pageLinks = links.length\n ? links.filter((_, index) => index + 1 >= range[0] && index + 1 <= range[1])\n : [];\n const hasPaging = !!(!android && pages > 1);\n let filterTimeout: any = undefined;\n function handleInput(e) {\n setInput(e.target.value);\n clearTimeout(filterTimeout);\n if (e.target.value) {\n filterTimeout = setTimeout(() => {\n setFilter(e.target.value);\n setPage(1);\n }, 1000);\n } else {\n setInput(\"\");\n setFilter(\"\");\n setPage(1);\n }\n }\n\n return (\n
\n

\n {android ? props.text.connect_mobile_wallet : props.text.choose_preferred_wallet}\n

\n {!android && (\n \n )}\n \n {!android ? (\n pageLinks.length ? (\n pageLinks.map((entry: IMobileRegistryEntry) => {\n const { color, name, shortName, logo } = entry;\n const href = formatIOSMobile(props.uri, entry);\n const handleClickIOS = React.useCallback(() => {\n saveMobileLinkInfo({\n name,\n href,\n });\n }, [pageLinks]);\n return !grid ? (\n \n ) : (\n \n );\n })\n ) : (\n <>\n

\n {errorMessage.length\n ? props.errorMessage\n : !!props.links.length && !links.length\n ? props.text.no_wallets_found\n : props.text.loading}\n

\n \n )\n ) : (\n {\n saveMobileLinkInfo({\n name: \"Unknown\",\n href: props.uri,\n });\n }, [])}\n />\n )}\n
\n {hasPaging && (\n
\n {Array(pages)\n .fill(0)\n .map((_, index) => {\n const pageNumber = index + 1;\n const selected = page === pageNumber;\n return (\n setPage(pageNumber)}\n >\n {pageNumber}\n \n );\n })}\n
\n )}\n \n );\n}\n\nexport default LinkDisplay;\n","// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport * as React from \"react\";\n\ninterface NotificationProps {\n message: string;\n}\n\nfunction Notification(props: NotificationProps) {\n const show = !!props.message.trim();\n return (\n
\n {props.message}\n
\n );\n}\n\nexport default Notification;\n","// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport * as React from \"react\";\nimport QRCode from \"qrcode\";\nimport copy from \"copy-to-clipboard\";\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport Notification from \"./Notification\";\n\nimport { WALLETCONNECT_CTA_TEXT_ID } from \"../constants\";\nimport { TextMap } from \"../types\";\n\nasync function formatQRCodeImage(data: string) {\n let result = \"\";\n const dataString = await QRCode.toString(data, { margin: 0, type: \"svg\" });\n if (typeof dataString === \"string\") {\n result = dataString.replace(\" {\n (async () => {\n setSvg(await formatQRCodeImage(props.uri));\n })();\n }, []);\n\n const copyToClipboard = () => {\n const success = copy(props.uri);\n if (success) {\n setNotification(props.text.copied_to_clipboard);\n setInterval(() => setNotification(\"\"), 1200);\n } else {\n setNotification(\"Error\");\n setInterval(() => setNotification(\"\"), 1200);\n }\n };\n\n return (\n
\n

\n {props.text.scan_qrcode_with_wallet}\n

\n
\n \n \n
\n );\n}\n\nexport default QRCodeDisplay;\n","import * as React from \"react\";\nimport {\n IMobileRegistryEntry,\n IQRCodeModalOptions,\n IAppRegistry,\n IMobileLinkInfo,\n} from \"@walletconnect/types\";\nimport {\n isMobile,\n isAndroid,\n formatIOSMobile,\n saveMobileLinkInfo,\n getMobileLinkRegistry,\n getWalletRegistryUrl,\n formatMobileRegistry,\n} from \"@walletconnect/browser-utils\";\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport Header from \"./Header\";\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport LinkDisplay from \"./LinkDisplay\";\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport QRCodeDisplay from \"./QRCodeDisplay\";\n\nimport { WALLETCONNECT_MODAL_ID } from \"../constants\";\nimport { TextMap } from \"../types\";\n\ninterface ModalProps {\n text: TextMap;\n uri: string;\n onClose: any;\n qrcodeModalOptions?: IQRCodeModalOptions;\n}\n\nfunction Modal(props: ModalProps) {\n const android = isAndroid();\n const mobile = isMobile();\n\n const whitelist = mobile\n ? props.qrcodeModalOptions && props.qrcodeModalOptions.mobileLinks\n ? props.qrcodeModalOptions.mobileLinks\n : undefined\n : props.qrcodeModalOptions && props.qrcodeModalOptions.desktopLinks\n ? props.qrcodeModalOptions.desktopLinks\n : undefined;\n const [loading, setLoading] = React.useState(false);\n const [fetched, setFetched] = React.useState(false);\n const [displayQRCode, setDisplayQRCode] = React.useState(!mobile);\n const displayProps = {\n mobile,\n text: props.text,\n uri: props.uri,\n qrcodeModalOptions: props.qrcodeModalOptions,\n };\n\n const [singleLinkHref, setSingleLinkHref] = React.useState(\"\");\n const [hasSingleLink, setHasSingleLink] = React.useState(false);\n const [links, setLinks] = React.useState([]);\n const [errorMessage, setErrorMessage] = React.useState(\"\");\n\n const getLinksIfNeeded = () => {\n if (fetched || loading || (whitelist && !whitelist.length) || links.length > 0) {\n return;\n }\n\n React.useEffect(() => {\n const initLinks = async () => {\n if (android) return;\n setLoading(true);\n try {\n const url =\n props.qrcodeModalOptions && props.qrcodeModalOptions.registryUrl\n ? props.qrcodeModalOptions.registryUrl\n : getWalletRegistryUrl();\n const registryResponse = await fetch(url)\n const registry = (await registryResponse.json()).listings as IAppRegistry;\n const platform = mobile ? \"mobile\" : \"desktop\";\n const _links = getMobileLinkRegistry(formatMobileRegistry(registry, platform), whitelist);\n setLoading(false);\n setFetched(true);\n setErrorMessage(!_links.length ? props.text.no_supported_wallets : \"\");\n setLinks(_links);\n const hasSingleLink = _links.length === 1;\n if (hasSingleLink) {\n setSingleLinkHref(formatIOSMobile(props.uri, _links[0]));\n setDisplayQRCode(true);\n }\n setHasSingleLink(hasSingleLink);\n } catch (e) {\n setLoading(false);\n setFetched(true);\n setErrorMessage(props.text.something_went_wrong);\n console.error(e); // eslint-disable-line no-console\n }\n };\n initLinks();\n });\n };\n\n getLinksIfNeeded();\n\n const rightSelected = mobile ? displayQRCode : !displayQRCode;\n return (\n
\n
\n
\n {hasSingleLink && displayQRCode ? (\n
\n saveMobileLinkInfo({ name: links[0].name, href: singleLinkHref })}\n href={singleLinkHref}\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n >\n {props.text.connect_with + \" \" + (hasSingleLink ? links[0].name : \"\") + \" ›\"}\n \n
\n ) : android || loading || (!loading && links.length) ? (\n \n \n ) : null}\n\n
\n {displayQRCode || (!android && !loading && !links.length) ? (\n \n ) : (\n \n )}\n
\n
\n
\n );\n}\n\nexport default Modal;\n","import { TextMap } from \"../types\";\n\nconst de: TextMap = {\n choose_preferred_wallet: \"Wähle bevorzugte Wallet\",\n connect_mobile_wallet: \"Verbinde mit Mobile Wallet\",\n scan_qrcode_with_wallet: \"Scanne den QR-code mit einer WalletConnect kompatiblen Wallet\",\n connect: \"Verbinden\",\n qrcode: \"QR-Code\",\n mobile: \"Mobile\",\n desktop: \"Desktop\",\n copy_to_clipboard: \"In die Zwischenablage kopieren\",\n copied_to_clipboard: \"In die Zwischenablage kopiert!\",\n connect_with: \"Verbinden mit Hilfe von\",\n loading: \"Laden...\",\n something_went_wrong: \"Etwas ist schief gelaufen\",\n no_supported_wallets: \"Es gibt noch keine unterstützten Wallet\",\n no_wallets_found: \"keine Wallet gefunden\",\n};\n\nexport default de;\n","import { TextMap } from \"../types\";\n\nimport de from \"./de\";\nimport en from \"./en\";\nimport es from \"./es\";\nimport fr from \"./fr\";\nimport ko from \"./ko\";\nimport pt from \"./pt\";\nimport zh from \"./zh\";\nimport fa from \"./fa\";\n\nconst languages: { [lang: string]: TextMap } = { de, en, es, fr, ko, pt, zh, fa };\n\nexport default languages;\n","import { TextMap } from \"../types\";\n\nconst en: TextMap = {\n choose_preferred_wallet: \"Choose your preferred wallet\",\n connect_mobile_wallet: \"Connect to Mobile Wallet\",\n scan_qrcode_with_wallet: \"Scan QR code with a WalletConnect-compatible wallet\",\n connect: \"Connect\",\n qrcode: \"QR Code\",\n mobile: \"Mobile\",\n desktop: \"Desktop\",\n copy_to_clipboard: \"Copy to clipboard\",\n copied_to_clipboard: \"Copied to clipboard!\",\n connect_with: \"Connect with\",\n loading: \"Loading...\",\n something_went_wrong: \"Something went wrong\",\n no_supported_wallets: \"There are no supported wallets yet\",\n no_wallets_found: \"No wallets found\",\n};\n\nexport default en;\n","import { TextMap } from \"../types\";\n\nconst es: TextMap = {\n choose_preferred_wallet: \"Elige tu billetera preferida\",\n connect_mobile_wallet: \"Conectar a billetera móvil\",\n scan_qrcode_with_wallet: \"Escanea el código QR con una billetera compatible con WalletConnect\",\n connect: \"Conectar\",\n qrcode: \"Código QR\",\n mobile: \"Móvil\",\n desktop: \"Desktop\",\n copy_to_clipboard: \"Copiar\",\n copied_to_clipboard: \"Copiado!\",\n connect_with: \"Conectar mediante\",\n loading: \"Cargando...\",\n something_went_wrong: \"Algo salió mal\",\n no_supported_wallets: \"Todavía no hay billeteras compatibles\",\n no_wallets_found: \"No se encontraron billeteras\",\n};\n\nexport default es;\n","import { TextMap } from \"../types\";\n\nconst fr: TextMap = {\n choose_preferred_wallet: \"Choisissez votre portefeuille préféré\",\n connect_mobile_wallet: \"Se connecter au portefeuille mobile\",\n scan_qrcode_with_wallet: \"Scannez le QR code avec un portefeuille compatible WalletConnect\",\n connect: \"Se connecter\",\n qrcode: \"QR Code\",\n mobile: \"Mobile\",\n desktop: \"Desktop\",\n copy_to_clipboard: \"Copier\",\n copied_to_clipboard: \"Copié!\",\n connect_with: \"Connectez-vous à l'aide de\",\n loading: \"Chargement...\",\n something_went_wrong: \"Quelque chose a mal tourné\",\n no_supported_wallets: \"Il n'y a pas encore de portefeuilles pris en charge\",\n no_wallets_found: \"Aucun portefeuille trouvé\",\n};\n\nexport default fr;\n","import { TextMap } from \"../types\";\n\nconst ko: TextMap = {\n choose_preferred_wallet: \"원하는 지갑을 선택하세요\",\n connect_mobile_wallet: \"모바일 지갑과 연결\",\n scan_qrcode_with_wallet: \"WalletConnect 지원 지갑에서 QR코드를 스캔하세요\",\n connect: \"연결\",\n qrcode: \"QR 코드\",\n mobile: \"모바일\",\n desktop: \"데스크탑\",\n copy_to_clipboard: \"클립보드에 복사\",\n copied_to_clipboard: \"클립보드에 복사되었습니다!\",\n connect_with: \"와 연결하다\",\n loading: \"로드 중...\",\n something_went_wrong: \"문제가 발생했습니다.\",\n no_supported_wallets: \"아직 지원되는 지갑이 없습니다\",\n no_wallets_found: \"지갑을 찾을 수 없습니다\",\n};\n\nexport default ko;\n","import { TextMap } from \"../types\";\n\nconst pt: TextMap = {\n choose_preferred_wallet: \"Escolha sua carteira preferida\",\n connect_mobile_wallet: \"Conectar-se à carteira móvel\",\n scan_qrcode_with_wallet: \"Ler o código QR com uma carteira compatível com WalletConnect\",\n connect: \"Conectar\",\n qrcode: \"Código QR\",\n mobile: \"Móvel\",\n desktop: \"Desktop\",\n copy_to_clipboard: \"Copiar\",\n copied_to_clipboard: \"Copiado!\",\n connect_with: \"Ligar por meio de\",\n loading: \"Carregamento...\",\n something_went_wrong: \"Algo correu mal\",\n no_supported_wallets: \"Ainda não há carteiras suportadas\",\n no_wallets_found: \"Nenhuma carteira encontrada\",\n};\n\nexport default pt;\n","import { TextMap } from \"../types\";\n\nconst zh: TextMap = {\n choose_preferred_wallet: \"选择你的钱包\",\n connect_mobile_wallet: \"连接至移动端钱包\",\n scan_qrcode_with_wallet: \"使用兼容 WalletConnect 的钱包扫描二维码\",\n connect: \"连接\",\n qrcode: \"二维码\",\n mobile: \"移动\",\n desktop: \"桌面\",\n copy_to_clipboard: \"复制到剪贴板\",\n copied_to_clipboard: \"复制到剪贴板成功!\",\n connect_with: \"通过以下方式连接\",\n loading: \"正在加载...\",\n something_went_wrong: \"出了问题\",\n no_supported_wallets: \"目前还没有支持的钱包\",\n no_wallets_found: \"没有找到钱包\",\n};\n\nexport default zh;\n","import { TextMap } from \"../types\";\n\nconst fa: TextMap = {\n choose_preferred_wallet: \"کیف پول مورد نظر خود را انتخاب کنید\",\n connect_mobile_wallet: \"به کیف پول موبایل وصل شوید\",\n scan_qrcode_with_wallet: \"کد QR را با یک کیف پول سازگار با WalletConnect اسکن کنید\",\n connect: \"اتصال\",\n qrcode: \"کد QR\",\n mobile: \"سیار\",\n desktop: \"دسکتاپ\",\n copy_to_clipboard: \"کپی به کلیپ بورد\",\n copied_to_clipboard: \"در کلیپ بورد کپی شد!\",\n connect_with: \"ارتباط با\",\n loading: \"...بارگذاری\",\n something_went_wrong: \"مشکلی پیش آمد\",\n no_supported_wallets: \"هنوز هیچ کیف پول پشتیبانی شده ای وجود ندارد\",\n no_wallets_found: \"هیچ کیف پولی پیدا نشد\",\n};\n\nexport default fa;\n","// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport * as React from \"react\";\n// @ts-ignore\nimport * as ReactDOM from \"react-dom\";\nimport { getDocumentOrThrow, getNavigatorOrThrow } from \"@walletconnect/browser-utils\";\n\nimport { WALLETCONNECT_STYLE_SHEET } from \"./assets/style\";\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport Modal from \"./components/Modal\";\nimport Languages from \"./languages\";\nimport {\n ANIMATION_DURATION,\n WALLETCONNECT_WRAPPER_ID,\n WALLETCONNECT_MODAL_ID,\n WALLETCONNECT_STYLE_ID,\n} from \"./constants\";\nimport { IQRCodeModalOptions } from \"@walletconnect/types\";\nimport { TextMap } from \"./types\";\n\nfunction injectStyleSheet() {\n const doc = getDocumentOrThrow();\n const prev = doc.getElementById(WALLETCONNECT_STYLE_ID);\n if (prev) {\n doc.head.removeChild(prev);\n }\n const style = doc.createElement(\"style\");\n style.setAttribute(\"id\", WALLETCONNECT_STYLE_ID);\n style.innerText = WALLETCONNECT_STYLE_SHEET;\n doc.head.appendChild(style);\n}\n\nfunction renderWrapper(): HTMLDivElement {\n const doc = getDocumentOrThrow();\n const wrapper = doc.createElement(\"div\");\n wrapper.setAttribute(\"id\", WALLETCONNECT_WRAPPER_ID);\n doc.body.appendChild(wrapper);\n return wrapper;\n}\n\nfunction triggerCloseAnimation(): void {\n const doc = getDocumentOrThrow();\n const modal = doc.getElementById(WALLETCONNECT_MODAL_ID);\n if (modal) {\n modal.className = modal.className.replace(\"fadeIn\", \"fadeOut\");\n setTimeout(() => {\n const wrapper = doc.getElementById(WALLETCONNECT_WRAPPER_ID);\n if (wrapper) {\n doc.body.removeChild(wrapper);\n }\n }, ANIMATION_DURATION);\n }\n}\n\nfunction getWrappedCallback(cb: any): any {\n return () => {\n triggerCloseAnimation();\n if (cb) {\n cb();\n }\n };\n}\n\nfunction getText(): TextMap {\n const lang = getNavigatorOrThrow().language.split(\"-\")[0] || \"en\";\n return Languages[lang] || Languages[\"en\"];\n}\n\nexport function open(uri: string, cb: any, qrcodeModalOptions?: IQRCodeModalOptions) {\n injectStyleSheet();\n const wrapper = renderWrapper();\n ReactDOM.render(\n ,\n wrapper,\n );\n}\n\nexport function close() {\n triggerCloseAnimation();\n}\n","export const WALLETCONNECT_STYLE_SHEET = `:root {\n --animation-duration: 300ms;\n}\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n@keyframes fadeOut {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n\n.animated {\n animation-duration: var(--animation-duration);\n animation-fill-mode: both;\n}\n\n.fadeIn {\n animation-name: fadeIn;\n}\n\n.fadeOut {\n animation-name: fadeOut;\n}\n\n#walletconnect-wrapper {\n -webkit-user-select: none;\n align-items: center;\n display: flex;\n height: 100%;\n justify-content: center;\n left: 0;\n pointer-events: none;\n position: fixed;\n top: 0;\n user-select: none;\n width: 100%;\n z-index: 99999999999999;\n}\n\n.walletconnect-modal__headerLogo {\n height: 21px;\n}\n\n.walletconnect-modal__header p {\n color: #ffffff;\n font-size: 20px;\n font-weight: 600;\n margin: 0;\n align-items: flex-start;\n display: flex;\n flex: 1;\n margin-left: 5px;\n}\n\n.walletconnect-modal__close__wrapper {\n position: absolute;\n top: 0px;\n right: 0px;\n z-index: 10000;\n background: white;\n border-radius: 26px;\n padding: 6px;\n box-sizing: border-box;\n width: 26px;\n height: 26px;\n cursor: pointer;\n}\n\n.walletconnect-modal__close__icon {\n position: relative;\n top: 7px;\n right: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n transform: rotate(45deg);\n}\n\n.walletconnect-modal__close__line1 {\n position: absolute;\n width: 100%;\n border: 1px solid rgb(48, 52, 59);\n}\n\n.walletconnect-modal__close__line2 {\n position: absolute;\n width: 100%;\n border: 1px solid rgb(48, 52, 59);\n transform: rotate(90deg);\n}\n\n.walletconnect-qrcode__base {\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n background: rgba(37, 41, 46, 0.95);\n height: 100%;\n left: 0;\n pointer-events: auto;\n position: fixed;\n top: 0;\n transition: 0.4s cubic-bezier(0.19, 1, 0.22, 1);\n width: 100%;\n will-change: opacity;\n padding: 40px;\n box-sizing: border-box;\n}\n\n.walletconnect-qrcode__text {\n color: rgba(60, 66, 82, 0.6);\n font-size: 16px;\n font-weight: 600;\n letter-spacing: 0;\n line-height: 1.1875em;\n margin: 10px 0 20px 0;\n text-align: center;\n width: 100%;\n}\n\n@media only screen and (max-width: 768px) {\n .walletconnect-qrcode__text {\n font-size: 4vw;\n }\n}\n\n@media only screen and (max-width: 320px) {\n .walletconnect-qrcode__text {\n font-size: 14px;\n }\n}\n\n.walletconnect-qrcode__image {\n width: calc(100% - 30px);\n box-sizing: border-box;\n cursor: none;\n margin: 0 auto;\n}\n\n.walletconnect-qrcode__notification {\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n font-size: 16px;\n padding: 16px 20px;\n border-radius: 16px;\n text-align: center;\n transition: all 0.1s ease-in-out;\n background: white;\n color: black;\n margin-bottom: -60px;\n opacity: 0;\n}\n\n.walletconnect-qrcode__notification.notification__show {\n opacity: 1;\n}\n\n@media only screen and (max-width: 768px) {\n .walletconnect-modal__header {\n height: 130px;\n }\n .walletconnect-modal__base {\n overflow: auto;\n }\n}\n\n@media only screen and (min-device-width: 415px) and (max-width: 768px) {\n #content {\n max-width: 768px;\n box-sizing: border-box;\n }\n}\n\n@media only screen and (min-width: 375px) and (max-width: 415px) {\n #content {\n max-width: 414px;\n box-sizing: border-box;\n }\n}\n\n@media only screen and (min-width: 320px) and (max-width: 375px) {\n #content {\n max-width: 375px;\n box-sizing: border-box;\n }\n}\n\n@media only screen and (max-width: 320px) {\n #content {\n max-width: 320px;\n box-sizing: border-box;\n }\n}\n\n.walletconnect-modal__base {\n -webkit-font-smoothing: antialiased;\n background: #ffffff;\n border-radius: 24px;\n box-shadow: 0 10px 50px 5px rgba(0, 0, 0, 0.4);\n font-family: ui-rounded, \"SF Pro Rounded\", \"SF Pro Text\", medium-content-sans-serif-font,\n -apple-system, BlinkMacSystemFont, ui-sans-serif, \"Segoe UI\", Roboto, Oxygen, Ubuntu, Cantarell,\n \"Open Sans\", \"Helvetica Neue\", sans-serif;\n margin-top: 41px;\n padding: 24px 24px 22px;\n pointer-events: auto;\n position: relative;\n text-align: center;\n transition: 0.4s cubic-bezier(0.19, 1, 0.22, 1);\n will-change: transform;\n overflow: visible;\n transform: translateY(-50%);\n top: 50%;\n max-width: 500px;\n margin: auto;\n}\n\n@media only screen and (max-width: 320px) {\n .walletconnect-modal__base {\n padding: 24px 12px;\n }\n}\n\n.walletconnect-modal__base .hidden {\n transform: translateY(150%);\n transition: 0.125s cubic-bezier(0.4, 0, 1, 1);\n}\n\n.walletconnect-modal__header {\n align-items: center;\n display: flex;\n height: 26px;\n left: 0;\n justify-content: space-between;\n position: absolute;\n top: -42px;\n width: 100%;\n}\n\n.walletconnect-modal__base .wc-logo {\n align-items: center;\n display: flex;\n height: 26px;\n margin-top: 15px;\n padding-bottom: 15px;\n pointer-events: auto;\n}\n\n.walletconnect-modal__base .wc-logo div {\n background-color: #3399ff;\n height: 21px;\n margin-right: 5px;\n mask-image: url(\"images/wc-logo.svg\") center no-repeat;\n width: 32px;\n}\n\n.walletconnect-modal__base .wc-logo p {\n color: #ffffff;\n font-size: 20px;\n font-weight: 600;\n margin: 0;\n}\n\n.walletconnect-modal__base h2 {\n color: rgba(60, 66, 82, 0.6);\n font-size: 16px;\n font-weight: 600;\n letter-spacing: 0;\n line-height: 1.1875em;\n margin: 0 0 19px 0;\n text-align: center;\n width: 100%;\n}\n\n.walletconnect-modal__base__row {\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n align-items: center;\n border-radius: 20px;\n cursor: pointer;\n display: flex;\n height: 56px;\n justify-content: space-between;\n padding: 0 15px;\n position: relative;\n margin: 0px 0px 8px;\n text-align: left;\n transition: 0.15s cubic-bezier(0.25, 0.46, 0.45, 0.94);\n will-change: transform;\n text-decoration: none;\n}\n\n.walletconnect-modal__base__row:hover {\n background: rgba(60, 66, 82, 0.06);\n}\n\n.walletconnect-modal__base__row:active {\n background: rgba(60, 66, 82, 0.06);\n transform: scale(0.975);\n transition: 0.1s cubic-bezier(0.25, 0.46, 0.45, 0.94);\n}\n\n.walletconnect-modal__base__row__h3 {\n color: #25292e;\n font-size: 20px;\n font-weight: 700;\n margin: 0;\n padding-bottom: 3px;\n}\n\n.walletconnect-modal__base__row__right {\n align-items: center;\n display: flex;\n justify-content: center;\n}\n\n.walletconnect-modal__base__row__right__app-icon {\n border-radius: 8px;\n height: 34px;\n margin: 0 11px 2px 0;\n width: 34px;\n background-size: 100%;\n box-shadow: 0 4px 12px 0 rgba(37, 41, 46, 0.25);\n}\n\n.walletconnect-modal__base__row__right__caret {\n height: 18px;\n opacity: 0.3;\n transition: 0.1s cubic-bezier(0.25, 0.46, 0.45, 0.94);\n width: 8px;\n will-change: opacity;\n}\n\n.walletconnect-modal__base__row:hover .caret,\n.walletconnect-modal__base__row:active .caret {\n opacity: 0.6;\n}\n\n.walletconnect-modal__mobile__toggle {\n width: 80%;\n display: flex;\n margin: 0 auto;\n position: relative;\n overflow: hidden;\n border-radius: 8px;\n margin-bottom: 18px;\n background: #d4d5d9;\n}\n\n.walletconnect-modal__single_wallet {\n display: flex;\n justify-content: center;\n margin-top: 7px;\n margin-bottom: 18px;\n}\n\n.walletconnect-modal__single_wallet a {\n cursor: pointer;\n color: rgb(64, 153, 255);\n font-size: 21px;\n font-weight: 800;\n text-decoration: none !important;\n margin: 0 auto;\n}\n\n.walletconnect-modal__mobile__toggle_selector {\n width: calc(50% - 8px);\n background: white;\n position: absolute;\n border-radius: 5px;\n height: calc(100% - 8px);\n top: 4px;\n transition: all 0.2s ease-in-out;\n transform: translate3d(4px, 0, 0);\n}\n\n.walletconnect-modal__mobile__toggle.right__selected .walletconnect-modal__mobile__toggle_selector {\n transform: translate3d(calc(100% + 12px), 0, 0);\n}\n\n.walletconnect-modal__mobile__toggle a {\n font-size: 12px;\n width: 50%;\n text-align: center;\n padding: 8px;\n margin: 0;\n font-weight: 600;\n z-index: 1;\n}\n\n.walletconnect-modal__footer {\n display: flex;\n justify-content: center;\n margin-top: 20px;\n}\n\n@media only screen and (max-width: 768px) {\n .walletconnect-modal__footer {\n margin-top: 5vw;\n }\n}\n\n.walletconnect-modal__footer a {\n cursor: pointer;\n color: #898d97;\n font-size: 15px;\n margin: 0 auto;\n}\n\n@media only screen and (max-width: 320px) {\n .walletconnect-modal__footer a {\n font-size: 14px;\n }\n}\n\n.walletconnect-connect__buttons__wrapper {\n max-height: 44vh;\n}\n\n.walletconnect-connect__buttons__wrapper__android {\n margin: 50% 0;\n}\n\n.walletconnect-connect__buttons__wrapper__wrap {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n margin: 10px 0;\n}\n\n@media only screen and (min-width: 768px) {\n .walletconnect-connect__buttons__wrapper__wrap {\n margin-top: 40px;\n }\n}\n\n.walletconnect-connect__button {\n background-color: rgb(64, 153, 255);\n padding: 12px;\n border-radius: 8px;\n text-decoration: none;\n color: rgb(255, 255, 255);\n font-weight: 500;\n}\n\n.walletconnect-connect__button__icon_anchor {\n cursor: pointer;\n display: flex;\n justify-content: flex-start;\n align-items: center;\n margin: 8px;\n width: 42px;\n justify-self: center;\n flex-direction: column;\n text-decoration: none !important;\n}\n\n@media only screen and (max-width: 320px) {\n .walletconnect-connect__button__icon_anchor {\n margin: 4px;\n }\n}\n\n.walletconnect-connect__button__icon {\n border-radius: 10px;\n height: 42px;\n margin: 0;\n width: 42px;\n background-size: cover !important;\n box-shadow: 0 4px 12px 0 rgba(37, 41, 46, 0.25);\n}\n\n.walletconnect-connect__button__text {\n color: #424952;\n font-size: 2.7vw;\n text-decoration: none !important;\n padding: 0;\n margin-top: 1.8vw;\n font-weight: 600;\n}\n\n@media only screen and (min-width: 768px) {\n .walletconnect-connect__button__text {\n font-size: 16px;\n margin-top: 12px;\n }\n}\n\n.walletconnect-search__input {\n border: none;\n background: #d4d5d9;\n border-style: none;\n padding: 8px 16px;\n outline: none;\n font-style: normal;\n font-stretch: normal;\n font-size: 16px;\n font-style: normal;\n font-stretch: normal;\n line-height: normal;\n letter-spacing: normal;\n text-align: left;\n border-radius: 8px;\n width: calc(100% - 16px);\n margin: 0;\n margin-bottom: 8px;\n}\n`;","import { IQRCodeModalOptions } from \"@walletconnect/types\";\n\nimport * as nodeLib from \"./node\";\nimport * as browserLib from \"./browser\";\n\nconst isNode = () =>\n typeof process !== \"undefined\" &&\n typeof process.versions !== \"undefined\" &&\n typeof process.versions.node !== \"undefined\";\n\nfunction open(uri: string, cb: any, qrcodeModalOptions?: IQRCodeModalOptions) {\n // eslint-disable-next-line no-console\n console.log(uri);\n if (isNode()) {\n nodeLib.open(uri);\n } else {\n browserLib.open(uri, cb, qrcodeModalOptions);\n }\n}\n\nfunction close() {\n if (isNode()) {\n nodeLib.close();\n } else {\n browserLib.close();\n }\n}\n\nexport default { open, close };\n","import QRCode from \"qrcode\";\n\nexport function open(uri: string) {\n // eslint-disable-next-line no-console\n QRCode.toString(uri, { type: \"terminal\" }).then(console.log);\n}\n\nexport function close() {\n // empty\n}\n","export const EMPTY_OBJ = {};\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord/i;\n","import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {import('./internal').Options}\n */\nconst options = {\n\t_catchError\n};\n\nexport default options;\n","import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function Component(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nComponent.prototype.setState = function(update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState !== this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\tupdate = update(s, this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == null) return;\n\n\tif (this._vnode) {\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nComponent.prototype.forceUpdate = function(callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {import('./index').ComponentChildren | void}\n */\nComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == null) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._parent._children.indexOf(vnode) + 1)\n\t\t\t: null;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != null && sibling._dom != null) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : null;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tlet vnode = component._vnode,\n\t\toldDom = vnode._dom,\n\t\tparentDom = component._parentDom;\n\n\tif (parentDom) {\n\t\tlet commitQueue = [];\n\t\tconst oldVNode = assign({}, vnode);\n\t\toldVNode._original = oldVNode;\n\n\t\tlet newDom = diff(\n\t\t\tparentDom,\n\t\t\tvnode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tparentDom.ownerSVGElement !== undefined,\n\t\t\tnull,\n\t\t\tcommitQueue,\n\t\t\toldDom == null ? getDomSibling(vnode) : oldDom\n\t\t);\n\t\tcommitRoot(commitQueue, vnode);\n\n\t\tif (newDom != oldDom) {\n\t\t\tupdateParentDomPointers(vnode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != null && vnode._component != null) {\n\t\tvnode._dom = vnode._component.base = null;\n\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child != null && child._dom != null) {\n\t\t\t\tvnode._dom = vnode._component.base = child._dom;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array}\n */\nlet rerenderQueue = [];\nlet rerenderCount = 0;\n\n/**\n * Asynchronously schedule a callback\n * @type {(cb: () => void) => void}\n */\n/* istanbul ignore next */\n// Note the following line isn't tree-shaken by rollup cuz of rollup/rollup#2566\nconst defer =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!rerenderCount++) ||\n\t\tprevDebounce !== options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\tlet queue;\n\twhile ((rerenderCount = rerenderQueue.length)) {\n\t\tqueue = rerenderQueue.sort((a, b) => a._vnode._depth - b._vnode._depth);\n\t\trerenderQueue = [];\n\t\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t\t// process() calls from getting scheduled while `queue` is still being consumed.\n\t\tqueue.some(c => {\n\t\t\tif (c._dirty) renderComponent(c);\n\t\t});\n\t}\n}\n","import { EMPTY_OBJ, EMPTY_ARR } from './constants';\nimport { commitRoot, diff } from './diff/index';\nimport { createElement, Fragment } from './create-element';\nimport options from './options';\n\nconst IS_HYDRATE = EMPTY_OBJ;\n\n/**\n * Render a Preact virtual node into a DOM element\n * @param {import('./index').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * render into\n * @param {Element | Text} [replaceNode] Optional: Attempt to re-use an\n * existing DOM tree rooted at `replaceNode`\n */\nexport function render(vnode, parentDom, replaceNode) {\n\tif (options._root) options._root(vnode, parentDom);\n\n\t// We abuse the `replaceNode` parameter in `hydrate()` to signal if we\n\t// are in hydration mode or not by passing `IS_HYDRATE` instead of a\n\t// DOM element.\n\tlet isHydrating = replaceNode === IS_HYDRATE;\n\n\t// To be able to support calling `render()` multiple times on the same\n\t// DOM node, we need to obtain a reference to the previous tree. We do\n\t// this by assigning a new `_children` property to DOM nodes which points\n\t// to the last rendered tree. By default this property is not present, which\n\t// means that we are mounting a new tree for the first time.\n\tlet oldVNode = isHydrating\n\t\t? null\n\t\t: (replaceNode && replaceNode._children) || parentDom._children;\n\tvnode = createElement(Fragment, null, [vnode]);\n\n\t// List of effects that need to be called after diffing.\n\tlet commitQueue = [];\n\tdiff(\n\t\tparentDom,\n\t\t// Determine the new vnode tree and store it on the DOM element on\n\t\t// our custom `_children` property.\n\t\t((isHydrating ? parentDom : replaceNode || parentDom)._children = vnode),\n\t\toldVNode || EMPTY_OBJ,\n\t\tEMPTY_OBJ,\n\t\tparentDom.ownerSVGElement !== undefined,\n\t\treplaceNode && !isHydrating\n\t\t\t? [replaceNode]\n\t\t\t: oldVNode\n\t\t\t? null\n\t\t\t: EMPTY_ARR.slice.call(parentDom.childNodes),\n\t\tcommitQueue,\n\t\treplaceNode || EMPTY_OBJ,\n\t\tisHydrating\n\t);\n\n\t// Flush all queued effects\n\tcommitRoot(commitQueue, vnode);\n}\n\n/**\n * Update an existing DOM element with data from a Preact virtual node\n * @param {import('./index').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * update\n */\nexport function hydrate(vnode, parentDom) {\n\trender(vnode, parentDom, IS_HYDRATE);\n}\n","import { enqueueRender } from './component';\n\nexport let i = 0;\n\nexport function createContext(defaultValue) {\n\tconst ctx = {};\n\n\tconst context = {\n\t\t_id: '__cC' + i++,\n\t\t_defaultValue: defaultValue,\n\t\tConsumer(props, context) {\n\t\t\treturn props.children(context);\n\t\t},\n\t\tProvider(props) {\n\t\t\tif (!this.getChildContext) {\n\t\t\t\tconst subs = [];\n\t\t\t\tthis.getChildContext = () => {\n\t\t\t\t\tctx[context._id] = this;\n\t\t\t\t\treturn ctx;\n\t\t\t\t};\n\n\t\t\t\tthis.shouldComponentUpdate = _props => {\n\t\t\t\t\tif (this.props.value !== _props.value) {\n\t\t\t\t\t\tsubs.some(c => {\n\t\t\t\t\t\t\tc.context = _props.value;\n\t\t\t\t\t\t\tenqueueRender(c);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tthis.sub = c => {\n\t\t\t\t\tsubs.push(c);\n\t\t\t\t\tlet old = c.componentWillUnmount;\n\t\t\t\t\tc.componentWillUnmount = () => {\n\t\t\t\t\t\tsubs.splice(subs.indexOf(c), 1);\n\t\t\t\t\t\told && old.call(c);\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn props.children;\n\t\t}\n\t};\n\n\tcontext.Consumer.contextType = context;\n\n\t// Devtools needs access to the context object when it\n\t// encounters a Provider. This is necessary to support\n\t// setting `displayName` on the context object instead\n\t// of on the component itself. See:\n\t// https://reactjs.org/docs/context.html#contextdisplayname\n\tcontext.Provider._contextRef = context;\n\n\treturn context;\n}\n","/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Remove a child node from its parent if attached. This is a workaround for\n * IE11 which doesn't support `Element.prototype.remove()`. Using this function\n * is smaller than including a dedicated polyfill.\n * @param {Node} node The node to remove\n */\nexport function removeNode(node) {\n\tlet parentNode = node.parentNode;\n\tif (parentNode) parentNode.removeChild(node);\n}\n","import options from './options';\n\n/**\n * Create an virtual node (used for JSX)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * constructor for this virtual node\n * @param {object | null | undefined} [props] The properties of the virtual node\n * @param {Array} [children] The children of the virtual node\n * @returns {import('./internal').VNode}\n */\nexport function createElement(type, props, children) {\n\tlet normalizedProps = {},\n\t\ti;\n\tfor (i in props) {\n\t\tif (i !== 'key' && i !== 'ref') normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 3) {\n\t\tchildren = [children];\n\t\t// https://github.com/preactjs/preact/issues/1916\n\t\tfor (i = 3; i < arguments.length; i++) {\n\t\t\tchildren.push(arguments[i]);\n\t\t}\n\t}\n\tif (children != null) {\n\t\tnormalizedProps.children = children;\n\t}\n\n\t// If a Component VNode, check for and apply defaultProps\n\t// Note: type may be undefined in development, must never error here.\n\tif (typeof type == 'function' && type.defaultProps != null) {\n\t\tfor (i in type.defaultProps) {\n\t\t\tif (normalizedProps[i] === undefined) {\n\t\t\t\tnormalizedProps[i] = type.defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn createVNode(\n\t\ttype,\n\t\tnormalizedProps,\n\t\tprops && props.key,\n\t\tprops && props.ref,\n\t\tnull\n\t);\n}\n\n/**\n * Create a VNode (used internally by Preact)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * Constructor for this virtual node\n * @param {object | string | number | null} props The properties of this virtual node.\n * If this virtual node represents a text node, this is the text of the node (string or number).\n * @param {string | number | null} key The key for this virtual node, used when\n * diffing it against its children\n * @param {import('./internal').VNode[\"ref\"]} ref The ref property that will\n * receive a reference to its created child\n * @returns {import('./internal').VNode}\n */\nexport function createVNode(type, props, key, ref, original) {\n\t// V8 seems to be better at detecting type shapes if the object is allocated from the same call site\n\t// Do not inline into createElement and coerceToVNode!\n\tconst vnode = {\n\t\ttype,\n\t\tprops,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t// _nextDom must be initialized to undefined b/c it will eventually\n\t\t// be set to dom.nextSibling which can return `null` and it is important\n\t\t// to be able to distinguish between an uninitialized _nextDom and\n\t\t// a _nextDom that has been set to `null`\n\t\t_nextDom: undefined,\n\t\t_component: null,\n\t\tconstructor: undefined,\n\t\t_original: original\n\t};\n\n\tif (original == null) vnode._original = vnode;\n\tif (options.vnode) options.vnode(vnode);\n\n\treturn vnode;\n}\n\nexport function createRef() {\n\treturn {};\n}\n\nexport function Fragment(props) {\n\treturn props.children;\n}\n\n/**\n * Check if a the argument is a valid Preact VNode.\n * @param {*} vnode\n * @returns {vnode is import('./internal').VNode}\n */\nexport const isValidElement = vnode =>\n\tvnode != null && vnode.constructor === undefined;\n","import { diff, unmount, applyRef } from './index';\nimport { createVNode } from '../create-element';\nimport { EMPTY_OBJ, EMPTY_ARR } from '../constants';\nimport { removeNode } from '../util';\nimport { getDomSibling } from '../component';\n\n/**\n * Diff the children of a virtual node\n * @param {import('../internal').PreactElement} parentDom The DOM element whose\n * children are being diffed\n * @param {import('../internal').VNode} newParentVNode The new virtual\n * node whose children should be diff'ed against oldParentVNode\n * @param {import('../internal').VNode} oldParentVNode The old virtual\n * node whose children should be diff'ed against newParentVNode\n * @param {object} globalContext The current context object - modified by getChildContext\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {Array} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {Node | Text} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n */\nexport function diffChildren(\n\tparentDom,\n\tnewParentVNode,\n\toldParentVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet i, j, oldVNode, newDom, sibDom, firstChildDom, refs;\n\n\t// This is a compression of oldParentVNode!=null && oldParentVNode != EMPTY_OBJ && oldParentVNode._children || EMPTY_ARR\n\t// as EMPTY_OBJ._children should be `undefined`.\n\tlet oldChildren = (oldParentVNode && oldParentVNode._children) || EMPTY_ARR;\n\n\tlet oldChildrenLength = oldChildren.length;\n\n\t// Only in very specific places should this logic be invoked (top level `render` and `diffElementNodes`).\n\t// I'm using `EMPTY_OBJ` to signal when `diffChildren` is invoked in these situations. I can't use `null`\n\t// for this purpose, because `null` is a valid value for `oldDom` which can mean to skip to this logic\n\t// (e.g. if mounting a new tree in which the old DOM should be ignored (usually for Fragments).\n\tif (oldDom == EMPTY_OBJ) {\n\t\tif (excessDomChildren != null) {\n\t\t\toldDom = excessDomChildren[0];\n\t\t} else if (oldChildrenLength) {\n\t\t\toldDom = getDomSibling(oldParentVNode, 0);\n\t\t} else {\n\t\t\toldDom = null;\n\t\t}\n\t}\n\n\ti = 0;\n\tnewParentVNode._children = toChildArray(\n\t\tnewParentVNode._children,\n\t\tchildVNode => {\n\t\t\tif (childVNode != null) {\n\t\t\t\tchildVNode._parent = newParentVNode;\n\t\t\t\tchildVNode._depth = newParentVNode._depth + 1;\n\n\t\t\t\t// Check if we find a corresponding element in oldChildren.\n\t\t\t\t// If found, delete the array item by setting to `undefined`.\n\t\t\t\t// We use `undefined`, as `null` is reserved for empty placeholders\n\t\t\t\t// (holes).\n\t\t\t\toldVNode = oldChildren[i];\n\n\t\t\t\tif (\n\t\t\t\t\toldVNode === null ||\n\t\t\t\t\t(oldVNode &&\n\t\t\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\t\t\tchildVNode.type === oldVNode.type)\n\t\t\t\t) {\n\t\t\t\t\toldChildren[i] = undefined;\n\t\t\t\t} else {\n\t\t\t\t\t// Either oldVNode === undefined or oldChildrenLength > 0,\n\t\t\t\t\t// so after this loop oldVNode == null or oldVNode is a valid value.\n\t\t\t\t\tfor (j = 0; j < oldChildrenLength; j++) {\n\t\t\t\t\t\toldVNode = oldChildren[j];\n\t\t\t\t\t\t// If childVNode is unkeyed, we only match similarly unkeyed nodes, otherwise we match by key.\n\t\t\t\t\t\t// We always match by type (in either case).\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\toldVNode &&\n\t\t\t\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\t\t\t\tchildVNode.type === oldVNode.type\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\toldChildren[j] = undefined;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\toldVNode = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\toldVNode = oldVNode || EMPTY_OBJ;\n\n\t\t\t\t// Morph the old element into the new one, but don't append it to the dom yet\n\t\t\t\tnewDom = diff(\n\t\t\t\t\tparentDom,\n\t\t\t\t\tchildVNode,\n\t\t\t\t\toldVNode,\n\t\t\t\t\tglobalContext,\n\t\t\t\t\tisSvg,\n\t\t\t\t\texcessDomChildren,\n\t\t\t\t\tcommitQueue,\n\t\t\t\t\toldDom,\n\t\t\t\t\tisHydrating\n\t\t\t\t);\n\n\t\t\t\tif ((j = childVNode.ref) && oldVNode.ref != j) {\n\t\t\t\t\tif (!refs) refs = [];\n\t\t\t\t\tif (oldVNode.ref) refs.push(oldVNode.ref, null, childVNode);\n\t\t\t\t\trefs.push(j, childVNode._component || newDom, childVNode);\n\t\t\t\t}\n\n\t\t\t\t// Only proceed if the vnode has not been unmounted by `diff()` above.\n\t\t\t\tif (newDom != null) {\n\t\t\t\t\tif (firstChildDom == null) {\n\t\t\t\t\t\tfirstChildDom = newDom;\n\t\t\t\t\t}\n\n\t\t\t\t\tlet nextDom;\n\t\t\t\t\tif (childVNode._nextDom !== undefined) {\n\t\t\t\t\t\t// Only Fragments or components that return Fragment like VNodes will\n\t\t\t\t\t\t// have a non-undefined _nextDom. Continue the diff from the sibling\n\t\t\t\t\t\t// of last DOM child of this child VNode\n\t\t\t\t\t\tnextDom = childVNode._nextDom;\n\n\t\t\t\t\t\t// Eagerly cleanup _nextDom. We don't need to persist the value because\n\t\t\t\t\t\t// it is only used by `diffChildren` to determine where to resume the diff after\n\t\t\t\t\t\t// diffing Components and Fragments. Once we store it the nextDOM local var, we\n\t\t\t\t\t\t// can clean up the property\n\t\t\t\t\t\tchildVNode._nextDom = undefined;\n\t\t\t\t\t} else if (\n\t\t\t\t\t\texcessDomChildren == oldVNode ||\n\t\t\t\t\t\tnewDom != oldDom ||\n\t\t\t\t\t\tnewDom.parentNode == null\n\t\t\t\t\t) {\n\t\t\t\t\t\t// NOTE: excessDomChildren==oldVNode above:\n\t\t\t\t\t\t// This is a compression of excessDomChildren==null && oldVNode==null!\n\t\t\t\t\t\t// The values only have the same type when `null`.\n\n\t\t\t\t\t\touter: if (oldDom == null || oldDom.parentNode !== parentDom) {\n\t\t\t\t\t\t\tparentDom.appendChild(newDom);\n\t\t\t\t\t\t\tnextDom = null;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// `j import('../internal').VNode} [callback]\n * A function to invoke for each child before it is added to the flattened list.\n * @param {Array} [flattened] An flat array of children to modify\n * @returns {import('../internal').VNode[]}\n */\nexport function toChildArray(children, callback, flattened) {\n\tif (flattened == null) flattened = [];\n\n\tif (children == null || typeof children == 'boolean') {\n\t\tif (callback) flattened.push(callback(null));\n\t} else if (Array.isArray(children)) {\n\t\tfor (let i = 0; i < children.length; i++) {\n\t\t\ttoChildArray(children[i], callback, flattened);\n\t\t}\n\t} else if (!callback) {\n\t\tflattened.push(children);\n\t} else if (typeof children == 'string' || typeof children == 'number') {\n\t\tflattened.push(callback(createVNode(null, children, null, null, children)));\n\t} else if (children._dom != null || children._component != null) {\n\t\tflattened.push(\n\t\t\tcallback(\n\t\t\t\tcreateVNode(\n\t\t\t\t\tchildren.type,\n\t\t\t\t\tchildren.props,\n\t\t\t\t\tchildren.key,\n\t\t\t\t\tnull,\n\t\t\t\t\tchildren._original\n\t\t\t\t)\n\t\t\t)\n\t\t);\n\t} else {\n\t\tflattened.push(callback(children));\n\t}\n\n\treturn flattened;\n}\n","import { IS_NON_DIMENSIONAL } from '../constants';\nimport options from '../options';\n\n/**\n * Diff the old and new properties of a VNode and apply changes to the DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to apply\n * changes to\n * @param {object} newProps The new props\n * @param {object} oldProps The old props\n * @param {boolean} isSvg Whether or not this node is an SVG node\n * @param {boolean} hydrate Whether or not we are in hydration mode\n */\nexport function diffProps(dom, newProps, oldProps, isSvg, hydrate) {\n\tlet i;\n\n\tfor (i in oldProps) {\n\t\tif (i !== 'children' && i !== 'key' && !(i in newProps)) {\n\t\t\tsetProperty(dom, i, null, oldProps[i], isSvg);\n\t\t}\n\t}\n\n\tfor (i in newProps) {\n\t\tif (\n\t\t\t(!hydrate || typeof newProps[i] == 'function') &&\n\t\t\ti !== 'children' &&\n\t\t\ti !== 'key' &&\n\t\t\ti !== 'value' &&\n\t\t\ti !== 'checked' &&\n\t\t\toldProps[i] !== newProps[i]\n\t\t) {\n\t\t\tsetProperty(dom, i, newProps[i], oldProps[i], isSvg);\n\t\t}\n\t}\n}\n\nfunction setStyle(style, key, value) {\n\tif (key[0] === '-') {\n\t\tstyle.setProperty(key, value);\n\t} else if (\n\t\ttypeof value == 'number' &&\n\t\tIS_NON_DIMENSIONAL.test(key) === false\n\t) {\n\t\tstyle[key] = value + 'px';\n\t} else if (value == null) {\n\t\tstyle[key] = '';\n\t} else {\n\t\tstyle[key] = value;\n\t}\n}\n\n/**\n * Set a property value on a DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to modify\n * @param {string} name The name of the property to set\n * @param {*} value The value to set the property to\n * @param {*} oldValue The old value the property had\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node or not\n */\nexport function setProperty(dom, name, value, oldValue, isSvg) {\n\tlet s, useCapture, nameLower;\n\n\tif (isSvg) {\n\t\tif (name === 'className') {\n\t\t\tname = 'class';\n\t\t}\n\t} else if (name === 'class') {\n\t\tname = 'className';\n\t}\n\n\tif (name === 'style') {\n\t\ts = dom.style;\n\n\t\tif (typeof value == 'string') {\n\t\t\ts.cssText = value;\n\t\t} else {\n\t\t\tif (typeof oldValue == 'string') {\n\t\t\t\ts.cssText = '';\n\t\t\t\toldValue = null;\n\t\t\t}\n\n\t\t\tif (oldValue) {\n\t\t\t\tfor (let i in oldValue) {\n\t\t\t\t\tif (!(value && i in value)) {\n\t\t\t\t\t\tsetStyle(s, i, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\tfor (let i in value) {\n\t\t\t\t\tif (!oldValue || value[i] !== oldValue[i]) {\n\t\t\t\t\t\tsetStyle(s, i, value[i]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Benchmark for comparison: https://esbench.com/bench/574c954bdb965b9a00965ac6\n\telse if (name[0] === 'o' && name[1] === 'n') {\n\t\tuseCapture = name !== (name = name.replace(/Capture$/, ''));\n\t\tnameLower = name.toLowerCase();\n\t\tname = (nameLower in dom ? nameLower : name).slice(2);\n\n\t\tif (value) {\n\t\t\tif (!oldValue) dom.addEventListener(name, eventProxy, useCapture);\n\t\t\t(dom._listeners || (dom._listeners = {}))[name] = value;\n\t\t} else {\n\t\t\tdom.removeEventListener(name, eventProxy, useCapture);\n\t\t}\n\t} else if (\n\t\tname !== 'list' &&\n\t\tname !== 'tagName' &&\n\t\t// HTMLButtonElement.form and HTMLInputElement.form are read-only but can be set using\n\t\t// setAttribute\n\t\tname !== 'form' &&\n\t\tname !== 'type' &&\n\t\tname !== 'size' &&\n\t\t!isSvg &&\n\t\tname in dom\n\t) {\n\t\tdom[name] = value == null ? '' : value;\n\t} else if (typeof value != 'function' && name !== 'dangerouslySetInnerHTML') {\n\t\tif (name !== (name = name.replace(/^xlink:?/, ''))) {\n\t\t\tif (value == null || value === false) {\n\t\t\t\tdom.removeAttributeNS(\n\t\t\t\t\t'http://www.w3.org/1999/xlink',\n\t\t\t\t\tname.toLowerCase()\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tdom.setAttributeNS(\n\t\t\t\t\t'http://www.w3.org/1999/xlink',\n\t\t\t\t\tname.toLowerCase(),\n\t\t\t\t\tvalue\n\t\t\t\t);\n\t\t\t}\n\t\t} else if (\n\t\t\tvalue == null ||\n\t\t\t(value === false &&\n\t\t\t\t// ARIA-attributes have a different notion of boolean values.\n\t\t\t\t// The value `false` is different from the attribute not\n\t\t\t\t// existing on the DOM, so we can't remove it. For non-boolean\n\t\t\t\t// ARIA-attributes we could treat false as a removal, but the\n\t\t\t\t// amount of exceptions would cost us too many bytes. On top of\n\t\t\t\t// that other VDOM frameworks also always stringify `false`.\n\t\t\t\t!/^ar/.test(name))\n\t\t) {\n\t\t\tdom.removeAttribute(name);\n\t\t} else {\n\t\t\tdom.setAttribute(name, value);\n\t\t}\n\t}\n}\n\n/**\n * Proxy an event to hooked event handlers\n * @param {Event} e The event object from the browser\n * @private\n */\nfunction eventProxy(e) {\n\tthis._listeners[e.type](options.event ? options.event(e) : e);\n}\n","import { EMPTY_OBJ, EMPTY_ARR } from '../constants';\nimport { Component } from '../component';\nimport { Fragment } from '../create-element';\nimport { diffChildren } from './children';\nimport { diffProps, setProperty } from './props';\nimport { assign, removeNode } from '../util';\nimport options from '../options';\n\n/**\n * Diff two virtual nodes and apply proper changes to the DOM\n * @param {import('../internal').PreactElement} parentDom The parent of the DOM element\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object. Modified by getChildContext\n * @param {boolean} isSvg Whether or not this element is an SVG node\n * @param {Array} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {Element | Text} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} [isHydrating] Whether or not we are in hydration\n */\nexport function diff(\n\tparentDom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet tmp,\n\t\tnewType = newVNode.type;\n\n\t// When passing through createElement it assigns the object\n\t// constructor as undefined. This to prevent JSON-injection.\n\tif (newVNode.constructor !== undefined) return null;\n\n\tif ((tmp = options._diff)) tmp(newVNode);\n\n\ttry {\n\t\touter: if (typeof newType == 'function') {\n\t\t\tlet c, isNew, oldProps, oldState, snapshot, clearProcessingException;\n\t\t\tlet newProps = newVNode.props;\n\n\t\t\t// Necessary for createContext api. Setting this property will pass\n\t\t\t// the context value as `this.context` just for this component.\n\t\t\ttmp = newType.contextType;\n\t\t\tlet provider = tmp && globalContext[tmp._id];\n\t\t\tlet componentContext = tmp\n\t\t\t\t? provider\n\t\t\t\t\t? provider.props.value\n\t\t\t\t\t: tmp._defaultValue\n\t\t\t\t: globalContext;\n\n\t\t\t// Get component and set it to `c`\n\t\t\tif (oldVNode._component) {\n\t\t\t\tc = newVNode._component = oldVNode._component;\n\t\t\t\tclearProcessingException = c._processingException = c._pendingError;\n\t\t\t} else {\n\t\t\t\t// Instantiate the new component\n\t\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\t\tnewVNode._component = c = new newType(newProps, componentContext); // eslint-disable-line new-cap\n\t\t\t\t} else {\n\t\t\t\t\tnewVNode._component = c = new Component(newProps, componentContext);\n\t\t\t\t\tc.constructor = newType;\n\t\t\t\t\tc.render = doRender;\n\t\t\t\t}\n\t\t\t\tif (provider) provider.sub(c);\n\n\t\t\t\tc.props = newProps;\n\t\t\t\tif (!c.state) c.state = {};\n\t\t\t\tc.context = componentContext;\n\t\t\t\tc._globalContext = globalContext;\n\t\t\t\tisNew = c._dirty = true;\n\t\t\t\tc._renderCallbacks = [];\n\t\t\t}\n\n\t\t\t// Invoke getDerivedStateFromProps\n\t\t\tif (c._nextState == null) {\n\t\t\t\tc._nextState = c.state;\n\t\t\t}\n\t\t\tif (newType.getDerivedStateFromProps != null) {\n\t\t\t\tif (c._nextState == c.state) {\n\t\t\t\t\tc._nextState = assign({}, c._nextState);\n\t\t\t\t}\n\n\t\t\t\tassign(\n\t\t\t\t\tc._nextState,\n\t\t\t\t\tnewType.getDerivedStateFromProps(newProps, c._nextState)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\toldProps = c.props;\n\t\t\toldState = c.state;\n\n\t\t\t// Invoke pre-render lifecycle methods\n\t\t\tif (isNew) {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tc.componentWillMount != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillMount();\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidMount != null) {\n\t\t\t\t\tc._renderCallbacks.push(c.componentDidMount);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tnewProps !== oldProps &&\n\t\t\t\t\tc.componentWillReceiveProps != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillReceiveProps(newProps, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t(!c._force &&\n\t\t\t\t\t\tc.shouldComponentUpdate != null &&\n\t\t\t\t\t\tc.shouldComponentUpdate(\n\t\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\t\tc._nextState,\n\t\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t\t) === false) ||\n\t\t\t\t\t(newVNode._original === oldVNode._original && !c._processingException)\n\t\t\t\t) {\n\t\t\t\t\tc.props = newProps;\n\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t\t// More info about this here: https://gist.github.com/JoviDeCroock/bec5f2ce93544d2e6070ef8e0036e4e8\n\t\t\t\t\tif (newVNode._original !== oldVNode._original) c._dirty = false;\n\t\t\t\t\tc._vnode = newVNode;\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\t\t\tcommitQueue.push(c);\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (tmp = 0; tmp < newVNode._children.length; tmp++) {\n\t\t\t\t\t\tif (newVNode._children[tmp]) {\n\t\t\t\t\t\t\tnewVNode._children[tmp]._parent = newVNode;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\n\t\t\t\tif (c.componentWillUpdate != null) {\n\t\t\t\t\tc.componentWillUpdate(newProps, c._nextState, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidUpdate != null) {\n\t\t\t\t\tc._renderCallbacks.push(() => {\n\t\t\t\t\t\tc.componentDidUpdate(oldProps, oldState, snapshot);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc.context = componentContext;\n\t\t\tc.props = newProps;\n\t\t\tc.state = c._nextState;\n\n\t\t\tif ((tmp = options._render)) tmp(newVNode);\n\n\t\t\tc._dirty = false;\n\t\t\tc._vnode = newVNode;\n\t\t\tc._parentDom = parentDom;\n\n\t\t\ttmp = c.render(c.props, c.state, c.context);\n\t\t\tlet isTopLevelFragment =\n\t\t\t\ttmp != null && tmp.type == Fragment && tmp.key == null;\n\t\t\tnewVNode._children = isTopLevelFragment\n\t\t\t\t? tmp.props.children\n\t\t\t\t: Array.isArray(tmp)\n\t\t\t\t? tmp\n\t\t\t\t: [tmp];\n\n\t\t\tif (c.getChildContext != null) {\n\t\t\t\tglobalContext = assign(assign({}, globalContext), c.getChildContext());\n\t\t\t}\n\n\t\t\tif (!isNew && c.getSnapshotBeforeUpdate != null) {\n\t\t\t\tsnapshot = c.getSnapshotBeforeUpdate(oldProps, oldState);\n\t\t\t}\n\n\t\t\tdiffChildren(\n\t\t\t\tparentDom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\toldDom,\n\t\t\t\tisHydrating\n\t\t\t);\n\n\t\t\tc.base = newVNode._dom;\n\n\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\tcommitQueue.push(c);\n\t\t\t}\n\n\t\t\tif (clearProcessingException) {\n\t\t\t\tc._pendingError = c._processingException = null;\n\t\t\t}\n\n\t\t\tc._force = false;\n\t\t} else if (\n\t\t\texcessDomChildren == null &&\n\t\t\tnewVNode._original === oldVNode._original\n\t\t) {\n\t\t\tnewVNode._children = oldVNode._children;\n\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t} else {\n\t\t\tnewVNode._dom = diffElementNodes(\n\t\t\t\toldVNode._dom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\tisHydrating\n\t\t\t);\n\t\t}\n\n\t\tif ((tmp = options.diffed)) tmp(newVNode);\n\t} catch (e) {\n\t\tnewVNode._original = null;\n\t\toptions._catchError(e, newVNode, oldVNode);\n\t}\n\n\treturn newVNode._dom;\n}\n\n/**\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').VNode} root\n */\nexport function commitRoot(commitQueue, root) {\n\tif (options._commit) options._commit(root, commitQueue);\n\n\tcommitQueue.some(c => {\n\t\ttry {\n\t\t\tcommitQueue = c._renderCallbacks;\n\t\t\tc._renderCallbacks = [];\n\t\t\tcommitQueue.some(cb => {\n\t\t\t\tcb.call(c);\n\t\t\t});\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t});\n}\n\n/**\n * Diff two virtual nodes representing DOM element\n * @param {import('../internal').PreactElement} dom The DOM element representing\n * the virtual nodes being diffed\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {*} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @returns {import('../internal').PreactElement}\n */\nfunction diffElementNodes(\n\tdom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\tisHydrating\n) {\n\tlet i;\n\tlet oldProps = oldVNode.props;\n\tlet newProps = newVNode.props;\n\n\t// Tracks entering and exiting SVG namespace when descending through the tree.\n\tisSvg = newVNode.type === 'svg' || isSvg;\n\n\tif (excessDomChildren != null) {\n\t\tfor (i = 0; i < excessDomChildren.length; i++) {\n\t\t\tconst child = excessDomChildren[i];\n\n\t\t\t// if newVNode matches an element in excessDomChildren or the `dom`\n\t\t\t// argument matches an element in excessDomChildren, remove it from\n\t\t\t// excessDomChildren so it isn't later removed in diffChildren\n\t\t\tif (\n\t\t\t\tchild != null &&\n\t\t\t\t((newVNode.type === null\n\t\t\t\t\t? child.nodeType === 3\n\t\t\t\t\t: child.localName === newVNode.type) ||\n\t\t\t\t\tdom == child)\n\t\t\t) {\n\t\t\t\tdom = child;\n\t\t\t\texcessDomChildren[i] = null;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (dom == null) {\n\t\tif (newVNode.type === null) {\n\t\t\treturn document.createTextNode(newProps);\n\t\t}\n\n\t\tdom = isSvg\n\t\t\t? document.createElementNS('http://www.w3.org/2000/svg', newVNode.type)\n\t\t\t: document.createElement(\n\t\t\t\t\tnewVNode.type,\n\t\t\t\t\tnewProps.is && { is: newProps.is }\n\t\t\t );\n\t\t// we created a new parent, so none of the previously attached children can be reused:\n\t\texcessDomChildren = null;\n\t\t// we are creating a new node, so we can assume this is a new subtree (in case we are hydrating), this deopts the hydrate\n\t\tisHydrating = false;\n\t}\n\n\tif (newVNode.type === null) {\n\t\tif (oldProps !== newProps && dom.data != newProps) {\n\t\t\tdom.data = newProps;\n\t\t}\n\t} else {\n\t\tif (excessDomChildren != null) {\n\t\t\texcessDomChildren = EMPTY_ARR.slice.call(dom.childNodes);\n\t\t}\n\n\t\toldProps = oldVNode.props || EMPTY_OBJ;\n\n\t\tlet oldHtml = oldProps.dangerouslySetInnerHTML;\n\t\tlet newHtml = newProps.dangerouslySetInnerHTML;\n\n\t\t// During hydration, props are not diffed at all (including dangerouslySetInnerHTML)\n\t\t// @TODO we should warn in debug mode when props don't match here.\n\t\tif (!isHydrating) {\n\t\t\tif (oldProps === EMPTY_OBJ) {\n\t\t\t\toldProps = {};\n\t\t\t\tfor (let i = 0; i < dom.attributes.length; i++) {\n\t\t\t\t\toldProps[dom.attributes[i].name] = dom.attributes[i].value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (newHtml || oldHtml) {\n\t\t\t\t// Avoid re-applying the same '__html' if it did not changed between re-render\n\t\t\t\tif (!newHtml || !oldHtml || newHtml.__html != oldHtml.__html) {\n\t\t\t\t\tdom.innerHTML = (newHtml && newHtml.__html) || '';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdiffProps(dom, newProps, oldProps, isSvg, isHydrating);\n\n\t\t// If the new vnode didn't have dangerouslySetInnerHTML, diff its children\n\t\tif (newHtml) {\n\t\t\tnewVNode._children = [];\n\t\t} else {\n\t\t\tnewVNode._children = newVNode.props.children;\n\t\t\tdiffChildren(\n\t\t\t\tdom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tnewVNode.type === 'foreignObject' ? false : isSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\tEMPTY_OBJ,\n\t\t\t\tisHydrating\n\t\t\t);\n\t\t}\n\n\t\t// (as above, don't diff props during hydration)\n\t\tif (!isHydrating) {\n\t\t\tif (\n\t\t\t\t'value' in newProps &&\n\t\t\t\t(i = newProps.value) !== undefined &&\n\t\t\t\ti !== dom.value\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'value', i, oldProps.value, false);\n\t\t\t}\n\t\t\tif (\n\t\t\t\t'checked' in newProps &&\n\t\t\t\t(i = newProps.checked) !== undefined &&\n\t\t\t\ti !== dom.checked\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'checked', i, oldProps.checked, false);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn dom;\n}\n\n/**\n * Invoke or update a ref, depending on whether it is a function or object ref.\n * @param {object|function} ref\n * @param {any} value\n * @param {import('../internal').VNode} vnode\n */\nexport function applyRef(ref, value, vnode) {\n\ttry {\n\t\tif (typeof ref == 'function') ref(value);\n\t\telse ref.current = value;\n\t} catch (e) {\n\t\toptions._catchError(e, vnode);\n\t}\n}\n\n/**\n * Unmount a virtual node from the tree and apply DOM changes\n * @param {import('../internal').VNode} vnode The virtual node to unmount\n * @param {import('../internal').VNode} parentVNode The parent of the VNode that\n * initiated the unmount\n * @param {boolean} [skipRemove] Flag that indicates that a parent node of the\n * current element is already detached from the DOM.\n */\nexport function unmount(vnode, parentVNode, skipRemove) {\n\tlet r;\n\tif (options.unmount) options.unmount(vnode);\n\n\tif ((r = vnode.ref)) {\n\t\tif (!r.current || r.current === vnode._dom) applyRef(r, null, parentVNode);\n\t}\n\n\tlet dom;\n\tif (!skipRemove && typeof vnode.type != 'function') {\n\t\tskipRemove = (dom = vnode._dom) != null;\n\t}\n\n\t// Must be set to `undefined` to properly clean up `_nextDom`\n\t// for which `null` is a valid value. See comment in `create-element.js`\n\tvnode._dom = vnode._nextDom = undefined;\n\n\tif ((r = vnode._component) != null) {\n\t\tif (r.componentWillUnmount) {\n\t\t\ttry {\n\t\t\t\tr.componentWillUnmount();\n\t\t\t} catch (e) {\n\t\t\t\toptions._catchError(e, parentVNode);\n\t\t\t}\n\t\t}\n\n\t\tr.base = r._parentDom = null;\n\t}\n\n\tif ((r = vnode._children)) {\n\t\tfor (let i = 0; i < r.length; i++) {\n\t\t\tif (r[i]) unmount(r[i], parentVNode, skipRemove);\n\t\t}\n\t}\n\n\tif (dom != null) removeNode(dom);\n}\n\n/** The `.render()` method for a PFC backing instance. */\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n","import { assign } from './util';\nimport { EMPTY_ARR } from './constants';\nimport { createVNode } from './create-element';\n\n/**\n * Clones the given VNode, optionally adding attributes/props and replacing its children.\n * @param {import('./internal').VNode} vnode The virtual DOM element to clone\n * @param {object} props Attributes/props to add when cloning\n * @param {Array} rest Any additional arguments will be used as replacement children.\n * @returns {import('./internal').VNode}\n */\nexport function cloneElement(vnode, props) {\n\tprops = assign(assign({}, vnode.props), props);\n\tif (arguments.length > 2) props.children = EMPTY_ARR.slice.call(arguments, 2);\n\tlet normalizedProps = {};\n\tfor (const i in props) {\n\t\tif (i !== 'key' && i !== 'ref') normalizedProps[i] = props[i];\n\t}\n\n\treturn createVNode(\n\t\tvnode.type,\n\t\tnormalizedProps,\n\t\tprops.key || vnode.key,\n\t\tprops.ref || vnode.ref,\n\t\tnull\n\t);\n}\n","import { enqueueRender } from '../component';\n\n/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {import('../internal').VNode} vnode The vnode that threw\n * the error that was caught (except for unmounting when this parameter\n * is the highest parent that was being unmounted)\n */\nexport function _catchError(error, vnode) {\n\t/** @type {import('../internal').Component} */\n\tlet component, hasCaught;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tif (\n\t\t\t\t\tcomponent.constructor &&\n\t\t\t\t\tcomponent.constructor.getDerivedStateFromError != null\n\t\t\t\t) {\n\t\t\t\t\thasCaught = true;\n\t\t\t\t\tcomponent.setState(\n\t\t\t\t\t\tcomponent.constructor.getDerivedStateFromError(error)\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != null) {\n\t\t\t\t\thasCaught = true;\n\t\t\t\t\tcomponent.componentDidCatch(error);\n\t\t\t\t}\n\n\t\t\t\tif (hasCaught)\n\t\t\t\t\treturn enqueueRender((component._pendingError = component));\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n","import { options } from 'preact';\n\n/** @type {number} */\nlet currentIndex;\n\n/** @type {import('./internal').Component} */\nlet currentComponent;\n\n/** @type {number} */\nlet currentHook = 0;\n\n/** @type {Array} */\nlet afterPaintEffects = [];\n\nlet oldBeforeRender = options._render;\nlet oldAfterDiff = options.diffed;\nlet oldCommit = options._commit;\nlet oldBeforeUnmount = options.unmount;\n\nconst RAF_TIMEOUT = 100;\nlet prevRaf;\n\noptions._render = vnode => {\n\tif (oldBeforeRender) oldBeforeRender(vnode);\n\n\tcurrentComponent = vnode._component;\n\tcurrentIndex = 0;\n\n\tif (currentComponent.__hooks) {\n\t\tcurrentComponent.__hooks._pendingEffects.forEach(invokeCleanup);\n\t\tcurrentComponent.__hooks._pendingEffects.forEach(invokeEffect);\n\t\tcurrentComponent.__hooks._pendingEffects = [];\n\t}\n};\n\noptions.diffed = vnode => {\n\tif (oldAfterDiff) oldAfterDiff(vnode);\n\n\tconst c = vnode._component;\n\tif (!c) return;\n\n\tconst hooks = c.__hooks;\n\tif (hooks) {\n\t\tif (hooks._pendingEffects.length) {\n\t\t\tafterPaint(afterPaintEffects.push(c));\n\t\t}\n\t}\n};\n\noptions._commit = (vnode, commitQueue) => {\n\tcommitQueue.some(component => {\n\t\ttry {\n\t\t\tcomponent._renderCallbacks.forEach(invokeCleanup);\n\t\t\tcomponent._renderCallbacks = component._renderCallbacks.filter(cb =>\n\t\t\t\tcb._value ? invokeEffect(cb) : true\n\t\t\t);\n\t\t} catch (e) {\n\t\t\tcommitQueue.some(c => {\n\t\t\t\tif (c._renderCallbacks) c._renderCallbacks = [];\n\t\t\t});\n\t\t\tcommitQueue = [];\n\t\t\toptions._catchError(e, component._vnode);\n\t\t}\n\t});\n\n\tif (oldCommit) oldCommit(vnode, commitQueue);\n};\n\noptions.unmount = vnode => {\n\tif (oldBeforeUnmount) oldBeforeUnmount(vnode);\n\n\tconst c = vnode._component;\n\tif (!c) return;\n\n\tconst hooks = c.__hooks;\n\tif (hooks) {\n\t\ttry {\n\t\t\thooks._list.forEach(hook => hook._cleanup && hook._cleanup());\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t}\n};\n\n/**\n * Get a hook's state from the currentComponent\n * @param {number} index The index of the hook to get\n * @param {number} type The index of the hook to get\n * @returns {import('./internal').HookState}\n */\nfunction getHookState(index, type) {\n\tif (options._hook) {\n\t\toptions._hook(currentComponent, index, currentHook || type);\n\t}\n\tcurrentHook = 0;\n\n\t// Largely inspired by:\n\t// * https://github.com/michael-klein/funcy.js/blob/f6be73468e6ec46b0ff5aa3cc4c9baf72a29025a/src/hooks/core_hooks.mjs\n\t// * https://github.com/michael-klein/funcy.js/blob/650beaa58c43c33a74820a3c98b3c7079cf2e333/src/renderer.mjs\n\t// Other implementations to look at:\n\t// * https://codesandbox.io/s/mnox05qp8\n\tconst hooks =\n\t\tcurrentComponent.__hooks ||\n\t\t(currentComponent.__hooks = {\n\t\t\t_list: [],\n\t\t\t_pendingEffects: []\n\t\t});\n\n\tif (index >= hooks._list.length) {\n\t\thooks._list.push({});\n\t}\n\treturn hooks._list[index];\n}\n\n/**\n * @param {import('./index').StateUpdater} initialState\n */\nexport function useState(initialState) {\n\tcurrentHook = 1;\n\treturn useReducer(invokeOrReturn, initialState);\n}\n\n/**\n * @param {import('./index').Reducer} reducer\n * @param {import('./index').StateUpdater} initialState\n * @param {(initialState: any) => void} [init]\n * @returns {[ any, (state: any) => void ]}\n */\nexport function useReducer(reducer, initialState, init) {\n\t/** @type {import('./internal').ReducerHookState} */\n\tconst hookState = getHookState(currentIndex++, 2);\n\tif (!hookState._component) {\n\t\thookState._component = currentComponent;\n\n\t\thookState._value = [\n\t\t\t!init ? invokeOrReturn(undefined, initialState) : init(initialState),\n\n\t\t\taction => {\n\t\t\t\tconst nextValue = reducer(hookState._value[0], action);\n\t\t\t\tif (hookState._value[0] !== nextValue) {\n\t\t\t\t\thookState._value[0] = nextValue;\n\t\t\t\t\thookState._component.setState({});\n\t\t\t\t}\n\t\t\t}\n\t\t];\n\t}\n\n\treturn hookState._value;\n}\n\n/**\n * @param {import('./internal').Effect} callback\n * @param {any[]} args\n */\nexport function useEffect(callback, args) {\n\t/** @type {import('./internal').EffectHookState} */\n\tconst state = getHookState(currentIndex++, 3);\n\tif (!options._skipEffects && argsChanged(state._args, args)) {\n\t\tstate._value = callback;\n\t\tstate._args = args;\n\n\t\tcurrentComponent.__hooks._pendingEffects.push(state);\n\t}\n}\n\n/**\n * @param {import('./internal').Effect} callback\n * @param {any[]} args\n */\nexport function useLayoutEffect(callback, args) {\n\t/** @type {import('./internal').EffectHookState} */\n\tconst state = getHookState(currentIndex++, 4);\n\tif (!options._skipEffects && argsChanged(state._args, args)) {\n\t\tstate._value = callback;\n\t\tstate._args = args;\n\n\t\tcurrentComponent._renderCallbacks.push(state);\n\t}\n}\n\nexport function useRef(initialValue) {\n\tcurrentHook = 5;\n\treturn useMemo(() => ({ current: initialValue }), []);\n}\n\n/**\n * @param {object} ref\n * @param {() => object} createHandle\n * @param {any[]} args\n */\nexport function useImperativeHandle(ref, createHandle, args) {\n\tcurrentHook = 6;\n\tuseLayoutEffect(\n\t\t() => {\n\t\t\tif (typeof ref == 'function') ref(createHandle());\n\t\t\telse if (ref) ref.current = createHandle();\n\t\t},\n\t\targs == null ? args : args.concat(ref)\n\t);\n}\n\n/**\n * @param {() => any} factory\n * @param {any[]} args\n */\nexport function useMemo(factory, args) {\n\t/** @type {import('./internal').MemoHookState} */\n\tconst state = getHookState(currentIndex++, 7);\n\tif (argsChanged(state._args, args)) {\n\t\tstate._args = args;\n\t\tstate._factory = factory;\n\t\treturn (state._value = factory());\n\t}\n\n\treturn state._value;\n}\n\n/**\n * @param {() => void} callback\n * @param {any[]} args\n */\nexport function useCallback(callback, args) {\n\tcurrentHook = 8;\n\treturn useMemo(() => callback, args);\n}\n\n/**\n * @param {import('./internal').PreactContext} context\n */\nexport function useContext(context) {\n\tconst provider = currentComponent.context[context._id];\n\t// We could skip this call here, but than we'd not call\n\t// `options._hook`. We need to do that in order to make\n\t// the devtools aware of this hook.\n\tconst state = getHookState(currentIndex++, 9);\n\t// The devtools needs access to the context object to\n\t// be able to pull of the default value when no provider\n\t// is present in the tree.\n\tstate._context = context;\n\tif (!provider) return context._defaultValue;\n\t// This is probably not safe to convert to \"!\"\n\tif (state._value == null) {\n\t\tstate._value = true;\n\t\tprovider.sub(currentComponent);\n\t}\n\treturn provider.props.value;\n}\n\n/**\n * Display a custom label for a custom hook for the devtools panel\n * @type {(value: T, cb?: (value: T) => string | number) => void}\n */\nexport function useDebugValue(value, formatter) {\n\tif (options.useDebugValue) {\n\t\toptions.useDebugValue(formatter ? formatter(value) : value);\n\t}\n}\n\nexport function useErrorBoundary(cb) {\n\tconst state = getHookState(currentIndex++, 10);\n\tconst errState = useState();\n\tstate._value = cb;\n\tif (!currentComponent.componentDidCatch) {\n\t\tcurrentComponent.componentDidCatch = err => {\n\t\t\tif (state._value) state._value(err);\n\t\t\terrState[1](err);\n\t\t};\n\t}\n\treturn [\n\t\terrState[0],\n\t\t() => {\n\t\t\terrState[1](undefined);\n\t\t}\n\t];\n}\n\n/**\n * After paint effects consumer.\n */\nfunction flushAfterPaintEffects() {\n\tafterPaintEffects.some(component => {\n\t\tif (component._parentDom) {\n\t\t\ttry {\n\t\t\t\tcomponent.__hooks._pendingEffects.forEach(invokeCleanup);\n\t\t\t\tcomponent.__hooks._pendingEffects.forEach(invokeEffect);\n\t\t\t\tcomponent.__hooks._pendingEffects = [];\n\t\t\t} catch (e) {\n\t\t\t\tcomponent.__hooks._pendingEffects = [];\n\t\t\t\toptions._catchError(e, component._vnode);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t});\n\tafterPaintEffects = [];\n}\n\n/**\n * Schedule a callback to be invoked after the browser has a chance to paint a new frame.\n * Do this by combining requestAnimationFrame (rAF) + setTimeout to invoke a callback after\n * the next browser frame.\n *\n * Also, schedule a timeout in parallel to the the rAF to ensure the callback is invoked\n * even if RAF doesn't fire (for example if the browser tab is not visible)\n *\n * @param {() => void} callback\n */\nfunction afterNextFrame(callback) {\n\tconst done = () => {\n\t\tclearTimeout(timeout);\n\t\tcancelAnimationFrame(raf);\n\t\tsetTimeout(callback);\n\t};\n\tconst timeout = setTimeout(done, RAF_TIMEOUT);\n\n\tlet raf;\n\tif (typeof window != 'undefined') {\n\t\traf = requestAnimationFrame(done);\n\t}\n}\n\n// Note: if someone used options.debounceRendering = requestAnimationFrame,\n// then effects will ALWAYS run on the NEXT frame instead of the current one, incurring a ~16ms delay.\n// Perhaps this is not such a big deal.\n/**\n * Schedule afterPaintEffects flush after the browser paints\n * @param {number} newQueueLength\n */\nfunction afterPaint(newQueueLength) {\n\tif (newQueueLength === 1 || prevRaf !== options.requestAnimationFrame) {\n\t\tprevRaf = options.requestAnimationFrame;\n\t\t(prevRaf || afterNextFrame)(flushAfterPaintEffects);\n\t}\n}\n\n/**\n * @param {import('./internal').EffectHookState} hook\n */\nfunction invokeCleanup(hook) {\n\tif (hook._cleanup) hook._cleanup();\n}\n\n/**\n * Invoke a Hook's effect\n * @param {import('./internal').EffectHookState} hook\n */\nfunction invokeEffect(hook) {\n\tconst result = hook._value();\n\tif (typeof result == 'function') hook._cleanup = result;\n}\n\n/**\n * @param {any[]} oldArgs\n * @param {any[]} newArgs\n */\nfunction argsChanged(oldArgs, newArgs) {\n\treturn !oldArgs || newArgs.some((arg, index) => arg !== oldArgs[index]);\n}\n\nfunction invokeOrReturn(arg, f) {\n\treturn typeof f == 'function' ? f(arg) : f;\n}\n","/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Check if two objects have a different shape\n * @param {object} a\n * @param {object} b\n * @returns {boolean}\n */\nexport function shallowDiffers(a, b) {\n\tfor (let i in a) if (i !== '__source' && !(i in b)) return true;\n\tfor (let i in b) if (i !== '__source' && a[i] !== b[i]) return true;\n\treturn false;\n}\n","import { Component } from 'preact';\nimport { shallowDiffers } from './util';\n\n/**\n * Component class with a predefined `shouldComponentUpdate` implementation\n */\nexport class PureComponent extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\t// Some third-party libraries check if this property is present\n\t\tthis.isPureReactComponent = true;\n\t}\n\n\tshouldComponentUpdate(props, state) {\n\t\treturn (\n\t\t\tshallowDiffers(this.props, props) || shallowDiffers(this.state, state)\n\t\t);\n\t}\n}\n","import { createElement } from 'preact';\nimport { shallowDiffers, assign } from './util';\n\n/**\n * Memoize a component, so that it only updates when the props actually have\n * changed. This was previously known as `React.pure`.\n * @param {import('./internal').FunctionalComponent} c functional component\n * @param {(prev: object, next: object) => boolean} [comparer] Custom equality function\n * @returns {import('./internal').FunctionalComponent}\n */\nexport function memo(c, comparer) {\n\tfunction shouldUpdate(nextProps) {\n\t\tlet ref = this.props.ref;\n\t\tlet updateRef = ref == nextProps.ref;\n\t\tif (!updateRef && ref) {\n\t\t\tref.call ? ref(null) : (ref.current = null);\n\t\t}\n\n\t\tif (!comparer) {\n\t\t\treturn shallowDiffers(this.props, nextProps);\n\t\t}\n\n\t\treturn !comparer(this.props, nextProps) || !updateRef;\n\t}\n\n\tfunction Memoed(props) {\n\t\tthis.shouldComponentUpdate = shouldUpdate;\n\t\treturn createElement(c, assign({}, props));\n\t}\n\tMemoed.prototype.isReactComponent = true;\n\tMemoed.displayName = 'Memo(' + (c.displayName || c.name) + ')';\n\tMemoed._forwarded = true;\n\treturn Memoed;\n}\n","import { options } from 'preact';\nimport { assign } from './util';\n\nlet oldDiffHook = options._diff;\noptions._diff = vnode => {\n\tif (vnode.type && vnode.type._forwarded && vnode.ref) {\n\t\tvnode.props.ref = vnode.ref;\n\t\tvnode.ref = null;\n\t}\n\tif (oldDiffHook) oldDiffHook(vnode);\n};\n\n/**\n * Pass ref down to a child. This is mainly used in libraries with HOCs that\n * wrap components. Using `forwardRef` there is an easy way to get a reference\n * of the wrapped component instead of one of the wrapper itself.\n * @param {import('./index').ForwardFn} fn\n * @returns {import('./internal').FunctionalComponent}\n */\nexport function forwardRef(fn) {\n\tfunction Forwarded(props) {\n\t\tlet clone = assign({}, props);\n\t\tdelete clone.ref;\n\t\treturn fn(clone, props.ref);\n\t}\n\tForwarded.prototype.isReactComponent = Forwarded._forwarded = true;\n\tForwarded.displayName = 'ForwardRef(' + (fn.displayName || fn.name) + ')';\n\treturn Forwarded;\n}\n","import { toChildArray } from 'preact';\n\nconst mapFn = (children, fn) => {\n\tif (!children) return null;\n\treturn toChildArray(children).reduce(\n\t\t(acc, value, index) => acc.concat(fn(value, index)),\n\t\t[]\n\t);\n};\n\n// This API is completely unnecessary for Preact, so it's basically passthrough.\nexport const Children = {\n\tmap: mapFn,\n\tforEach: mapFn,\n\tcount(children) {\n\t\treturn children ? toChildArray(children).length : 0;\n\t},\n\tonly(children) {\n\t\tchildren = toChildArray(children);\n\t\tif (children.length !== 1) {\n\t\t\tthrow new Error('Children.only() expects only one child.');\n\t\t}\n\t\treturn children[0];\n\t},\n\ttoArray: toChildArray\n};\n","import { Component, createElement, options } from 'preact';\nimport { assign } from './util';\n\nconst oldCatchError = options._catchError;\noptions._catchError = function(error, newVNode, oldVNode) {\n\tif (error.then) {\n\t\t/** @type {import('./internal').Component} */\n\t\tlet component;\n\t\tlet vnode = newVNode;\n\n\t\tfor (; (vnode = vnode._parent); ) {\n\t\t\tif ((component = vnode._component) && component._childDidSuspend) {\n\t\t\t\t// Don't call oldCatchError if we found a Suspense\n\t\t\t\treturn component._childDidSuspend(error, newVNode._component);\n\t\t\t}\n\t\t}\n\t}\n\toldCatchError(error, newVNode, oldVNode);\n};\n\nfunction detachedClone(vnode) {\n\tif (vnode) {\n\t\tvnode = assign({}, vnode);\n\t\tvnode._component = null;\n\t\tvnode._children = vnode._children && vnode._children.map(detachedClone);\n\t}\n\treturn vnode;\n}\n\n// having custom inheritance instead of a class here saves a lot of bytes\nexport function Suspense() {\n\t// we do not call super here to golf some bytes...\n\tthis._pendingSuspensionCount = 0;\n\tthis._suspenders = null;\n\tthis._detachOnNextRender = null;\n}\n\n// Things we do here to save some bytes but are not proper JS inheritance:\n// - call `new Component()` as the prototype\n// - do not set `Suspense.prototype.constructor` to `Suspense`\nSuspense.prototype = new Component();\n\n/**\n * @param {Promise} promise The thrown promise\n * @param {Component} suspendingComponent The suspending component\n */\nSuspense.prototype._childDidSuspend = function(promise, suspendingComponent) {\n\t/** @type {import('./internal').SuspenseComponent} */\n\tconst c = this;\n\n\tif (c._suspenders == null) {\n\t\tc._suspenders = [];\n\t}\n\tc._suspenders.push(suspendingComponent);\n\n\tconst resolve = suspended(c._vnode);\n\n\tlet resolved = false;\n\tconst onResolved = () => {\n\t\tif (resolved) return;\n\n\t\tresolved = true;\n\n\t\tif (resolve) {\n\t\t\tresolve(onSuspensionComplete);\n\t\t} else {\n\t\t\tonSuspensionComplete();\n\t\t}\n\t};\n\n\tsuspendingComponent._suspendedComponentWillUnmount =\n\t\tsuspendingComponent.componentWillUnmount;\n\tsuspendingComponent.componentWillUnmount = () => {\n\t\tonResolved();\n\n\t\tif (suspendingComponent._suspendedComponentWillUnmount) {\n\t\t\tsuspendingComponent._suspendedComponentWillUnmount();\n\t\t}\n\t};\n\n\tconst onSuspensionComplete = () => {\n\t\tif (!--c._pendingSuspensionCount) {\n\t\t\tc._vnode._children[0] = c.state._suspended;\n\t\t\tc.setState({ _suspended: (c._detachOnNextRender = null) });\n\n\t\t\tlet suspended;\n\t\t\twhile ((suspended = c._suspenders.pop())) {\n\t\t\t\tsuspended.forceUpdate();\n\t\t\t}\n\t\t}\n\t};\n\n\tif (!c._pendingSuspensionCount++) {\n\t\tc.setState({ _suspended: (c._detachOnNextRender = c._vnode._children[0]) });\n\t}\n\tpromise.then(onResolved, onResolved);\n};\n\nSuspense.prototype.render = function(props, state) {\n\tif (this._detachOnNextRender) {\n\t\tthis._vnode._children[0] = detachedClone(this._detachOnNextRender);\n\t\tthis._detachOnNextRender = null;\n\t}\n\n\treturn [\n\t\tcreateElement(Component, null, state._suspended ? null : props.children),\n\t\tstate._suspended && props.fallback\n\t];\n};\n\n/**\n * Checks and calls the parent component's _suspended method, passing in the\n * suspended vnode. This is a way for a parent (e.g. SuspenseList) to get notified\n * that one of its children/descendants suspended.\n *\n * The parent MAY return a callback. The callback will get called when the\n * suspension resolves, notifying the parent of the fact.\n * Moreover, the callback gets function `unsuspend` as a parameter. The resolved\n * child descendant will not actually get unsuspended until `unsuspend` gets called.\n * This is a way for the parent to delay unsuspending.\n *\n * If the parent does not return a callback then the resolved vnode\n * gets unsuspended immediately when it resolves.\n *\n * @param {import('../src/internal').VNode} vnode\n * @returns {((unsuspend: () => void) => void)?}\n */\nexport function suspended(vnode) {\n\tlet component = vnode._parent._component;\n\treturn component && component._suspended && component._suspended(vnode);\n}\n\nexport function lazy(loader) {\n\tlet prom;\n\tlet component;\n\tlet error;\n\n\tfunction Lazy(props) {\n\t\tif (!prom) {\n\t\t\tprom = loader();\n\t\t\tprom.then(\n\t\t\t\texports => {\n\t\t\t\t\tcomponent = exports.default || exports;\n\t\t\t\t},\n\t\t\t\te => {\n\t\t\t\t\terror = e;\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\n\t\tif (error) {\n\t\t\tthrow error;\n\t\t}\n\n\t\tif (!component) {\n\t\t\tthrow prom;\n\t\t}\n\n\t\treturn createElement(component, props);\n\t}\n\n\tLazy.displayName = 'Lazy';\n\tLazy._forwarded = true;\n\treturn Lazy;\n}\n","import { Component, toChildArray } from 'preact';\nimport { suspended } from './suspense.js';\n\n// Indexes to linked list nodes (nodes are stored as arrays to save bytes).\nconst SUSPENDED_COUNT = 0;\nconst RESOLVED_COUNT = 1;\nconst NEXT_NODE = 2;\n\n// Having custom inheritance instead of a class here saves a lot of bytes.\nexport function SuspenseList() {\n\tthis._next = null;\n\tthis._map = null;\n}\n\n// Mark one of child's earlier suspensions as resolved.\n// Some pending callbacks may become callable due to this\n// (e.g. the last suspended descendant gets resolved when\n// revealOrder === 'together'). Process those callbacks as well.\nconst resolve = (list, child, node) => {\n\tif (++node[RESOLVED_COUNT] === node[SUSPENDED_COUNT]) {\n\t\t// The number a child (or any of its descendants) has been suspended\n\t\t// matches the number of times it's been resolved. Therefore we\n\t\t// mark the child as completely resolved by deleting it from ._map.\n\t\t// This is used to figure out when *all* children have been completely\n\t\t// resolved when revealOrder is 'together'.\n\t\tlist._map.delete(child);\n\t}\n\n\t// If revealOrder is falsy then we can do an early exit, as the\n\t// callbacks won't get queued in the node anyway.\n\t// If revealOrder is 'together' then also do an early exit\n\t// if all suspended descendants have not yet been resolved.\n\tif (\n\t\t!list.props.revealOrder ||\n\t\t(list.props.revealOrder[0] === 't' && list._map.size)\n\t) {\n\t\treturn;\n\t}\n\n\t// Walk the currently suspended children in order, calling their\n\t// stored callbacks on the way. Stop if we encounter a child that\n\t// has not been completely resolved yet.\n\tnode = list._next;\n\twhile (node) {\n\t\twhile (node.length > 3) {\n\t\t\tnode.pop()();\n\t\t}\n\t\tif (node[RESOLVED_COUNT] < node[SUSPENDED_COUNT]) {\n\t\t\tbreak;\n\t\t}\n\t\tlist._next = node = node[NEXT_NODE];\n\t}\n};\n\n// Things we do here to save some bytes but are not proper JS inheritance:\n// - call `new Component()` as the prototype\n// - do not set `Suspense.prototype.constructor` to `Suspense`\nSuspenseList.prototype = new Component();\n\nSuspenseList.prototype._suspended = function(child) {\n\tconst list = this;\n\tconst delegated = suspended(list._vnode);\n\n\tlet node = list._map.get(child);\n\tnode[SUSPENDED_COUNT]++;\n\n\treturn unsuspend => {\n\t\tconst wrappedUnsuspend = () => {\n\t\t\tif (!list.props.revealOrder) {\n\t\t\t\t// Special case the undefined (falsy) revealOrder, as there\n\t\t\t\t// is no need to coordinate a specific order or unsuspends.\n\t\t\t\tunsuspend();\n\t\t\t} else {\n\t\t\t\tnode.push(unsuspend);\n\t\t\t\tresolve(list, child, node);\n\t\t\t}\n\t\t};\n\t\tif (delegated) {\n\t\t\tdelegated(wrappedUnsuspend);\n\t\t} else {\n\t\t\twrappedUnsuspend();\n\t\t}\n\t};\n};\n\nSuspenseList.prototype.render = function(props) {\n\tthis._next = null;\n\tthis._map = new Map();\n\n\tconst children = toChildArray(props.children);\n\tif (props.revealOrder && props.revealOrder[0] === 'b') {\n\t\t// If order === 'backwards' (or, well, anything starting with a 'b')\n\t\t// then flip the child list around so that the last child will be\n\t\t// the first in the linked list.\n\t\tchildren.reverse();\n\t}\n\t// Build the linked list. Iterate through the children in reverse order\n\t// so that `_next` points to the first linked list node to be resolved.\n\tfor (let i = children.length; i--; ) {\n\t\t// Create a new linked list node as an array of form:\n\t\t// \t[suspended_count, resolved_count, next_node]\n\t\t// where suspended_count and resolved_count are numeric counters for\n\t\t// keeping track how many times a node has been suspended and resolved.\n\t\t//\n\t\t// Note that suspended_count starts from 1 instead of 0, so we can block\n\t\t// processing callbacks until componentDidMount has been called. In a sense\n\t\t// node is suspended at least until componentDidMount gets called!\n\t\t//\n\t\t// Pending callbacks are added to the end of the node:\n\t\t// \t[suspended_count, resolved_count, next_node, callback_0, callback_1, ...]\n\t\tthis._map.set(children[i], (this._next = [1, 0, this._next]));\n\t}\n\treturn props.children;\n};\n\nSuspenseList.prototype.componentDidUpdate = SuspenseList.prototype.componentDidMount = function() {\n\t// Iterate through all children after mounting for two reasons:\n\t// 1. As each node[SUSPENDED_COUNT] starts from 1, this iteration increases\n\t// each node[RELEASED_COUNT] by 1, therefore balancing the counters.\n\t// The nodes can now be completely consumed from the linked list.\n\t// 2. Handle nodes that might have gotten resolved between render and\n\t// componentDidMount.\n\tconst list = this;\n\tlist._map.forEach((node, child) => {\n\t\tresolve(list, child, node);\n\t});\n};\n","import { createElement, hydrate, render, _unmount } from 'preact';\n\nclass ContextProvider {\n\tgetChildContext() {\n\t\treturn this.props.context;\n\t}\n\trender(props) {\n\t\treturn props.children;\n\t}\n}\n\n/**\n * Portal component\n * @param {object | null | undefined} props\n */\nfunction Portal(props) {\n\tlet _this = this;\n\tlet container = props.container;\n\tlet wrap = createElement(\n\t\tContextProvider,\n\t\t{ context: _this.context },\n\t\tprops.vnode\n\t);\n\n\t// When we change container we should clear our old container and\n\t// indicate a new mount.\n\tif (_this._container && _this._container !== container) {\n\t\tif (_this._temp.parentNode) _this._container.removeChild(_this._temp);\n\t\t_unmount(_this._wrap);\n\t\t_this._hasMounted = false;\n\t}\n\n\t// When props.vnode is undefined/false/null we are dealing with some kind of\n\t// conditional vnode. This should not trigger a render.\n\tif (props.vnode) {\n\t\tif (!_this._hasMounted) {\n\t\t\t// Create a placeholder that we can use to insert into.\n\t\t\t_this._temp = document.createTextNode('');\n\t\t\t// Hydrate existing nodes to keep the dom intact, when rendering\n\t\t\t// wrap into the container.\n\t\t\thydrate('', container);\n\t\t\t// Append to the container (this matches React's behavior)\n\t\t\tcontainer.appendChild(_this._temp);\n\t\t\t// At this point we have mounted and should set our container.\n\t\t\t_this._hasMounted = true;\n\t\t\t_this._container = container;\n\t\t\t// Render our wrapping element into temp.\n\t\t\trender(wrap, container, _this._temp);\n\t\t\t_this._children = _this._temp._children;\n\t\t} else {\n\t\t\t// When we have mounted and the vnode is present it means the\n\t\t\t// props have changed or a parent is triggering a rerender.\n\t\t\t// This implies we only need to call render. But we need to keep\n\t\t\t// the old tree around, otherwise will treat the vnodes as new and\n\t\t\t// will wrongly call `componentDidMount` on them\n\t\t\tcontainer._children = _this._children;\n\t\t\trender(wrap, container);\n\t\t\t_this._children = container._children;\n\t\t}\n\t}\n\t// When we come from a conditional render, on a mounted\n\t// portal we should clear the DOM.\n\telse if (_this._hasMounted) {\n\t\tif (_this._temp.parentNode) _this._container.removeChild(_this._temp);\n\t\t_unmount(_this._wrap);\n\t}\n\t// Set the wrapping element for future unmounting.\n\t_this._wrap = wrap;\n\n\t_this.componentWillUnmount = () => {\n\t\tif (_this._temp.parentNode) _this._container.removeChild(_this._temp);\n\t\t_unmount(_this._wrap);\n\t};\n\n\treturn null;\n}\n\n/**\n * Create a `Portal` to continue rendering the vnode tree at a different DOM node\n * @param {import('./internal').VNode} vnode The vnode to render\n * @param {import('./internal').PreactElement} container The DOM node to continue rendering in to.\n */\nexport function createPortal(vnode, container) {\n\treturn createElement(Portal, { vnode, container });\n}\n","import {\n\trender as preactRender,\n\thydrate as preactHydrate,\n\toptions,\n\ttoChildArray,\n\tComponent\n} from 'preact';\nimport { applyEventNormalization } from './events';\n\nconst CAMEL_PROPS = /^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|fill|flood|font|glyph(?!R)|horiz|marker(?!H|W|U)|overline|paint|stop|strikethrough|stroke|text(?!L)|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/;\n\n// Some libraries like `react-virtualized` explicitly check for this.\nComponent.prototype.isReactComponent = {};\n\nexport const REACT_ELEMENT_TYPE =\n\t(typeof Symbol != 'undefined' && Symbol.for && Symbol.for('react.element')) ||\n\t0xeac7;\n\n/**\n * Proxy render() since React returns a Component reference.\n * @param {import('./internal').VNode} vnode VNode tree to render\n * @param {import('./internal').PreactElement} parent DOM node to render vnode tree into\n * @param {() => void} [callback] Optional callback that will be called after rendering\n * @returns {import('./internal').Component | null} The root component reference or null\n */\nexport function render(vnode, parent, callback) {\n\t// React destroys any existing DOM nodes, see #1727\n\t// ...but only on the first render, see #1828\n\tif (parent._children == null) {\n\t\twhile (parent.firstChild) {\n\t\t\tparent.removeChild(parent.firstChild);\n\t\t}\n\t}\n\n\tpreactRender(vnode, parent);\n\tif (typeof callback == 'function') callback();\n\n\treturn vnode ? vnode._component : null;\n}\n\nexport function hydrate(vnode, parent, callback) {\n\tpreactHydrate(vnode, parent);\n\tif (typeof callback == 'function') callback();\n\n\treturn vnode ? vnode._component : null;\n}\n\nlet oldEventHook = options.event;\noptions.event = e => {\n\tif (oldEventHook) e = oldEventHook(e);\n\te.persist = () => {};\n\tlet stoppedPropagating = false,\n\t\tdefaultPrevented = false;\n\n\tconst origStopPropagation = e.stopPropagation;\n\te.stopPropagation = () => {\n\t\torigStopPropagation.call(e);\n\t\tstoppedPropagating = true;\n\t};\n\n\tconst origPreventDefault = e.preventDefault;\n\te.preventDefault = () => {\n\t\torigPreventDefault.call(e);\n\t\tdefaultPrevented = true;\n\t};\n\n\te.isPropagationStopped = () => stoppedPropagating;\n\te.isDefaultPrevented = () => defaultPrevented;\n\treturn (e.nativeEvent = e);\n};\n\n// Patch in `UNSAFE_*` lifecycle hooks\nfunction setSafeDescriptor(proto, key) {\n\tif (proto['UNSAFE_' + key] && !proto[key]) {\n\t\tObject.defineProperty(proto, key, {\n\t\t\tconfigurable: false,\n\t\t\tget() {\n\t\t\t\treturn this['UNSAFE_' + key];\n\t\t\t},\n\t\t\t// This `set` is only used if a user sets a lifecycle like cWU\n\t\t\t// after setting a lifecycle like UNSAFE_cWU. I doubt anyone\n\t\t\t// actually does this in practice so not testing it\n\t\t\t/* istanbul ignore next */\n\t\t\tset(v) {\n\t\t\t\tthis['UNSAFE_' + key] = v;\n\t\t\t}\n\t\t});\n\t}\n}\n\nlet classNameDescriptor = {\n\tconfigurable: true,\n\tget() {\n\t\treturn this.class;\n\t}\n};\n\nlet oldVNodeHook = options.vnode;\noptions.vnode = vnode => {\n\tvnode.$$typeof = REACT_ELEMENT_TYPE;\n\n\tlet type = vnode.type;\n\tlet props = vnode.props;\n\n\tif (type) {\n\t\t// Alias `class` prop to `className` if available\n\t\tif (props.class != props.className) {\n\t\t\tclassNameDescriptor.enumerable = 'className' in props;\n\t\t\tif (props.className != null) props.class = props.className;\n\t\t\tObject.defineProperty(props, 'className', classNameDescriptor);\n\t\t}\n\n\t\t// Apply DOM VNode compat\n\t\tif (typeof type != 'function') {\n\t\t\t// Apply defaultValue to value\n\t\t\tif (props.defaultValue && props.value !== undefined) {\n\t\t\t\tif (!props.value && props.value !== 0) {\n\t\t\t\t\tprops.value = props.defaultValue;\n\t\t\t\t}\n\t\t\t\tdelete props.defaultValue;\n\t\t\t}\n\n\t\t\t// Add support for array select values: value not being updated.\n\t\t\t\t\t// To avoid a stale select value we need to set the option.value\n\t\t\t\t\t// again, which triggers IE11 to re-evaluate the select value\n\t\t\t\t\t(nodeType === 'option' && i !== oldProps.value))\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'value', i, oldProps.value, false);\n\t\t\t}\n\t\t\tif (\n\t\t\t\t'checked' in newProps &&\n\t\t\t\t(i = newProps.checked) !== undefined &&\n\t\t\t\ti !== dom.checked\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'checked', i, oldProps.checked, false);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn dom;\n}\n\n/**\n * Invoke or update a ref, depending on whether it is a function or object ref.\n * @param {object|function} ref\n * @param {any} value\n * @param {import('../internal').VNode} vnode\n */\nexport function applyRef(ref, value, vnode) {\n\ttry {\n\t\tif (typeof ref == 'function') ref(value);\n\t\telse ref.current = value;\n\t} catch (e) {\n\t\toptions._catchError(e, vnode);\n\t}\n}\n\n/**\n * Unmount a virtual node from the tree and apply DOM changes\n * @param {import('../internal').VNode} vnode The virtual node to unmount\n * @param {import('../internal').VNode} parentVNode The parent of the VNode that\n * initiated the unmount\n * @param {boolean} [skipRemove] Flag that indicates that a parent node of the\n * current element is already detached from the DOM.\n */\nexport function unmount(vnode, parentVNode, skipRemove) {\n\tlet r;\n\tif (options.unmount) options.unmount(vnode);\n\n\tif ((r = vnode.ref)) {\n\t\tif (!r.current || r.current === vnode._dom) {\n\t\t\tapplyRef(r, null, parentVNode);\n\t\t}\n\t}\n\n\tif ((r = vnode._component) != null) {\n\t\tif (r.componentWillUnmount) {\n\t\t\ttry {\n\t\t\t\tr.componentWillUnmount();\n\t\t\t} catch (e) {\n\t\t\t\toptions._catchError(e, parentVNode);\n\t\t\t}\n\t\t}\n\n\t\tr.base = r._parentDom = null;\n\t\tvnode._component = undefined;\n\t}\n\n\tif ((r = vnode._children)) {\n\t\tfor (let i = 0; i < r.length; i++) {\n\t\t\tif (r[i]) {\n\t\t\t\tunmount(\n\t\t\t\t\tr[i],\n\t\t\t\t\tparentVNode,\n\t\t\t\t\tskipRemove || typeof vnode.type !== 'function'\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!skipRemove && vnode._dom != null) {\n\t\tremoveNode(vnode._dom);\n\t}\n\n\t// Must be set to `undefined` to properly clean up `_nextDom`\n\t// for which `null` is a valid value. See comment in `create-element.js`\n\tvnode._parent = vnode._dom = vnode._nextDom = undefined;\n}\n\n/** The `.render()` method for a PFC backing instance. */\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n","import { EMPTY_OBJ } from './constants';\nimport { commitRoot, diff } from './diff/index';\nimport { createElement, Fragment } from './create-element';\nimport options from './options';\nimport { slice } from './util';\n\n/**\n * Render a Preact virtual node into a DOM element\n * @param {import('./internal').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * render into\n * @param {import('./internal').PreactElement | object} [replaceNode] Optional: Attempt to re-use an\n * existing DOM tree rooted at `replaceNode`\n */\nexport function render(vnode, parentDom, replaceNode) {\n\tif (options._root) options._root(vnode, parentDom);\n\n\t// We abuse the `replaceNode` parameter in `hydrate()` to signal if we are in\n\t// hydration mode or not by passing the `hydrate` function instead of a DOM\n\t// element..\n\tlet isHydrating = typeof replaceNode === 'function';\n\n\t// To be able to support calling `render()` multiple times on the same\n\t// DOM node, we need to obtain a reference to the previous tree. We do\n\t// this by assigning a new `_children` property to DOM nodes which points\n\t// to the last rendered tree. By default this property is not present, which\n\t// means that we are mounting a new tree for the first time.\n\tlet oldVNode = isHydrating\n\t\t? null\n\t\t: (replaceNode && replaceNode._children) || parentDom._children;\n\n\tvnode = (\n\t\t(!isHydrating && replaceNode) ||\n\t\tparentDom\n\t)._children = createElement(Fragment, null, [vnode]);\n\n\t// List of effects that need to be called after diffing.\n\tlet commitQueue = [];\n\tdiff(\n\t\tparentDom,\n\t\t// Determine the new vnode tree and store it on the DOM element on\n\t\t// our custom `_children` property.\n\t\tvnode,\n\t\toldVNode || EMPTY_OBJ,\n\t\tEMPTY_OBJ,\n\t\tparentDom.ownerSVGElement !== undefined,\n\t\t!isHydrating && replaceNode\n\t\t\t? [replaceNode]\n\t\t\t: oldVNode\n\t\t\t? null\n\t\t\t: parentDom.firstChild\n\t\t\t? slice.call(parentDom.childNodes)\n\t\t\t: null,\n\t\tcommitQueue,\n\t\t!isHydrating && replaceNode\n\t\t\t? replaceNode\n\t\t\t: oldVNode\n\t\t\t? oldVNode._dom\n\t\t\t: parentDom.firstChild,\n\t\tisHydrating\n\t);\n\n\t// Flush all queued effects\n\tcommitRoot(commitQueue, vnode);\n}\n\n/**\n * Update an existing DOM element with data from a Preact virtual node\n * @param {import('./internal').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * update\n */\nexport function hydrate(vnode, parentDom) {\n\trender(vnode, parentDom, hydrate);\n}\n","import { assign, slice } from './util';\nimport { createVNode } from './create-element';\n\n/**\n * Clones the given VNode, optionally adding attributes/props and replacing its children.\n * @param {import('./internal').VNode} vnode The virtual DOM element to clone\n * @param {object} props Attributes/props to add when cloning\n * @param {Array} rest Any additional arguments will be used as replacement children.\n * @returns {import('./internal').VNode}\n */\nexport function cloneElement(vnode, props, children) {\n\tlet normalizedProps = assign({}, vnode.props),\n\t\tkey,\n\t\tref,\n\t\ti;\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\treturn createVNode(\n\t\tvnode.type,\n\t\tnormalizedProps,\n\t\tkey || vnode.key,\n\t\tref || vnode.ref,\n\t\tnull\n\t);\n}\n","/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {import('../internal').VNode} vnode The vnode that threw\n * the error that was caught (except for unmounting when this parameter\n * is the highest parent that was being unmounted)\n * @param {import('../internal').VNode} [oldVNode]\n * @param {import('../internal').ErrorInfo} [errorInfo]\n */\nexport function _catchError(error, vnode, oldVNode, errorInfo) {\n\t/** @type {import('../internal').Component} */\n\tlet component, ctor, handled;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tctor = component.constructor;\n\n\t\t\t\tif (ctor && ctor.getDerivedStateFromError != null) {\n\t\t\t\t\tcomponent.setState(ctor.getDerivedStateFromError(error));\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != null) {\n\t\t\t\t\tcomponent.componentDidCatch(error, errorInfo || {});\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\t// This is an error boundary. Mark it as having bailed out, and whether it was mid-hydration.\n\t\t\t\tif (handled) {\n\t\t\t\t\treturn (component._pendingError = component);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n","import { options } from 'preact';\n\n/** @type {number} */\nlet currentIndex;\n\n/** @type {import('./internal').Component} */\nlet currentComponent;\n\n/** @type {import('./internal').Component} */\nlet previousComponent;\n\n/** @type {number} */\nlet currentHook = 0;\n\n/** @type {Array} */\nlet afterPaintEffects = [];\n\nlet EMPTY = [];\n\nlet oldBeforeDiff = options._diff;\nlet oldBeforeRender = options._render;\nlet oldAfterDiff = options.diffed;\nlet oldCommit = options._commit;\nlet oldBeforeUnmount = options.unmount;\n\nconst RAF_TIMEOUT = 100;\nlet prevRaf;\n\noptions._diff = vnode => {\n\tcurrentComponent = null;\n\tif (oldBeforeDiff) oldBeforeDiff(vnode);\n};\n\noptions._render = vnode => {\n\tif (oldBeforeRender) oldBeforeRender(vnode);\n\n\tcurrentComponent = vnode._component;\n\tcurrentIndex = 0;\n\n\tconst hooks = currentComponent.__hooks;\n\tif (hooks) {\n\t\tif (previousComponent === currentComponent) {\n\t\t\thooks._pendingEffects = [];\n\t\t\tcurrentComponent._renderCallbacks = [];\n\t\t\thooks._list.forEach(hookItem => {\n\t\t\t\tif (hookItem._nextValue) {\n\t\t\t\t\thookItem._value = hookItem._nextValue;\n\t\t\t\t}\n\t\t\t\thookItem._pendingValue = EMPTY;\n\t\t\t\thookItem._nextValue = hookItem._pendingArgs = undefined;\n\t\t\t});\n\t\t} else {\n\t\t\thooks._pendingEffects.forEach(invokeCleanup);\n\t\t\thooks._pendingEffects.forEach(invokeEffect);\n\t\t\thooks._pendingEffects = [];\n\t\t}\n\t}\n\tpreviousComponent = currentComponent;\n};\n\noptions.diffed = vnode => {\n\tif (oldAfterDiff) oldAfterDiff(vnode);\n\n\tconst c = vnode._component;\n\tif (c && c.__hooks) {\n\t\tif (c.__hooks._pendingEffects.length) afterPaint(afterPaintEffects.push(c));\n\t\tc.__hooks._list.forEach(hookItem => {\n\t\t\tif (hookItem._pendingArgs) {\n\t\t\t\thookItem._args = hookItem._pendingArgs;\n\t\t\t}\n\t\t\tif (hookItem._pendingValue !== EMPTY) {\n\t\t\t\thookItem._value = hookItem._pendingValue;\n\t\t\t}\n\t\t\thookItem._pendingArgs = undefined;\n\t\t\thookItem._pendingValue = EMPTY;\n\t\t});\n\t}\n\tpreviousComponent = currentComponent = null;\n};\n\noptions._commit = (vnode, commitQueue) => {\n\tcommitQueue.some(component => {\n\t\ttry {\n\t\t\tcomponent._renderCallbacks.forEach(invokeCleanup);\n\t\t\tcomponent._renderCallbacks = component._renderCallbacks.filter(cb =>\n\t\t\t\tcb._value ? invokeEffect(cb) : true\n\t\t\t);\n\t\t} catch (e) {\n\t\t\tcommitQueue.some(c => {\n\t\t\t\tif (c._renderCallbacks) c._renderCallbacks = [];\n\t\t\t});\n\t\t\tcommitQueue = [];\n\t\t\toptions._catchError(e, component._vnode);\n\t\t}\n\t});\n\n\tif (oldCommit) oldCommit(vnode, commitQueue);\n};\n\noptions.unmount = vnode => {\n\tif (oldBeforeUnmount) oldBeforeUnmount(vnode);\n\n\tconst c = vnode._component;\n\tif (c && c.__hooks) {\n\t\tlet hasErrored;\n\t\tc.__hooks._list.forEach(s => {\n\t\t\ttry {\n\t\t\t\tinvokeCleanup(s);\n\t\t\t} catch (e) {\n\t\t\t\thasErrored = e;\n\t\t\t}\n\t\t});\n\t\tc.__hooks = undefined;\n\t\tif (hasErrored) options._catchError(hasErrored, c._vnode);\n\t}\n};\n\n/**\n * Get a hook's state from the currentComponent\n * @param {number} index The index of the hook to get\n * @param {number} type The index of the hook to get\n * @returns {any}\n */\nfunction getHookState(index, type) {\n\tif (options._hook) {\n\t\toptions._hook(currentComponent, index, currentHook || type);\n\t}\n\tcurrentHook = 0;\n\n\t// Largely inspired by:\n\t// * https://github.com/michael-klein/funcy.js/blob/f6be73468e6ec46b0ff5aa3cc4c9baf72a29025a/src/hooks/core_hooks.mjs\n\t// * https://github.com/michael-klein/funcy.js/blob/650beaa58c43c33a74820a3c98b3c7079cf2e333/src/renderer.mjs\n\t// Other implementations to look at:\n\t// * https://codesandbox.io/s/mnox05qp8\n\tconst hooks =\n\t\tcurrentComponent.__hooks ||\n\t\t(currentComponent.__hooks = {\n\t\t\t_list: [],\n\t\t\t_pendingEffects: []\n\t\t});\n\n\tif (index >= hooks._list.length) {\n\t\thooks._list.push({ _pendingValue: EMPTY });\n\t}\n\treturn hooks._list[index];\n}\n\n/**\n * @param {import('./index').StateUpdater} [initialState]\n */\nexport function useState(initialState) {\n\tcurrentHook = 1;\n\treturn useReducer(invokeOrReturn, initialState);\n}\n\n/**\n * @param {import('./index').Reducer} reducer\n * @param {import('./index').StateUpdater} initialState\n * @param {(initialState: any) => void} [init]\n * @returns {[ any, (state: any) => void ]}\n */\nexport function useReducer(reducer, initialState, init) {\n\t/** @type {import('./internal').ReducerHookState} */\n\tconst hookState = getHookState(currentIndex++, 2);\n\thookState._reducer = reducer;\n\tif (!hookState._component) {\n\t\thookState._value = [\n\t\t\t!init ? invokeOrReturn(undefined, initialState) : init(initialState),\n\n\t\t\taction => {\n\t\t\t\tconst currentValue = hookState._nextValue\n\t\t\t\t\t? hookState._nextValue[0]\n\t\t\t\t\t: hookState._value[0];\n\t\t\t\tconst nextValue = hookState._reducer(currentValue, action);\n\n\t\t\t\tif (currentValue !== nextValue) {\n\t\t\t\t\thookState._nextValue = [nextValue, hookState._value[1]];\n\t\t\t\t\thookState._component.setState({});\n\t\t\t\t}\n\t\t\t}\n\t\t];\n\n\t\thookState._component = currentComponent;\n\n\t\tif (!currentComponent._hasScuFromHooks) {\n\t\t\tcurrentComponent._hasScuFromHooks = true;\n\t\t\tconst prevScu = currentComponent.shouldComponentUpdate;\n\n\t\t\t// This SCU has the purpose of bailing out after repeated updates\n\t\t\t// to stateful hooks.\n\t\t\t// we store the next value in _nextValue[0] and keep doing that for all\n\t\t\t// state setters, if we have next states and\n\t\t\t// all next states within a component end up being equal to their original state\n\t\t\t// we are safe to bail out for this specific component.\n\t\t\tcurrentComponent.shouldComponentUpdate = function(p, s, c) {\n\t\t\t\tif (!hookState._component.__hooks) return true;\n\n\t\t\t\tconst stateHooks = hookState._component.__hooks._list.filter(\n\t\t\t\t\tx => x._component\n\t\t\t\t);\n\t\t\t\tconst allHooksEmpty = stateHooks.every(x => !x._nextValue);\n\t\t\t\t// When we have no updated hooks in the component we invoke the previous SCU or\n\t\t\t\t// traverse the VDOM tree further.\n\t\t\t\tif (allHooksEmpty) {\n\t\t\t\t\treturn prevScu ? prevScu.call(this, p, s, c) : true;\n\t\t\t\t}\n\n\t\t\t\t// We check whether we have components with a nextValue set that\n\t\t\t\t// have values that aren't equal to one another this pushes\n\t\t\t\t// us to update further down the tree\n\t\t\t\tlet shouldUpdate = false;\n\t\t\t\tstateHooks.forEach(hookItem => {\n\t\t\t\t\tif (hookItem._nextValue) {\n\t\t\t\t\t\tconst currentValue = hookItem._value[0];\n\t\t\t\t\t\thookItem._value = hookItem._nextValue;\n\t\t\t\t\t\thookItem._nextValue = undefined;\n\t\t\t\t\t\tif (currentValue !== hookItem._value[0]) shouldUpdate = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn shouldUpdate || hookState._component.props !== p\n\t\t\t\t\t? prevScu\n\t\t\t\t\t\t? prevScu.call(this, p, s, c)\n\t\t\t\t\t\t: true\n\t\t\t\t\t: false;\n\t\t\t};\n\t\t}\n\t}\n\n\treturn hookState._nextValue || hookState._value;\n}\n\n/**\n * @param {import('./internal').Effect} callback\n * @param {any[]} args\n */\nexport function useEffect(callback, args) {\n\t/** @type {import('./internal').EffectHookState} */\n\tconst state = getHookState(currentIndex++, 3);\n\tif (!options._skipEffects && argsChanged(state._args, args)) {\n\t\tstate._value = callback;\n\t\tstate._pendingArgs = args;\n\n\t\tcurrentComponent.__hooks._pendingEffects.push(state);\n\t}\n}\n\n/**\n * @param {import('./internal').Effect} callback\n * @param {any[]} args\n */\nexport function useLayoutEffect(callback, args) {\n\t/** @type {import('./internal').EffectHookState} */\n\tconst state = getHookState(currentIndex++, 4);\n\tif (!options._skipEffects && argsChanged(state._args, args)) {\n\t\tstate._value = callback;\n\t\tstate._pendingArgs = args;\n\n\t\tcurrentComponent._renderCallbacks.push(state);\n\t}\n}\n\nexport function useRef(initialValue) {\n\tcurrentHook = 5;\n\treturn useMemo(() => ({ current: initialValue }), []);\n}\n\n/**\n * @param {object} ref\n * @param {() => object} createHandle\n * @param {any[]} args\n */\nexport function useImperativeHandle(ref, createHandle, args) {\n\tcurrentHook = 6;\n\tuseLayoutEffect(\n\t\t() => {\n\t\t\tif (typeof ref == 'function') {\n\t\t\t\tref(createHandle());\n\t\t\t\treturn () => ref(null);\n\t\t\t} else if (ref) {\n\t\t\t\tref.current = createHandle();\n\t\t\t\treturn () => (ref.current = null);\n\t\t\t}\n\t\t},\n\t\targs == null ? args : args.concat(ref)\n\t);\n}\n\n/**\n * @param {() => any} factory\n * @param {any[]} args\n */\nexport function useMemo(factory, args) {\n\t/** @type {import('./internal').MemoHookState} */\n\tconst state = getHookState(currentIndex++, 7);\n\tif (argsChanged(state._args, args)) {\n\t\tstate._pendingValue = factory();\n\t\tstate._pendingArgs = args;\n\t\tstate._factory = factory;\n\t\treturn state._pendingValue;\n\t}\n\n\treturn state._value;\n}\n\n/**\n * @param {() => void} callback\n * @param {any[]} args\n */\nexport function useCallback(callback, args) {\n\tcurrentHook = 8;\n\treturn useMemo(() => callback, args);\n}\n\n/**\n * @param {import('./internal').PreactContext} context\n */\nexport function useContext(context) {\n\tconst provider = currentComponent.context[context._id];\n\t// We could skip this call here, but than we'd not call\n\t// `options._hook`. We need to do that in order to make\n\t// the devtools aware of this hook.\n\t/** @type {import('./internal').ContextHookState} */\n\tconst state = getHookState(currentIndex++, 9);\n\t// The devtools needs access to the context object to\n\t// be able to pull of the default value when no provider\n\t// is present in the tree.\n\tstate._context = context;\n\tif (!provider) return context._defaultValue;\n\t// This is probably not safe to convert to \"!\"\n\tif (state._value == null) {\n\t\tstate._value = true;\n\t\tprovider.sub(currentComponent);\n\t}\n\treturn provider.props.value;\n}\n\n/**\n * Display a custom label for a custom hook for the devtools panel\n * @type {(value: T, cb?: (value: T) => string | number) => void}\n */\nexport function useDebugValue(value, formatter) {\n\tif (options.useDebugValue) {\n\t\toptions.useDebugValue(formatter ? formatter(value) : value);\n\t}\n}\n\n/**\n * @param {(error: any, errorInfo: import('preact').ErrorInfo) => void} cb\n */\nexport function useErrorBoundary(cb) {\n\t/** @type {import('./internal').ErrorBoundaryHookState} */\n\tconst state = getHookState(currentIndex++, 10);\n\tconst errState = useState();\n\tstate._value = cb;\n\tif (!currentComponent.componentDidCatch) {\n\t\tcurrentComponent.componentDidCatch = (err, errorInfo) => {\n\t\t\tif (state._value) state._value(err, errorInfo);\n\t\t\terrState[1](err);\n\t\t};\n\t}\n\treturn [\n\t\terrState[0],\n\t\t() => {\n\t\t\terrState[1](undefined);\n\t\t}\n\t];\n}\n\nexport function useId() {\n\tconst state = getHookState(currentIndex++, 11);\n\tif (!state._value) {\n\t\t// Grab either the root node or the nearest async boundary node.\n\t\t/** @type {import('./internal.d').VNode} */\n\t\tlet root = currentComponent._vnode;\n\t\twhile (root !== null && !root._mask && root._parent !== null) {\n\t\t\troot = root._parent;\n\t\t}\n\n\t\tlet mask = root._mask || (root._mask = [0, 0]);\n\t\tstate._value = 'P' + mask[0] + '-' + mask[1]++;\n\t}\n\n\treturn state._value;\n}\n/**\n * After paint effects consumer.\n */\nfunction flushAfterPaintEffects() {\n\tlet component;\n\twhile ((component = afterPaintEffects.shift())) {\n\t\tif (!component._parentDom || !component.__hooks) continue;\n\t\ttry {\n\t\t\tcomponent.__hooks._pendingEffects.forEach(invokeCleanup);\n\t\t\tcomponent.__hooks._pendingEffects.forEach(invokeEffect);\n\t\t\tcomponent.__hooks._pendingEffects = [];\n\t\t} catch (e) {\n\t\t\tcomponent.__hooks._pendingEffects = [];\n\t\t\toptions._catchError(e, component._vnode);\n\t\t}\n\t}\n}\n\nlet HAS_RAF = typeof requestAnimationFrame == 'function';\n\n/**\n * Schedule a callback to be invoked after the browser has a chance to paint a new frame.\n * Do this by combining requestAnimationFrame (rAF) + setTimeout to invoke a callback after\n * the next browser frame.\n *\n * Also, schedule a timeout in parallel to the the rAF to ensure the callback is invoked\n * even if RAF doesn't fire (for example if the browser tab is not visible)\n *\n * @param {() => void} callback\n */\nfunction afterNextFrame(callback) {\n\tconst done = () => {\n\t\tclearTimeout(timeout);\n\t\tif (HAS_RAF) cancelAnimationFrame(raf);\n\t\tsetTimeout(callback);\n\t};\n\tconst timeout = setTimeout(done, RAF_TIMEOUT);\n\n\tlet raf;\n\tif (HAS_RAF) {\n\t\traf = requestAnimationFrame(done);\n\t}\n}\n\n// Note: if someone used options.debounceRendering = requestAnimationFrame,\n// then effects will ALWAYS run on the NEXT frame instead of the current one, incurring a ~16ms delay.\n// Perhaps this is not such a big deal.\n/**\n * Schedule afterPaintEffects flush after the browser paints\n * @param {number} newQueueLength\n */\nfunction afterPaint(newQueueLength) {\n\tif (newQueueLength === 1 || prevRaf !== options.requestAnimationFrame) {\n\t\tprevRaf = options.requestAnimationFrame;\n\t\t(prevRaf || afterNextFrame)(flushAfterPaintEffects);\n\t}\n}\n\n/**\n * @param {import('./internal').EffectHookState} hook\n */\nfunction invokeCleanup(hook) {\n\t// A hook cleanup can introduce a call to render which creates a new root, this will call options.vnode\n\t// and move the currentComponent away.\n\tconst comp = currentComponent;\n\tlet cleanup = hook._cleanup;\n\tif (typeof cleanup == 'function') {\n\t\thook._cleanup = undefined;\n\t\tcleanup();\n\t}\n\n\tcurrentComponent = comp;\n}\n\n/**\n * Invoke a Hook's effect\n * @param {import('./internal').EffectHookState} hook\n */\nfunction invokeEffect(hook) {\n\t// A hook call can introduce a call to render which creates a new root, this will call options.vnode\n\t// and move the currentComponent away.\n\tconst comp = currentComponent;\n\thook._cleanup = hook._value();\n\tcurrentComponent = comp;\n}\n\n/**\n * @param {any[]} oldArgs\n * @param {any[]} newArgs\n */\nfunction argsChanged(oldArgs, newArgs) {\n\treturn (\n\t\t!oldArgs ||\n\t\toldArgs.length !== newArgs.length ||\n\t\tnewArgs.some((arg, index) => arg !== oldArgs[index])\n\t);\n}\n\nfunction invokeOrReturn(arg, f) {\n\treturn typeof f == 'function' ? f(arg) : f;\n}\n","\nvar canPromise = require('./can-promise')\n\nvar QRCode = require('./core/qrcode')\nvar CanvasRenderer = require('./renderer/canvas')\nvar SvgRenderer = require('./renderer/svg-tag.js')\n\nfunction renderCanvas (renderFunc, canvas, text, opts, cb) {\n var args = [].slice.call(arguments, 1)\n var argsNum = args.length\n var isLastArgCb = typeof args[argsNum - 1] === 'function'\n\n if (!isLastArgCb && !canPromise()) {\n throw new Error('Callback required as last argument')\n }\n\n if (isLastArgCb) {\n if (argsNum < 2) {\n throw new Error('Too few arguments provided')\n }\n\n if (argsNum === 2) {\n cb = text\n text = canvas\n canvas = opts = undefined\n } else if (argsNum === 3) {\n if (canvas.getContext && typeof cb === 'undefined') {\n cb = opts\n opts = undefined\n } else {\n cb = opts\n opts = text\n text = canvas\n canvas = undefined\n }\n }\n } else {\n if (argsNum < 1) {\n throw new Error('Too few arguments provided')\n }\n\n if (argsNum === 1) {\n text = canvas\n canvas = opts = undefined\n } else if (argsNum === 2 && !canvas.getContext) {\n opts = text\n text = canvas\n canvas = undefined\n }\n\n return new Promise(function (resolve, reject) {\n try {\n var data = QRCode.create(text, opts)\n resolve(renderFunc(data, canvas, opts))\n } catch (e) {\n reject(e)\n }\n })\n }\n\n try {\n var data = QRCode.create(text, opts)\n cb(null, renderFunc(data, canvas, opts))\n } catch (e) {\n cb(e)\n }\n}\n\nexports.create = QRCode.create\nexports.toCanvas = renderCanvas.bind(null, CanvasRenderer.render)\nexports.toDataURL = renderCanvas.bind(null, CanvasRenderer.renderToDataURL)\n\n// only svg for now.\nexports.toString = renderCanvas.bind(null, function (data, _, opts) {\n return SvgRenderer.render(data, opts)\n})\n","// can-promise has a crash in some versions of react native that dont have\n// standard global objects\n// https://github.com/soldair/node-qrcode/issues/157\n\nmodule.exports = function () {\n return typeof Promise === 'function' && Promise.prototype && Promise.prototype.then\n}\n","/**\n * Alignment pattern are fixed reference pattern in defined positions\n * in a matrix symbology, which enables the decode software to re-synchronise\n * the coordinate mapping of the image modules in the event of moderate amounts\n * of distortion of the image.\n *\n * Alignment patterns are present only in QR Code symbols of version 2 or larger\n * and their number depends on the symbol version.\n */\n\nvar getSymbolSize = require('./utils').getSymbolSize\n\n/**\n * Calculate the row/column coordinates of the center module of each alignment pattern\n * for the specified QR Code version.\n *\n * The alignment patterns are positioned symmetrically on either side of the diagonal\n * running from the top left corner of the symbol to the bottom right corner.\n *\n * Since positions are simmetrical only half of the coordinates are returned.\n * Each item of the array will represent in turn the x and y coordinate.\n * @see {@link getPositions}\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinate\n */\nexports.getRowColCoords = function getRowColCoords (version) {\n if (version === 1) return []\n\n var posCount = Math.floor(version / 7) + 2\n var size = getSymbolSize(version)\n var intervals = size === 145 ? 26 : Math.ceil((size - 13) / (2 * posCount - 2)) * 2\n var positions = [size - 7] // Last coord is always (size - 7)\n\n for (var i = 1; i < posCount - 1; i++) {\n positions[i] = positions[i - 1] - intervals\n }\n\n positions.push(6) // First coord is always 6\n\n return positions.reverse()\n}\n\n/**\n * Returns an array containing the positions of each alignment pattern.\n * Each array's element represent the center point of the pattern as (x, y) coordinates\n *\n * Coordinates are calculated expanding the row/column coordinates returned by {@link getRowColCoords}\n * and filtering out the items that overlaps with finder pattern\n *\n * @example\n * For a Version 7 symbol {@link getRowColCoords} returns values 6, 22 and 38.\n * The alignment patterns, therefore, are to be centered on (row, column)\n * positions (6,22), (22,6), (22,22), (22,38), (38,22), (38,38).\n * Note that the coordinates (6,6), (6,38), (38,6) are occupied by finder patterns\n * and are not therefore used for alignment patterns.\n *\n * var pos = getPositions(7)\n * // [[6,22], [22,6], [22,22], [22,38], [38,22], [38,38]]\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinates\n */\nexports.getPositions = function getPositions (version) {\n var coords = []\n var pos = exports.getRowColCoords(version)\n var posLength = pos.length\n\n for (var i = 0; i < posLength; i++) {\n for (var j = 0; j < posLength; j++) {\n // Skip if position is occupied by finder patterns\n if ((i === 0 && j === 0) || // top-left\n (i === 0 && j === posLength - 1) || // bottom-left\n (i === posLength - 1 && j === 0)) { // top-right\n continue\n }\n\n coords.push([pos[i], pos[j]])\n }\n }\n\n return coords\n}\n","var Mode = require('./mode')\n\n/**\n * Array of characters available in alphanumeric mode\n *\n * As per QR Code specification, to each character\n * is assigned a value from 0 to 44 which in this case coincides\n * with the array index\n *\n * @type {Array}\n */\nvar ALPHA_NUM_CHARS = [\n '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',\n 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',\n 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',\n ' ', '$', '%', '*', '+', '-', '.', '/', ':'\n]\n\nfunction AlphanumericData (data) {\n this.mode = Mode.ALPHANUMERIC\n this.data = data\n}\n\nAlphanumericData.getBitsLength = function getBitsLength (length) {\n return 11 * Math.floor(length / 2) + 6 * (length % 2)\n}\n\nAlphanumericData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nAlphanumericData.prototype.getBitsLength = function getBitsLength () {\n return AlphanumericData.getBitsLength(this.data.length)\n}\n\nAlphanumericData.prototype.write = function write (bitBuffer) {\n var i\n\n // Input data characters are divided into groups of two characters\n // and encoded as 11-bit binary codes.\n for (i = 0; i + 2 <= this.data.length; i += 2) {\n // The character value of the first character is multiplied by 45\n var value = ALPHA_NUM_CHARS.indexOf(this.data[i]) * 45\n\n // The character value of the second digit is added to the product\n value += ALPHA_NUM_CHARS.indexOf(this.data[i + 1])\n\n // The sum is then stored as 11-bit binary number\n bitBuffer.put(value, 11)\n }\n\n // If the number of input data characters is not a multiple of two,\n // the character value of the final character is encoded as a 6-bit binary number.\n if (this.data.length % 2) {\n bitBuffer.put(ALPHA_NUM_CHARS.indexOf(this.data[i]), 6)\n }\n}\n\nmodule.exports = AlphanumericData\n","function BitBuffer () {\n this.buffer = []\n this.length = 0\n}\n\nBitBuffer.prototype = {\n\n get: function (index) {\n var bufIndex = Math.floor(index / 8)\n return ((this.buffer[bufIndex] >>> (7 - index % 8)) & 1) === 1\n },\n\n put: function (num, length) {\n for (var i = 0; i < length; i++) {\n this.putBit(((num >>> (length - i - 1)) & 1) === 1)\n }\n },\n\n getLengthInBits: function () {\n return this.length\n },\n\n putBit: function (bit) {\n var bufIndex = Math.floor(this.length / 8)\n if (this.buffer.length <= bufIndex) {\n this.buffer.push(0)\n }\n\n if (bit) {\n this.buffer[bufIndex] |= (0x80 >>> (this.length % 8))\n }\n\n this.length++\n }\n}\n\nmodule.exports = BitBuffer\n","var BufferUtil = require('../utils/buffer')\n\n/**\n * Helper class to handle QR Code symbol modules\n *\n * @param {Number} size Symbol size\n */\nfunction BitMatrix (size) {\n if (!size || size < 1) {\n throw new Error('BitMatrix size must be defined and greater than 0')\n }\n\n this.size = size\n this.data = BufferUtil.alloc(size * size)\n this.reservedBit = BufferUtil.alloc(size * size)\n}\n\n/**\n * Set bit value at specified location\n * If reserved flag is set, this bit will be ignored during masking process\n *\n * @param {Number} row\n * @param {Number} col\n * @param {Boolean} value\n * @param {Boolean} reserved\n */\nBitMatrix.prototype.set = function (row, col, value, reserved) {\n var index = row * this.size + col\n this.data[index] = value\n if (reserved) this.reservedBit[index] = true\n}\n\n/**\n * Returns bit value at specified location\n *\n * @param {Number} row\n * @param {Number} col\n * @return {Boolean}\n */\nBitMatrix.prototype.get = function (row, col) {\n return this.data[row * this.size + col]\n}\n\n/**\n * Applies xor operator at specified location\n * (used during masking process)\n *\n * @param {Number} row\n * @param {Number} col\n * @param {Boolean} value\n */\nBitMatrix.prototype.xor = function (row, col, value) {\n this.data[row * this.size + col] ^= value\n}\n\n/**\n * Check if bit at specified location is reserved\n *\n * @param {Number} row\n * @param {Number} col\n * @return {Boolean}\n */\nBitMatrix.prototype.isReserved = function (row, col) {\n return this.reservedBit[row * this.size + col]\n}\n\nmodule.exports = BitMatrix\n","var BufferUtil = require('../utils/buffer')\nvar Mode = require('./mode')\n\nfunction ByteData (data) {\n this.mode = Mode.BYTE\n this.data = BufferUtil.from(data)\n}\n\nByteData.getBitsLength = function getBitsLength (length) {\n return length * 8\n}\n\nByteData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nByteData.prototype.getBitsLength = function getBitsLength () {\n return ByteData.getBitsLength(this.data.length)\n}\n\nByteData.prototype.write = function (bitBuffer) {\n for (var i = 0, l = this.data.length; i < l; i++) {\n bitBuffer.put(this.data[i], 8)\n }\n}\n\nmodule.exports = ByteData\n","var ECLevel = require('./error-correction-level')\r\n\r\nvar EC_BLOCKS_TABLE = [\r\n// L M Q H\r\n 1, 1, 1, 1,\r\n 1, 1, 1, 1,\r\n 1, 1, 2, 2,\r\n 1, 2, 2, 4,\r\n 1, 2, 4, 4,\r\n 2, 4, 4, 4,\r\n 2, 4, 6, 5,\r\n 2, 4, 6, 6,\r\n 2, 5, 8, 8,\r\n 4, 5, 8, 8,\r\n 4, 5, 8, 11,\r\n 4, 8, 10, 11,\r\n 4, 9, 12, 16,\r\n 4, 9, 16, 16,\r\n 6, 10, 12, 18,\r\n 6, 10, 17, 16,\r\n 6, 11, 16, 19,\r\n 6, 13, 18, 21,\r\n 7, 14, 21, 25,\r\n 8, 16, 20, 25,\r\n 8, 17, 23, 25,\r\n 9, 17, 23, 34,\r\n 9, 18, 25, 30,\r\n 10, 20, 27, 32,\r\n 12, 21, 29, 35,\r\n 12, 23, 34, 37,\r\n 12, 25, 34, 40,\r\n 13, 26, 35, 42,\r\n 14, 28, 38, 45,\r\n 15, 29, 40, 48,\r\n 16, 31, 43, 51,\r\n 17, 33, 45, 54,\r\n 18, 35, 48, 57,\r\n 19, 37, 51, 60,\r\n 19, 38, 53, 63,\r\n 20, 40, 56, 66,\r\n 21, 43, 59, 70,\r\n 22, 45, 62, 74,\r\n 24, 47, 65, 77,\r\n 25, 49, 68, 81\r\n]\r\n\r\nvar EC_CODEWORDS_TABLE = [\r\n// L M Q H\r\n 7, 10, 13, 17,\r\n 10, 16, 22, 28,\r\n 15, 26, 36, 44,\r\n 20, 36, 52, 64,\r\n 26, 48, 72, 88,\r\n 36, 64, 96, 112,\r\n 40, 72, 108, 130,\r\n 48, 88, 132, 156,\r\n 60, 110, 160, 192,\r\n 72, 130, 192, 224,\r\n 80, 150, 224, 264,\r\n 96, 176, 260, 308,\r\n 104, 198, 288, 352,\r\n 120, 216, 320, 384,\r\n 132, 240, 360, 432,\r\n 144, 280, 408, 480,\r\n 168, 308, 448, 532,\r\n 180, 338, 504, 588,\r\n 196, 364, 546, 650,\r\n 224, 416, 600, 700,\r\n 224, 442, 644, 750,\r\n 252, 476, 690, 816,\r\n 270, 504, 750, 900,\r\n 300, 560, 810, 960,\r\n 312, 588, 870, 1050,\r\n 336, 644, 952, 1110,\r\n 360, 700, 1020, 1200,\r\n 390, 728, 1050, 1260,\r\n 420, 784, 1140, 1350,\r\n 450, 812, 1200, 1440,\r\n 480, 868, 1290, 1530,\r\n 510, 924, 1350, 1620,\r\n 540, 980, 1440, 1710,\r\n 570, 1036, 1530, 1800,\r\n 570, 1064, 1590, 1890,\r\n 600, 1120, 1680, 1980,\r\n 630, 1204, 1770, 2100,\r\n 660, 1260, 1860, 2220,\r\n 720, 1316, 1950, 2310,\r\n 750, 1372, 2040, 2430\r\n]\r\n\r\n/**\r\n * Returns the number of error correction block that the QR Code should contain\r\n * for the specified version and error correction level.\r\n *\r\n * @param {Number} version QR Code version\r\n * @param {Number} errorCorrectionLevel Error correction level\r\n * @return {Number} Number of error correction blocks\r\n */\r\nexports.getBlocksCount = function getBlocksCount (version, errorCorrectionLevel) {\r\n switch (errorCorrectionLevel) {\r\n case ECLevel.L:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 0]\r\n case ECLevel.M:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 1]\r\n case ECLevel.Q:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 2]\r\n case ECLevel.H:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 3]\r\n default:\r\n return undefined\r\n }\r\n}\r\n\r\n/**\r\n * Returns the number of error correction codewords to use for the specified\r\n * version and error correction level.\r\n *\r\n * @param {Number} version QR Code version\r\n * @param {Number} errorCorrectionLevel Error correction level\r\n * @return {Number} Number of error correction codewords\r\n */\r\nexports.getTotalCodewordsCount = function getTotalCodewordsCount (version, errorCorrectionLevel) {\r\n switch (errorCorrectionLevel) {\r\n case ECLevel.L:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 0]\r\n case ECLevel.M:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 1]\r\n case ECLevel.Q:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 2]\r\n case ECLevel.H:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 3]\r\n default:\r\n return undefined\r\n }\r\n}\r\n","exports.L = { bit: 1 }\nexports.M = { bit: 0 }\nexports.Q = { bit: 3 }\nexports.H = { bit: 2 }\n\nfunction fromString (string) {\n if (typeof string !== 'string') {\n throw new Error('Param is not a string')\n }\n\n var lcStr = string.toLowerCase()\n\n switch (lcStr) {\n case 'l':\n case 'low':\n return exports.L\n\n case 'm':\n case 'medium':\n return exports.M\n\n case 'q':\n case 'quartile':\n return exports.Q\n\n case 'h':\n case 'high':\n return exports.H\n\n default:\n throw new Error('Unknown EC Level: ' + string)\n }\n}\n\nexports.isValid = function isValid (level) {\n return level && typeof level.bit !== 'undefined' &&\n level.bit >= 0 && level.bit < 4\n}\n\nexports.from = function from (value, defaultValue) {\n if (exports.isValid(value)) {\n return value\n }\n\n try {\n return fromString(value)\n } catch (e) {\n return defaultValue\n }\n}\n","var getSymbolSize = require('./utils').getSymbolSize\nvar FINDER_PATTERN_SIZE = 7\n\n/**\n * Returns an array containing the positions of each finder pattern.\n * Each array's element represent the top-left point of the pattern as (x, y) coordinates\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinates\n */\nexports.getPositions = function getPositions (version) {\n var size = getSymbolSize(version)\n\n return [\n // top-left\n [0, 0],\n // top-right\n [size - FINDER_PATTERN_SIZE, 0],\n // bottom-left\n [0, size - FINDER_PATTERN_SIZE]\n ]\n}\n","var Utils = require('./utils')\n\nvar G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0)\nvar G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1)\nvar G15_BCH = Utils.getBCHDigit(G15)\n\n/**\n * Returns format information with relative error correction bits\n *\n * The format information is a 15-bit sequence containing 5 data bits,\n * with 10 error correction bits calculated using the (15, 5) BCH code.\n *\n * @param {Number} errorCorrectionLevel Error correction level\n * @param {Number} mask Mask pattern\n * @return {Number} Encoded format information bits\n */\nexports.getEncodedBits = function getEncodedBits (errorCorrectionLevel, mask) {\n var data = ((errorCorrectionLevel.bit << 3) | mask)\n var d = data << 10\n\n while (Utils.getBCHDigit(d) - G15_BCH >= 0) {\n d ^= (G15 << (Utils.getBCHDigit(d) - G15_BCH))\n }\n\n // xor final data with mask pattern in order to ensure that\n // no combination of Error Correction Level and data mask pattern\n // will result in an all-zero data string\n return ((data << 10) | d) ^ G15_MASK\n}\n","var BufferUtil = require('../utils/buffer')\n\nvar EXP_TABLE = BufferUtil.alloc(512)\nvar LOG_TABLE = BufferUtil.alloc(256)\n/**\n * Precompute the log and anti-log tables for faster computation later\n *\n * For each possible value in the galois field 2^8, we will pre-compute\n * the logarithm and anti-logarithm (exponential) of this value\n *\n * ref {@link https://en.wikiversity.org/wiki/Reed%E2%80%93Solomon_codes_for_coders#Introduction_to_mathematical_fields}\n */\n;(function initTables () {\n var x = 1\n for (var i = 0; i < 255; i++) {\n EXP_TABLE[i] = x\n LOG_TABLE[x] = i\n\n x <<= 1 // multiply by 2\n\n // The QR code specification says to use byte-wise modulo 100011101 arithmetic.\n // This means that when a number is 256 or larger, it should be XORed with 0x11D.\n if (x & 0x100) { // similar to x >= 256, but a lot faster (because 0x100 == 256)\n x ^= 0x11D\n }\n }\n\n // Optimization: double the size of the anti-log table so that we don't need to mod 255 to\n // stay inside the bounds (because we will mainly use this table for the multiplication of\n // two GF numbers, no more).\n // @see {@link mul}\n for (i = 255; i < 512; i++) {\n EXP_TABLE[i] = EXP_TABLE[i - 255]\n }\n}())\n\n/**\n * Returns log value of n inside Galois Field\n *\n * @param {Number} n\n * @return {Number}\n */\nexports.log = function log (n) {\n if (n < 1) throw new Error('log(' + n + ')')\n return LOG_TABLE[n]\n}\n\n/**\n * Returns anti-log value of n inside Galois Field\n *\n * @param {Number} n\n * @return {Number}\n */\nexports.exp = function exp (n) {\n return EXP_TABLE[n]\n}\n\n/**\n * Multiplies two number inside Galois Field\n *\n * @param {Number} x\n * @param {Number} y\n * @return {Number}\n */\nexports.mul = function mul (x, y) {\n if (x === 0 || y === 0) return 0\n\n // should be EXP_TABLE[(LOG_TABLE[x] + LOG_TABLE[y]) % 255] if EXP_TABLE wasn't oversized\n // @see {@link initTables}\n return EXP_TABLE[LOG_TABLE[x] + LOG_TABLE[y]]\n}\n","var Mode = require('./mode')\nvar Utils = require('./utils')\n\nfunction KanjiData (data) {\n this.mode = Mode.KANJI\n this.data = data\n}\n\nKanjiData.getBitsLength = function getBitsLength (length) {\n return length * 13\n}\n\nKanjiData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nKanjiData.prototype.getBitsLength = function getBitsLength () {\n return KanjiData.getBitsLength(this.data.length)\n}\n\nKanjiData.prototype.write = function (bitBuffer) {\n var i\n\n // In the Shift JIS system, Kanji characters are represented by a two byte combination.\n // These byte values are shifted from the JIS X 0208 values.\n // JIS X 0208 gives details of the shift coded representation.\n for (i = 0; i < this.data.length; i++) {\n var value = Utils.toSJIS(this.data[i])\n\n // For characters with Shift JIS values from 0x8140 to 0x9FFC:\n if (value >= 0x8140 && value <= 0x9FFC) {\n // Subtract 0x8140 from Shift JIS value\n value -= 0x8140\n\n // For characters with Shift JIS values from 0xE040 to 0xEBBF\n } else if (value >= 0xE040 && value <= 0xEBBF) {\n // Subtract 0xC140 from Shift JIS value\n value -= 0xC140\n } else {\n throw new Error(\n 'Invalid SJIS character: ' + this.data[i] + '\\n' +\n 'Make sure your charset is UTF-8')\n }\n\n // Multiply most significant byte of result by 0xC0\n // and add least significant byte to product\n value = (((value >>> 8) & 0xff) * 0xC0) + (value & 0xff)\n\n // Convert result to a 13-bit binary string\n bitBuffer.put(value, 13)\n }\n}\n\nmodule.exports = KanjiData\n","/**\n * Data mask pattern reference\n * @type {Object}\n */\nexports.Patterns = {\n PATTERN000: 0,\n PATTERN001: 1,\n PATTERN010: 2,\n PATTERN011: 3,\n PATTERN100: 4,\n PATTERN101: 5,\n PATTERN110: 6,\n PATTERN111: 7\n}\n\n/**\n * Weighted penalty scores for the undesirable features\n * @type {Object}\n */\nvar PenaltyScores = {\n N1: 3,\n N2: 3,\n N3: 40,\n N4: 10\n}\n\n/**\n * Check if mask pattern value is valid\n *\n * @param {Number} mask Mask pattern\n * @return {Boolean} true if valid, false otherwise\n */\nexports.isValid = function isValid (mask) {\n return mask != null && mask !== '' && !isNaN(mask) && mask >= 0 && mask <= 7\n}\n\n/**\n * Returns mask pattern from a value.\n * If value is not valid, returns undefined\n *\n * @param {Number|String} value Mask pattern value\n * @return {Number} Valid mask pattern or undefined\n */\nexports.from = function from (value) {\n return exports.isValid(value) ? parseInt(value, 10) : undefined\n}\n\n/**\n* Find adjacent modules in row/column with the same color\n* and assign a penalty value.\n*\n* Points: N1 + i\n* i is the amount by which the number of adjacent modules of the same color exceeds 5\n*/\nexports.getPenaltyN1 = function getPenaltyN1 (data) {\n var size = data.size\n var points = 0\n var sameCountCol = 0\n var sameCountRow = 0\n var lastCol = null\n var lastRow = null\n\n for (var row = 0; row < size; row++) {\n sameCountCol = sameCountRow = 0\n lastCol = lastRow = null\n\n for (var col = 0; col < size; col++) {\n var module = data.get(row, col)\n if (module === lastCol) {\n sameCountCol++\n } else {\n if (sameCountCol >= 5) points += PenaltyScores.N1 + (sameCountCol - 5)\n lastCol = module\n sameCountCol = 1\n }\n\n module = data.get(col, row)\n if (module === lastRow) {\n sameCountRow++\n } else {\n if (sameCountRow >= 5) points += PenaltyScores.N1 + (sameCountRow - 5)\n lastRow = module\n sameCountRow = 1\n }\n }\n\n if (sameCountCol >= 5) points += PenaltyScores.N1 + (sameCountCol - 5)\n if (sameCountRow >= 5) points += PenaltyScores.N1 + (sameCountRow - 5)\n }\n\n return points\n}\n\n/**\n * Find 2x2 blocks with the same color and assign a penalty value\n *\n * Points: N2 * (m - 1) * (n - 1)\n */\nexports.getPenaltyN2 = function getPenaltyN2 (data) {\n var size = data.size\n var points = 0\n\n for (var row = 0; row < size - 1; row++) {\n for (var col = 0; col < size - 1; col++) {\n var last = data.get(row, col) +\n data.get(row, col + 1) +\n data.get(row + 1, col) +\n data.get(row + 1, col + 1)\n\n if (last === 4 || last === 0) points++\n }\n }\n\n return points * PenaltyScores.N2\n}\n\n/**\n * Find 1:1:3:1:1 ratio (dark:light:dark:light:dark) pattern in row/column,\n * preceded or followed by light area 4 modules wide\n *\n * Points: N3 * number of pattern found\n */\nexports.getPenaltyN3 = function getPenaltyN3 (data) {\n var size = data.size\n var points = 0\n var bitsCol = 0\n var bitsRow = 0\n\n for (var row = 0; row < size; row++) {\n bitsCol = bitsRow = 0\n for (var col = 0; col < size; col++) {\n bitsCol = ((bitsCol << 1) & 0x7FF) | data.get(row, col)\n if (col >= 10 && (bitsCol === 0x5D0 || bitsCol === 0x05D)) points++\n\n bitsRow = ((bitsRow << 1) & 0x7FF) | data.get(col, row)\n if (col >= 10 && (bitsRow === 0x5D0 || bitsRow === 0x05D)) points++\n }\n }\n\n return points * PenaltyScores.N3\n}\n\n/**\n * Calculate proportion of dark modules in entire symbol\n *\n * Points: N4 * k\n *\n * k is the rating of the deviation of the proportion of dark modules\n * in the symbol from 50% in steps of 5%\n */\nexports.getPenaltyN4 = function getPenaltyN4 (data) {\n var darkCount = 0\n var modulesCount = data.data.length\n\n for (var i = 0; i < modulesCount; i++) darkCount += data.data[i]\n\n var k = Math.abs(Math.ceil((darkCount * 100 / modulesCount) / 5) - 10)\n\n return k * PenaltyScores.N4\n}\n\n/**\n * Return mask value at given position\n *\n * @param {Number} maskPattern Pattern reference value\n * @param {Number} i Row\n * @param {Number} j Column\n * @return {Boolean} Mask value\n */\nfunction getMaskAt (maskPattern, i, j) {\n switch (maskPattern) {\n case exports.Patterns.PATTERN000: return (i + j) % 2 === 0\n case exports.Patterns.PATTERN001: return i % 2 === 0\n case exports.Patterns.PATTERN010: return j % 3 === 0\n case exports.Patterns.PATTERN011: return (i + j) % 3 === 0\n case exports.Patterns.PATTERN100: return (Math.floor(i / 2) + Math.floor(j / 3)) % 2 === 0\n case exports.Patterns.PATTERN101: return (i * j) % 2 + (i * j) % 3 === 0\n case exports.Patterns.PATTERN110: return ((i * j) % 2 + (i * j) % 3) % 2 === 0\n case exports.Patterns.PATTERN111: return ((i * j) % 3 + (i + j) % 2) % 2 === 0\n\n default: throw new Error('bad maskPattern:' + maskPattern)\n }\n}\n\n/**\n * Apply a mask pattern to a BitMatrix\n *\n * @param {Number} pattern Pattern reference number\n * @param {BitMatrix} data BitMatrix data\n */\nexports.applyMask = function applyMask (pattern, data) {\n var size = data.size\n\n for (var col = 0; col < size; col++) {\n for (var row = 0; row < size; row++) {\n if (data.isReserved(row, col)) continue\n data.xor(row, col, getMaskAt(pattern, row, col))\n }\n }\n}\n\n/**\n * Returns the best mask pattern for data\n *\n * @param {BitMatrix} data\n * @return {Number} Mask pattern reference number\n */\nexports.getBestMask = function getBestMask (data, setupFormatFunc) {\n var numPatterns = Object.keys(exports.Patterns).length\n var bestPattern = 0\n var lowerPenalty = Infinity\n\n for (var p = 0; p < numPatterns; p++) {\n setupFormatFunc(p)\n exports.applyMask(p, data)\n\n // Calculate penalty\n var penalty =\n exports.getPenaltyN1(data) +\n exports.getPenaltyN2(data) +\n exports.getPenaltyN3(data) +\n exports.getPenaltyN4(data)\n\n // Undo previously applied mask\n exports.applyMask(p, data)\n\n if (penalty < lowerPenalty) {\n lowerPenalty = penalty\n bestPattern = p\n }\n }\n\n return bestPattern\n}\n","var VersionCheck = require('./version-check')\nvar Regex = require('./regex')\n\n/**\n * Numeric mode encodes data from the decimal digit set (0 - 9)\n * (byte values 30HEX to 39HEX).\n * Normally, 3 data characters are represented by 10 bits.\n *\n * @type {Object}\n */\nexports.NUMERIC = {\n id: 'Numeric',\n bit: 1 << 0,\n ccBits: [10, 12, 14]\n}\n\n/**\n * Alphanumeric mode encodes data from a set of 45 characters,\n * i.e. 10 numeric digits (0 - 9),\n * 26 alphabetic characters (A - Z),\n * and 9 symbols (SP, $, %, *, +, -, ., /, :).\n * Normally, two input characters are represented by 11 bits.\n *\n * @type {Object}\n */\nexports.ALPHANUMERIC = {\n id: 'Alphanumeric',\n bit: 1 << 1,\n ccBits: [9, 11, 13]\n}\n\n/**\n * In byte mode, data is encoded at 8 bits per character.\n *\n * @type {Object}\n */\nexports.BYTE = {\n id: 'Byte',\n bit: 1 << 2,\n ccBits: [8, 16, 16]\n}\n\n/**\n * The Kanji mode efficiently encodes Kanji characters in accordance with\n * the Shift JIS system based on JIS X 0208.\n * The Shift JIS values are shifted from the JIS X 0208 values.\n * JIS X 0208 gives details of the shift coded representation.\n * Each two-byte character value is compacted to a 13-bit binary codeword.\n *\n * @type {Object}\n */\nexports.KANJI = {\n id: 'Kanji',\n bit: 1 << 3,\n ccBits: [8, 10, 12]\n}\n\n/**\n * Mixed mode will contain a sequences of data in a combination of any of\n * the modes described above\n *\n * @type {Object}\n */\nexports.MIXED = {\n bit: -1\n}\n\n/**\n * Returns the number of bits needed to store the data length\n * according to QR Code specifications.\n *\n * @param {Mode} mode Data mode\n * @param {Number} version QR Code version\n * @return {Number} Number of bits\n */\nexports.getCharCountIndicator = function getCharCountIndicator (mode, version) {\n if (!mode.ccBits) throw new Error('Invalid mode: ' + mode)\n\n if (!VersionCheck.isValid(version)) {\n throw new Error('Invalid version: ' + version)\n }\n\n if (version >= 1 && version < 10) return mode.ccBits[0]\n else if (version < 27) return mode.ccBits[1]\n return mode.ccBits[2]\n}\n\n/**\n * Returns the most efficient mode to store the specified data\n *\n * @param {String} dataStr Input data string\n * @return {Mode} Best mode\n */\nexports.getBestModeForData = function getBestModeForData (dataStr) {\n if (Regex.testNumeric(dataStr)) return exports.NUMERIC\n else if (Regex.testAlphanumeric(dataStr)) return exports.ALPHANUMERIC\n else if (Regex.testKanji(dataStr)) return exports.KANJI\n else return exports.BYTE\n}\n\n/**\n * Return mode name as string\n *\n * @param {Mode} mode Mode object\n * @returns {String} Mode name\n */\nexports.toString = function toString (mode) {\n if (mode && mode.id) return mode.id\n throw new Error('Invalid mode')\n}\n\n/**\n * Check if input param is a valid mode object\n *\n * @param {Mode} mode Mode object\n * @returns {Boolean} True if valid mode, false otherwise\n */\nexports.isValid = function isValid (mode) {\n return mode && mode.bit && mode.ccBits\n}\n\n/**\n * Get mode object from its name\n *\n * @param {String} string Mode name\n * @returns {Mode} Mode object\n */\nfunction fromString (string) {\n if (typeof string !== 'string') {\n throw new Error('Param is not a string')\n }\n\n var lcStr = string.toLowerCase()\n\n switch (lcStr) {\n case 'numeric':\n return exports.NUMERIC\n case 'alphanumeric':\n return exports.ALPHANUMERIC\n case 'kanji':\n return exports.KANJI\n case 'byte':\n return exports.BYTE\n default:\n throw new Error('Unknown mode: ' + string)\n }\n}\n\n/**\n * Returns mode from a value.\n * If value is not a valid mode, returns defaultValue\n *\n * @param {Mode|String} value Encoding mode\n * @param {Mode} defaultValue Fallback value\n * @return {Mode} Encoding mode\n */\nexports.from = function from (value, defaultValue) {\n if (exports.isValid(value)) {\n return value\n }\n\n try {\n return fromString(value)\n } catch (e) {\n return defaultValue\n }\n}\n","var Mode = require('./mode')\n\nfunction NumericData (data) {\n this.mode = Mode.NUMERIC\n this.data = data.toString()\n}\n\nNumericData.getBitsLength = function getBitsLength (length) {\n return 10 * Math.floor(length / 3) + ((length % 3) ? ((length % 3) * 3 + 1) : 0)\n}\n\nNumericData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nNumericData.prototype.getBitsLength = function getBitsLength () {\n return NumericData.getBitsLength(this.data.length)\n}\n\nNumericData.prototype.write = function write (bitBuffer) {\n var i, group, value\n\n // The input data string is divided into groups of three digits,\n // and each group is converted to its 10-bit binary equivalent.\n for (i = 0; i + 3 <= this.data.length; i += 3) {\n group = this.data.substr(i, 3)\n value = parseInt(group, 10)\n\n bitBuffer.put(value, 10)\n }\n\n // If the number of input digits is not an exact multiple of three,\n // the final one or two digits are converted to 4 or 7 bits respectively.\n var remainingNum = this.data.length - i\n if (remainingNum > 0) {\n group = this.data.substr(i)\n value = parseInt(group, 10)\n\n bitBuffer.put(value, remainingNum * 3 + 1)\n }\n}\n\nmodule.exports = NumericData\n","var BufferUtil = require('../utils/buffer')\nvar GF = require('./galois-field')\n\n/**\n * Multiplies two polynomials inside Galois Field\n *\n * @param {Buffer} p1 Polynomial\n * @param {Buffer} p2 Polynomial\n * @return {Buffer} Product of p1 and p2\n */\nexports.mul = function mul (p1, p2) {\n var coeff = BufferUtil.alloc(p1.length + p2.length - 1)\n\n for (var i = 0; i < p1.length; i++) {\n for (var j = 0; j < p2.length; j++) {\n coeff[i + j] ^= GF.mul(p1[i], p2[j])\n }\n }\n\n return coeff\n}\n\n/**\n * Calculate the remainder of polynomials division\n *\n * @param {Buffer} divident Polynomial\n * @param {Buffer} divisor Polynomial\n * @return {Buffer} Remainder\n */\nexports.mod = function mod (divident, divisor) {\n var result = BufferUtil.from(divident)\n\n while ((result.length - divisor.length) >= 0) {\n var coeff = result[0]\n\n for (var i = 0; i < divisor.length; i++) {\n result[i] ^= GF.mul(divisor[i], coeff)\n }\n\n // remove all zeros from buffer head\n var offset = 0\n while (offset < result.length && result[offset] === 0) offset++\n result = result.slice(offset)\n }\n\n return result\n}\n\n/**\n * Generate an irreducible generator polynomial of specified degree\n * (used by Reed-Solomon encoder)\n *\n * @param {Number} degree Degree of the generator polynomial\n * @return {Buffer} Buffer containing polynomial coefficients\n */\nexports.generateECPolynomial = function generateECPolynomial (degree) {\n var poly = BufferUtil.from([1])\n for (var i = 0; i < degree; i++) {\n poly = exports.mul(poly, [1, GF.exp(i)])\n }\n\n return poly\n}\n","var BufferUtil = require('../utils/buffer')\nvar Utils = require('./utils')\nvar ECLevel = require('./error-correction-level')\nvar BitBuffer = require('./bit-buffer')\nvar BitMatrix = require('./bit-matrix')\nvar AlignmentPattern = require('./alignment-pattern')\nvar FinderPattern = require('./finder-pattern')\nvar MaskPattern = require('./mask-pattern')\nvar ECCode = require('./error-correction-code')\nvar ReedSolomonEncoder = require('./reed-solomon-encoder')\nvar Version = require('./version')\nvar FormatInfo = require('./format-info')\nvar Mode = require('./mode')\nvar Segments = require('./segments')\nvar isArray = require('isarray')\n\n/**\n * QRCode for JavaScript\n *\n * modified by Ryan Day for nodejs support\n * Copyright (c) 2011 Ryan Day\n *\n * Licensed under the MIT license:\n * http://www.opensource.org/licenses/mit-license.php\n *\n//---------------------------------------------------------------------\n// QRCode for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n// http://www.opensource.org/licenses/mit-license.php\n//\n// The word \"QR Code\" is registered trademark of\n// DENSO WAVE INCORPORATED\n// http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\n*/\n\n/**\n * Add finder patterns bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupFinderPattern (matrix, version) {\n var size = matrix.size\n var pos = FinderPattern.getPositions(version)\n\n for (var i = 0; i < pos.length; i++) {\n var row = pos[i][0]\n var col = pos[i][1]\n\n for (var r = -1; r <= 7; r++) {\n if (row + r <= -1 || size <= row + r) continue\n\n for (var c = -1; c <= 7; c++) {\n if (col + c <= -1 || size <= col + c) continue\n\n if ((r >= 0 && r <= 6 && (c === 0 || c === 6)) ||\n (c >= 0 && c <= 6 && (r === 0 || r === 6)) ||\n (r >= 2 && r <= 4 && c >= 2 && c <= 4)) {\n matrix.set(row + r, col + c, true, true)\n } else {\n matrix.set(row + r, col + c, false, true)\n }\n }\n }\n }\n}\n\n/**\n * Add timing pattern bits to matrix\n *\n * Note: this function must be called before {@link setupAlignmentPattern}\n *\n * @param {BitMatrix} matrix Modules matrix\n */\nfunction setupTimingPattern (matrix) {\n var size = matrix.size\n\n for (var r = 8; r < size - 8; r++) {\n var value = r % 2 === 0\n matrix.set(r, 6, value, true)\n matrix.set(6, r, value, true)\n }\n}\n\n/**\n * Add alignment patterns bits to matrix\n *\n * Note: this function must be called after {@link setupTimingPattern}\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupAlignmentPattern (matrix, version) {\n var pos = AlignmentPattern.getPositions(version)\n\n for (var i = 0; i < pos.length; i++) {\n var row = pos[i][0]\n var col = pos[i][1]\n\n for (var r = -2; r <= 2; r++) {\n for (var c = -2; c <= 2; c++) {\n if (r === -2 || r === 2 || c === -2 || c === 2 ||\n (r === 0 && c === 0)) {\n matrix.set(row + r, col + c, true, true)\n } else {\n matrix.set(row + r, col + c, false, true)\n }\n }\n }\n }\n}\n\n/**\n * Add version info bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupVersionInfo (matrix, version) {\n var size = matrix.size\n var bits = Version.getEncodedBits(version)\n var row, col, mod\n\n for (var i = 0; i < 18; i++) {\n row = Math.floor(i / 3)\n col = i % 3 + size - 8 - 3\n mod = ((bits >> i) & 1) === 1\n\n matrix.set(row, col, mod, true)\n matrix.set(col, row, mod, true)\n }\n}\n\n/**\n * Add format info bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @param {Number} maskPattern Mask pattern reference value\n */\nfunction setupFormatInfo (matrix, errorCorrectionLevel, maskPattern) {\n var size = matrix.size\n var bits = FormatInfo.getEncodedBits(errorCorrectionLevel, maskPattern)\n var i, mod\n\n for (i = 0; i < 15; i++) {\n mod = ((bits >> i) & 1) === 1\n\n // vertical\n if (i < 6) {\n matrix.set(i, 8, mod, true)\n } else if (i < 8) {\n matrix.set(i + 1, 8, mod, true)\n } else {\n matrix.set(size - 15 + i, 8, mod, true)\n }\n\n // horizontal\n if (i < 8) {\n matrix.set(8, size - i - 1, mod, true)\n } else if (i < 9) {\n matrix.set(8, 15 - i - 1 + 1, mod, true)\n } else {\n matrix.set(8, 15 - i - 1, mod, true)\n }\n }\n\n // fixed module\n matrix.set(size - 8, 8, 1, true)\n}\n\n/**\n * Add encoded data bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Buffer} data Data codewords\n */\nfunction setupData (matrix, data) {\n var size = matrix.size\n var inc = -1\n var row = size - 1\n var bitIndex = 7\n var byteIndex = 0\n\n for (var col = size - 1; col > 0; col -= 2) {\n if (col === 6) col--\n\n while (true) {\n for (var c = 0; c < 2; c++) {\n if (!matrix.isReserved(row, col - c)) {\n var dark = false\n\n if (byteIndex < data.length) {\n dark = (((data[byteIndex] >>> bitIndex) & 1) === 1)\n }\n\n matrix.set(row, col - c, dark)\n bitIndex--\n\n if (bitIndex === -1) {\n byteIndex++\n bitIndex = 7\n }\n }\n }\n\n row += inc\n\n if (row < 0 || size <= row) {\n row -= inc\n inc = -inc\n break\n }\n }\n }\n}\n\n/**\n * Create encoded codewords from data input\n *\n * @param {Number} version QR Code version\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @param {ByteData} data Data input\n * @return {Buffer} Buffer containing encoded codewords\n */\nfunction createData (version, errorCorrectionLevel, segments) {\n // Prepare data buffer\n var buffer = new BitBuffer()\n\n segments.forEach(function (data) {\n // prefix data with mode indicator (4 bits)\n buffer.put(data.mode.bit, 4)\n\n // Prefix data with character count indicator.\n // The character count indicator is a string of bits that represents the\n // number of characters that are being encoded.\n // The character count indicator must be placed after the mode indicator\n // and must be a certain number of bits long, depending on the QR version\n // and data mode\n // @see {@link Mode.getCharCountIndicator}.\n buffer.put(data.getLength(), Mode.getCharCountIndicator(data.mode, version))\n\n // add binary data sequence to buffer\n data.write(buffer)\n })\n\n // Calculate required number of bits\n var totalCodewords = Utils.getSymbolTotalCodewords(version)\n var ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n var dataTotalCodewordsBits = (totalCodewords - ecTotalCodewords) * 8\n\n // Add a terminator.\n // If the bit string is shorter than the total number of required bits,\n // a terminator of up to four 0s must be added to the right side of the string.\n // If the bit string is more than four bits shorter than the required number of bits,\n // add four 0s to the end.\n if (buffer.getLengthInBits() + 4 <= dataTotalCodewordsBits) {\n buffer.put(0, 4)\n }\n\n // If the bit string is fewer than four bits shorter, add only the number of 0s that\n // are needed to reach the required number of bits.\n\n // After adding the terminator, if the number of bits in the string is not a multiple of 8,\n // pad the string on the right with 0s to make the string's length a multiple of 8.\n while (buffer.getLengthInBits() % 8 !== 0) {\n buffer.putBit(0)\n }\n\n // Add pad bytes if the string is still shorter than the total number of required bits.\n // Extend the buffer to fill the data capacity of the symbol corresponding to\n // the Version and Error Correction Level by adding the Pad Codewords 11101100 (0xEC)\n // and 00010001 (0x11) alternately.\n var remainingByte = (dataTotalCodewordsBits - buffer.getLengthInBits()) / 8\n for (var i = 0; i < remainingByte; i++) {\n buffer.put(i % 2 ? 0x11 : 0xEC, 8)\n }\n\n return createCodewords(buffer, version, errorCorrectionLevel)\n}\n\n/**\n * Encode input data with Reed-Solomon and return codewords with\n * relative error correction bits\n *\n * @param {BitBuffer} bitBuffer Data to encode\n * @param {Number} version QR Code version\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @return {Buffer} Buffer containing encoded codewords\n */\nfunction createCodewords (bitBuffer, version, errorCorrectionLevel) {\n // Total codewords for this QR code version (Data + Error correction)\n var totalCodewords = Utils.getSymbolTotalCodewords(version)\n\n // Total number of error correction codewords\n var ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n\n // Total number of data codewords\n var dataTotalCodewords = totalCodewords - ecTotalCodewords\n\n // Total number of blocks\n var ecTotalBlocks = ECCode.getBlocksCount(version, errorCorrectionLevel)\n\n // Calculate how many blocks each group should contain\n var blocksInGroup2 = totalCodewords % ecTotalBlocks\n var blocksInGroup1 = ecTotalBlocks - blocksInGroup2\n\n var totalCodewordsInGroup1 = Math.floor(totalCodewords / ecTotalBlocks)\n\n var dataCodewordsInGroup1 = Math.floor(dataTotalCodewords / ecTotalBlocks)\n var dataCodewordsInGroup2 = dataCodewordsInGroup1 + 1\n\n // Number of EC codewords is the same for both groups\n var ecCount = totalCodewordsInGroup1 - dataCodewordsInGroup1\n\n // Initialize a Reed-Solomon encoder with a generator polynomial of degree ecCount\n var rs = new ReedSolomonEncoder(ecCount)\n\n var offset = 0\n var dcData = new Array(ecTotalBlocks)\n var ecData = new Array(ecTotalBlocks)\n var maxDataSize = 0\n var buffer = BufferUtil.from(bitBuffer.buffer)\n\n // Divide the buffer into the required number of blocks\n for (var b = 0; b < ecTotalBlocks; b++) {\n var dataSize = b < blocksInGroup1 ? dataCodewordsInGroup1 : dataCodewordsInGroup2\n\n // extract a block of data from buffer\n dcData[b] = buffer.slice(offset, offset + dataSize)\n\n // Calculate EC codewords for this data block\n ecData[b] = rs.encode(dcData[b])\n\n offset += dataSize\n maxDataSize = Math.max(maxDataSize, dataSize)\n }\n\n // Create final data\n // Interleave the data and error correction codewords from each block\n var data = BufferUtil.alloc(totalCodewords)\n var index = 0\n var i, r\n\n // Add data codewords\n for (i = 0; i < maxDataSize; i++) {\n for (r = 0; r < ecTotalBlocks; r++) {\n if (i < dcData[r].length) {\n data[index++] = dcData[r][i]\n }\n }\n }\n\n // Apped EC codewords\n for (i = 0; i < ecCount; i++) {\n for (r = 0; r < ecTotalBlocks; r++) {\n data[index++] = ecData[r][i]\n }\n }\n\n return data\n}\n\n/**\n * Build QR Code symbol\n *\n * @param {String} data Input string\n * @param {Number} version QR Code version\n * @param {ErrorCorretionLevel} errorCorrectionLevel Error level\n * @param {MaskPattern} maskPattern Mask pattern\n * @return {Object} Object containing symbol data\n */\nfunction createSymbol (data, version, errorCorrectionLevel, maskPattern) {\n var segments\n\n if (isArray(data)) {\n segments = Segments.fromArray(data)\n } else if (typeof data === 'string') {\n var estimatedVersion = version\n\n if (!estimatedVersion) {\n var rawSegments = Segments.rawSplit(data)\n\n // Estimate best version that can contain raw splitted segments\n estimatedVersion = Version.getBestVersionForData(rawSegments,\n errorCorrectionLevel)\n }\n\n // Build optimized segments\n // If estimated version is undefined, try with the highest version\n segments = Segments.fromString(data, estimatedVersion || 40)\n } else {\n throw new Error('Invalid data')\n }\n\n // Get the min version that can contain data\n var bestVersion = Version.getBestVersionForData(segments,\n errorCorrectionLevel)\n\n // If no version is found, data cannot be stored\n if (!bestVersion) {\n throw new Error('The amount of data is too big to be stored in a QR Code')\n }\n\n // If not specified, use min version as default\n if (!version) {\n version = bestVersion\n\n // Check if the specified version can contain the data\n } else if (version < bestVersion) {\n throw new Error('\\n' +\n 'The chosen QR Code version cannot contain this amount of data.\\n' +\n 'Minimum version required to store current data is: ' + bestVersion + '.\\n'\n )\n }\n\n var dataBits = createData(version, errorCorrectionLevel, segments)\n\n // Allocate matrix buffer\n var moduleCount = Utils.getSymbolSize(version)\n var modules = new BitMatrix(moduleCount)\n\n // Add function modules\n setupFinderPattern(modules, version)\n setupTimingPattern(modules)\n setupAlignmentPattern(modules, version)\n\n // Add temporary dummy bits for format info just to set them as reserved.\n // This is needed to prevent these bits from being masked by {@link MaskPattern.applyMask}\n // since the masking operation must be performed only on the encoding region.\n // These blocks will be replaced with correct values later in code.\n setupFormatInfo(modules, errorCorrectionLevel, 0)\n\n if (version >= 7) {\n setupVersionInfo(modules, version)\n }\n\n // Add data codewords\n setupData(modules, dataBits)\n\n if (isNaN(maskPattern)) {\n // Find best mask pattern\n maskPattern = MaskPattern.getBestMask(modules,\n setupFormatInfo.bind(null, modules, errorCorrectionLevel))\n }\n\n // Apply mask pattern\n MaskPattern.applyMask(maskPattern, modules)\n\n // Replace format info bits with correct values\n setupFormatInfo(modules, errorCorrectionLevel, maskPattern)\n\n return {\n modules: modules,\n version: version,\n errorCorrectionLevel: errorCorrectionLevel,\n maskPattern: maskPattern,\n segments: segments\n }\n}\n\n/**\n * QR Code\n *\n * @param {String | Array} data Input data\n * @param {Object} options Optional configurations\n * @param {Number} options.version QR Code version\n * @param {String} options.errorCorrectionLevel Error correction level\n * @param {Function} options.toSJISFunc Helper func to convert utf8 to sjis\n */\nexports.create = function create (data, options) {\n if (typeof data === 'undefined' || data === '') {\n throw new Error('No input text')\n }\n\n var errorCorrectionLevel = ECLevel.M\n var version\n var mask\n\n if (typeof options !== 'undefined') {\n // Use higher error correction level as default\n errorCorrectionLevel = ECLevel.from(options.errorCorrectionLevel, ECLevel.M)\n version = Version.from(options.version)\n mask = MaskPattern.from(options.maskPattern)\n\n if (options.toSJISFunc) {\n Utils.setToSJISFunction(options.toSJISFunc)\n }\n }\n\n return createSymbol(data, version, errorCorrectionLevel, mask)\n}\n","var BufferUtil = require('../utils/buffer')\nvar Polynomial = require('./polynomial')\nvar Buffer = require('buffer').Buffer\n\nfunction ReedSolomonEncoder (degree) {\n this.genPoly = undefined\n this.degree = degree\n\n if (this.degree) this.initialize(this.degree)\n}\n\n/**\n * Initialize the encoder.\n * The input param should correspond to the number of error correction codewords.\n *\n * @param {Number} degree\n */\nReedSolomonEncoder.prototype.initialize = function initialize (degree) {\n // create an irreducible generator polynomial\n this.degree = degree\n this.genPoly = Polynomial.generateECPolynomial(this.degree)\n}\n\n/**\n * Encodes a chunk of data\n *\n * @param {Buffer} data Buffer containing input data\n * @return {Buffer} Buffer containing encoded data\n */\nReedSolomonEncoder.prototype.encode = function encode (data) {\n if (!this.genPoly) {\n throw new Error('Encoder not initialized')\n }\n\n // Calculate EC for this data block\n // extends data size to data+genPoly size\n var pad = BufferUtil.alloc(this.degree)\n var paddedData = Buffer.concat([data, pad], data.length + this.degree)\n\n // The error correction codewords are the remainder after dividing the data codewords\n // by a generator polynomial\n var remainder = Polynomial.mod(paddedData, this.genPoly)\n\n // return EC data blocks (last n byte, where n is the degree of genPoly)\n // If coefficients number in remainder are less than genPoly degree,\n // pad with 0s to the left to reach the needed number of coefficients\n var start = this.degree - remainder.length\n if (start > 0) {\n var buff = BufferUtil.alloc(this.degree)\n remainder.copy(buff, start)\n\n return buff\n }\n\n return remainder\n}\n\nmodule.exports = ReedSolomonEncoder\n","var numeric = '[0-9]+'\nvar alphanumeric = '[A-Z $%*+\\\\-./:]+'\nvar kanji = '(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|' +\n '[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|' +\n '[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|' +\n '[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+'\nkanji = kanji.replace(/u/g, '\\\\u')\n\nvar byte = '(?:(?![A-Z0-9 $%*+\\\\-./:]|' + kanji + ')(?:.|[\\r\\n]))+'\n\nexports.KANJI = new RegExp(kanji, 'g')\nexports.BYTE_KANJI = new RegExp('[^A-Z0-9 $%*+\\\\-./:]+', 'g')\nexports.BYTE = new RegExp(byte, 'g')\nexports.NUMERIC = new RegExp(numeric, 'g')\nexports.ALPHANUMERIC = new RegExp(alphanumeric, 'g')\n\nvar TEST_KANJI = new RegExp('^' + kanji + '$')\nvar TEST_NUMERIC = new RegExp('^' + numeric + '$')\nvar TEST_ALPHANUMERIC = new RegExp('^[A-Z0-9 $%*+\\\\-./:]+$')\n\nexports.testKanji = function testKanji (str) {\n return TEST_KANJI.test(str)\n}\n\nexports.testNumeric = function testNumeric (str) {\n return TEST_NUMERIC.test(str)\n}\n\nexports.testAlphanumeric = function testAlphanumeric (str) {\n return TEST_ALPHANUMERIC.test(str)\n}\n","var Mode = require('./mode')\nvar NumericData = require('./numeric-data')\nvar AlphanumericData = require('./alphanumeric-data')\nvar ByteData = require('./byte-data')\nvar KanjiData = require('./kanji-data')\nvar Regex = require('./regex')\nvar Utils = require('./utils')\nvar dijkstra = require('dijkstrajs')\n\n/**\n * Returns UTF8 byte length\n *\n * @param {String} str Input string\n * @return {Number} Number of byte\n */\nfunction getStringByteLength (str) {\n return unescape(encodeURIComponent(str)).length\n}\n\n/**\n * Get a list of segments of the specified mode\n * from a string\n *\n * @param {Mode} mode Segment mode\n * @param {String} str String to process\n * @return {Array} Array of object with segments data\n */\nfunction getSegments (regex, mode, str) {\n var segments = []\n var result\n\n while ((result = regex.exec(str)) !== null) {\n segments.push({\n data: result[0],\n index: result.index,\n mode: mode,\n length: result[0].length\n })\n }\n\n return segments\n}\n\n/**\n * Extracts a series of segments with the appropriate\n * modes from a string\n *\n * @param {String} dataStr Input string\n * @return {Array} Array of object with segments data\n */\nfunction getSegmentsFromString (dataStr) {\n var numSegs = getSegments(Regex.NUMERIC, Mode.NUMERIC, dataStr)\n var alphaNumSegs = getSegments(Regex.ALPHANUMERIC, Mode.ALPHANUMERIC, dataStr)\n var byteSegs\n var kanjiSegs\n\n if (Utils.isKanjiModeEnabled()) {\n byteSegs = getSegments(Regex.BYTE, Mode.BYTE, dataStr)\n kanjiSegs = getSegments(Regex.KANJI, Mode.KANJI, dataStr)\n } else {\n byteSegs = getSegments(Regex.BYTE_KANJI, Mode.BYTE, dataStr)\n kanjiSegs = []\n }\n\n var segs = numSegs.concat(alphaNumSegs, byteSegs, kanjiSegs)\n\n return segs\n .sort(function (s1, s2) {\n return s1.index - s2.index\n })\n .map(function (obj) {\n return {\n data: obj.data,\n mode: obj.mode,\n length: obj.length\n }\n })\n}\n\n/**\n * Returns how many bits are needed to encode a string of\n * specified length with the specified mode\n *\n * @param {Number} length String length\n * @param {Mode} mode Segment mode\n * @return {Number} Bit length\n */\nfunction getSegmentBitsLength (length, mode) {\n switch (mode) {\n case Mode.NUMERIC:\n return NumericData.getBitsLength(length)\n case Mode.ALPHANUMERIC:\n return AlphanumericData.getBitsLength(length)\n case Mode.KANJI:\n return KanjiData.getBitsLength(length)\n case Mode.BYTE:\n return ByteData.getBitsLength(length)\n }\n}\n\n/**\n * Merges adjacent segments which have the same mode\n *\n * @param {Array} segs Array of object with segments data\n * @return {Array} Array of object with segments data\n */\nfunction mergeSegments (segs) {\n return segs.reduce(function (acc, curr) {\n var prevSeg = acc.length - 1 >= 0 ? acc[acc.length - 1] : null\n if (prevSeg && prevSeg.mode === curr.mode) {\n acc[acc.length - 1].data += curr.data\n return acc\n }\n\n acc.push(curr)\n return acc\n }, [])\n}\n\n/**\n * Generates a list of all possible nodes combination which\n * will be used to build a segments graph.\n *\n * Nodes are divided by groups. Each group will contain a list of all the modes\n * in which is possible to encode the given text.\n *\n * For example the text '12345' can be encoded as Numeric, Alphanumeric or Byte.\n * The group for '12345' will contain then 3 objects, one for each\n * possible encoding mode.\n *\n * Each node represents a possible segment.\n *\n * @param {Array} segs Array of object with segments data\n * @return {Array} Array of object with segments data\n */\nfunction buildNodes (segs) {\n var nodes = []\n for (var i = 0; i < segs.length; i++) {\n var seg = segs[i]\n\n switch (seg.mode) {\n case Mode.NUMERIC:\n nodes.push([seg,\n { data: seg.data, mode: Mode.ALPHANUMERIC, length: seg.length },\n { data: seg.data, mode: Mode.BYTE, length: seg.length }\n ])\n break\n case Mode.ALPHANUMERIC:\n nodes.push([seg,\n { data: seg.data, mode: Mode.BYTE, length: seg.length }\n ])\n break\n case Mode.KANJI:\n nodes.push([seg,\n { data: seg.data, mode: Mode.BYTE, length: getStringByteLength(seg.data) }\n ])\n break\n case Mode.BYTE:\n nodes.push([\n { data: seg.data, mode: Mode.BYTE, length: getStringByteLength(seg.data) }\n ])\n }\n }\n\n return nodes\n}\n\n/**\n * Builds a graph from a list of nodes.\n * All segments in each node group will be connected with all the segments of\n * the next group and so on.\n *\n * At each connection will be assigned a weight depending on the\n * segment's byte length.\n *\n * @param {Array} nodes Array of object with segments data\n * @param {Number} version QR Code version\n * @return {Object} Graph of all possible segments\n */\nfunction buildGraph (nodes, version) {\n var table = {}\n var graph = {'start': {}}\n var prevNodeIds = ['start']\n\n for (var i = 0; i < nodes.length; i++) {\n var nodeGroup = nodes[i]\n var currentNodeIds = []\n\n for (var j = 0; j < nodeGroup.length; j++) {\n var node = nodeGroup[j]\n var key = '' + i + j\n\n currentNodeIds.push(key)\n table[key] = { node: node, lastCount: 0 }\n graph[key] = {}\n\n for (var n = 0; n < prevNodeIds.length; n++) {\n var prevNodeId = prevNodeIds[n]\n\n if (table[prevNodeId] && table[prevNodeId].node.mode === node.mode) {\n graph[prevNodeId][key] =\n getSegmentBitsLength(table[prevNodeId].lastCount + node.length, node.mode) -\n getSegmentBitsLength(table[prevNodeId].lastCount, node.mode)\n\n table[prevNodeId].lastCount += node.length\n } else {\n if (table[prevNodeId]) table[prevNodeId].lastCount = node.length\n\n graph[prevNodeId][key] = getSegmentBitsLength(node.length, node.mode) +\n 4 + Mode.getCharCountIndicator(node.mode, version) // switch cost\n }\n }\n }\n\n prevNodeIds = currentNodeIds\n }\n\n for (n = 0; n < prevNodeIds.length; n++) {\n graph[prevNodeIds[n]]['end'] = 0\n }\n\n return { map: graph, table: table }\n}\n\n/**\n * Builds a segment from a specified data and mode.\n * If a mode is not specified, the more suitable will be used.\n *\n * @param {String} data Input data\n * @param {Mode | String} modesHint Data mode\n * @return {Segment} Segment\n */\nfunction buildSingleSegment (data, modesHint) {\n var mode\n var bestMode = Mode.getBestModeForData(data)\n\n mode = Mode.from(modesHint, bestMode)\n\n // Make sure data can be encoded\n if (mode !== Mode.BYTE && mode.bit < bestMode.bit) {\n throw new Error('\"' + data + '\"' +\n ' cannot be encoded with mode ' + Mode.toString(mode) +\n '.\\n Suggested mode is: ' + Mode.toString(bestMode))\n }\n\n // Use Mode.BYTE if Kanji support is disabled\n if (mode === Mode.KANJI && !Utils.isKanjiModeEnabled()) {\n mode = Mode.BYTE\n }\n\n switch (mode) {\n case Mode.NUMERIC:\n return new NumericData(data)\n\n case Mode.ALPHANUMERIC:\n return new AlphanumericData(data)\n\n case Mode.KANJI:\n return new KanjiData(data)\n\n case Mode.BYTE:\n return new ByteData(data)\n }\n}\n\n/**\n * Builds a list of segments from an array.\n * Array can contain Strings or Objects with segment's info.\n *\n * For each item which is a string, will be generated a segment with the given\n * string and the more appropriate encoding mode.\n *\n * For each item which is an object, will be generated a segment with the given\n * data and mode.\n * Objects must contain at least the property \"data\".\n * If property \"mode\" is not present, the more suitable mode will be used.\n *\n * @param {Array} array Array of objects with segments data\n * @return {Array} Array of Segments\n */\nexports.fromArray = function fromArray (array) {\n return array.reduce(function (acc, seg) {\n if (typeof seg === 'string') {\n acc.push(buildSingleSegment(seg, null))\n } else if (seg.data) {\n acc.push(buildSingleSegment(seg.data, seg.mode))\n }\n\n return acc\n }, [])\n}\n\n/**\n * Builds an optimized sequence of segments from a string,\n * which will produce the shortest possible bitstream.\n *\n * @param {String} data Input string\n * @param {Number} version QR Code version\n * @return {Array} Array of segments\n */\nexports.fromString = function fromString (data, version) {\n var segs = getSegmentsFromString(data, Utils.isKanjiModeEnabled())\n\n var nodes = buildNodes(segs)\n var graph = buildGraph(nodes, version)\n var path = dijkstra.find_path(graph.map, 'start', 'end')\n\n var optimizedSegs = []\n for (var i = 1; i < path.length - 1; i++) {\n optimizedSegs.push(graph.table[path[i]].node)\n }\n\n return exports.fromArray(mergeSegments(optimizedSegs))\n}\n\n/**\n * Splits a string in various segments with the modes which\n * best represent their content.\n * The produced segments are far from being optimized.\n * The output of this function is only used to estimate a QR Code version\n * which may contain the data.\n *\n * @param {string} data Input string\n * @return {Array} Array of segments\n */\nexports.rawSplit = function rawSplit (data) {\n return exports.fromArray(\n getSegmentsFromString(data, Utils.isKanjiModeEnabled())\n )\n}\n","var toSJISFunction\nvar CODEWORDS_COUNT = [\n 0, // Not used\n 26, 44, 70, 100, 134, 172, 196, 242, 292, 346,\n 404, 466, 532, 581, 655, 733, 815, 901, 991, 1085,\n 1156, 1258, 1364, 1474, 1588, 1706, 1828, 1921, 2051, 2185,\n 2323, 2465, 2611, 2761, 2876, 3034, 3196, 3362, 3532, 3706\n]\n\n/**\n * Returns the QR Code size for the specified version\n *\n * @param {Number} version QR Code version\n * @return {Number} size of QR code\n */\nexports.getSymbolSize = function getSymbolSize (version) {\n if (!version) throw new Error('\"version\" cannot be null or undefined')\n if (version < 1 || version > 40) throw new Error('\"version\" should be in range from 1 to 40')\n return version * 4 + 17\n}\n\n/**\n * Returns the total number of codewords used to store data and EC information.\n *\n * @param {Number} version QR Code version\n * @return {Number} Data length in bits\n */\nexports.getSymbolTotalCodewords = function getSymbolTotalCodewords (version) {\n return CODEWORDS_COUNT[version]\n}\n\n/**\n * Encode data with Bose-Chaudhuri-Hocquenghem\n *\n * @param {Number} data Value to encode\n * @return {Number} Encoded value\n */\nexports.getBCHDigit = function (data) {\n var digit = 0\n\n while (data !== 0) {\n digit++\n data >>>= 1\n }\n\n return digit\n}\n\nexports.setToSJISFunction = function setToSJISFunction (f) {\n if (typeof f !== 'function') {\n throw new Error('\"toSJISFunc\" is not a valid function.')\n }\n\n toSJISFunction = f\n}\n\nexports.isKanjiModeEnabled = function () {\n return typeof toSJISFunction !== 'undefined'\n}\n\nexports.toSJIS = function toSJIS (kanji) {\n return toSJISFunction(kanji)\n}\n","/**\n * Check if QR Code version is valid\n *\n * @param {Number} version QR Code version\n * @return {Boolean} true if valid version, false otherwise\n */\nexports.isValid = function isValid (version) {\n return !isNaN(version) && version >= 1 && version <= 40\n}\n","var Utils = require('./utils')\nvar ECCode = require('./error-correction-code')\nvar ECLevel = require('./error-correction-level')\nvar Mode = require('./mode')\nvar VersionCheck = require('./version-check')\nvar isArray = require('isarray')\n\n// Generator polynomial used to encode version information\nvar G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0)\nvar G18_BCH = Utils.getBCHDigit(G18)\n\nfunction getBestVersionForDataLength (mode, length, errorCorrectionLevel) {\n for (var currentVersion = 1; currentVersion <= 40; currentVersion++) {\n if (length <= exports.getCapacity(currentVersion, errorCorrectionLevel, mode)) {\n return currentVersion\n }\n }\n\n return undefined\n}\n\nfunction getReservedBitsCount (mode, version) {\n // Character count indicator + mode indicator bits\n return Mode.getCharCountIndicator(mode, version) + 4\n}\n\nfunction getTotalBitsFromDataArray (segments, version) {\n var totalBits = 0\n\n segments.forEach(function (data) {\n var reservedBits = getReservedBitsCount(data.mode, version)\n totalBits += reservedBits + data.getBitsLength()\n })\n\n return totalBits\n}\n\nfunction getBestVersionForMixedData (segments, errorCorrectionLevel) {\n for (var currentVersion = 1; currentVersion <= 40; currentVersion++) {\n var length = getTotalBitsFromDataArray(segments, currentVersion)\n if (length <= exports.getCapacity(currentVersion, errorCorrectionLevel, Mode.MIXED)) {\n return currentVersion\n }\n }\n\n return undefined\n}\n\n/**\n * Returns version number from a value.\n * If value is not a valid version, returns defaultValue\n *\n * @param {Number|String} value QR Code version\n * @param {Number} defaultValue Fallback value\n * @return {Number} QR Code version number\n */\nexports.from = function from (value, defaultValue) {\n if (VersionCheck.isValid(value)) {\n return parseInt(value, 10)\n }\n\n return defaultValue\n}\n\n/**\n * Returns how much data can be stored with the specified QR code version\n * and error correction level\n *\n * @param {Number} version QR Code version (1-40)\n * @param {Number} errorCorrectionLevel Error correction level\n * @param {Mode} mode Data mode\n * @return {Number} Quantity of storable data\n */\nexports.getCapacity = function getCapacity (version, errorCorrectionLevel, mode) {\n if (!VersionCheck.isValid(version)) {\n throw new Error('Invalid QR Code version')\n }\n\n // Use Byte mode as default\n if (typeof mode === 'undefined') mode = Mode.BYTE\n\n // Total codewords for this QR code version (Data + Error correction)\n var totalCodewords = Utils.getSymbolTotalCodewords(version)\n\n // Total number of error correction codewords\n var ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n\n // Total number of data codewords\n var dataTotalCodewordsBits = (totalCodewords - ecTotalCodewords) * 8\n\n if (mode === Mode.MIXED) return dataTotalCodewordsBits\n\n var usableBits = dataTotalCodewordsBits - getReservedBitsCount(mode, version)\n\n // Return max number of storable codewords\n switch (mode) {\n case Mode.NUMERIC:\n return Math.floor((usableBits / 10) * 3)\n\n case Mode.ALPHANUMERIC:\n return Math.floor((usableBits / 11) * 2)\n\n case Mode.KANJI:\n return Math.floor(usableBits / 13)\n\n case Mode.BYTE:\n default:\n return Math.floor(usableBits / 8)\n }\n}\n\n/**\n * Returns the minimum version needed to contain the amount of data\n *\n * @param {Segment} data Segment of data\n * @param {Number} [errorCorrectionLevel=H] Error correction level\n * @param {Mode} mode Data mode\n * @return {Number} QR Code version\n */\nexports.getBestVersionForData = function getBestVersionForData (data, errorCorrectionLevel) {\n var seg\n\n var ecl = ECLevel.from(errorCorrectionLevel, ECLevel.M)\n\n if (isArray(data)) {\n if (data.length > 1) {\n return getBestVersionForMixedData(data, ecl)\n }\n\n if (data.length === 0) {\n return 1\n }\n\n seg = data[0]\n } else {\n seg = data\n }\n\n return getBestVersionForDataLength(seg.mode, seg.getLength(), ecl)\n}\n\n/**\n * Returns version information with relative error correction bits\n *\n * The version information is included in QR Code symbols of version 7 or larger.\n * It consists of an 18-bit sequence containing 6 data bits,\n * with 12 error correction bits calculated using the (18, 6) Golay code.\n *\n * @param {Number} version QR Code version\n * @return {Number} Encoded version info bits\n */\nexports.getEncodedBits = function getEncodedBits (version) {\n if (!VersionCheck.isValid(version) || version < 7) {\n throw new Error('Invalid QR Code version')\n }\n\n var d = version << 12\n\n while (Utils.getBCHDigit(d) - G18_BCH >= 0) {\n d ^= (G18 << (Utils.getBCHDigit(d) - G18_BCH))\n }\n\n return (version << 12) | d\n}\n","var Utils = require('./utils')\n\nfunction clearCanvas (ctx, canvas, size) {\n ctx.clearRect(0, 0, canvas.width, canvas.height)\n\n if (!canvas.style) canvas.style = {}\n canvas.height = size\n canvas.width = size\n canvas.style.height = size + 'px'\n canvas.style.width = size + 'px'\n}\n\nfunction getCanvasElement () {\n try {\n return document.createElement('canvas')\n } catch (e) {\n throw new Error('You need to specify a canvas element')\n }\n}\n\nexports.render = function render (qrData, canvas, options) {\n var opts = options\n var canvasEl = canvas\n\n if (typeof opts === 'undefined' && (!canvas || !canvas.getContext)) {\n opts = canvas\n canvas = undefined\n }\n\n if (!canvas) {\n canvasEl = getCanvasElement()\n }\n\n opts = Utils.getOptions(opts)\n var size = Utils.getImageWidth(qrData.modules.size, opts)\n\n var ctx = canvasEl.getContext('2d')\n var image = ctx.createImageData(size, size)\n Utils.qrToImageData(image.data, qrData, opts)\n\n clearCanvas(ctx, canvasEl, size)\n ctx.putImageData(image, 0, 0)\n\n return canvasEl\n}\n\nexports.renderToDataURL = function renderToDataURL (qrData, canvas, options) {\n var opts = options\n\n if (typeof opts === 'undefined' && (!canvas || !canvas.getContext)) {\n opts = canvas\n canvas = undefined\n }\n\n if (!opts) opts = {}\n\n var canvasEl = exports.render(qrData, canvas, opts)\n\n var type = opts.type || 'image/png'\n var rendererOpts = opts.rendererOpts || {}\n\n return canvasEl.toDataURL(type, rendererOpts.quality)\n}\n","var Utils = require('./utils')\n\nfunction getColorAttrib (color, attrib) {\n var alpha = color.a / 255\n var str = attrib + '=\"' + color.hex + '\"'\n\n return alpha < 1\n ? str + ' ' + attrib + '-opacity=\"' + alpha.toFixed(2).slice(1) + '\"'\n : str\n}\n\nfunction svgCmd (cmd, x, y) {\n var str = cmd + x\n if (typeof y !== 'undefined') str += ' ' + y\n\n return str\n}\n\nfunction qrToPath (data, size, margin) {\n var path = ''\n var moveBy = 0\n var newRow = false\n var lineLength = 0\n\n for (var i = 0; i < data.length; i++) {\n var col = Math.floor(i % size)\n var row = Math.floor(i / size)\n\n if (!col && !newRow) newRow = true\n\n if (data[i]) {\n lineLength++\n\n if (!(i > 0 && col > 0 && data[i - 1])) {\n path += newRow\n ? svgCmd('M', col + margin, 0.5 + row + margin)\n : svgCmd('m', moveBy, 0)\n\n moveBy = 0\n newRow = false\n }\n\n if (!(col + 1 < size && data[i + 1])) {\n path += svgCmd('h', lineLength)\n lineLength = 0\n }\n } else {\n moveBy++\n }\n }\n\n return path\n}\n\nexports.render = function render (qrData, options, cb) {\n var opts = Utils.getOptions(options)\n var size = qrData.modules.size\n var data = qrData.modules.data\n var qrcodesize = size + opts.margin * 2\n\n var bg = !opts.color.light.a\n ? ''\n : ''\n\n var path =\n ''\n\n var viewBox = 'viewBox=\"' + '0 0 ' + qrcodesize + ' ' + qrcodesize + '\"'\n\n var width = !opts.width ? '' : 'width=\"' + opts.width + '\" height=\"' + opts.width + '\" '\n\n var svgTag = '' + bg + path + '\\n'\n\n if (typeof cb === 'function') {\n cb(null, svgTag)\n }\n\n return svgTag\n}\n","function hex2rgba (hex) {\n if (typeof hex === 'number') {\n hex = hex.toString()\n }\n\n if (typeof hex !== 'string') {\n throw new Error('Color should be defined as hex string')\n }\n\n var hexCode = hex.slice().replace('#', '').split('')\n if (hexCode.length < 3 || hexCode.length === 5 || hexCode.length > 8) {\n throw new Error('Invalid hex color: ' + hex)\n }\n\n // Convert from short to long form (fff -> ffffff)\n if (hexCode.length === 3 || hexCode.length === 4) {\n hexCode = Array.prototype.concat.apply([], hexCode.map(function (c) {\n return [c, c]\n }))\n }\n\n // Add default alpha value\n if (hexCode.length === 6) hexCode.push('F', 'F')\n\n var hexValue = parseInt(hexCode.join(''), 16)\n\n return {\n r: (hexValue >> 24) & 255,\n g: (hexValue >> 16) & 255,\n b: (hexValue >> 8) & 255,\n a: hexValue & 255,\n hex: '#' + hexCode.slice(0, 6).join('')\n }\n}\n\nexports.getOptions = function getOptions (options) {\n if (!options) options = {}\n if (!options.color) options.color = {}\n\n var margin = typeof options.margin === 'undefined' ||\n options.margin === null ||\n options.margin < 0 ? 4 : options.margin\n\n var width = options.width && options.width >= 21 ? options.width : undefined\n var scale = options.scale || 4\n\n return {\n width: width,\n scale: width ? 4 : scale,\n margin: margin,\n color: {\n dark: hex2rgba(options.color.dark || '#000000ff'),\n light: hex2rgba(options.color.light || '#ffffffff')\n },\n type: options.type,\n rendererOpts: options.rendererOpts || {}\n }\n}\n\nexports.getScale = function getScale (qrSize, opts) {\n return opts.width && opts.width >= qrSize + opts.margin * 2\n ? opts.width / (qrSize + opts.margin * 2)\n : opts.scale\n}\n\nexports.getImageWidth = function getImageWidth (qrSize, opts) {\n var scale = exports.getScale(qrSize, opts)\n return Math.floor((qrSize + opts.margin * 2) * scale)\n}\n\nexports.qrToImageData = function qrToImageData (imgData, qr, opts) {\n var size = qr.modules.size\n var data = qr.modules.data\n var scale = exports.getScale(size, opts)\n var symbolSize = Math.floor((size + opts.margin * 2) * scale)\n var scaledMargin = opts.margin * scale\n var palette = [opts.color.light, opts.color.dark]\n\n for (var i = 0; i < symbolSize; i++) {\n for (var j = 0; j < symbolSize; j++) {\n var posDst = (i * symbolSize + j) * 4\n var pxColor = opts.color.light\n\n if (i >= scaledMargin && j >= scaledMargin &&\n i < symbolSize - scaledMargin && j < symbolSize - scaledMargin) {\n var iSrc = Math.floor((i - scaledMargin) / scale)\n var jSrc = Math.floor((j - scaledMargin) / scale)\n pxColor = palette[data[iSrc * size + jSrc] ? 1 : 0]\n }\n\n imgData[posDst++] = pxColor.r\n imgData[posDst++] = pxColor.g\n imgData[posDst++] = pxColor.b\n imgData[posDst] = pxColor.a\n }\n }\n}\n","/**\n * Implementation of a subset of node.js Buffer methods for the browser.\n * Based on https://github.com/feross/buffer\n */\n\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar isArray = require('isarray')\n\nfunction typedArraySupport () {\n // Can typed array instances be augmented?\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nvar K_MAX_LENGTH = Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n\nfunction Buffer (arg, offset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, offset, length)\n }\n\n if (typeof arg === 'number') {\n return allocUnsafe(this, arg)\n }\n\n return from(this, arg, offset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true,\n enumerable: false,\n writable: false\n })\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n\nfunction createBuffer (that, length) {\n var buf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n buf = new Uint8Array(length)\n buf.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n buf = that\n if (buf === null) {\n buf = new Buffer(length)\n }\n buf.length = length\n }\n\n return buf\n}\n\nfunction allocUnsafe (that, size) {\n var buf = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n buf[i] = 0\n }\n }\n\n return buf\n}\n\nfunction fromString (that, string) {\n var length = byteLength(string) | 0\n var buf = createBuffer(that, length)\n\n var actual = buf.write(string)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n var buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n buf.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n buf = fromArrayLike(that, buf)\n }\n\n return buf\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n var buf = createBuffer(that, len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction byteLength (string) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n return utf8ToBytes(string).length\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction from (that, value, offset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, offset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, offset)\n }\n\n return fromObject(that, value)\n}\n\nBuffer.prototype.write = function write (string, offset, length) {\n // Buffer#write(string)\n if (offset === undefined) {\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n } else {\n length = undefined\n }\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n return utf8Write(this, string, offset, length)\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\nBuffer.prototype.fill = function fill (val, start, end) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : new Buffer(val)\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return createBuffer(null, 0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = allocUnsafe(null, length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nBuffer.byteLength = byteLength\n\nBuffer.prototype._isBuffer = true\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nmodule.exports.alloc = function (size) {\n var buffer = new Buffer(size)\n buffer.fill(0)\n return buffer\n}\n\nmodule.exports.from = function (data) {\n return new Buffer(data)\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nvar K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n var arr = new Uint8Array(1)\n var proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n var buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n var valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n var b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(\n value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n )\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n var length = byteLength(string, encoding) | 0\n var buf = createBuffer(length)\n\n var actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(length)\n for (var i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n var copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n var buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n var buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n Buffer.from(buf).copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n var len = string.length\n var mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n var strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (var i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n var len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nvar hexSliceLookupTable = (function () {\n var alphabet = '0123456789abcdef'\n var table = new Array(256)\n for (var i = 0; i < 16; ++i) {\n var i16 = i * 16\n for (var j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n","'use strict';\nconst strictUriEncode = require('strict-uri-encode');\nconst decodeComponent = require('decode-uri-component');\nconst splitOnFirst = require('split-on-first');\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[', index, ']'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')\n\t\t\t\t];\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[]'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '[]=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (value === null || value === undefined || value.length === 0) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, encode(key, options)];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.split('').indexOf(options.arrayFormatSeparator) > -1;\n\t\t\t\tconst newValue = isArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : value === null ? value : decode(value, options);\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nfunction parseValue(value, options) {\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\tvalue = Number(value);\n\t} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\tvalue = value.toLowerCase() === 'true';\n\t}\n\n\treturn value;\n}\n\nfunction parse(input, options) {\n\toptions = Object.assign({\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst ret = Object.create(null);\n\n\tif (typeof input !== 'string') {\n\t\treturn ret;\n\t}\n\n\tinput = input.trim().replace(/^[?#&]/, '');\n\n\tif (!input) {\n\t\treturn ret;\n\t}\n\n\tfor (const param of input.split('&')) {\n\t\tlet [key, value] = splitOnFirst(options.decode ? param.replace(/\\+/g, ' ') : param, '=');\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : ['comma', 'separator'].includes(options.arrayFormat) ? value : decode(value, options);\n\t\tformatter(decode(key, options), value, ret);\n\t}\n\n\tfor (const key of Object.keys(ret)) {\n\t\tconst value = ret[key];\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfor (const k of Object.keys(value)) {\n\t\t\t\tvalue[k] = parseValue(value[k], options);\n\t\t\t}\n\t\t} else {\n\t\t\tret[key] = parseValue(value, options);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn ret;\n\t}\n\n\treturn (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = ret[key];\n\t\tif (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(value);\n\t\t} else {\n\t\t\tresult[key] = value;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = (object, options) => {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ','\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key])) ||\n\t\t(options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const key of Object.keys(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = object[key];\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n};\n\nexports.parseUrl = (input, options) => {\n\toptions = Object.assign({\n\t\tdecode: true\n\t}, options);\n\n\tconst [url, hash] = splitOnFirst(input, '#');\n\n\treturn Object.assign(\n\t\t{\n\t\t\turl: url.split('?')[0] || '',\n\t\t\tquery: parse(extract(input), options)\n\t\t},\n\t\toptions && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}\n\t);\n};\n\nexports.stringifyUrl = (input, options) => {\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true\n\t}, options);\n\n\tconst url = removeHash(input.url).split('?')[0] || '';\n\tconst queryFromUrl = exports.extract(input.url);\n\tconst parsedQueryFromUrl = exports.parse(queryFromUrl, {sort: false});\n\n\tconst query = Object.assign(parsedQueryFromUrl, input.query);\n\tlet queryString = exports.stringify(query, options);\n\tif (queryString) {\n\t\tqueryString = `?${queryString}`;\n\t}\n\n\tlet hash = getHash(input.url);\n\tif (input.fragmentIdentifier) {\n\t\thash = `#${encode(input.fragmentIdentifier, options)}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n};\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its 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 Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n'use strict';\n/**/\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n};\n/**/\n\n\nmodule.exports = Duplex;\n\nvar Readable = require('./_stream_readable');\n\nvar Writable = require('./_stream_writable');\n\nrequire('inherits')(Duplex, Readable);\n\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n}); // the no-half-open enforcer\n\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n process.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\nrequire('inherits')(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nmodule.exports = Readable;\n/**/\n\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n/**/\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\n\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/**/\n\n\nvar debugUtil = require('util');\n\nvar debug;\n\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\n\nvar BufferList = require('./internal/streams/buffer_list');\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.\n\n\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n\nrequire('inherits')(Readable, Stream);\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')\n\n this.autoDestroy = !!options.autoDestroy; // has it been destroyed\n\n this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex); // legacy\n\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n}; // Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\n\n\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n } // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n\n\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n\n return er;\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8\n\n this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:\n\n var p = this._readableState.buffer.head;\n var content = '';\n\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n\n this._readableState.buffer.clear();\n\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n}; // Don't raise the hwm > 1GB\n\n\nvar MAX_HWM = 0x40000000;\n\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n\n return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n } // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n // if we need a readable event, then we need to do some reading.\n\n\n var doRead = state.needReadable;\n debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n\n state.sync = false; // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true;\n\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n} // Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\n\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\n\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n } // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n\n\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n} // at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\n\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length) // didn't get any data, stop spinning.\n break;\n }\n\n state.readingMore = false;\n} // abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\n\n\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\n\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n } // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug('cleanup'); // cleanup event handlers once the pipe is broken\n\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true; // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n } // Make sure our error handler is attached before userland ones.\n\n\n prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n\n dest.once('close', onclose);\n\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n\n dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n }\n\n return this;\n } // try to find the right one.\n\n\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused\n\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n\n return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true; // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug('resume'); // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n\n state.paused = false;\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n\n if (!state.reading) {\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\n this._readableState.paused = true;\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n\n while (state.flowing && stream.read() !== null) {\n ;\n }\n} // wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\n\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n } // proxy certain important events.\n\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n\n this._read = function (n) {\n debug('wrapped _read', n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n\n return createReadableStreamAsyncIterator(this);\n };\n}\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n}); // Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.\n\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\n\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n\n return from(Readable, iterable, opts);\n };\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n\n return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n'use strict';\n\nmodule.exports = Transform;\n\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\n\nvar Duplex = require('./_stream_duplex');\n\nrequire('inherits')(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n}; // This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n}; // Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\n\n\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n'use strict';\n\nmodule.exports = Writable;\n/* */\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\n\n\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n/**/\n\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n\nrequire('inherits')(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n\n this.sync = true; // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex); // legacy.\n\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n} // Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n\n return true;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\n\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n} // Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n errorOrDestroy(stream, err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n } // reuse the free corkReq.\n\n\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","'use strict';\n\nvar _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar finished = require('./end-of-stream');\n\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\n\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\n\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n\n if (resolve !== null) {\n var data = iter[kStream].read(); // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\n\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\n\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n\n next: function next() {\n var _this = this;\n\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n\n if (error !== null) {\n return Promise.reject(error);\n }\n\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n } // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n\n\n var lastPromise = this[kLastPromise];\n var promise;\n\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n\n promise = new Promise(this[kHandlePromise]);\n }\n\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n\n iterator[kError] = err;\n return;\n }\n\n var resolve = iterator[kLastResolve];\n\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\n\nvar _require2 = require('util'),\n inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports =\n/*#__PURE__*/\nfunction () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n } // Consumes a specified amount of bytes or characters from the buffered data.\n\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n } // Consumes a specified amount of characters from the buffered data.\n\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Consumes a specified amount of bytes from the buffered data.\n\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Make sure the linked list only shows the minimal necessary information.\n\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread({}, options, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n\n return BufferList;\n}();","'use strict'; // undocumented cb() API, needed for core, not for public API\n\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n } // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n\n return this;\n}\n\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\n\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n callback.apply(this, args);\n };\n}\n\nfunction noop() {}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n\n var writableEnded = stream._writableState && stream._writableState.finished;\n\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n\n var onclose = function onclose() {\n var err;\n\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\n\nmodule.exports = eos;","module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar eos;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\n\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true; // request.destroy just do .end - .abort is what we want\n\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\n\nfunction call(fn) {\n fn();\n}\n\nfunction pipe(from, to) {\n return from.pipe(to);\n}\n\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\n\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\n\nmodule.exports = pipeline;","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\n\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\n\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n\n return Math.floor(hwm);\n } // Default value\n\n\n return state.objectMode ? 16 : 16 * 1024;\n}\n\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","module.exports = require('events').EventEmitter;\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n","import { AsyncAction } from './AsyncAction';\nimport { AnimationFrameScheduler } from './AnimationFrameScheduler';\nimport { SchedulerAction } from '../types';\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class AnimationFrameAction extends AsyncAction {\n\n constructor(protected scheduler: AnimationFrameScheduler,\n protected work: (this: SchedulerAction, state?: T) => void) {\n super(scheduler, work);\n }\n\n protected requestAsyncId(scheduler: AnimationFrameScheduler, id?: any, delay: number = 0): any {\n // If delay is greater than 0, request as an async action.\n if (delay !== null && delay > 0) {\n return super.requestAsyncId(scheduler, id, delay);\n }\n // Push the action to the end of the scheduler queue.\n scheduler.actions.push(this);\n // If an animation frame has already been requested, don't request another\n // one. If an animation frame hasn't been requested yet, request one. Return\n // the current animation frame request id.\n return scheduler.scheduled || (scheduler.scheduled = requestAnimationFrame(\n () => scheduler.flush(null)));\n }\n protected recycleAsyncId(scheduler: AnimationFrameScheduler, id?: any, delay: number = 0): any {\n // If delay exists and is greater than 0, or if the delay is null (the\n // action wasn't rescheduled) but was originally scheduled as an async\n // action, then recycle as an async action.\n if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {\n return super.recycleAsyncId(scheduler, id, delay);\n }\n // If the scheduler queue is empty, cancel the requested animation frame and\n // set the scheduled flag to undefined so the next AnimationFrameAction will\n // request its own.\n if (scheduler.actions.length === 0) {\n cancelAnimationFrame(id);\n scheduler.scheduled = undefined;\n }\n // Return undefined so the action knows to request a new async id if it's rescheduled.\n return undefined;\n }\n}\n","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\n\nexport class AnimationFrameScheduler extends AsyncScheduler {\n public flush(action?: AsyncAction): void {\n\n this.active = true;\n this.scheduled = undefined;\n\n const {actions} = this;\n let error: any;\n let index: number = -1;\n let count: number = actions.length;\n action = action || actions.shift();\n\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (++index < count && (action = actions.shift()));\n\n this.active = false;\n\n if (error) {\n while (++index < count && (action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n","import { AnimationFrameAction } from './AnimationFrameAction';\nimport { AnimationFrameScheduler } from './AnimationFrameScheduler';\n\n/**\n *\n * Animation Frame Scheduler\n *\n * Perform task when `window.requestAnimationFrame` would fire\n *\n * When `animationFrame` scheduler is used with delay, it will fall back to {@link asyncScheduler} scheduler\n * behaviour.\n *\n * Without delay, `animationFrame` scheduler can be used to create smooth browser animations.\n * It makes sure scheduled task will happen just before next browser content repaint,\n * thus performing animations as efficiently as possible.\n *\n * ## Example\n * Schedule div height animation\n * ```ts\n * // html:
\n * import { animationFrameScheduler } from 'rxjs';\n *\n * const div = document.querySelector('div');\n *\n * animationFrameScheduler.schedule(function(height) {\n * div.style.height = height + \"px\";\n *\n * this.schedule(height + 1); // `this` references currently executing Action,\n * // which we reschedule with new state\n * }, 0, 0);\n *\n * // You will see a div element growing in height\n * ```\n */\nexport const animationFrameScheduler = new AnimationFrameScheduler(AnimationFrameAction);\n\n/**\n * @deprecated renamed. Use {@link animationFrameScheduler}\n */\nexport const animationFrame = animationFrameScheduler;\n","import { AsyncAction } from './AsyncAction';\nimport { Subscription } from '../Subscription';\nimport { AsyncScheduler } from './AsyncScheduler';\nimport { SchedulerAction } from '../types';\n\nexport class VirtualTimeScheduler extends AsyncScheduler {\n\n protected static frameTimeFactor: number = 10;\n\n public frame: number = 0;\n public index: number = -1;\n\n constructor(SchedulerAction: typeof AsyncAction = VirtualAction as any,\n public maxFrames: number = Number.POSITIVE_INFINITY) {\n super(SchedulerAction, () => this.frame);\n }\n\n /**\n * Prompt the Scheduler to execute all of its queued actions, therefore\n * clearing its queue.\n * @return {void}\n */\n public flush(): void {\n\n const {actions, maxFrames} = this;\n let error: any, action: AsyncAction;\n\n while ((action = actions[0]) && action.delay <= maxFrames) {\n actions.shift();\n this.frame = action.delay;\n\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n }\n\n if (error) {\n while (action = actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @nodoc\n */\nexport class VirtualAction extends AsyncAction {\n\n protected active: boolean = true;\n\n constructor(protected scheduler: VirtualTimeScheduler,\n protected work: (this: SchedulerAction, state?: T) => void,\n protected index: number = scheduler.index += 1) {\n super(scheduler, work);\n this.index = scheduler.index = index;\n }\n\n public schedule(state?: T, delay: number = 0): Subscription {\n if (!this.id) {\n return super.schedule(state, delay);\n }\n this.active = false;\n // If an action is rescheduled, we save allocations by mutating its state,\n // pushing it to the end of the scheduler queue, and recycling the action.\n // But since the VirtualTimeScheduler is used for testing, VirtualActions\n // must be immutable so they can be inspected later.\n const action = new VirtualAction(this.scheduler, this.work);\n this.add(action);\n return action.schedule(state, delay);\n }\n\n protected requestAsyncId(scheduler: VirtualTimeScheduler, id?: any, delay: number = 0): any {\n this.delay = scheduler.frame + delay;\n const {actions} = scheduler;\n actions.push(this);\n (actions as Array>).sort(VirtualAction.sortActions);\n return true;\n }\n\n protected recycleAsyncId(scheduler: VirtualTimeScheduler, id?: any, delay: number = 0): any {\n return undefined;\n }\n\n protected _execute(state: T, delay: number): any {\n if (this.active === true) {\n return super._execute(state, delay);\n }\n }\n\n public static sortActions(a: VirtualAction, b: VirtualAction) {\n if (a.delay === b.delay) {\n if (a.index === b.index) {\n return 0;\n } else if (a.index > b.index) {\n return 1;\n } else {\n return -1;\n }\n } else if (a.delay > b.delay) {\n return 1;\n } else {\n return -1;\n }\n }\n}\n","import { Observable } from '../Observable';\nimport { ObservableInput } from '../types';\n\n/**\n * Tests to see if the object is an RxJS {@link Observable}\n * @param obj the object to test\n */\nexport function isObservable(obj: any): obj is Observable {\n return !!obj && (obj instanceof Observable || (typeof obj.lift === 'function' && typeof obj.subscribe === 'function'));\n}\n","import { SchedulerLike, SchedulerAction } from '../types';\nimport { Observable } from '../Observable';\nimport { AsyncSubject } from '../AsyncSubject';\nimport { Subscriber } from '../Subscriber';\nimport { map } from '../operators/map';\nimport { canReportError } from '../util/canReportError';\nimport { isArray } from '../util/isArray';\nimport { isScheduler } from '../util/isScheduler';\n\n// tslint:disable:max-line-length\n/** @deprecated resultSelector is no longer supported, use a mapping function. */\nexport function bindCallback(callbackFunc: Function, resultSelector: Function, scheduler?: SchedulerLike): (...args: any[]) => Observable;\n\nexport function bindCallback(callbackFunc: (callback: (res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): () => Observable;\nexport function bindCallback(callbackFunc: (callback: (res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): () => Observable<[R1, R2, R3]>;\nexport function bindCallback(callbackFunc: (callback: (res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): () => Observable<[R1, R2]>;\nexport function bindCallback(callbackFunc: (callback: (res1: R1) => any) => any, scheduler?: SchedulerLike): () => Observable;\nexport function bindCallback(callbackFunc: (callback: () => any) => any, scheduler?: SchedulerLike): () => Observable;\n\nexport function bindCallback(callbackFunc: (arg1: A1, callback: (res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (arg1: A1) => Observable;\nexport function bindCallback(callbackFunc: (arg1: A1, callback: (res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): (arg1: A1) => Observable<[R1, R2, R3]>;\nexport function bindCallback(callbackFunc: (arg1: A1, callback: (res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): (arg1: A1) => Observable<[R1, R2]>;\nexport function bindCallback(callbackFunc: (arg1: A1, callback: (res1: R1) => any) => any, scheduler?: SchedulerLike): (arg1: A1) => Observable;\nexport function bindCallback(callbackFunc: (arg1: A1, callback: () => any) => any, scheduler?: SchedulerLike): (arg1: A1) => Observable;\n\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, callback: (res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2) => Observable;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, callback: (res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2) => Observable<[R1, R2, R3]>;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, callback: (res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2) => Observable<[R1, R2]>;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, callback: (res1: R1) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2) => Observable;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, callback: () => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2) => Observable;\n\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, callback: (res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3) => Observable;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, callback: (res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3) => Observable<[R1, R2, R3]>;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, callback: (res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3) => Observable<[R1, R2]>;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, callback: (res1: R1) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3) => Observable;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, callback: () => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3) => Observable;\n\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: (res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4) => Observable;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: (res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4) => Observable<[R1, R2, R3]>;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: (res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4) => Observable<[R1, R2]>;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: (res1: R1) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4) => Observable;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: () => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4) => Observable;\n\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: (res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5) => Observable;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: (res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5) => Observable<[R1, R2, R3]>;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: (res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5) => Observable<[R1, R2]>;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: (res1: R1) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5) => Observable;\nexport function bindCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: () => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5) => Observable;\n\nexport function bindCallback(callbackFunc: (...args: Array any)>) => any, scheduler?: SchedulerLike): (...args: A[]) => Observable;\nexport function bindCallback(callbackFunc: (...args: Array any)>) => any, scheduler?: SchedulerLike): (...args: A[]) => Observable;\n\nexport function bindCallback(callbackFunc: Function, scheduler?: SchedulerLike): (...args: any[]) => Observable;\n\n// tslint:enable:max-line-length\n\n/**\n * Converts a callback API to a function that returns an Observable.\n *\n * Give it a function `f` of type `f(x, callback)` and\n * it will return a function `g` that when called as `g(x)` will output an\n * Observable.\n *\n * `bindCallback` is not an operator because its input and output are not\n * Observables. The input is a function `func` with some parameters. The\n * last parameter must be a callback function that `func` calls when it is\n * done.\n *\n * The output of `bindCallback` is a function that takes the same parameters\n * as `func`, except the last one (the callback). When the output function\n * is called with arguments it will return an Observable. If function `func`\n * calls its callback with one argument, the Observable will emit that value.\n * If on the other hand the callback is called with multiple values the resulting\n * Observable will emit an array with said values as arguments.\n *\n * It is **very important** to remember that input function `func` is not called\n * when the output function is, but rather when the Observable returned by the output\n * function is subscribed. This means if `func` makes an AJAX request, that request\n * will be made every time someone subscribes to the resulting Observable, but not before.\n *\n * The last optional parameter - `scheduler` - can be used to control when the call\n * to `func` happens after someone subscribes to Observable, as well as when results\n * passed to callback will be emitted. By default, the subscription to an Observable calls `func`\n * synchronously, but using {@link asyncScheduler} as the last parameter will defer the call to `func`,\n * just like wrapping the call in `setTimeout` with a timeout of `0` would. If you were to use the async Scheduler\n * and call `subscribe` on the output Observable, all function calls that are currently executing\n * will end before `func` is invoked.\n *\n * By default, results passed to the callback are emitted immediately after `func` invokes the callback.\n * In particular, if the callback is called synchronously, then the subscription of the resulting Observable\n * will call the `next` function synchronously as well. If you want to defer that call,\n * you may use {@link asyncScheduler} just as before. This means that by using `Scheduler.async` you can\n * ensure that `func` always calls its callback asynchronously, thus avoiding terrifying Zalgo.\n *\n * Note that the Observable created by the output function will always emit a single value\n * and then complete immediately. If `func` calls the callback multiple times, values from subsequent\n * calls will not appear in the stream. If you need to listen for multiple calls,\n * you probably want to use {@link fromEvent} or {@link fromEventPattern} instead.\n *\n * If `func` depends on some context (`this` property) and is not already bound, the context of `func`\n * will be the context that the output function has at call time. In particular, if `func`\n * is called as a method of some objec and if `func` is not already bound, in order to preserve the context\n * it is recommended that the context of the output function is set to that object as well.\n *\n * If the input function calls its callback in the \"node style\" (i.e. first argument to callback is\n * optional error parameter signaling whether the call failed or not), {@link bindNodeCallback}\n * provides convenient error handling and probably is a better choice.\n * `bindCallback` will treat such functions the same as any other and error parameters\n * (whether passed or not) will always be interpreted as regular callback argument.\n *\n * ## Examples\n *\n * ### Convert jQuery's getJSON to an Observable API\n * ```ts\n * import { bindCallback } from 'rxjs';\n * import * as jQuery from 'jquery';\n *\n * // Suppose we have jQuery.getJSON('/my/url', callback)\n * const getJSONAsObservable = bindCallback(jQuery.getJSON);\n * const result = getJSONAsObservable('/my/url');\n * result.subscribe(x => console.log(x), e => console.error(e));\n * ```\n *\n * ### Receive an array of arguments passed to a callback\n * ```ts\n * import { bindCallback } from 'rxjs';\n *\n * const someFunction = (a, b, c) => {\n * console.log(a); // 5\n * console.log(b); // 'some string'\n * console.log(c); // {someProperty: 'someValue'}\n * };\n *\n * const boundSomeFunction = bindCallback(someFunction);\n * boundSomeFunction().subscribe(values => {\n * console.log(values) // [5, 'some string', {someProperty: 'someValue'}]\n * });\n * ```\n *\n * ### Compare behaviour with and without async Scheduler\n * ```ts\n * import { bindCallback } from 'rxjs';\n *\n * function iCallMyCallbackSynchronously(cb) {\n * cb();\n * }\n *\n * const boundSyncFn = bindCallback(iCallMyCallbackSynchronously);\n * const boundAsyncFn = bindCallback(iCallMyCallbackSynchronously, null, Rx.Scheduler.async);\n *\n * boundSyncFn().subscribe(() => console.log('I was sync!'));\n * boundAsyncFn().subscribe(() => console.log('I was async!'));\n * console.log('This happened...');\n *\n * // Logs:\n * // I was sync!\n * // This happened...\n * // I was async!\n * ```\n *\n * ### Use bindCallback on an object method\n * ```ts\n * import { bindCallback } from 'rxjs';\n *\n * const boundMethod = bindCallback(someObject.methodWithCallback);\n * boundMethod.call(someObject) // make sure methodWithCallback has access to someObject\n * .subscribe(subscriber);\n * ```\n *\n * @see {@link bindNodeCallback}\n * @see {@link from}\n *\n * @param {function} func A function with a callback as the last parameter.\n * @param {SchedulerLike} [scheduler] The scheduler on which to schedule the\n * callbacks.\n * @return {function(...params: *): Observable} A function which returns the\n * Observable that delivers the same values the callback would deliver.\n * @name bindCallback\n */\nexport function bindCallback(\n callbackFunc: Function,\n resultSelector?: Function|SchedulerLike,\n scheduler?: SchedulerLike\n): (...args: any[]) => Observable {\n if (resultSelector) {\n if (isScheduler(resultSelector)) {\n scheduler = resultSelector;\n } else {\n // DEPRECATED PATH\n return (...args: any[]) => bindCallback(callbackFunc, scheduler)(...args).pipe(\n map((args) => isArray(args) ? resultSelector(...args) : resultSelector(args)),\n );\n }\n }\n\n return function (this: any, ...args: any[]): Observable {\n const context = this;\n let subject: AsyncSubject;\n const params = {\n context,\n subject,\n callbackFunc,\n scheduler,\n };\n return new Observable(subscriber => {\n if (!scheduler) {\n if (!subject) {\n subject = new AsyncSubject();\n const handler = (...innerArgs: any[]) => {\n subject.next(innerArgs.length <= 1 ? innerArgs[0] : innerArgs);\n subject.complete();\n };\n\n try {\n callbackFunc.apply(context, [...args, handler]);\n } catch (err) {\n if (canReportError(subject)) {\n subject.error(err);\n } else {\n console.warn(err);\n }\n }\n }\n return subject.subscribe(subscriber);\n } else {\n const state: DispatchState = {\n args, subscriber, params,\n };\n return scheduler.schedule>(dispatch, 0, state);\n }\n });\n };\n}\n\ninterface DispatchState {\n args: any[];\n subscriber: Subscriber;\n params: ParamsContext;\n}\n\ninterface ParamsContext {\n callbackFunc: Function;\n scheduler: SchedulerLike;\n context: any;\n subject: AsyncSubject;\n}\n\nfunction dispatch(this: SchedulerAction>, state: DispatchState) {\n const self = this;\n const { args, subscriber, params } = state;\n const { callbackFunc, context, scheduler } = params;\n let { subject } = params;\n if (!subject) {\n subject = params.subject = new AsyncSubject();\n\n const handler = (...innerArgs: any[]) => {\n const value = innerArgs.length <= 1 ? innerArgs[0] : innerArgs;\n this.add(scheduler.schedule>(dispatchNext, 0, { value, subject }));\n };\n\n try {\n callbackFunc.apply(context, [...args, handler]);\n } catch (err) {\n subject.error(err);\n }\n }\n\n this.add(subject.subscribe(subscriber));\n}\n\ninterface NextState {\n subject: AsyncSubject;\n value: T;\n}\n\nfunction dispatchNext(this: SchedulerAction>, state: NextState) {\n const { value, subject } = state;\n subject.next(value);\n subject.complete();\n}\n\ninterface ErrorState {\n subject: AsyncSubject;\n err: any;\n}\n\nfunction dispatchError(this: SchedulerAction>, state: ErrorState) {\n const { err, subject } = state;\n subject.error(err);\n}\n","import { Observable } from '../Observable';\nimport { AsyncSubject } from '../AsyncSubject';\nimport { Subscriber } from '../Subscriber';\nimport { SchedulerAction, SchedulerLike } from '../types';\nimport { map } from '../operators/map';\nimport { canReportError } from '../util/canReportError';\nimport { isScheduler } from '../util/isScheduler';\nimport { isArray } from '../util/isArray';\n\n/* tslint:disable:max-line-length */\n/** @deprecated resultSelector is deprecated, pipe to map instead */\nexport function bindNodeCallback(callbackFunc: Function, resultSelector: Function, scheduler?: SchedulerLike): (...args: any[]) => Observable;\n\nexport function bindNodeCallback(callbackFunc: (callback: (err: any, res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (...args: any[]) => Observable;\nexport function bindNodeCallback(callbackFunc: (callback: (err: any, res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): () => Observable<[R1, R2, R3]>;\nexport function bindNodeCallback(callbackFunc: (callback: (err: any, res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): () => Observable<[R1, R2]>;\nexport function bindNodeCallback(callbackFunc: (callback: (err: any, res1: R1) => any) => any, scheduler?: SchedulerLike): () => Observable;\nexport function bindNodeCallback(callbackFunc: (callback: (err: any) => any) => any, scheduler?: SchedulerLike): () => Observable;\n\nexport function bindNodeCallback(callbackFunc: (arg1: A1, callback: (err: any, res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (...args: any[]) => Observable;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, callback: (err: any, res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): (arg1: A1) => Observable<[R1, R2, R3]>;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, callback: (err: any, res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): (arg1: A1) => Observable<[R1, R2]>;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, callback: (err: any, res1: R1) => any) => any, scheduler?: SchedulerLike): (arg1: A1) => Observable;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, callback: (err: any) => any) => any, scheduler?: SchedulerLike): (arg1: A1) => Observable;\n\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, callback: (err: any, res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (...args: any[]) => Observable;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, callback: (err: any, res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2) => Observable<[R1, R2, R3]>;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, callback: (err: any, res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2) => Observable<[R1, R2]>;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, callback: (err: any, res1: R1) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2) => Observable;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, callback: (err: any) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2) => Observable;\n\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, callback: (err: any, res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (...args: any[]) => Observable;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, callback: (err: any, res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3) => Observable<[R1, R2, R3]>;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, callback: (err: any, res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3) => Observable<[R1, R2]>;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, callback: (err: any, res1: R1) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3) => Observable;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, callback: (err: any) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3) => Observable;\n\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: (err: any, res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (...args: any[]) => Observable;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: (err: any, res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4) => Observable<[R1, R2, R3]>;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: (err: any, res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4) => Observable<[R1, R2]>;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: (err: any, res1: R1) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4) => Observable;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: (err: any) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4) => Observable;\n\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: (err: any, res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (...args: any[]) => Observable;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: (err: any, res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5) => Observable<[R1, R2, R3]>;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: (err: any, res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5) => Observable<[R1, R2]>;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: (err: any, res1: R1) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5) => Observable;\nexport function bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: (err: any) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5) => Observable; /* tslint:enable:max-line-length */\n\nexport function bindNodeCallback(callbackFunc: Function, scheduler?: SchedulerLike): (...args: any[]) => Observable;\n/**\n * Converts a Node.js-style callback API to a function that returns an\n * Observable.\n *\n * It's just like {@link bindCallback}, but the\n * callback is expected to be of type `callback(error, result)`.\n *\n * `bindNodeCallback` is not an operator because its input and output are not\n * Observables. The input is a function `func` with some parameters, but the\n * last parameter must be a callback function that `func` calls when it is\n * done. The callback function is expected to follow Node.js conventions,\n * where the first argument to the callback is an error object, signaling\n * whether call was successful. If that object is passed to callback, it means\n * something went wrong.\n *\n * The output of `bindNodeCallback` is a function that takes the same\n * parameters as `func`, except the last one (the callback). When the output\n * function is called with arguments, it will return an Observable.\n * If `func` calls its callback with error parameter present, Observable will\n * error with that value as well. If error parameter is not passed, Observable will emit\n * second parameter. If there are more parameters (third and so on),\n * Observable will emit an array with all arguments, except first error argument.\n *\n * Note that `func` will not be called at the same time output function is,\n * but rather whenever resulting Observable is subscribed. By default call to\n * `func` will happen synchronously after subscription, but that can be changed\n * with proper `scheduler` provided as optional third parameter. {@link SchedulerLike}\n * can also control when values from callback will be emitted by Observable.\n * To find out more, check out documentation for {@link bindCallback}, where\n * {@link SchedulerLike} works exactly the same.\n *\n * As in {@link bindCallback}, context (`this` property) of input function will be set to context\n * of returned function, when it is called.\n *\n * After Observable emits value, it will complete immediately. This means\n * even if `func` calls callback again, values from second and consecutive\n * calls will never appear on the stream. If you need to handle functions\n * that call callbacks multiple times, check out {@link fromEvent} or\n * {@link fromEventPattern} instead.\n *\n * Note that `bindNodeCallback` can be used in non-Node.js environments as well.\n * \"Node.js-style\" callbacks are just a convention, so if you write for\n * browsers or any other environment and API you use implements that callback style,\n * `bindNodeCallback` can be safely used on that API functions as well.\n *\n * Remember that Error object passed to callback does not have to be an instance\n * of JavaScript built-in `Error` object. In fact, it does not even have to an object.\n * Error parameter of callback function is interpreted as \"present\", when value\n * of that parameter is truthy. It could be, for example, non-zero number, non-empty\n * string or boolean `true`. In all of these cases resulting Observable would error\n * with that value. This means usually regular style callbacks will fail very often when\n * `bindNodeCallback` is used. If your Observable errors much more often then you\n * would expect, check if callback really is called in Node.js-style and, if not,\n * switch to {@link bindCallback} instead.\n *\n * Note that even if error parameter is technically present in callback, but its value\n * is falsy, it still won't appear in array emitted by Observable.\n *\n * ## Examples\n * ### Read a file from the filesystem and get the data as an Observable\n * ```ts\n * import * as fs from 'fs';\n * const readFileAsObservable = bindNodeCallback(fs.readFile);\n * const result = readFileAsObservable('./roadNames.txt', 'utf8');\n * result.subscribe(x => console.log(x), e => console.error(e));\n * ```\n *\n * ### Use on function calling callback with multiple arguments\n * ```ts\n * someFunction((err, a, b) => {\n * console.log(err); // null\n * console.log(a); // 5\n * console.log(b); // \"some string\"\n * });\n * const boundSomeFunction = bindNodeCallback(someFunction);\n * boundSomeFunction()\n * .subscribe(value => {\n * console.log(value); // [5, \"some string\"]\n * });\n * ```\n *\n * ### Use on function calling callback in regular style\n * ```ts\n * someFunction(a => {\n * console.log(a); // 5\n * });\n * const boundSomeFunction = bindNodeCallback(someFunction);\n * boundSomeFunction()\n * .subscribe(\n * value => {} // never gets called\n * err => console.log(err) // 5\n * );\n * ```\n *\n * @see {@link bindCallback}\n * @see {@link from}\n *\n * @param {function} func Function with a Node.js-style callback as the last parameter.\n * @param {SchedulerLike} [scheduler] The scheduler on which to schedule the\n * callbacks.\n * @return {function(...params: *): Observable} A function which returns the\n * Observable that delivers the same values the Node.js callback would\n * deliver.\n * @name bindNodeCallback\n */\nexport function bindNodeCallback(\n callbackFunc: Function,\n resultSelector: Function|SchedulerLike,\n scheduler?: SchedulerLike\n): (...args: any[]) => Observable {\n\n if (resultSelector) {\n if (isScheduler(resultSelector)) {\n scheduler = resultSelector;\n } else {\n // DEPRECATED PATH\n return (...args: any[]) => bindNodeCallback(callbackFunc, scheduler)(...args).pipe(\n map(args => isArray(args) ? resultSelector(...args) : resultSelector(args))\n );\n }\n }\n\n return function(this: any, ...args: any[]): Observable {\n const params: ParamsState = {\n subject: undefined,\n args,\n callbackFunc,\n scheduler,\n context: this,\n };\n return new Observable(subscriber => {\n const { context } = params;\n let { subject } = params;\n if (!scheduler) {\n if (!subject) {\n subject = params.subject = new AsyncSubject();\n const handler = (...innerArgs: any[]) => {\n const err = innerArgs.shift();\n\n if (err) {\n subject.error(err);\n return;\n }\n\n subject.next(innerArgs.length <= 1 ? innerArgs[0] : innerArgs);\n subject.complete();\n };\n\n try {\n callbackFunc.apply(context, [...args, handler]);\n } catch (err) {\n if (canReportError(subject)) {\n subject.error(err);\n } else {\n console.warn(err);\n }\n }\n }\n return subject.subscribe(subscriber);\n } else {\n return scheduler.schedule>(dispatch, 0, { params, subscriber, context });\n }\n });\n };\n}\n\ninterface DispatchState {\n subscriber: Subscriber;\n context: any;\n params: ParamsState;\n}\n\ninterface ParamsState {\n callbackFunc: Function;\n args: any[];\n scheduler: SchedulerLike;\n subject: AsyncSubject;\n context: any;\n}\n\nfunction dispatch(this: SchedulerAction>, state: DispatchState) {\n const { params, subscriber, context } = state;\n const { callbackFunc, args, scheduler } = params;\n let subject = params.subject;\n\n if (!subject) {\n subject = params.subject = new AsyncSubject();\n\n const handler = (...innerArgs: any[]) => {\n const err = innerArgs.shift();\n if (err) {\n this.add(scheduler.schedule>(dispatchError, 0, { err, subject }));\n } else {\n const value = innerArgs.length <= 1 ? innerArgs[0] : innerArgs;\n this.add(scheduler.schedule>(dispatchNext, 0, { value, subject }));\n }\n };\n\n try {\n callbackFunc.apply(context, [...args, handler]);\n } catch (err) {\n this.add(scheduler.schedule>(dispatchError, 0, { err, subject }));\n }\n }\n\n this.add(subject.subscribe(subscriber));\n}\n\ninterface DispatchNextArg {\n subject: AsyncSubject;\n value: T;\n}\n\nfunction dispatchNext(arg: DispatchNextArg) {\n const { value, subject } = arg;\n subject.next(value);\n subject.complete();\n}\n\ninterface DispatchErrorArg {\n subject: AsyncSubject;\n err: any;\n}\n\nfunction dispatchError(arg: DispatchErrorArg) {\n const { err, subject } = arg;\n subject.error(err);\n}\n","import { Observable } from '../Observable';\nimport { ObservableInput, ObservedValuesFromArray, ObservedValueOf, SubscribableOrPromise } from '../types';\nimport { isArray } from '../util/isArray';\nimport { map } from '../operators/map';\nimport { isObject } from '../util/isObject';\nimport { isObservable } from '../util/isObservable';\nimport { from } from './from';\n\n/* tslint:disable:max-line-length */\n\n// forkJoin(a$, b$, c$)\n/** @deprecated Use the version that takes an array of Observables instead */\nexport function forkJoin(v1: SubscribableOrPromise): Observable<[T]>;\n/** @deprecated Use the version that takes an array of Observables instead */\nexport function forkJoin(v1: ObservableInput, v2: ObservableInput): Observable<[T, T2]>;\n/** @deprecated Use the version that takes an array of Observables instead */\nexport function forkJoin(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput): Observable<[T, T2, T3]>;\n/** @deprecated Use the version that takes an array of Observables instead */\nexport function forkJoin(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput): Observable<[T, T2, T3, T4]>;\n/** @deprecated Use the version that takes an array of Observables instead */\nexport function forkJoin(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput): Observable<[T, T2, T3, T4, T5]>;\n/** @deprecated Use the version that takes an array of Observables instead */\nexport function forkJoin(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput): Observable<[T, T2, T3, T4, T5, T6]>;\n\n// forkJoin([a$, b$, c$]);\n// TODO(benlesh): Uncomment for TS 3.0\n// export function forkJoin(sources: []): Observable;\nexport function forkJoin(sources: [ObservableInput]): Observable<[A]>;\nexport function forkJoin(sources: [ObservableInput, ObservableInput]): Observable<[A, B]>;\nexport function forkJoin(sources: [ObservableInput, ObservableInput, ObservableInput]): Observable<[A, B, C]>;\nexport function forkJoin(sources: [ObservableInput, ObservableInput, ObservableInput, ObservableInput]): Observable<[A, B, C, D]>;\nexport function forkJoin(sources: [ObservableInput, ObservableInput, ObservableInput, ObservableInput, ObservableInput]): Observable<[A, B, C, D, E]>;\nexport function forkJoin(sources: [ObservableInput, ObservableInput, ObservableInput, ObservableInput, ObservableInput, ObservableInput]): Observable<[A, B, C, D, E, F]>;\nexport function forkJoin[]>(sources: A): Observable[]>;\n\n// forkJoin({})\nexport function forkJoin(sourcesObject: {}): Observable;\nexport function forkJoin(sourcesObject: T): Observable<{ [K in keyof T]: ObservedValueOf }>;\n\n/** @deprecated resultSelector is deprecated, pipe to map instead */\nexport function forkJoin(...args: Array|Function>): Observable;\n/** @deprecated Use the version that takes an array of Observables instead */\nexport function forkJoin(...sources: ObservableInput[]): Observable;\n/* tslint:enable:max-line-length */\n\n/**\n * Accepts an `Array` of {@link ObservableInput} or a dictionary `Object` of {@link ObservableInput} and returns\n * an {@link Observable} that emits either an array of values in the exact same order as the passed array,\n * or a dictionary of values in the same shape as the passed dictionary.\n *\n * Wait for Observables to complete and then combine last values they emitted.\n *\n * ![](forkJoin.png)\n *\n * `forkJoin` is an operator that takes any number of input observables which can be passed either as an array\n * or a dictionary of input observables. If no input observables are provided, resulting stream will complete\n * immediately.\n *\n * `forkJoin` will wait for all passed observables to complete and then it will emit an array or an object with last\n * values from corresponding observables.\n *\n * If you pass an array of `n` observables to the operator, resulting\n * array will have `n` values, where first value is the last thing emitted by the first observable,\n * second value is the last thing emitted by the second observable and so on.\n *\n * If you pass a dictionary of observables to the operator, resulting\n * objects will have the same keys as the dictionary passed, with their last values they've emitted\n * located at the corresponding key.\n *\n * That means `forkJoin` will not emit more than once and it will complete after that. If you need to emit combined\n * values not only at the end of lifecycle of passed observables, but also throughout it, try out {@link combineLatest}\n * or {@link zip} instead.\n *\n * In order for resulting array to have the same length as the number of input observables, whenever any of\n * that observables completes without emitting any value, `forkJoin` will complete at that moment as well\n * and it will not emit anything either, even if it already has some last values from other observables.\n * Conversely, if there is an observable that never completes, `forkJoin` will never complete as well,\n * unless at any point some other observable completes without emitting value, which brings us back to\n * the previous case. Overall, in order for `forkJoin` to emit a value, all observables passed as arguments\n * have to emit something at least once and complete.\n *\n * If any input observable errors at some point, `forkJoin` will error as well and all other observables\n * will be immediately unsubscribed.\n *\n * Optionally `forkJoin` accepts project function, that will be called with values which normally\n * would land in emitted array. Whatever is returned by project function, will appear in output\n * observable instead. This means that default project can be thought of as a function that takes\n * all its arguments and puts them into an array. Note that project function will be called only\n * when output observable is supposed to emit a result.\n *\n * ## Examples\n *\n * ### Use forkJoin with a dictionary of observable inputs\n * ```ts\n * import { forkJoin, of, timer } from 'rxjs';\n *\n * const observable = forkJoin({\n * foo: of(1, 2, 3, 4),\n * bar: Promise.resolve(8),\n * baz: timer(4000),\n * });\n * observable.subscribe({\n * next: value => console.log(value),\n * complete: () => console.log('This is how it ends!'),\n * });\n *\n * // Logs:\n * // { foo: 4, bar: 8, baz: 0 } after 4 seconds\n * // \"This is how it ends!\" immediately after\n * ```\n *\n * ### Use forkJoin with an array of observable inputs\n * ```ts\n * import { forkJoin, of } from 'rxjs';\n *\n * const observable = forkJoin([\n * of(1, 2, 3, 4),\n * Promise.resolve(8),\n * timer(4000),\n * ]);\n * observable.subscribe({\n * next: value => console.log(value),\n * complete: () => console.log('This is how it ends!'),\n * });\n *\n * // Logs:\n * // [4, 8, 0] after 4 seconds\n * // \"This is how it ends!\" immediately after\n * ```\n *\n * @see {@link combineLatest}\n * @see {@link zip}\n *\n * @param {...ObservableInput} sources Any number of Observables provided either as an array or as an arguments\n * passed directly to the operator.\n * @param {function} [project] Function that takes values emitted by input Observables and returns value\n * that will appear in resulting Observable instead of default array.\n * @return {Observable} Observable emitting either an array of last values emitted by passed Observables\n * or value from project function.\n */\nexport function forkJoin(\n ...sources: any[]\n): Observable {\n if (sources.length === 1) {\n const first = sources[0];\n if (isArray(first)) {\n return forkJoinInternal(first, null);\n }\n // TODO(benlesh): isObservable check will not be necessary when deprecated path is removed.\n if (isObject(first) && Object.getPrototypeOf(first) === Object.prototype) {\n const keys = Object.keys(first);\n return forkJoinInternal(keys.map(key => first[key]), keys);\n }\n }\n\n // DEPRECATED PATHS BELOW HERE\n if (typeof sources[sources.length - 1] === 'function') {\n const resultSelector = sources.pop() as Function;\n sources = (sources.length === 1 && isArray(sources[0])) ? sources[0] : sources;\n return forkJoinInternal(sources, null).pipe(\n map((args: any[]) => resultSelector(...args))\n );\n }\n\n return forkJoinInternal(sources, null);\n}\n\nfunction forkJoinInternal(sources: ObservableInput[], keys: string[] | null): Observable {\n return new Observable(subscriber => {\n const len = sources.length;\n if (len === 0) {\n subscriber.complete();\n return;\n }\n const values = new Array(len);\n let completed = 0;\n let emitted = 0;\n for (let i = 0; i < len; i++) {\n const source = from(sources[i]);\n let hasValue = false;\n subscriber.add(source.subscribe({\n next: value => {\n if (!hasValue) {\n hasValue = true;\n emitted++;\n }\n values[i] = value;\n },\n error: err => subscriber.error(err),\n complete: () => {\n completed++;\n if (completed === len || !hasValue) {\n if (emitted === len) {\n subscriber.next(keys ?\n keys.reduce((result, key, i) => (result[key] = values[i], result), {}) :\n values);\n }\n subscriber.complete();\n }\n }\n }));\n }\n });\n}\n","import { Observable } from '../Observable';\nimport { isArray } from '../util/isArray';\nimport { isFunction } from '../util/isFunction';\nimport { Subscriber } from '../Subscriber';\nimport { map } from '../operators/map';\n\nconst toString: Function = (() => Object.prototype.toString)();\n\nexport interface NodeStyleEventEmitter {\n addListener: (eventName: string | symbol, handler: NodeEventHandler) => this;\n removeListener: (eventName: string | symbol, handler: NodeEventHandler) => this;\n}\n\nexport type NodeEventHandler = (...args: any[]) => void;\n\n// For APIs that implement `addListener` and `removeListener` methods that may\n// not use the same arguments or return EventEmitter values\n// such as React Native\nexport interface NodeCompatibleEventEmitter {\n addListener: (eventName: string, handler: NodeEventHandler) => void | {};\n removeListener: (eventName: string, handler: NodeEventHandler) => void | {};\n}\n\nexport interface JQueryStyleEventEmitter {\n on: (eventName: string, handler: Function) => void;\n off: (eventName: string, handler: Function) => void;\n}\n\nexport interface HasEventTargetAddRemove {\n addEventListener(type: string, listener: ((evt: E) => void) | null, options?: boolean | AddEventListenerOptions): void;\n removeEventListener(type: string, listener?: ((evt: E) => void) | null, options?: EventListenerOptions | boolean): void;\n}\n\nexport type EventTargetLike = HasEventTargetAddRemove | NodeStyleEventEmitter | NodeCompatibleEventEmitter | JQueryStyleEventEmitter;\n\nexport type FromEventTarget = EventTargetLike | ArrayLike>;\n\nexport interface EventListenerOptions {\n capture?: boolean;\n passive?: boolean;\n once?: boolean;\n}\n\nexport interface AddEventListenerOptions extends EventListenerOptions {\n once?: boolean;\n passive?: boolean;\n}\n\n/* tslint:disable:max-line-length */\nexport function fromEvent(target: FromEventTarget, eventName: string): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function fromEvent(target: FromEventTarget, eventName: string, resultSelector: (...args: any[]) => T): Observable;\nexport function fromEvent(target: FromEventTarget, eventName: string, options: EventListenerOptions): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function fromEvent(target: FromEventTarget, eventName: string, options: EventListenerOptions, resultSelector: (...args: any[]) => T): Observable;\n/* tslint:enable:max-line-length */\n\n/**\n * Creates an Observable that emits events of a specific type coming from the\n * given event target.\n *\n * Creates an Observable from DOM events, or Node.js\n * EventEmitter events or others.\n *\n * ![](fromEvent.png)\n *\n * `fromEvent` accepts as a first argument event target, which is an object with methods\n * for registering event handler functions. As a second argument it takes string that indicates\n * type of event we want to listen for. `fromEvent` supports selected types of event targets,\n * which are described in detail below. If your event target does not match any of the ones listed,\n * you should use {@link fromEventPattern}, which can be used on arbitrary APIs.\n * When it comes to APIs supported by `fromEvent`, their methods for adding and removing event\n * handler functions have different names, but they all accept a string describing event type\n * and function itself, which will be called whenever said event happens.\n *\n * Every time resulting Observable is subscribed, event handler function will be registered\n * to event target on given event type. When that event fires, value\n * passed as a first argument to registered function will be emitted by output Observable.\n * When Observable is unsubscribed, function will be unregistered from event target.\n *\n * Note that if event target calls registered function with more than one argument, second\n * and following arguments will not appear in resulting stream. In order to get access to them,\n * you can pass to `fromEvent` optional project function, which will be called with all arguments\n * passed to event handler. Output Observable will then emit value returned by project function,\n * instead of the usual value.\n *\n * Remember that event targets listed below are checked via duck typing. It means that\n * no matter what kind of object you have and no matter what environment you work in,\n * you can safely use `fromEvent` on that object if it exposes described methods (provided\n * of course they behave as was described above). So for example if Node.js library exposes\n * event target which has the same method names as DOM EventTarget, `fromEvent` is still\n * a good choice.\n *\n * If the API you use is more callback then event handler oriented (subscribed\n * callback function fires only once and thus there is no need to manually\n * unregister it), you should use {@link bindCallback} or {@link bindNodeCallback}\n * instead.\n *\n * `fromEvent` supports following types of event targets:\n *\n * **DOM EventTarget**\n *\n * This is an object with `addEventListener` and `removeEventListener` methods.\n *\n * In the browser, `addEventListener` accepts - apart from event type string and event\n * handler function arguments - optional third parameter, which is either an object or boolean,\n * both used for additional configuration how and when passed function will be called. When\n * `fromEvent` is used with event target of that type, you can provide this values\n * as third parameter as well.\n *\n * **Node.js EventEmitter**\n *\n * An object with `addListener` and `removeListener` methods.\n *\n * **JQuery-style event target**\n *\n * An object with `on` and `off` methods\n *\n * **DOM NodeList**\n *\n * List of DOM Nodes, returned for example by `document.querySelectorAll` or `Node.childNodes`.\n *\n * Although this collection is not event target in itself, `fromEvent` will iterate over all Nodes\n * it contains and install event handler function in every of them. When returned Observable\n * is unsubscribed, function will be removed from all Nodes.\n *\n * **DOM HtmlCollection**\n *\n * Just as in case of NodeList it is a collection of DOM nodes. Here as well event handler function is\n * installed and removed in each of elements.\n *\n *\n * ## Examples\n * ### Emits clicks happening on the DOM document\n * ```ts\n * import { fromEvent } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * clicks.subscribe(x => console.log(x));\n *\n * // Results in:\n * // MouseEvent object logged to console every time a click\n * // occurs on the document.\n * ```\n *\n * ### Use addEventListener with capture option\n * ```ts\n * import { fromEvent } from 'rxjs';\n *\n * const clicksInDocument = fromEvent(document, 'click', true); // note optional configuration parameter\n * // which will be passed to addEventListener\n * const clicksInDiv = fromEvent(someDivInDocument, 'click');\n *\n * clicksInDocument.subscribe(() => console.log('document'));\n * clicksInDiv.subscribe(() => console.log('div'));\n *\n * // By default events bubble UP in DOM tree, so normally\n * // when we would click on div in document\n * // \"div\" would be logged first and then \"document\".\n * // Since we specified optional `capture` option, document\n * // will catch event when it goes DOWN DOM tree, so console\n * // will log \"document\" and then \"div\".\n * ```\n *\n * @see {@link bindCallback}\n * @see {@link bindNodeCallback}\n * @see {@link fromEventPattern}\n *\n * @param {FromEventTarget} target The DOM EventTarget, Node.js\n * EventEmitter, JQuery-like event target, NodeList or HTMLCollection to attach the event handler to.\n * @param {string} eventName The event name of interest, being emitted by the\n * `target`.\n * @param {EventListenerOptions} [options] Options to pass through to addEventListener\n * @return {Observable}\n * @name fromEvent\n */\nexport function fromEvent(\n target: FromEventTarget,\n eventName: string,\n options?: EventListenerOptions | ((...args: any[]) => T),\n resultSelector?: ((...args: any[]) => T)\n): Observable {\n\n if (isFunction(options)) {\n // DEPRECATED PATH\n resultSelector = options;\n options = undefined;\n }\n if (resultSelector) {\n // DEPRECATED PATH\n return fromEvent(target, eventName, options).pipe(\n map(args => isArray(args) ? resultSelector(...args) : resultSelector(args))\n );\n }\n\n return new Observable(subscriber => {\n function handler(e: T) {\n if (arguments.length > 1) {\n subscriber.next(Array.prototype.slice.call(arguments));\n } else {\n subscriber.next(e);\n }\n }\n setupSubscription(target, eventName, handler, subscriber, options as EventListenerOptions);\n });\n}\n\nfunction setupSubscription(sourceObj: FromEventTarget, eventName: string,\n handler: (...args: any[]) => void, subscriber: Subscriber,\n options?: EventListenerOptions) {\n let unsubscribe: () => void;\n if (isEventTarget(sourceObj)) {\n const source = sourceObj;\n sourceObj.addEventListener(eventName, handler, options);\n unsubscribe = () => source.removeEventListener(eventName, handler, options);\n } else if (isJQueryStyleEventEmitter(sourceObj)) {\n const source = sourceObj;\n sourceObj.on(eventName, handler);\n unsubscribe = () => source.off(eventName, handler);\n } else if (isNodeStyleEventEmitter(sourceObj)) {\n const source = sourceObj;\n sourceObj.addListener(eventName, handler as NodeEventHandler);\n unsubscribe = () => source.removeListener(eventName, handler as NodeEventHandler);\n } else if (sourceObj && (sourceObj as any).length) {\n for (let i = 0, len = (sourceObj as any).length; i < len; i++) {\n setupSubscription(sourceObj[i], eventName, handler, subscriber, options);\n }\n } else {\n throw new TypeError('Invalid event target');\n }\n\n subscriber.add(unsubscribe);\n}\n\nfunction isNodeStyleEventEmitter(sourceObj: any): sourceObj is NodeStyleEventEmitter {\n return sourceObj && typeof sourceObj.addListener === 'function' && typeof sourceObj.removeListener === 'function';\n}\n\nfunction isJQueryStyleEventEmitter(sourceObj: any): sourceObj is JQueryStyleEventEmitter {\n return sourceObj && typeof sourceObj.on === 'function' && typeof sourceObj.off === 'function';\n}\n\nfunction isEventTarget(sourceObj: any): sourceObj is HasEventTargetAddRemove {\n return sourceObj && typeof sourceObj.addEventListener === 'function' && typeof sourceObj.removeEventListener === 'function';\n}\n","import { Observable } from '../Observable';\nimport { isArray } from '../util/isArray';\nimport { isFunction } from '../util/isFunction';\nimport { NodeEventHandler } from './fromEvent';\nimport { map } from '../operators/map';\n\n/* tslint:disable:max-line-length */\nexport function fromEventPattern(addHandler: (handler: NodeEventHandler) => any, removeHandler?: (handler: NodeEventHandler, signal?: any) => void): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function fromEventPattern(addHandler: (handler: NodeEventHandler) => any, removeHandler?: (handler: NodeEventHandler, signal?: any) => void, resultSelector?: (...args: any[]) => T): Observable;\n/* tslint:enable:max-line-length */\n\n/**\n * Creates an Observable from an arbitrary API for registering event handlers.\n *\n * When that method for adding event handler was something {@link fromEvent}\n * was not prepared for.\n *\n * ![](fromEventPattern.png)\n *\n * `fromEventPattern` allows you to convert into an Observable any API that supports registering handler functions\n * for events. It is similar to {@link fromEvent}, but far\n * more flexible. In fact, all use cases of {@link fromEvent} could be easily handled by\n * `fromEventPattern` (although in slightly more verbose way).\n *\n * This operator accepts as a first argument an `addHandler` function, which will be injected with\n * handler parameter. That handler is actually an event handler function that you now can pass\n * to API expecting it. `addHandler` will be called whenever Observable\n * returned by the operator is subscribed, so registering handler in API will not\n * necessarily happen when `fromEventPattern` is called.\n *\n * After registration, every time an event that we listen to happens,\n * Observable returned by `fromEventPattern` will emit value that event handler\n * function was called with. Note that if event handler was called with more\n * then one argument, second and following arguments will not appear in the Observable.\n *\n * If API you are using allows to unregister event handlers as well, you can pass to `fromEventPattern`\n * another function - `removeHandler` - as a second parameter. It will be injected\n * with the same handler function as before, which now you can use to unregister\n * it from the API. `removeHandler` will be called when consumer of resulting Observable\n * unsubscribes from it.\n *\n * In some APIs unregistering is actually handled differently. Method registering an event handler\n * returns some kind of token, which is later used to identify which function should\n * be unregistered or it itself has method that unregisters event handler.\n * If that is the case with your API, make sure token returned\n * by registering method is returned by `addHandler`. Then it will be passed\n * as a second argument to `removeHandler`, where you will be able to use it.\n *\n * If you need access to all event handler parameters (not only the first one),\n * or you need to transform them in any way, you can call `fromEventPattern` with optional\n * third parameter - project function which will accept all arguments passed to\n * event handler when it is called. Whatever is returned from project function will appear on\n * resulting stream instead of usual event handlers first argument. This means\n * that default project can be thought of as function that takes its first parameter\n * and ignores the rest.\n *\n * ## Example\n * ### Emits clicks happening on the DOM document\n *\n * ```ts\n * import { fromEventPattern } from 'rxjs';\n *\n * function addClickHandler(handler) {\n * document.addEventListener('click', handler);\n * }\n *\n * function removeClickHandler(handler) {\n * document.removeEventListener('click', handler);\n * }\n *\n * const clicks = fromEventPattern(\n * addClickHandler,\n * removeClickHandler\n * );\n * clicks.subscribe(x => console.log(x));\n *\n * // Whenever you click anywhere in the browser, DOM MouseEvent\n * // object will be logged.\n * ```\n *\n * ## Example\n * ### Use with API that returns cancellation token\n *\n * ```ts\n * import { fromEventPattern } from 'rxjs';\n *\n * const token = someAPI.registerEventHandler(function() {});\n * someAPI.unregisterEventHandler(token); // this APIs cancellation method accepts\n * // not handler itself, but special token.\n *\n * const someAPIObservable = fromEventPattern(\n * function(handler) { return someAPI.registerEventHandler(handler); }, // Note that we return the token here...\n * function(handler, token) { someAPI.unregisterEventHandler(token); } // ...to then use it here.\n * );\n * ```\n *\n * ## Example\n * ### Use with project function\n *\n * ```ts\n * import { fromEventPattern } from 'rxjs';\n *\n * someAPI.registerEventHandler((eventType, eventMessage) => {\n * console.log(eventType, eventMessage); // Logs \"EVENT_TYPE\" \"EVENT_MESSAGE\" to console.\n * });\n *\n * const someAPIObservable = fromEventPattern(\n * handler => someAPI.registerEventHandler(handler),\n * handler => someAPI.unregisterEventHandler(handler)\n * (eventType, eventMessage) => eventType + \" --- \" + eventMessage // without that function only \"EVENT_TYPE\"\n * ); // would be emitted by the Observable\n *\n * someAPIObservable.subscribe(value => console.log(value));\n *\n * // Logs:\n * // \"EVENT_TYPE --- EVENT_MESSAGE\"\n * ```\n *\n * @see {@link fromEvent}\n * @see {@link bindCallback}\n * @see {@link bindNodeCallback}\n *\n * @param {function(handler: Function): any} addHandler A function that takes\n * a `handler` function as argument and attaches it somehow to the actual\n * source of events.\n * @param {function(handler: Function, token?: any): void} [removeHandler] A function that\n * takes a `handler` function as an argument and removes it from the event source. If `addHandler`\n * returns some kind of token, `removeHandler` function will have it as a second parameter.\n * @param {function(...args: any): T} [project] A function to\n * transform results. It takes the arguments from the event handler and\n * should return a single value.\n * @return {Observable} Observable which, when an event happens, emits first parameter\n * passed to registered event handler. Alternatively it emits whatever project function returns\n * at that moment.\n * @static true\n * @name fromEventPattern\n * @owner Observable\n */\n\nexport function fromEventPattern(addHandler: (handler: NodeEventHandler) => any,\n removeHandler?: (handler: NodeEventHandler, signal?: any) => void,\n resultSelector?: (...args: any[]) => T): Observable {\n\n if (resultSelector) {\n // DEPRECATED PATH\n return fromEventPattern(addHandler, removeHandler).pipe(\n map(args => isArray(args) ? resultSelector(...args) : resultSelector(args))\n );\n }\n\n return new Observable(subscriber => {\n const handler = (...e: T[]) => subscriber.next(e.length === 1 ? e[0] : e);\n\n let retValue: any;\n try {\n retValue = addHandler(handler);\n } catch (err) {\n subscriber.error(err);\n return undefined;\n }\n\n if (!isFunction(removeHandler)) {\n return undefined;\n }\n\n return () => removeHandler(handler, retValue) ;\n });\n}\n","import { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { identity } from '../util/identity';\nimport { SchedulerAction, SchedulerLike } from '../types';\nimport { isScheduler } from '../util/isScheduler';\n\nexport type ConditionFunc = (state: S) => boolean;\nexport type IterateFunc = (state: S) => S;\nexport type ResultFunc = (state: S) => T;\n\ninterface SchedulerState {\n needIterate?: boolean;\n state: S;\n subscriber: Subscriber;\n condition?: ConditionFunc;\n iterate: IterateFunc;\n resultSelector: ResultFunc;\n}\n\nexport interface GenerateBaseOptions {\n /**\n * Initial state.\n */\n initialState: S;\n /**\n * Condition function that accepts state and returns boolean.\n * When it returns false, the generator stops.\n * If not specified, a generator never stops.\n */\n condition?: ConditionFunc;\n /**\n * Iterate function that accepts state and returns new state.\n */\n iterate: IterateFunc;\n /**\n * SchedulerLike to use for generation process.\n * By default, a generator starts immediately.\n */\n scheduler?: SchedulerLike;\n}\n\nexport interface GenerateOptions extends GenerateBaseOptions {\n /**\n * Result selection function that accepts state and returns a value to emit.\n */\n resultSelector: ResultFunc;\n}\n\n/**\n * Generates an observable sequence by running a state-driven loop\n * producing the sequence's elements, using the specified scheduler\n * to send out observer messages.\n *\n * ![](generate.png)\n *\n * @example Produces sequence of 0, 1, 2, ... 9, then completes.\n * const res = generate(0, x => x < 10, x => x + 1, x => x);\n *\n * @example Using asap scheduler, produces sequence of 2, 3, 5, then completes.\n * const res = generate(1, x => x < 5, x => x * 2, x => x + 1, asap);\n *\n * @see {@link from}\n * @see {@link Observable}\n *\n * @param {S} initialState Initial state.\n * @param {function (state: S): boolean} condition Condition to terminate generation (upon returning false).\n * @param {function (state: S): S} iterate Iteration step function.\n * @param {function (state: S): T} resultSelector Selector function for results produced in the sequence. (deprecated)\n * @param {SchedulerLike} [scheduler] A {@link SchedulerLike} on which to run the generator loop. If not provided, defaults to emit immediately.\n * @returns {Observable} The generated sequence.\n */\n export function generate(initialState: S,\n condition: ConditionFunc,\n iterate: IterateFunc,\n resultSelector: ResultFunc,\n scheduler?: SchedulerLike): Observable;\n\n/**\n * Generates an Observable by running a state-driven loop\n * that emits an element on each iteration.\n *\n * Use it instead of nexting values in a for loop.\n *\n * \n *\n * `generate` allows you to create stream of values generated with a loop very similar to\n * traditional for loop. First argument of `generate` is a beginning value. Second argument\n * is a function that accepts this value and tests if some condition still holds. If it does,\n * loop continues, if not, it stops. Third value is a function which takes previously defined\n * value and modifies it in some way on each iteration. Note how these three parameters\n * are direct equivalents of three expressions in regular for loop: first expression\n * initializes some state (for example numeric index), second tests if loop can make next\n * iteration (for example if index is lower than 10) and third states how defined value\n * will be modified on every step (index will be incremented by one).\n *\n * Return value of a `generate` operator is an Observable that on each loop iteration\n * emits a value. First, condition function is ran. If it returned true, Observable\n * emits currently stored value (initial value at the first iteration) and then updates\n * that value with iterate function. If at some point condition returned false, Observable\n * completes at that moment.\n *\n * Optionally you can pass fourth parameter to `generate` - a result selector function which allows you\n * to immediately map value that would normally be emitted by an Observable.\n *\n * If you find three anonymous functions in `generate` call hard to read, you can provide\n * single object to the operator instead. That object has properties: `initialState`,\n * `condition`, `iterate` and `resultSelector`, which should have respective values that you\n * would normally pass to `generate`. `resultSelector` is still optional, but that form\n * of calling `generate` allows you to omit `condition` as well. If you omit it, that means\n * condition always holds, so output Observable will never complete.\n *\n * Both forms of `generate` can optionally accept a scheduler. In case of multi-parameter call,\n * scheduler simply comes as a last argument (no matter if there is resultSelector\n * function or not). In case of single-parameter call, you can provide it as a\n * `scheduler` property on object passed to the operator. In both cases scheduler decides when\n * next iteration of the loop will happen and therefore when next value will be emitted\n * by the Observable. For example to ensure that each value is pushed to the observer\n * on separate task in event loop, you could use `async` scheduler. Note that\n * by default (when no scheduler is passed) values are simply emitted synchronously.\n *\n *\n * @example Use with condition and iterate functions.\n * const generated = generate(0, x => x < 3, x => x + 1);\n *\n * generated.subscribe(\n * value => console.log(value),\n * err => {},\n * () => console.log('Yo!')\n * );\n *\n * // Logs:\n * // 0\n * // 1\n * // 2\n * // \"Yo!\"\n *\n *\n * @example Use with condition, iterate and resultSelector functions.\n * const generated = generate(0, x => x < 3, x => x + 1, x => x * 1000);\n *\n * generated.subscribe(\n * value => console.log(value),\n * err => {},\n * () => console.log('Yo!')\n * );\n *\n * // Logs:\n * // 0\n * // 1000\n * // 2000\n * // \"Yo!\"\n *\n *\n * @example Use with options object.\n * const generated = generate({\n * initialState: 0,\n * condition(value) { return value < 3; },\n * iterate(value) { return value + 1; },\n * resultSelector(value) { return value * 1000; }\n * });\n *\n * generated.subscribe(\n * value => console.log(value),\n * err => {},\n * () => console.log('Yo!')\n * );\n *\n * // Logs:\n * // 0\n * // 1000\n * // 2000\n * // \"Yo!\"\n *\n * @example Use options object without condition function.\n * const generated = generate({\n * initialState: 0,\n * iterate(value) { return value + 1; },\n * resultSelector(value) { return value * 1000; }\n * });\n *\n * generated.subscribe(\n * value => console.log(value),\n * err => {},\n * () => console.log('Yo!') // This will never run.\n * );\n *\n * // Logs:\n * // 0\n * // 1000\n * // 2000\n * // 3000\n * // ...and never stops.\n *\n *\n * @see {@link from}\n * @see {@link index/Observable.create}\n *\n * @param {S} initialState Initial state.\n * @param {function (state: S): boolean} condition Condition to terminate generation (upon returning false).\n * @param {function (state: S): S} iterate Iteration step function.\n * @param {function (state: S): T} [resultSelector] Selector function for results produced in the sequence.\n * @param {Scheduler} [scheduler] A {@link Scheduler} on which to run the generator loop. If not provided, defaults to emitting immediately.\n * @return {Observable} The generated sequence.\n */\nexport function generate(initialState: S,\n condition: ConditionFunc,\n iterate: IterateFunc,\n scheduler?: SchedulerLike): Observable;\n\n/**\n * Generates an observable sequence by running a state-driven loop\n * producing the sequence's elements, using the specified scheduler\n * to send out observer messages.\n * The overload accepts options object that might contain initial state, iterate,\n * condition and scheduler.\n *\n * ![](generate.png)\n *\n * @example Produces sequence of 0, 1, 2, ... 9, then completes.\n * const res = generate({\n * initialState: 0,\n * condition: x => x < 10,\n * iterate: x => x + 1,\n * });\n *\n * @see {@link from}\n * @see {@link Observable}\n *\n * @param {GenerateBaseOptions} options Object that must contain initialState, iterate and might contain condition and scheduler.\n * @returns {Observable} The generated sequence.\n */\nexport function generate(options: GenerateBaseOptions): Observable;\n\n/**\n * Generates an observable sequence by running a state-driven loop\n * producing the sequence's elements, using the specified scheduler\n * to send out observer messages.\n * The overload accepts options object that might contain initial state, iterate,\n * condition, result selector and scheduler.\n *\n * ![](generate.png)\n *\n * @example Produces sequence of 0, 1, 2, ... 9, then completes.\n * const res = generate({\n * initialState: 0,\n * condition: x => x < 10,\n * iterate: x => x + 1,\n * resultSelector: x => x,\n * });\n *\n * @see {@link from}\n * @see {@link Observable}\n *\n * @param {GenerateOptions} options Object that must contain initialState, iterate, resultSelector and might contain condition and scheduler.\n * @returns {Observable} The generated sequence.\n */\nexport function generate(options: GenerateOptions): Observable;\n\nexport function generate(initialStateOrOptions: S | GenerateOptions,\n condition?: ConditionFunc,\n iterate?: IterateFunc,\n resultSelectorOrObservable?: (ResultFunc) | SchedulerLike,\n scheduler?: SchedulerLike): Observable {\n\n let resultSelector: ResultFunc;\n let initialState: S;\n\n if (arguments.length == 1) {\n const options = initialStateOrOptions as GenerateOptions;\n initialState = options.initialState;\n condition = options.condition;\n iterate = options.iterate;\n resultSelector = options.resultSelector || identity as ResultFunc;\n scheduler = options.scheduler;\n } else if (resultSelectorOrObservable === undefined || isScheduler(resultSelectorOrObservable)) {\n initialState = initialStateOrOptions as S;\n resultSelector = identity as ResultFunc;\n scheduler = resultSelectorOrObservable as SchedulerLike;\n } else {\n initialState = initialStateOrOptions as S;\n resultSelector = resultSelectorOrObservable as ResultFunc;\n }\n\n return new Observable(subscriber => {\n let state = initialState;\n if (scheduler) {\n return scheduler.schedule>(dispatch, 0, {\n subscriber,\n iterate,\n condition,\n resultSelector,\n state\n });\n }\n\n do {\n if (condition) {\n let conditionResult: boolean;\n try {\n conditionResult = condition(state);\n } catch (err) {\n subscriber.error(err);\n return undefined;\n }\n if (!conditionResult) {\n subscriber.complete();\n break;\n }\n }\n let value: T;\n try {\n value = resultSelector(state);\n } catch (err) {\n subscriber.error(err);\n return undefined;\n }\n subscriber.next(value);\n if (subscriber.closed) {\n break;\n }\n try {\n state = iterate(state);\n } catch (err) {\n subscriber.error(err);\n return undefined;\n }\n } while (true);\n\n return undefined;\n });\n}\n\nfunction dispatch(this: SchedulerAction>, state: SchedulerState) {\n const { subscriber, condition } = state;\n if (subscriber.closed) {\n return undefined;\n }\n if (state.needIterate) {\n try {\n state.state = state.iterate(state.state);\n } catch (err) {\n subscriber.error(err);\n return undefined;\n }\n } else {\n state.needIterate = true;\n }\n if (condition) {\n let conditionResult: boolean;\n try {\n conditionResult = condition(state.state);\n } catch (err) {\n subscriber.error(err);\n return undefined;\n }\n if (!conditionResult) {\n subscriber.complete();\n return undefined;\n }\n if (subscriber.closed) {\n return undefined;\n }\n }\n let value: T;\n try {\n value = state.resultSelector(state.state);\n } catch (err) {\n subscriber.error(err);\n return undefined;\n }\n if (subscriber.closed) {\n return undefined;\n }\n subscriber.next(value);\n if (subscriber.closed) {\n return undefined;\n }\n return this.schedule(state);\n}\n","import { Observable } from '../Observable';\nimport { defer } from './defer';\nimport { EMPTY } from './empty';\nimport { SubscribableOrPromise } from '../types';\n\n/**\n * Decides at subscription time which Observable will actually be subscribed.\n *\n * `If` statement for Observables.\n *\n * `iif` accepts a condition function and two Observables. When\n * an Observable returned by the operator is subscribed, condition function will be called.\n * Based on what boolean it returns at that moment, consumer will subscribe either to\n * the first Observable (if condition was true) or to the second (if condition was false). Condition\n * function may also not return anything - in that case condition will be evaluated as false and\n * second Observable will be subscribed.\n *\n * Note that Observables for both cases (true and false) are optional. If condition points to an Observable that\n * was left undefined, resulting stream will simply complete immediately. That allows you to, rather\n * than controlling which Observable will be subscribed, decide at runtime if consumer should have access\n * to given Observable or not.\n *\n * If you have more complex logic that requires decision between more than two Observables, {@link defer}\n * will probably be a better choice. Actually `iif` can be easily implemented with {@link defer}\n * and exists only for convenience and readability reasons.\n *\n *\n * ## Examples\n * ### Change at runtime which Observable will be subscribed\n * ```ts\n * import { iif, of } from 'rxjs';\n *\n * let subscribeToFirst;\n * const firstOrSecond = iif(\n * () => subscribeToFirst,\n * of('first'),\n * of('second'),\n * );\n *\n * subscribeToFirst = true;\n * firstOrSecond.subscribe(value => console.log(value));\n *\n * // Logs:\n * // \"first\"\n *\n * subscribeToFirst = false;\n * firstOrSecond.subscribe(value => console.log(value));\n *\n * // Logs:\n * // \"second\"\n *\n * ```\n *\n * ### Control an access to an Observable\n * ```ts\n * let accessGranted;\n * const observableIfYouHaveAccess = iif(\n * () => accessGranted,\n * of('It seems you have an access...'), // Note that only one Observable is passed to the operator.\n * );\n *\n * accessGranted = true;\n * observableIfYouHaveAccess.subscribe(\n * value => console.log(value),\n * err => {},\n * () => console.log('The end'),\n * );\n *\n * // Logs:\n * // \"It seems you have an access...\"\n * // \"The end\"\n *\n * accessGranted = false;\n * observableIfYouHaveAccess.subscribe(\n * value => console.log(value),\n * err => {},\n * () => console.log('The end'),\n * );\n *\n * // Logs:\n * // \"The end\"\n * ```\n *\n * @see {@link defer}\n *\n * @param {function(): boolean} condition Condition which Observable should be chosen.\n * @param {Observable} [trueObservable] An Observable that will be subscribed if condition is true.\n * @param {Observable} [falseObservable] An Observable that will be subscribed if condition is false.\n * @return {Observable} Either first or second Observable, depending on condition.\n * @static true\n * @name iif\n * @owner Observable\n*/\nexport function iif(\n condition: () => boolean,\n trueResult: SubscribableOrPromise = EMPTY,\n falseResult: SubscribableOrPromise = EMPTY\n): Observable {\n return defer(() => condition() ? trueResult : falseResult);\n}\n","import { Observable } from '../Observable';\nimport { async } from '../scheduler/async';\nimport { SchedulerAction, SchedulerLike } from '../types';\nimport { isNumeric } from '../util/isNumeric';\nimport { Subscriber } from '../Subscriber';\n\n/**\n * Creates an Observable that emits sequential numbers every specified\n * interval of time, on a specified {@link SchedulerLike}.\n *\n * Emits incremental numbers periodically in time.\n * \n *\n * ![](interval.png)\n *\n * `interval` returns an Observable that emits an infinite sequence of\n * ascending integers, with a constant interval of time of your choosing\n * between those emissions. The first emission is not sent immediately, but\n * only after the first period has passed. By default, this operator uses the\n * `async` {@link SchedulerLike} to provide a notion of time, but you may pass any\n * {@link SchedulerLike} to it.\n *\n * ## Example\n * Emits ascending numbers, one every second (1000ms) up to the number 3\n * ```ts\n * import { interval } from 'rxjs';\n * import { take } from 'rxjs/operators';\n *\n * const numbers = interval(1000);\n *\n * const takeFourNumbers = numbers.pipe(take(4));\n *\n * takeFourNumbers.subscribe(x => console.log('Next: ', x));\n *\n * // Logs:\n * // Next: 0\n * // Next: 1\n * // Next: 2\n * // Next: 3\n * ```\n *\n * @see {@link timer}\n * @see {@link delay}\n *\n * @param {number} [period=0] The interval size in milliseconds (by default)\n * or the time unit determined by the scheduler's clock.\n * @param {SchedulerLike} [scheduler=async] The {@link SchedulerLike} to use for scheduling\n * the emission of values, and providing a notion of \"time\".\n * @return {Observable} An Observable that emits a sequential number each time\n * interval.\n * @static true\n * @name interval\n * @owner Observable\n */\nexport function interval(period = 0,\n scheduler: SchedulerLike = async): Observable {\n if (!isNumeric(period) || period < 0) {\n period = 0;\n }\n\n if (!scheduler || typeof scheduler.schedule !== 'function') {\n scheduler = async;\n }\n\n return new Observable(subscriber => {\n subscriber.add(\n scheduler.schedule(dispatch, period, { subscriber, counter: 0, period })\n );\n return subscriber;\n });\n}\n\nfunction dispatch(this: SchedulerAction, state: IntervalState) {\n const { subscriber, counter, period } = state;\n subscriber.next(counter);\n this.schedule({ subscriber, counter: counter + 1, period }, period);\n}\n\ninterface IntervalState {\n subscriber: Subscriber;\n counter: number;\n period: number;\n}\n","import { Observable } from '../Observable';\nimport { noop } from '../util/noop';\n\n/**\n * An Observable that emits no items to the Observer and never completes.\n *\n * ![](never.png)\n *\n * A simple Observable that emits neither values nor errors nor the completion\n * notification. It can be used for testing purposes or for composing with other\n * Observables. Please note that by never emitting a complete notification, this\n * Observable keeps the subscription from being disposed automatically.\n * Subscriptions need to be manually disposed.\n *\n * ## Example\n * ### Emit the number 7, then never emit anything else (not even complete)\n * ```ts\n * import { NEVER } from 'rxjs';\n * import { startWith } from 'rxjs/operators';\n *\n * function info() {\n * console.log('Will not be called');\n * }\n * const result = NEVER.pipe(startWith(7));\n * result.subscribe(x => console.log(x), info, info);\n *\n * ```\n *\n * @see {@link Observable}\n * @see {@link index/EMPTY}\n * @see {@link of}\n * @see {@link throwError}\n */\nexport const NEVER = new Observable(noop);\n\n/**\n * @deprecated Deprecated in favor of using {@link NEVER} constant.\n */\nexport function never () {\n return NEVER;\n}\n","import { Observable } from '../Observable';\nimport { ObservableInput } from '../types';\nimport { from } from './from';\nimport { isArray } from '../util/isArray';\nimport { EMPTY } from './empty';\n\n/* tslint:disable:max-line-length */\nexport function onErrorResumeNext(v: ObservableInput): Observable;\nexport function onErrorResumeNext(v2: ObservableInput, v3: ObservableInput): Observable;\nexport function onErrorResumeNext(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput): Observable;\nexport function onErrorResumeNext(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput): Observable;\nexport function onErrorResumeNext(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput): Observable;\n\nexport function onErrorResumeNext(...observables: Array | ((...values: Array) => R)>): Observable;\nexport function onErrorResumeNext(array: ObservableInput[]): Observable;\n/* tslint:enable:max-line-length */\n\n/**\n * When any of the provided Observable emits an complete or error notification, it immediately subscribes to the next one\n * that was passed.\n *\n * Execute series of Observables no matter what, even if it means swallowing errors.\n *\n * ![](onErrorResumeNext.png)\n *\n * `onErrorResumeNext` Will subscribe to each observable source it is provided, in order.\n * If the source it's subscribed to emits an error or completes, it will move to the next source\n * without error.\n *\n * If `onErrorResumeNext` is provided no arguments, or a single, empty array, it will return {@link index/EMPTY}.\n *\n * `onErrorResumeNext` is basically {@link concat}, only it will continue, even if one of its\n * sources emits an error.\n *\n * Note that there is no way to handle any errors thrown by sources via the result of\n * `onErrorResumeNext`. If you want to handle errors thrown in any given source, you can\n * always use the {@link catchError} operator on them before passing them into `onErrorResumeNext`.\n *\n * ## Example\n * Subscribe to the next Observable after map fails\n * ```ts\n * import { onErrorResumeNext, of } from 'rxjs';\n * import { map } from 'rxjs/operators';\n *\n * onErrorResumeNext(\n * of(1, 2, 3, 0).pipe(\n * map(x => {\n * if (x === 0) throw Error();\n * return 10 / x;\n * })\n * ),\n * of(1, 2, 3),\n * )\n * .subscribe(\n * val => console.log(val),\n * err => console.log(err), // Will never be called.\n * () => console.log('done'),\n * );\n *\n * // Logs:\n * // 10\n * // 5\n * // 3.3333333333333335\n * // 1\n * // 2\n * // 3\n * // \"done\"\n * ```\n *\n * @see {@link concat}\n * @see {@link catchError}\n *\n * @param {...ObservableInput} sources Observables (or anything that *is* observable) passed either directly or as an array.\n * @return {Observable} An Observable that concatenates all sources, one after the other,\n * ignoring all errors, such that any error causes it to move on to the next source.\n */\nexport function onErrorResumeNext(...sources: Array |\n Array> |\n ((...values: Array) => R)>): Observable {\n\n if (sources.length === 0) {\n return EMPTY;\n }\n\n const [ first, ...remainder ] = sources;\n\n if (sources.length === 1 && isArray(first)) {\n return onErrorResumeNext(...first);\n }\n\n return new Observable(subscriber => {\n const subNext = () => subscriber.add(\n onErrorResumeNext(...remainder).subscribe(subscriber)\n );\n\n return from(first).subscribe({\n next(value) { subscriber.next(value); },\n error: subNext,\n complete: subNext,\n });\n });\n}\n","import { Observable } from '../Observable';\nimport { SchedulerAction, SchedulerLike } from '../types';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\n\n/**\n * Convert an object into an Observable of `[key, value]` pairs.\n *\n * Turn entries of an object into a stream.\n *\n * \n *\n * `pairs` takes an arbitrary object and returns an Observable that emits arrays. Each\n * emitted array has exactly two elements - the first is a key from the object\n * and the second is a value corresponding to that key. Keys are extracted from\n * an object via `Object.keys` function, which means that they will be only\n * enumerable keys that are present on an object directly - not ones inherited\n * via prototype chain.\n *\n * By default these arrays are emitted synchronously. To change that you can\n * pass a {@link SchedulerLike} as a second argument to `pairs`.\n *\n * @example Converts a javascript object to an Observable\n * ```ts\n * import { pairs } from 'rxjs';\n *\n * const obj = {\n * foo: 42,\n * bar: 56,\n * baz: 78\n * };\n *\n * pairs(obj)\n * .subscribe(\n * value => console.log(value),\n * err => {},\n * () => console.log('the end!')\n * );\n *\n * // Logs:\n * // [\"foo\", 42],\n * // [\"bar\", 56],\n * // [\"baz\", 78],\n * // \"the end!\"\n * ```\n *\n * @param {Object} obj The object to inspect and turn into an\n * Observable sequence.\n * @param {Scheduler} [scheduler] An optional IScheduler to schedule\n * when resulting Observable will emit values.\n * @returns {(Observable>)} An observable sequence of\n * [key, value] pairs from the object.\n */\nexport function pairs(obj: Object, scheduler?: SchedulerLike): Observable<[string, T]> {\n if (!scheduler) {\n return new Observable<[string, T]>(subscriber => {\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length && !subscriber.closed; i++) {\n const key = keys[i];\n if (obj.hasOwnProperty(key)) {\n subscriber.next([key, obj[key]]);\n }\n }\n subscriber.complete();\n });\n } else {\n return new Observable<[string, T]>(subscriber => {\n const keys = Object.keys(obj);\n const subscription = new Subscription();\n subscription.add(\n scheduler.schedule<{ keys: string[], index: number, subscriber: Subscriber<[string, T]>, subscription: Subscription, obj: Object }>\n (dispatch, 0, { keys, index: 0, subscriber, subscription, obj }));\n return subscription;\n });\n }\n}\n\n/** @internal */\nexport function dispatch(this: SchedulerAction,\n state: { keys: string[], index: number, subscriber: Subscriber<[string, T]>, subscription: Subscription, obj: Object }) {\n const { keys, index, subscriber, subscription, obj } = state;\n if (!subscriber.closed) {\n if (index < keys.length) {\n const key = keys[index];\n subscriber.next([key, obj[key]]);\n subscription.add(this.schedule({ keys, index: index + 1, subscriber, subscription, obj }));\n } else {\n subscriber.complete();\n }\n }\n}\n","import { not } from '../util/not';\nimport { subscribeTo } from '../util/subscribeTo';\nimport { filter } from '../operators/filter';\nimport { ObservableInput } from '../types';\nimport { Observable } from '../Observable';\n\n/**\n * Splits the source Observable into two, one with values that satisfy a\n * predicate, and another with values that don't satisfy the predicate.\n *\n * It's like {@link filter}, but returns two Observables:\n * one like the output of {@link filter}, and the other with values that did not\n * pass the condition.\n *\n * ![](partition.png)\n *\n * `partition` outputs an array with two Observables that partition the values\n * from the source Observable through the given `predicate` function. The first\n * Observable in that array emits source values for which the predicate argument\n * returns true. The second Observable emits source values for which the\n * predicate returns false. The first behaves like {@link filter} and the second\n * behaves like {@link filter} with the predicate negated.\n *\n * ## Example\n * Partition a set of numbers into odds and evens observables\n * ```ts\n * import { of, partition } from 'rxjs';\n *\n * const observableValues = of(1, 2, 3, 4, 5, 6);\n * const [evens$, odds$] = partition(observableValues, (value, index) => value % 2 === 0);\n *\n * odds$.subscribe(x => console.log('odds', x));\n * evens$.subscribe(x => console.log('evens', x));\n *\n * // Logs:\n * // odds 1\n * // odds 3\n * // odds 5\n * // evens 2\n * // evens 4\n * // evens 6\n * ```\n *\n * @see {@link filter}\n *\n * @param {function(value: T, index: number): boolean} predicate A function that\n * evaluates each value emitted by the source Observable. If it returns `true`,\n * the value is emitted on the first Observable in the returned array, if\n * `false` the value is emitted on the second Observable in the array. The\n * `index` parameter is the number `i` for the i-th source emission that has\n * happened since the subscription, starting from the number `0`.\n * @param {any} [thisArg] An optional argument to determine the value of `this`\n * in the `predicate` function.\n * @return {[Observable, Observable]} An array with two Observables: one\n * with values that passed the predicate, and another with values that did not\n * pass the predicate.\n */\nexport function partition(\n source: ObservableInput,\n predicate: (value: T, index: number) => boolean,\n thisArg?: any\n): [Observable, Observable] {\n return [\n filter(predicate, thisArg)(new Observable(subscribeTo(source))),\n filter(not(predicate, thisArg) as any)(new Observable(subscribeTo(source)))\n ] as [Observable, Observable];\n}\n","import { SchedulerAction, SchedulerLike } from '../types';\nimport { Observable } from '../Observable';\n\n/**\n * Creates an Observable that emits a sequence of numbers within a specified\n * range.\n *\n * Emits a sequence of numbers in a range.\n *\n * ![](range.png)\n *\n * `range` operator emits a range of sequential integers, in order, where you\n * select the `start` of the range and its `length`. By default, uses no\n * {@link SchedulerLike} and just delivers the notifications synchronously, but may use\n * an optional {@link SchedulerLike} to regulate those deliveries.\n *\n * ## Example\n * Emits the numbers 1 to 10\n * ```ts\n * import { range } from 'rxjs';\n *\n * const numbers = range(1, 10);\n * numbers.subscribe(x => console.log(x));\n * ```\n * @see {@link timer}\n * @see {@link index/interval}\n *\n * @param {number} [start=0] The value of the first integer in the sequence.\n * @param {number} count The number of sequential integers to generate.\n * @param {SchedulerLike} [scheduler] A {@link SchedulerLike} to use for scheduling\n * the emissions of the notifications.\n * @return {Observable} An Observable of numbers that emits a finite range of\n * sequential integers.\n * @static true\n * @name range\n * @owner Observable\n */\nexport function range(start: number = 0,\n count?: number,\n scheduler?: SchedulerLike): Observable {\n return new Observable(subscriber => {\n if (count === undefined) {\n count = start;\n start = 0;\n }\n\n let index = 0;\n let current = start;\n\n if (scheduler) {\n return scheduler.schedule(dispatch, 0, {\n index, count, start, subscriber\n });\n } else {\n do {\n if (index++ >= count) {\n subscriber.complete();\n break;\n }\n subscriber.next(current++);\n if (subscriber.closed) {\n break;\n }\n } while (true);\n }\n\n return undefined;\n });\n}\n\n/** @internal */\nexport function dispatch(this: SchedulerAction, state: any) {\n const { start, index, count, subscriber } = state;\n\n if (index >= count) {\n subscriber.complete();\n return;\n }\n\n subscriber.next(start);\n\n if (subscriber.closed) {\n return;\n }\n\n state.index = index + 1;\n state.start = start + 1;\n\n this.schedule(state);\n}\n","import { Observable } from '../Observable';\nimport { Unsubscribable, ObservableInput } from '../types';\nimport { from } from './from'; // from from from! LAWL\nimport { EMPTY } from './empty';\n\n/**\n * Creates an Observable that uses a resource which will be disposed at the same time as the Observable.\n *\n * Use it when you catch yourself cleaning up after an Observable.\n *\n * `using` is a factory operator, which accepts two functions. First function returns a disposable resource.\n * It can be an arbitrary object that implements `unsubscribe` method. Second function will be injected with\n * that object and should return an Observable. That Observable can use resource object during its execution.\n * Both functions passed to `using` will be called every time someone subscribes - neither an Observable nor\n * resource object will be shared in any way between subscriptions.\n *\n * When Observable returned by `using` is subscribed, Observable returned from the second function will be subscribed\n * as well. All its notifications (nexted values, completion and error events) will be emitted unchanged by the output\n * Observable. If however someone unsubscribes from the Observable or source Observable completes or errors by itself,\n * the `unsubscribe` method on resource object will be called. This can be used to do any necessary clean up, which\n * otherwise would have to be handled by hand. Note that complete or error notifications are not emitted when someone\n * cancels subscription to an Observable via `unsubscribe`, so `using` can be used as a hook, allowing you to make\n * sure that all resources which need to exist during an Observable execution will be disposed at appropriate time.\n *\n * @see {@link defer}\n *\n * @param {function(): ISubscription} resourceFactory A function which creates any resource object\n * that implements `unsubscribe` method.\n * @param {function(resource: ISubscription): Observable} observableFactory A function which\n * creates an Observable, that can use injected resource object.\n * @return {Observable} An Observable that behaves the same as Observable returned by `observableFactory`, but\n * which - when completed, errored or unsubscribed - will also call `unsubscribe` on created resource object.\n */\nexport function using(resourceFactory: () => Unsubscribable | void,\n observableFactory: (resource: Unsubscribable | void) => ObservableInput | void): Observable {\n return new Observable(subscriber => {\n let resource: Unsubscribable | void;\n\n try {\n resource = resourceFactory();\n } catch (err) {\n subscriber.error(err);\n return undefined;\n }\n\n let result: ObservableInput | void;\n try {\n result = observableFactory(resource);\n } catch (err) {\n subscriber.error(err);\n return undefined;\n }\n\n const source = result ? from(result) : EMPTY;\n const subscription = source.subscribe(subscriber);\n return () => {\n subscription.unsubscribe();\n if (resource) {\n resource.unsubscribe();\n }\n };\n });\n}\n","import { Subject } from './Subject';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\n\n/**\n * A variant of Subject that only emits a value when it completes. It will emit\n * its latest value to all its observers on completion.\n *\n * @class AsyncSubject\n */\nexport class AsyncSubject extends Subject {\n private value: T = null;\n private hasNext: boolean = false;\n private hasCompleted: boolean = false;\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _subscribe(subscriber: Subscriber): Subscription {\n if (this.hasError) {\n subscriber.error(this.thrownError);\n return Subscription.EMPTY;\n } else if (this.hasCompleted && this.hasNext) {\n subscriber.next(this.value);\n subscriber.complete();\n return Subscription.EMPTY;\n }\n return super._subscribe(subscriber);\n }\n\n next(value: T): void {\n if (!this.hasCompleted) {\n this.value = value;\n this.hasNext = true;\n }\n }\n\n error(error: any): void {\n if (!this.hasCompleted) {\n super.error(error);\n }\n }\n\n complete(): void {\n this.hasCompleted = true;\n if (this.hasNext) {\n super.next(this.value);\n }\n super.complete();\n }\n}\n","import { Subject } from './Subject';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\nimport { SubscriptionLike } from './types';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\n\n/**\n * A variant of Subject that requires an initial value and emits its current\n * value whenever it is subscribed to.\n *\n * @class BehaviorSubject\n */\nexport class BehaviorSubject extends Subject {\n\n constructor(private _value: T) {\n super();\n }\n\n get value(): T {\n return this.getValue();\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _subscribe(subscriber: Subscriber): Subscription {\n const subscription = super._subscribe(subscriber);\n if (subscription && !(subscription).closed) {\n subscriber.next(this._value);\n }\n return subscription;\n }\n\n getValue(): T {\n if (this.hasError) {\n throw this.thrownError;\n } else if (this.closed) {\n throw new ObjectUnsubscribedError();\n } else {\n return this._value;\n }\n }\n\n next(value: T): void {\n super.next(this._value = value);\n }\n}\n","import { PartialObserver } from './types';\nimport { Observable } from './Observable';\nimport { empty } from './observable/empty';\nimport { of } from './observable/of';\nimport { throwError } from './observable/throwError';\nimport { deprecate } from 'util';\n\n// TODO: When this enum is removed, replace it with a type alias. See #4556.\n/**\n * @deprecated NotificationKind is deprecated as const enums are not compatible with isolated modules. Use a string literal instead.\n */\nexport enum NotificationKind {\n NEXT = 'N',\n ERROR = 'E',\n COMPLETE = 'C',\n}\n\n/**\n * Represents a push-based event or value that an {@link Observable} can emit.\n * This class is particularly useful for operators that manage notifications,\n * like {@link materialize}, {@link dematerialize}, {@link observeOn}, and\n * others. Besides wrapping the actual delivered value, it also annotates it\n * with metadata of, for instance, what type of push message it is (`next`,\n * `error`, or `complete`).\n *\n * @see {@link materialize}\n * @see {@link dematerialize}\n * @see {@link observeOn}\n *\n * @class Notification\n */\nexport class Notification {\n hasValue: boolean;\n\n constructor(public kind: 'N' | 'E' | 'C', public value?: T, public error?: any) {\n this.hasValue = kind === 'N';\n }\n\n /**\n * Delivers to the given `observer` the value wrapped by this Notification.\n * @param {Observer} observer\n * @return\n */\n observe(observer: PartialObserver): any {\n switch (this.kind) {\n case 'N':\n return observer.next && observer.next(this.value);\n case 'E':\n return observer.error && observer.error(this.error);\n case 'C':\n return observer.complete && observer.complete();\n }\n }\n\n /**\n * Given some {@link Observer} callbacks, deliver the value represented by the\n * current Notification to the correctly corresponding callback.\n * @param {function(value: T): void} next An Observer `next` callback.\n * @param {function(err: any): void} [error] An Observer `error` callback.\n * @param {function(): void} [complete] An Observer `complete` callback.\n * @return {any}\n */\n do(next: (value: T) => void, error?: (err: any) => void, complete?: () => void): any {\n const kind = this.kind;\n switch (kind) {\n case 'N':\n return next && next(this.value);\n case 'E':\n return error && error(this.error);\n case 'C':\n return complete && complete();\n }\n }\n\n /**\n * Takes an Observer or its individual callback functions, and calls `observe`\n * or `do` methods accordingly.\n * @param {Observer|function(value: T): void} nextOrObserver An Observer or\n * the `next` callback.\n * @param {function(err: any): void} [error] An Observer `error` callback.\n * @param {function(): void} [complete] An Observer `complete` callback.\n * @return {any}\n */\n accept(nextOrObserver: PartialObserver | ((value: T) => void), error?: (err: any) => void, complete?: () => void) {\n if (nextOrObserver && typeof (>nextOrObserver).next === 'function') {\n return this.observe(>nextOrObserver);\n } else {\n return this.do(<(value: T) => void>nextOrObserver, error, complete);\n }\n }\n\n /**\n * Returns a simple Observable that just delivers the notification represented\n * by this Notification instance.\n * @return {any}\n */\n toObservable(): Observable {\n const kind = this.kind;\n switch (kind) {\n case 'N':\n return of(this.value);\n case 'E':\n return throwError(this.error);\n case 'C':\n return empty();\n }\n throw new Error('unexpected notification kind value');\n }\n\n private static completeNotification: Notification = new Notification('C');\n private static undefinedValueNotification: Notification = new Notification('N', undefined);\n\n /**\n * A shortcut to create a Notification instance of the type `next` from a\n * given value.\n * @param {T} value The `next` value.\n * @return {Notification} The \"next\" Notification representing the\n * argument.\n * @nocollapse\n */\n static createNext(value: T): Notification {\n if (typeof value !== 'undefined') {\n return new Notification('N', value);\n }\n return Notification.undefinedValueNotification;\n }\n\n /**\n * A shortcut to create a Notification instance of the type `error` from a\n * given error.\n * @param {any} [err] The `error` error.\n * @return {Notification} The \"error\" Notification representing the\n * argument.\n * @nocollapse\n */\n static createError(err?: any): Notification {\n return new Notification('E', undefined, err);\n }\n\n /**\n * A shortcut to create a Notification instance of the type `complete`.\n * @return {Notification} The valueless \"complete\" Notification.\n * @nocollapse\n */\n static createComplete(): Notification {\n return Notification.completeNotification;\n }\n}\n","import { Operator } from './Operator';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\nimport { TeardownLogic, OperatorFunction, PartialObserver, Subscribable } from './types';\nimport { canReportError } from './util/canReportError';\nimport { toSubscriber } from './util/toSubscriber';\nimport { iif } from './observable/iif';\nimport { throwError } from './observable/throwError';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\n\n/**\n * A representation of any set of values over any amount of time. This is the most basic building block\n * of RxJS.\n *\n * @class Observable\n */\nexport class Observable implements Subscribable {\n\n /** Internal implementation detail, do not use directly. */\n public _isScalar: boolean = false;\n\n /** @deprecated This is an internal implementation detail, do not use. */\n source: Observable;\n\n /** @deprecated This is an internal implementation detail, do not use. */\n operator: Operator;\n\n /**\n * @constructor\n * @param {Function} subscribe the function that is called when the Observable is\n * initially subscribed to. This function is given a Subscriber, to which new values\n * can be `next`ed, or an `error` method can be called to raise an error, or\n * `complete` can be called to notify of a successful completion.\n */\n constructor(subscribe?: (this: Observable, subscriber: Subscriber) => TeardownLogic) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n\n // HACK: Since TypeScript inherits static properties too, we have to\n // fight against TypeScript here so Subject can have a different static create signature\n /**\n * Creates a new cold Observable by calling the Observable constructor\n * @static true\n * @owner Observable\n * @method create\n * @param {Function} subscribe? the subscriber function to be passed to the Observable constructor\n * @return {Observable} a new cold observable\n * @nocollapse\n * @deprecated use new Observable() instead\n */\n static create: Function = (subscribe?: (subscriber: Subscriber) => TeardownLogic) => {\n return new Observable(subscribe);\n }\n\n /**\n * Creates a new Observable, with this Observable as the source, and the passed\n * operator defined as the new observable's operator.\n * @method lift\n * @param {Operator} operator the operator defining the operation to take on the observable\n * @return {Observable} a new observable with the Operator applied\n */\n lift(operator: Operator): Observable {\n const observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n }\n\n subscribe(observer?: PartialObserver): Subscription;\n /** @deprecated Use an observer instead of a complete callback */\n subscribe(next: null | undefined, error: null | undefined, complete: () => void): Subscription;\n /** @deprecated Use an observer instead of an error callback */\n subscribe(next: null | undefined, error: (error: any) => void, complete?: () => void): Subscription;\n /** @deprecated Use an observer instead of a complete callback */\n subscribe(next: (value: T) => void, error: null | undefined, complete: () => void): Subscription;\n subscribe(next?: (value: T) => void, error?: (error: any) => void, complete?: () => void): Subscription;\n /**\n * Invokes an execution of an Observable and registers Observer handlers for notifications it will emit.\n *\n * Use it when you have all these Observables, but still nothing is happening.\n *\n * `subscribe` is not a regular operator, but a method that calls Observable's internal `subscribe` function. It\n * might be for example a function that you passed to Observable's constructor, but most of the time it is\n * a library implementation, which defines what will be emitted by an Observable, and when it be will emitted. This means\n * that calling `subscribe` is actually the moment when Observable starts its work, not when it is created, as it is often\n * the thought.\n *\n * Apart from starting the execution of an Observable, this method allows you to listen for values\n * that an Observable emits, as well as for when it completes or errors. You can achieve this in two\n * of the following ways.\n *\n * The first way is creating an object that implements {@link Observer} interface. It should have methods\n * defined by that interface, but note that it should be just a regular JavaScript object, which you can create\n * yourself in any way you want (ES6 class, classic function constructor, object literal etc.). In particular do\n * not attempt to use any RxJS implementation details to create Observers - you don't need them. Remember also\n * that your object does not have to implement all methods. If you find yourself creating a method that doesn't\n * do anything, you can simply omit it. Note however, if the `error` method is not provided, all errors will\n * be left uncaught.\n *\n * The second way is to give up on Observer object altogether and simply provide callback functions in place of its methods.\n * This means you can provide three functions as arguments to `subscribe`, where the first function is equivalent\n * of a `next` method, the second of an `error` method and the third of a `complete` method. Just as in case of Observer,\n * if you do not need to listen for something, you can omit a function, preferably by passing `undefined` or `null`,\n * since `subscribe` recognizes these functions by where they were placed in function call. When it comes\n * to `error` function, just as before, if not provided, errors emitted by an Observable will be thrown.\n *\n * Whichever style of calling `subscribe` you use, in both cases it returns a Subscription object.\n * This object allows you to call `unsubscribe` on it, which in turn will stop the work that an Observable does and will clean\n * up all resources that an Observable used. Note that cancelling a subscription will not call `complete` callback\n * provided to `subscribe` function, which is reserved for a regular completion signal that comes from an Observable.\n *\n * Remember that callbacks provided to `subscribe` are not guaranteed to be called asynchronously.\n * It is an Observable itself that decides when these functions will be called. For example {@link of}\n * by default emits all its values synchronously. Always check documentation for how given Observable\n * will behave when subscribed and if its default behavior can be modified with a `scheduler`.\n *\n * ## Example\n * ### Subscribe with an Observer\n * ```ts\n * import { of } from 'rxjs';\n *\n * const sumObserver = {\n * sum: 0,\n * next(value) {\n * console.log('Adding: ' + value);\n * this.sum = this.sum + value;\n * },\n * error() {\n * // We actually could just remove this method,\n * // since we do not really care about errors right now.\n * },\n * complete() {\n * console.log('Sum equals: ' + this.sum);\n * }\n * };\n *\n * of(1, 2, 3) // Synchronously emits 1, 2, 3 and then completes.\n * .subscribe(sumObserver);\n *\n * // Logs:\n * // \"Adding: 1\"\n * // \"Adding: 2\"\n * // \"Adding: 3\"\n * // \"Sum equals: 6\"\n * ```\n *\n * ### Subscribe with functions\n * ```ts\n * import { of } from 'rxjs'\n *\n * let sum = 0;\n *\n * of(1, 2, 3).subscribe(\n * value => {\n * console.log('Adding: ' + value);\n * sum = sum + value;\n * },\n * undefined,\n * () => console.log('Sum equals: ' + sum)\n * );\n *\n * // Logs:\n * // \"Adding: 1\"\n * // \"Adding: 2\"\n * // \"Adding: 3\"\n * // \"Sum equals: 6\"\n * ```\n *\n * ### Cancel a subscription\n * ```ts\n * import { interval } from 'rxjs';\n *\n * const subscription = interval(1000).subscribe(\n * num => console.log(num),\n * undefined,\n * () => {\n * // Will not be called, even when cancelling subscription.\n * console.log('completed!');\n * }\n * );\n *\n * setTimeout(() => {\n * subscription.unsubscribe();\n * console.log('unsubscribed!');\n * }, 2500);\n *\n * // Logs:\n * // 0 after 1s\n * // 1 after 2s\n * // \"unsubscribed!\" after 2.5s\n * ```\n *\n * @param {Observer|Function} observerOrNext (optional) Either an observer with methods to be called,\n * or the first of three possible handlers, which is the handler for each value emitted from the subscribed\n * Observable.\n * @param {Function} error (optional) A handler for a terminal event resulting from an error. If no error handler is provided,\n * the error will be thrown as unhandled.\n * @param {Function} complete (optional) A handler for a terminal event resulting from successful completion.\n * @return {ISubscription} a subscription reference to the registered handlers\n * @method subscribe\n */\n subscribe(observerOrNext?: PartialObserver | ((value: T) => void),\n error?: (error: any) => void,\n complete?: () => void): Subscription {\n\n const { operator } = this;\n const sink = toSubscriber(observerOrNext, error, complete);\n\n if (operator) {\n sink.add(operator.call(sink, this.source));\n } else {\n sink.add(\n this.source || (config.useDeprecatedSynchronousErrorHandling && !sink.syncErrorThrowable) ?\n this._subscribe(sink) :\n this._trySubscribe(sink)\n );\n }\n\n if (config.useDeprecatedSynchronousErrorHandling) {\n if (sink.syncErrorThrowable) {\n sink.syncErrorThrowable = false;\n if (sink.syncErrorThrown) {\n throw sink.syncErrorValue;\n }\n }\n }\n\n return sink;\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _trySubscribe(sink: Subscriber): TeardownLogic {\n try {\n return this._subscribe(sink);\n } catch (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n sink.syncErrorThrown = true;\n sink.syncErrorValue = err;\n }\n if (canReportError(sink)) {\n sink.error(err);\n } else {\n console.warn(err);\n }\n }\n }\n\n /**\n * @method forEach\n * @param {Function} next a handler for each value emitted by the observable\n * @param {PromiseConstructor} [promiseCtor] a constructor function used to instantiate the Promise\n * @return {Promise} a promise that either resolves on observable completion or\n * rejects with the handled error\n */\n forEach(next: (value: T) => void, promiseCtor?: PromiseConstructorLike): Promise {\n promiseCtor = getPromiseCtor(promiseCtor);\n\n return new promiseCtor((resolve, reject) => {\n // Must be declared in a separate statement to avoid a ReferenceError when\n // accessing subscription below in the closure due to Temporal Dead Zone.\n let subscription: Subscription;\n subscription = this.subscribe((value) => {\n try {\n next(value);\n } catch (err) {\n reject(err);\n if (subscription) {\n subscription.unsubscribe();\n }\n }\n }, reject, resolve);\n }) as Promise;\n }\n\n /** @internal This is an internal implementation detail, do not use. */\n _subscribe(subscriber: Subscriber): TeardownLogic {\n const { source } = this;\n return source && source.subscribe(subscriber);\n }\n\n // `if` and `throw` are special snow flakes, the compiler sees them as reserved words. Deprecated in\n // favor of iif and throwError functions.\n /**\n * @nocollapse\n * @deprecated In favor of iif creation function: import { iif } from 'rxjs';\n */\n static if: typeof iif;\n /**\n * @nocollapse\n * @deprecated In favor of throwError creation function: import { throwError } from 'rxjs';\n */\n static throw: typeof throwError;\n\n /**\n * An interop point defined by the es7-observable spec https://github.com/zenparsing/es-observable\n * @method Symbol.observable\n * @return {Observable} this instance of the observable\n */\n [Symbol_observable]() {\n return this;\n }\n\n /* tslint:disable:max-line-length */\n pipe(): Observable;\n pipe(op1: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction, op4: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction, op4: OperatorFunction, op5: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction, op4: OperatorFunction, op5: OperatorFunction, op6: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction, op4: OperatorFunction, op5: OperatorFunction, op6: OperatorFunction, op7: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction, op4: OperatorFunction, op5: OperatorFunction, op6: OperatorFunction, op7: OperatorFunction, op8: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction, op4: OperatorFunction, op5: OperatorFunction, op6: OperatorFunction, op7: OperatorFunction, op8: OperatorFunction, op9: OperatorFunction): Observable;\n pipe(op1: OperatorFunction, op2: OperatorFunction, op3: OperatorFunction, op4: OperatorFunction, op5: OperatorFunction, op6: OperatorFunction, op7: OperatorFunction, op8: OperatorFunction, op9: OperatorFunction, ...operations: OperatorFunction[]): Observable<{}>;\n /* tslint:enable:max-line-length */\n\n /**\n * Used to stitch together functional operators into a chain.\n * @method pipe\n * @return {Observable} the Observable result of all of the operators having\n * been called in the order they were passed in.\n *\n * ### Example\n * ```ts\n * import { interval } from 'rxjs';\n * import { map, filter, scan } from 'rxjs/operators';\n *\n * interval(1000)\n * .pipe(\n * filter(x => x % 2 === 0),\n * map(x => x + x),\n * scan((acc, x) => acc + x)\n * )\n * .subscribe(x => console.log(x))\n * ```\n */\n pipe(...operations: OperatorFunction[]): Observable {\n if (operations.length === 0) {\n return this as any;\n }\n\n return pipeFromArray(operations)(this);\n }\n\n /* tslint:disable:max-line-length */\n toPromise(this: Observable): Promise;\n toPromise(this: Observable, PromiseCtor: typeof Promise): Promise;\n toPromise(this: Observable, PromiseCtor: PromiseConstructorLike): Promise;\n /* tslint:enable:max-line-length */\n\n toPromise(promiseCtor?: PromiseConstructorLike): Promise {\n promiseCtor = getPromiseCtor(promiseCtor);\n\n return new promiseCtor((resolve, reject) => {\n let value: any;\n this.subscribe((x: T) => value = x, (err: any) => reject(err), () => resolve(value));\n }) as Promise;\n }\n}\n\n/**\n * Decides between a passed promise constructor from consuming code,\n * A default configured promise constructor, and the native promise\n * constructor and returns it. If nothing can be found, it will throw\n * an error.\n * @param promiseCtor The optional promise constructor to passed by consuming code\n */\nfunction getPromiseCtor(promiseCtor: PromiseConstructorLike | undefined) {\n if (!promiseCtor) {\n promiseCtor = config.Promise || Promise;\n }\n\n if (!promiseCtor) {\n throw new Error('no Promise impl found');\n }\n\n return promiseCtor;\n}\n","import { Subscriber } from '../Subscriber';\nimport { rxSubscriber as rxSubscriberSymbol } from '../symbol/rxSubscriber';\nimport { empty as emptyObserver } from '../Observer';\nimport { PartialObserver } from '../types';\n\nexport function toSubscriber(\n nextOrObserver?: PartialObserver | ((value: T) => void),\n error?: (error: any) => void,\n complete?: () => void): Subscriber {\n\n if (nextOrObserver) {\n if (nextOrObserver instanceof Subscriber) {\n return (> nextOrObserver);\n }\n\n if (nextOrObserver[rxSubscriberSymbol]) {\n return nextOrObserver[rxSubscriberSymbol]();\n }\n }\n\n if (!nextOrObserver && !error && !complete) {\n return new Subscriber(emptyObserver);\n }\n\n return new Subscriber(nextOrObserver, error, complete);\n}\n","import { Observer } from './types';\nimport { config } from './config';\nimport { hostReportError } from './util/hostReportError';\n\nexport const empty: Observer = {\n closed: true,\n next(value: any): void { /* noop */},\n error(err: any): void {\n if (config.useDeprecatedSynchronousErrorHandling) {\n throw err;\n } else {\n hostReportError(err);\n }\n },\n complete(): void { /*noop*/ }\n};\n","import { Subscriber } from './Subscriber';\nimport { InnerSubscriber } from './InnerSubscriber';\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class OuterSubscriber extends Subscriber {\n notifyNext(outerValue: T, innerValue: R,\n outerIndex: number, innerIndex: number,\n innerSub: InnerSubscriber): void {\n this.destination.next(innerValue);\n }\n\n notifyError(error: any, innerSub: InnerSubscriber): void {\n this.destination.error(error);\n }\n\n notifyComplete(innerSub: InnerSubscriber): void {\n this.destination.complete();\n }\n}\n","import { Subject } from './Subject';\nimport { SchedulerLike } from './types';\nimport { queue } from './scheduler/queue';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\nimport { ObserveOnSubscriber } from './operators/observeOn';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { SubjectSubscription } from './SubjectSubscription';\n/**\n * A variant of Subject that \"replays\" or emits old values to new subscribers.\n * It buffers a set number of values and will emit those values immediately to\n * any new subscribers in addition to emitting new values to existing subscribers.\n *\n * @class ReplaySubject\n */\nexport class ReplaySubject extends Subject {\n private _events: (ReplayEvent | T)[] = [];\n private _bufferSize: number;\n private _windowTime: number;\n private _infiniteTimeWindow: boolean = false;\n\n constructor(bufferSize: number = Number.POSITIVE_INFINITY,\n windowTime: number = Number.POSITIVE_INFINITY,\n private scheduler?: SchedulerLike) {\n super();\n this._bufferSize = bufferSize < 1 ? 1 : bufferSize;\n this._windowTime = windowTime < 1 ? 1 : windowTime;\n\n if (windowTime === Number.POSITIVE_INFINITY) {\n this._infiniteTimeWindow = true;\n this.next = this.nextInfiniteTimeWindow;\n } else {\n this.next = this.nextTimeWindow;\n }\n }\n\n private nextInfiniteTimeWindow(value: T): void {\n if (!this.isStopped) {\n const _events = this._events;\n _events.push(value);\n // Since this method is invoked in every next() call than the buffer\n // can overgrow the max size only by one item\n if (_events.length > this._bufferSize) {\n _events.shift();\n }\n }\n super.next(value);\n }\n\n private nextTimeWindow(value: T): void {\n if (!this.isStopped) {\n this._events.push(new ReplayEvent(this._getNow(), value));\n this._trimBufferThenGetEvents();\n }\n super.next(value);\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _subscribe(subscriber: Subscriber): Subscription {\n // When `_infiniteTimeWindow === true` then the buffer is already trimmed\n const _infiniteTimeWindow = this._infiniteTimeWindow;\n const _events = _infiniteTimeWindow ? this._events : this._trimBufferThenGetEvents();\n const scheduler = this.scheduler;\n const len = _events.length;\n let subscription: Subscription;\n\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n } else if (this.isStopped || this.hasError) {\n subscription = Subscription.EMPTY;\n } else {\n this.observers.push(subscriber);\n subscription = new SubjectSubscription(this, subscriber);\n }\n\n if (scheduler) {\n subscriber.add(subscriber = new ObserveOnSubscriber(subscriber, scheduler));\n }\n\n if (_infiniteTimeWindow) {\n for (let i = 0; i < len && !subscriber.closed; i++) {\n subscriber.next(_events[i]);\n }\n } else {\n for (let i = 0; i < len && !subscriber.closed; i++) {\n subscriber.next((>_events[i]).value);\n }\n }\n\n if (this.hasError) {\n subscriber.error(this.thrownError);\n } else if (this.isStopped) {\n subscriber.complete();\n }\n\n return subscription;\n }\n\n _getNow(): number {\n return (this.scheduler || queue).now();\n }\n\n private _trimBufferThenGetEvents(): ReplayEvent[] {\n const now = this._getNow();\n const _bufferSize = this._bufferSize;\n const _windowTime = this._windowTime;\n const _events = []>this._events;\n\n const eventsCount = _events.length;\n let spliceCount = 0;\n\n // Trim events that fall out of the time window.\n // Start at the front of the list. Break early once\n // we encounter an event that falls within the window.\n while (spliceCount < eventsCount) {\n if ((now - _events[spliceCount].time) < _windowTime) {\n break;\n }\n spliceCount++;\n }\n\n if (eventsCount > _bufferSize) {\n spliceCount = Math.max(spliceCount, eventsCount - _bufferSize);\n }\n\n if (spliceCount > 0) {\n _events.splice(0, spliceCount);\n }\n\n return _events;\n }\n\n}\n\nclass ReplayEvent {\n constructor(public time: number, public value: T) {\n }\n}\n","import { Action } from './scheduler/Action';\nimport { Subscription } from './Subscription';\nimport { SchedulerLike, SchedulerAction } from './types';\n\n/**\n * An execution context and a data structure to order tasks and schedule their\n * execution. Provides a notion of (potentially virtual) time, through the\n * `now()` getter method.\n *\n * Each unit of work in a Scheduler is called an `Action`.\n *\n * ```ts\n * class Scheduler {\n * now(): number;\n * schedule(work, delay?, state?): Subscription;\n * }\n * ```\n *\n * @class Scheduler\n * @deprecated Scheduler is an internal implementation detail of RxJS, and\n * should not be used directly. Rather, create your own class and implement\n * {@link SchedulerLike}\n */\nexport class Scheduler implements SchedulerLike {\n\n /**\n * Note: the extra arrow function wrapper is to make testing by overriding\n * Date.now easier.\n * @nocollapse\n */\n public static now: () => number = () => Date.now();\n\n constructor(private SchedulerAction: typeof Action,\n now: () => number = Scheduler.now) {\n this.now = now;\n }\n\n /**\n * A getter method that returns a number representing the current time\n * (at the time this function was called) according to the scheduler's own\n * internal clock.\n * @return {number} A number that represents the current time. May or may not\n * have a relation to wall-clock time. May or may not refer to a time unit\n * (e.g. milliseconds).\n */\n public now: () => number;\n\n /**\n * Schedules a function, `work`, for execution. May happen at some point in\n * the future, according to the `delay` parameter, if specified. May be passed\n * some context object, `state`, which will be passed to the `work` function.\n *\n * The given arguments will be processed an stored as an Action object in a\n * queue of actions.\n *\n * @param {function(state: ?T): ?Subscription} work A function representing a\n * task, or some unit of work to be executed by the Scheduler.\n * @param {number} [delay] Time to wait before executing the work, where the\n * time unit is implicit and defined by the Scheduler itself.\n * @param {T} [state] Some contextual data that the `work` function uses when\n * called by the Scheduler.\n * @return {Subscription} A subscription in order to be able to unsubscribe\n * the scheduled work.\n */\n public schedule(work: (this: SchedulerAction, state?: T) => void, delay: number = 0, state?: T): Subscription {\n return new this.SchedulerAction(this, work).schedule(state, delay);\n }\n}\n","import { Operator } from './Operator';\nimport { Observable } from './Observable';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\nimport { Observer, SubscriptionLike, TeardownLogic } from './types';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { SubjectSubscription } from './SubjectSubscription';\nimport { rxSubscriber as rxSubscriberSymbol } from '../internal/symbol/rxSubscriber';\n\n/**\n * @class SubjectSubscriber\n */\nexport class SubjectSubscriber extends Subscriber {\n constructor(protected destination: Subject) {\n super(destination);\n }\n}\n\n/**\n * A Subject is a special type of Observable that allows values to be\n * multicasted to many Observers. Subjects are like EventEmitters.\n *\n * Every Subject is an Observable and an Observer. You can subscribe to a\n * Subject, and you can call next to feed values as well as error and complete.\n *\n * @class Subject\n */\nexport class Subject extends Observable implements SubscriptionLike {\n\n [rxSubscriberSymbol]() {\n return new SubjectSubscriber(this);\n }\n\n observers: Observer[] = [];\n\n closed = false;\n\n isStopped = false;\n\n hasError = false;\n\n thrownError: any = null;\n\n constructor() {\n super();\n }\n\n /**@nocollapse\n * @deprecated use new Subject() instead\n */\n static create: Function = (destination: Observer, source: Observable): AnonymousSubject => {\n return new AnonymousSubject(destination, source);\n }\n\n lift(operator: Operator): Observable {\n const subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n }\n\n next(value?: T) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n if (!this.isStopped) {\n const { observers } = this;\n const len = observers.length;\n const copy = observers.slice();\n for (let i = 0; i < len; i++) {\n copy[i].next(value);\n }\n }\n }\n\n error(err: any) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n this.hasError = true;\n this.thrownError = err;\n this.isStopped = true;\n const { observers } = this;\n const len = observers.length;\n const copy = observers.slice();\n for (let i = 0; i < len; i++) {\n copy[i].error(err);\n }\n this.observers.length = 0;\n }\n\n complete() {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n this.isStopped = true;\n const { observers } = this;\n const len = observers.length;\n const copy = observers.slice();\n for (let i = 0; i < len; i++) {\n copy[i].complete();\n }\n this.observers.length = 0;\n }\n\n unsubscribe() {\n this.isStopped = true;\n this.closed = true;\n this.observers = null;\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _trySubscribe(subscriber: Subscriber): TeardownLogic {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n } else {\n return super._trySubscribe(subscriber);\n }\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _subscribe(subscriber: Subscriber): Subscription {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n } else if (this.hasError) {\n subscriber.error(this.thrownError);\n return Subscription.EMPTY;\n } else if (this.isStopped) {\n subscriber.complete();\n return Subscription.EMPTY;\n } else {\n this.observers.push(subscriber);\n return new SubjectSubscription(this, subscriber);\n }\n }\n\n /**\n * Creates a new Observable with this Subject as the source. You can do this\n * to create customize Observer-side logic of the Subject and conceal it from\n * code that uses the Observable.\n * @return {Observable} Observable that the Subject casts to\n */\n asObservable(): Observable {\n const observable = new Observable();\n (observable).source = this;\n return observable;\n }\n}\n\n/**\n * @class AnonymousSubject\n */\nexport class AnonymousSubject extends Subject {\n constructor(protected destination?: Observer, source?: Observable) {\n super();\n this.source = source;\n }\n\n next(value: T) {\n const { destination } = this;\n if (destination && destination.next) {\n destination.next(value);\n }\n }\n\n error(err: any) {\n const { destination } = this;\n if (destination && destination.error) {\n this.destination.error(err);\n }\n }\n\n complete() {\n const { destination } = this;\n if (destination && destination.complete) {\n this.destination.complete();\n }\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _subscribe(subscriber: Subscriber): Subscription {\n const { source } = this;\n if (source) {\n return this.source.subscribe(subscriber);\n } else {\n return Subscription.EMPTY;\n }\n }\n}\n","import { Subject } from './Subject';\nimport { Observer } from './types';\nimport { Subscription } from './Subscription';\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class SubjectSubscription extends Subscription {\n closed: boolean = false;\n\n constructor(public subject: Subject, public subscriber: Observer) {\n super();\n }\n\n unsubscribe() {\n if (this.closed) {\n return;\n }\n\n this.closed = true;\n\n const subject = this.subject;\n const observers = subject.observers;\n\n this.subject = null;\n\n if (!observers || observers.length === 0 || subject.isStopped || subject.closed) {\n return;\n }\n\n const subscriberIndex = observers.indexOf(this.subscriber);\n\n if (subscriberIndex !== -1) {\n observers.splice(subscriberIndex, 1);\n }\n }\n}\n","import { isFunction } from './util/isFunction';\nimport { empty as emptyObserver } from './Observer';\nimport { Observer, PartialObserver, TeardownLogic } from './types';\nimport { Subscription } from './Subscription';\nimport { rxSubscriber as rxSubscriberSymbol } from '../internal/symbol/rxSubscriber';\nimport { config } from './config';\nimport { hostReportError } from './util/hostReportError';\n\n/**\n * Implements the {@link Observer} interface and extends the\n * {@link Subscription} class. While the {@link Observer} is the public API for\n * consuming the values of an {@link Observable}, all Observers get converted to\n * a Subscriber, in order to provide Subscription-like capabilities such as\n * `unsubscribe`. Subscriber is a common type in RxJS, and crucial for\n * implementing operators, but it is rarely used as a public API.\n *\n * @class Subscriber\n */\nexport class Subscriber extends Subscription implements Observer {\n\n [rxSubscriberSymbol]() { return this; }\n\n /**\n * A static factory for a Subscriber, given a (potentially partial) definition\n * of an Observer.\n * @param {function(x: ?T): void} [next] The `next` callback of an Observer.\n * @param {function(e: ?any): void} [error] The `error` callback of an\n * Observer.\n * @param {function(): void} [complete] The `complete` callback of an\n * Observer.\n * @return {Subscriber} A Subscriber wrapping the (partially defined)\n * Observer represented by the given arguments.\n * @nocollapse\n */\n static create(next?: (x?: T) => void,\n error?: (e?: any) => void,\n complete?: () => void): Subscriber {\n const subscriber = new Subscriber(next, error, complete);\n subscriber.syncErrorThrowable = false;\n return subscriber;\n }\n\n /** @internal */ syncErrorValue: any = null;\n /** @internal */ syncErrorThrown: boolean = false;\n /** @internal */ syncErrorThrowable: boolean = false;\n\n protected isStopped: boolean = false;\n protected destination: PartialObserver | Subscriber; // this `any` is the escape hatch to erase extra type param (e.g. R)\n\n /**\n * @param {Observer|function(value: T): void} [destinationOrNext] A partially\n * defined Observer or a `next` callback function.\n * @param {function(e: ?any): void} [error] The `error` callback of an\n * Observer.\n * @param {function(): void} [complete] The `complete` callback of an\n * Observer.\n */\n constructor(destinationOrNext?: PartialObserver | ((value: T) => void),\n error?: (e?: any) => void,\n complete?: () => void) {\n super();\n\n switch (arguments.length) {\n case 0:\n this.destination = emptyObserver;\n break;\n case 1:\n if (!destinationOrNext) {\n this.destination = emptyObserver;\n break;\n }\n if (typeof destinationOrNext === 'object') {\n if (destinationOrNext instanceof Subscriber) {\n this.syncErrorThrowable = destinationOrNext.syncErrorThrowable;\n this.destination = destinationOrNext;\n destinationOrNext.add(this);\n } else {\n this.syncErrorThrowable = true;\n this.destination = new SafeSubscriber(this, > destinationOrNext);\n }\n break;\n }\n default:\n this.syncErrorThrowable = true;\n this.destination = new SafeSubscriber(this, <((value: T) => void)> destinationOrNext, error, complete);\n break;\n }\n }\n\n /**\n * The {@link Observer} callback to receive notifications of type `next` from\n * the Observable, with a value. The Observable may call this method 0 or more\n * times.\n * @param {T} [value] The `next` value.\n * @return {void}\n */\n next(value?: T): void {\n if (!this.isStopped) {\n this._next(value);\n }\n }\n\n /**\n * The {@link Observer} callback to receive notifications of type `error` from\n * the Observable, with an attached `Error`. Notifies the Observer that\n * the Observable has experienced an error condition.\n * @param {any} [err] The `error` exception.\n * @return {void}\n */\n error(err?: any): void {\n if (!this.isStopped) {\n this.isStopped = true;\n this._error(err);\n }\n }\n\n /**\n * The {@link Observer} callback to receive a valueless notification of type\n * `complete` from the Observable. Notifies the Observer that the Observable\n * has finished sending push-based notifications.\n * @return {void}\n */\n complete(): void {\n if (!this.isStopped) {\n this.isStopped = true;\n this._complete();\n }\n }\n\n unsubscribe(): void {\n if (this.closed) {\n return;\n }\n this.isStopped = true;\n super.unsubscribe();\n }\n\n protected _next(value: T): void {\n this.destination.next(value);\n }\n\n protected _error(err: any): void {\n this.destination.error(err);\n this.unsubscribe();\n }\n\n protected _complete(): void {\n this.destination.complete();\n this.unsubscribe();\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _unsubscribeAndRecycle(): Subscriber {\n const { _parentOrParents } = this;\n this._parentOrParents = null;\n this.unsubscribe();\n this.closed = false;\n this.isStopped = false;\n this._parentOrParents = _parentOrParents;\n return this;\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class SafeSubscriber extends Subscriber {\n\n private _context: any;\n\n constructor(private _parentSubscriber: Subscriber,\n observerOrNext?: PartialObserver | ((value: T) => void),\n error?: (e?: any) => void,\n complete?: () => void) {\n super();\n\n let next: ((value: T) => void);\n let context: any = this;\n\n if (isFunction(observerOrNext)) {\n next = (<((value: T) => void)> observerOrNext);\n } else if (observerOrNext) {\n next = (> observerOrNext).next;\n error = (> observerOrNext).error;\n complete = (> observerOrNext).complete;\n if (observerOrNext !== emptyObserver) {\n context = Object.create(observerOrNext);\n if (isFunction(context.unsubscribe)) {\n this.add(<() => void> context.unsubscribe.bind(context));\n }\n context.unsubscribe = this.unsubscribe.bind(this);\n }\n }\n\n this._context = context;\n this._next = next;\n this._error = error;\n this._complete = complete;\n }\n\n next(value?: T): void {\n if (!this.isStopped && this._next) {\n const { _parentSubscriber } = this;\n if (!config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._next, value);\n } else if (this.__tryOrSetError(_parentSubscriber, this._next, value)) {\n this.unsubscribe();\n }\n }\n }\n\n error(err?: any): void {\n if (!this.isStopped) {\n const { _parentSubscriber } = this;\n const { useDeprecatedSynchronousErrorHandling } = config;\n if (this._error) {\n if (!useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._error, err);\n this.unsubscribe();\n } else {\n this.__tryOrSetError(_parentSubscriber, this._error, err);\n this.unsubscribe();\n }\n } else if (!_parentSubscriber.syncErrorThrowable) {\n this.unsubscribe();\n if (useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n hostReportError(err);\n } else {\n if (useDeprecatedSynchronousErrorHandling) {\n _parentSubscriber.syncErrorValue = err;\n _parentSubscriber.syncErrorThrown = true;\n } else {\n hostReportError(err);\n }\n this.unsubscribe();\n }\n }\n }\n\n complete(): void {\n if (!this.isStopped) {\n const { _parentSubscriber } = this;\n if (this._complete) {\n const wrappedComplete = () => this._complete.call(this._context);\n\n if (!config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(wrappedComplete);\n this.unsubscribe();\n } else {\n this.__tryOrSetError(_parentSubscriber, wrappedComplete);\n this.unsubscribe();\n }\n } else {\n this.unsubscribe();\n }\n }\n }\n\n private __tryOrUnsub(fn: Function, value?: any): void {\n try {\n fn.call(this._context, value);\n } catch (err) {\n this.unsubscribe();\n if (config.useDeprecatedSynchronousErrorHandling) {\n throw err;\n } else {\n hostReportError(err);\n }\n }\n }\n\n private __tryOrSetError(parent: Subscriber, fn: Function, value?: any): boolean {\n if (!config.useDeprecatedSynchronousErrorHandling) {\n throw new Error('bad call');\n }\n try {\n fn.call(this._context, value);\n } catch (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n parent.syncErrorValue = err;\n parent.syncErrorThrown = true;\n return true;\n } else {\n hostReportError(err);\n return true;\n }\n }\n return false;\n }\n\n /** @internal This is an internal implementation detail, do not use. */\n _unsubscribe(): void {\n const { _parentSubscriber } = this;\n this._context = null;\n this._parentSubscriber = null;\n _parentSubscriber.unsubscribe();\n }\n}\n","import { isArray } from './util/isArray';\nimport { isObject } from './util/isObject';\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { SubscriptionLike, TeardownLogic } from './types';\n\n/**\n * Represents a disposable resource, such as the execution of an Observable. A\n * Subscription has one important method, `unsubscribe`, that takes no argument\n * and just disposes the resource held by the subscription.\n *\n * Additionally, subscriptions may be grouped together through the `add()`\n * method, which will attach a child Subscription to the current Subscription.\n * When a Subscription is unsubscribed, all its children (and its grandchildren)\n * will be unsubscribed as well.\n *\n * @class Subscription\n */\nexport class Subscription implements SubscriptionLike {\n /** @nocollapse */\n public static EMPTY: Subscription = (function(empty: any) {\n empty.closed = true;\n return empty;\n }(new Subscription()));\n\n /**\n * A flag to indicate whether this Subscription has already been unsubscribed.\n * @type {boolean}\n */\n public closed: boolean = false;\n\n /** @internal */\n protected _parentOrParents: Subscription | Subscription[] = null;\n /** @internal */\n private _subscriptions: SubscriptionLike[] = null;\n\n /**\n * @param {function(): void} [unsubscribe] A function describing how to\n * perform the disposal of resources when the `unsubscribe` method is called.\n */\n constructor(unsubscribe?: () => void) {\n if (unsubscribe) {\n (this as any)._ctorUnsubscribe = true;\n (this as any)._unsubscribe = unsubscribe;\n }\n }\n\n /**\n * Disposes the resources held by the subscription. May, for instance, cancel\n * an ongoing Observable execution or cancel any other type of work that\n * started when the Subscription was created.\n * @return {void}\n */\n unsubscribe(): void {\n let errors: any[];\n\n if (this.closed) {\n return;\n }\n\n let { _parentOrParents, _ctorUnsubscribe, _unsubscribe, _subscriptions } = (this as any);\n\n this.closed = true;\n this._parentOrParents = null;\n // null out _subscriptions first so any child subscriptions that attempt\n // to remove themselves from this subscription will noop\n this._subscriptions = null;\n\n if (_parentOrParents instanceof Subscription) {\n _parentOrParents.remove(this);\n } else if (_parentOrParents !== null) {\n for (let index = 0; index < _parentOrParents.length; ++index) {\n const parent = _parentOrParents[index];\n parent.remove(this);\n }\n }\n\n if (isFunction(_unsubscribe)) {\n // It's only possible to null _unsubscribe - to release the reference to\n // any teardown function passed in the constructor - if the property was\n // actually assigned in the constructor, as there are some classes that\n // are derived from Subscriber (which derives from Subscription) that\n // implement an _unsubscribe method as a mechanism for obtaining\n // unsubscription notifications and some of those subscribers are\n // recycled. Also, in some of those subscribers, _unsubscribe switches\n // from a prototype method to an instance property - see notifyNext in\n // RetryWhenSubscriber.\n if (_ctorUnsubscribe) {\n (this as any)._unsubscribe = undefined;\n }\n try {\n _unsubscribe.call(this);\n } catch (e) {\n errors = e instanceof UnsubscriptionError ? flattenUnsubscriptionErrors(e.errors) : [e];\n }\n }\n\n if (isArray(_subscriptions)) {\n let index = -1;\n let len = _subscriptions.length;\n\n while (++index < len) {\n const sub = _subscriptions[index];\n if (isObject(sub)) {\n try {\n sub.unsubscribe();\n } catch (e) {\n errors = errors || [];\n if (e instanceof UnsubscriptionError) {\n errors = errors.concat(flattenUnsubscriptionErrors(e.errors));\n } else {\n errors.push(e);\n }\n }\n }\n }\n }\n\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n\n /**\n * Adds a tear down to be called during the unsubscribe() of this\n * Subscription. Can also be used to add a child subscription.\n *\n * If the tear down being added is a subscription that is already\n * unsubscribed, is the same reference `add` is being called on, or is\n * `Subscription.EMPTY`, it will not be added.\n *\n * If this subscription is already in an `closed` state, the passed\n * tear down logic will be executed immediately.\n *\n * When a parent subscription is unsubscribed, any child subscriptions that were added to it are also unsubscribed.\n *\n * @param {TeardownLogic} teardown The additional logic to execute on\n * teardown.\n * @return {Subscription} Returns the Subscription used or created to be\n * added to the inner subscriptions list. This Subscription can be used with\n * `remove()` to remove the passed teardown logic from the inner subscriptions\n * list.\n */\n add(teardown: TeardownLogic): Subscription {\n let subscription = (teardown);\n\n if (!teardown) {\n return Subscription.EMPTY;\n }\n\n switch (typeof teardown) {\n case 'function':\n subscription = new Subscription(<(() => void)>teardown);\n case 'object':\n if (subscription === this || subscription.closed || typeof subscription.unsubscribe !== 'function') {\n // This also covers the case where `subscription` is `Subscription.EMPTY`, which is always in `closed` state.\n return subscription;\n } else if (this.closed) {\n subscription.unsubscribe();\n return subscription;\n } else if (!(subscription instanceof Subscription)) {\n const tmp = subscription;\n subscription = new Subscription();\n subscription._subscriptions = [tmp];\n }\n break;\n default: {\n throw new Error('unrecognized teardown ' + teardown + ' added to Subscription.');\n }\n }\n\n // Add `this` as parent of `subscription` if that's not already the case.\n let { _parentOrParents } = subscription;\n if (_parentOrParents === null) {\n // If we don't have a parent, then set `subscription._parents` to\n // the `this`, which is the common case that we optimize for.\n subscription._parentOrParents = this;\n } else if (_parentOrParents instanceof Subscription) {\n if (_parentOrParents === this) {\n // The `subscription` already has `this` as a parent.\n return subscription;\n }\n // If there's already one parent, but not multiple, allocate an\n // Array to store the rest of the parent Subscriptions.\n subscription._parentOrParents = [_parentOrParents, this];\n } else if (_parentOrParents.indexOf(this) === -1) {\n // Only add `this` to the _parentOrParents list if it's not already there.\n _parentOrParents.push(this);\n } else {\n // The `subscription` already has `this` as a parent.\n return subscription;\n }\n\n // Optimize for the common case when adding the first subscription.\n const subscriptions = this._subscriptions;\n if (subscriptions === null) {\n this._subscriptions = [subscription];\n } else {\n subscriptions.push(subscription);\n }\n\n return subscription;\n }\n\n /**\n * Removes a Subscription from the internal list of subscriptions that will\n * unsubscribe during the unsubscribe process of this Subscription.\n * @param {Subscription} subscription The subscription to remove.\n * @return {void}\n */\n remove(subscription: Subscription): void {\n const subscriptions = this._subscriptions;\n if (subscriptions) {\n const subscriptionIndex = subscriptions.indexOf(subscription);\n if (subscriptionIndex !== -1) {\n subscriptions.splice(subscriptionIndex, 1);\n }\n }\n }\n}\n\nfunction flattenUnsubscriptionErrors(errors: any[]) {\n return errors.reduce((errs, err) => errs.concat((err instanceof UnsubscriptionError) ? err.errors : err), []);\n}\n","let _enable_super_gross_mode_that_will_cause_bad_things = false;\n\n/**\n * The global configuration object for RxJS, used to configure things\n * like what Promise contructor should used to create Promises\n */\nexport const config = {\n /**\n * The promise constructor used by default for methods such as\n * {@link toPromise} and {@link forEach}\n */\n Promise: undefined as PromiseConstructorLike,\n\n /**\n * If true, turns on synchronous error rethrowing, which is a deprecated behavior\n * in v6 and higher. This behavior enables bad patterns like wrapping a subscribe\n * call in a try/catch block. It also enables producer interference, a nasty bug\n * where a multicast can be broken for all observers by a downstream consumer with\n * an unhandled error. DO NOT USE THIS FLAG UNLESS IT'S NEEDED TO BY TIME\n * FOR MIGRATION REASONS.\n */\n set useDeprecatedSynchronousErrorHandling(value: boolean) {\n if (value) {\n const error = new Error();\n console.warn('DEPRECATED! RxJS was set to use deprecated synchronous error handling behavior by code at: \\n' + error.stack);\n } else if (_enable_super_gross_mode_that_will_cause_bad_things) {\n console.log('RxJS: Back to a better error behavior. Thank you. <3');\n }\n _enable_super_gross_mode_that_will_cause_bad_things = value;\n },\n\n get useDeprecatedSynchronousErrorHandling() {\n return _enable_super_gross_mode_that_will_cause_bad_things;\n },\n};\n","/** @prettier */\nimport { Subscription } from './Subscription';\nimport { Subscriber } from './Subscriber';\nimport { Observable } from './Observable';\nimport { subscribeTo } from './util/subscribeTo';\n\ninterface SimpleOuterSubscriberLike {\n /**\n * A handler for inner next notifications from the inner subscription\n * @param innerValue the value nexted by the inner producer\n */\n notifyNext(innerValue: T): void;\n /**\n * A handler for inner error notifications from the inner subscription\n * @param err the error from the inner producer\n */\n notifyError(err: any): void;\n /**\n * A handler for inner complete notifications from the inner subscription.\n */\n notifyComplete(): void;\n}\n\nexport class SimpleInnerSubscriber extends Subscriber {\n constructor(private parent: SimpleOuterSubscriberLike) {\n super();\n }\n\n protected _next(value: T): void {\n this.parent.notifyNext(value);\n }\n\n protected _error(error: any): void {\n this.parent.notifyError(error);\n this.unsubscribe();\n }\n\n protected _complete(): void {\n this.parent.notifyComplete();\n this.unsubscribe();\n }\n}\n\nexport class ComplexInnerSubscriber extends Subscriber {\n constructor(private parent: ComplexOuterSubscriber, public outerValue: T, public outerIndex: number) {\n super();\n }\n\n protected _next(value: R): void {\n this.parent.notifyNext(this.outerValue, value, this.outerIndex, this);\n }\n\n protected _error(error: any): void {\n this.parent.notifyError(error);\n this.unsubscribe();\n }\n\n protected _complete(): void {\n this.parent.notifyComplete(this);\n this.unsubscribe();\n }\n}\n\nexport class SimpleOuterSubscriber extends Subscriber implements SimpleOuterSubscriberLike {\n notifyNext(innerValue: R): void {\n this.destination.next(innerValue);\n }\n\n notifyError(err: any): void {\n this.destination.error(err);\n }\n\n notifyComplete(): void {\n this.destination.complete();\n }\n}\n\n/**\n * DO NOT USE (formerly \"OuterSubscriber\")\n * TODO: We want to refactor this and remove it. It is retaining values it shouldn't for long\n * periods of time.\n */\nexport class ComplexOuterSubscriber extends Subscriber {\n /**\n * @param _outerValue Used by: bufferToggle, delayWhen, windowToggle\n * @param innerValue Used by: subclass default, combineLatest, race, bufferToggle, windowToggle, withLatestFrom\n * @param _outerIndex Used by: combineLatest, race, withLatestFrom\n * @param _innerSub Used by: delayWhen\n */\n notifyNext(_outerValue: T, innerValue: R, _outerIndex: number, _innerSub: ComplexInnerSubscriber): void {\n this.destination.next(innerValue);\n }\n\n notifyError(error: any): void {\n this.destination.error(error);\n }\n\n /**\n * @param _innerSub Used by: race, bufferToggle, delayWhen, windowToggle, windowWhen\n */\n notifyComplete(_innerSub: ComplexInnerSubscriber): void {\n this.destination.complete();\n }\n}\n\nexport function innerSubscribe(result: any, innerSubscriber: Subscriber): Subscription | undefined {\n if (innerSubscriber.closed) {\n return undefined;\n }\n if (result instanceof Observable) {\n return result.subscribe(innerSubscriber);\n }\n let subscription: Subscription;\n try {\n subscription = subscribeTo(result)(innerSubscriber) as Subscription;\n } catch (error) {\n innerSubscriber.error(error);\n }\n return subscription;\n}\n","import { Subject, SubjectSubscriber } from '../Subject';\nimport { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { TeardownLogic } from '../types';\nimport { refCount as higherOrderRefCount } from '../operators/refCount';\n\n/**\n * @class ConnectableObservable\n */\nexport class ConnectableObservable extends Observable {\n\n protected _subject: Subject;\n protected _refCount: number = 0;\n protected _connection: Subscription;\n /** @internal */\n _isComplete = false;\n\n constructor(public source: Observable,\n protected subjectFactory: () => Subject) {\n super();\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _subscribe(subscriber: Subscriber) {\n return this.getSubject().subscribe(subscriber);\n }\n\n protected getSubject(): Subject {\n const subject = this._subject;\n if (!subject || subject.isStopped) {\n this._subject = this.subjectFactory();\n }\n return this._subject;\n }\n\n connect(): Subscription {\n let connection = this._connection;\n if (!connection) {\n this._isComplete = false;\n connection = this._connection = new Subscription();\n connection.add(this.source\n .subscribe(new ConnectableSubscriber(this.getSubject(), this)));\n if (connection.closed) {\n this._connection = null;\n connection = Subscription.EMPTY;\n }\n }\n return connection;\n }\n\n refCount(): Observable {\n return higherOrderRefCount()(this) as Observable;\n }\n}\n\nexport const connectableObservableDescriptor: PropertyDescriptorMap = (() => {\n const connectableProto = ConnectableObservable.prototype;\n return {\n operator: { value: null as null },\n _refCount: { value: 0, writable: true },\n _subject: { value: null as null, writable: true },\n _connection: { value: null as null, writable: true },\n _subscribe: { value: connectableProto._subscribe },\n _isComplete: { value: connectableProto._isComplete, writable: true },\n getSubject: { value: connectableProto.getSubject },\n connect: { value: connectableProto.connect },\n refCount: { value: connectableProto.refCount }\n };\n})();\n\nclass ConnectableSubscriber extends SubjectSubscriber {\n constructor(destination: Subject,\n private connectable: ConnectableObservable) {\n super(destination);\n }\n protected _error(err: any): void {\n this._unsubscribe();\n super._error(err);\n }\n protected _complete(): void {\n this.connectable._isComplete = true;\n this._unsubscribe();\n super._complete();\n }\n protected _unsubscribe() {\n const connectable = this.connectable;\n if (connectable) {\n this.connectable = null;\n const connection = connectable._connection;\n connectable._refCount = 0;\n connectable._subject = null;\n connectable._connection = null;\n if (connection) {\n connection.unsubscribe();\n }\n }\n }\n}\n\nclass RefCountOperator implements Operator {\n constructor(private connectable: ConnectableObservable) {\n }\n call(subscriber: Subscriber, source: any): TeardownLogic {\n\n const { connectable } = this;\n ( connectable)._refCount++;\n\n const refCounter = new RefCountSubscriber(subscriber, connectable);\n const subscription = source.subscribe(refCounter);\n\n if (!refCounter.closed) {\n ( refCounter).connection = connectable.connect();\n }\n\n return subscription;\n }\n}\n\nclass RefCountSubscriber extends Subscriber {\n\n private connection: Subscription;\n\n constructor(destination: Subscriber,\n private connectable: ConnectableObservable) {\n super(destination);\n }\n\n protected _unsubscribe() {\n\n const { connectable } = this;\n if (!connectable) {\n this.connection = null;\n return;\n }\n\n this.connectable = null;\n const refCount = ( connectable)._refCount;\n if (refCount <= 0) {\n this.connection = null;\n return;\n }\n\n ( connectable)._refCount = refCount - 1;\n if (refCount > 1) {\n this.connection = null;\n return;\n }\n\n ///\n // Compare the local RefCountSubscriber's connection Subscription to the\n // connection Subscription on the shared ConnectableObservable. In cases\n // where the ConnectableObservable source synchronously emits values, and\n // the RefCountSubscriber's downstream Observers synchronously unsubscribe,\n // execution continues to here before the RefCountOperator has a chance to\n // supply the RefCountSubscriber with the shared connection Subscription.\n // For example:\n // ```\n // range(0, 10).pipe(\n // publish(),\n // refCount(),\n // take(5),\n // ).subscribe();\n // ```\n // In order to account for this case, RefCountSubscriber should only dispose\n // the ConnectableObservable's shared connection Subscription if the\n // connection Subscription exists, *and* either:\n // a. RefCountSubscriber doesn't have a reference to the shared connection\n // Subscription yet, or,\n // b. RefCountSubscriber's connection Subscription reference is identical\n // to the shared connection Subscription\n ///\n const { connection } = this;\n const sharedConnection = ( connectable)._connection;\n this.connection = null;\n\n if (sharedConnection && (!connection || sharedConnection === connection)) {\n sharedConnection.unsubscribe();\n }\n }\n}\n","import { Observable } from '../Observable';\nimport { ObservableInput, SchedulerLike, ObservedValueOf } from '../types';\nimport { isScheduler } from '../util/isScheduler';\nimport { isArray } from '../util/isArray';\nimport { Subscriber } from '../Subscriber';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { Operator } from '../Operator';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { fromArray } from './fromArray';\n\nconst NONE = {};\n\n/* tslint:disable:max-line-length */\n\n// If called with a single array, it \"auto-spreads\" the array, with result selector\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, R>(sources: [O1], resultSelector: (v1: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, O2 extends ObservableInput, R>(sources: [O1, O2], resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, R>(sources: [O1, O2, O3], resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, R>(sources: [O1, O2, O3, O4], resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, R>(sources: [O1, O2, O3, O4, O5], resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf, v5: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput, R>(sources: [O1, O2, O3, O4, O5, O6], resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf, v5: ObservedValueOf, v6: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, R>(sources: O[], resultSelector: (...args: ObservedValueOf[]) => R, scheduler?: SchedulerLike): Observable;\n\n// standard call, but with a result selector\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, R>(v1: O1, resultSelector: (v1: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, O2 extends ObservableInput, R>(v1: O1, v2: O2, resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, R>(v1: O1, v2: O2, v3: O3, resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, R>(v1: O1, v2: O2, v3: O3, v4: O4, resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, R>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf, v5: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput, R>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, v6: O6, resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf, v5: ObservedValueOf, v6: ObservedValueOf) => R, scheduler?: SchedulerLike): Observable;\n\n// With a scheduler (deprecated)\n/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */\nexport function combineLatest>(sources: [O1], scheduler: SchedulerLike): Observable<[ObservedValueOf]>;\n/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */\nexport function combineLatest, O2 extends ObservableInput>(sources: [O1, O2], scheduler: SchedulerLike): Observable<[ObservedValueOf, ObservedValueOf]>;\n/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput>(sources: [O1, O2, O3], scheduler: SchedulerLike): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\n/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput>(sources: [O1, O2, O3, O4], scheduler: SchedulerLike): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\n/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput>(sources: [O1, O2, O3, O4, O5], scheduler: SchedulerLike): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\n/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput>(sources: [O1, O2, O3, O4, O5, O6], scheduler: SchedulerLike): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\n/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */\nexport function combineLatest>(sources: O[], scheduler: SchedulerLike): Observable[]>;\n\n// Best case\nexport function combineLatest>(sources: [O1]): Observable<[ObservedValueOf]>;\nexport function combineLatest, O2 extends ObservableInput>(sources: [O1, O2]): Observable<[ObservedValueOf, ObservedValueOf]>;\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput>(sources: [O1, O2, O3]): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput>(sources: [O1, O2, O3, O4]): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput>(sources: [O1, O2, O3, O4, O5]): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput>(sources: [O1, O2, O3, O4, O5, O6]): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\nexport function combineLatest>(sources: O[]): Observable[]>;\n\n// Standard calls\n/** @deprecated Pass arguments in a single array instead `combineLatest([a, b, c])` */\nexport function combineLatest>(v1: O1, scheduler?: SchedulerLike): Observable<[ObservedValueOf]>;\n/** @deprecated Pass arguments in a single array instead `combineLatest([a, b, c])` */\nexport function combineLatest, O2 extends ObservableInput>(v1: O1, v2: O2, scheduler?: SchedulerLike): Observable<[ObservedValueOf, ObservedValueOf]>;\n/** @deprecated Pass arguments in a single array instead `combineLatest([a, b, c])` */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput>(v1: O1, v2: O2, v3: O3, scheduler?: SchedulerLike): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\n/** @deprecated Pass arguments in a single array instead `combineLatest([a, b, c])` */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4, scheduler?: SchedulerLike): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\n/** @deprecated Pass arguments in a single array instead `combineLatest([a, b, c])` */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, scheduler?: SchedulerLike): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\n/** @deprecated Pass arguments in a single array instead `combineLatest([a, b, c])` */\nexport function combineLatest, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, v6: O6, scheduler?: SchedulerLike): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\n\n/** @deprecated Pass arguments in a single array instead `combineLatest([a, b, c])` */\nexport function combineLatest>(...observables: O[]): Observable;\n\n/** @deprecated Pass arguments in a single array instead `combineLatest([a, b, c])` */\nexport function combineLatest, R>(...observables: Array | ((...values: Array) => R)>): Observable;\n\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function combineLatest, R>(array: O[], resultSelector: (...values: ObservedValueOf[]) => R, scheduler?: SchedulerLike): Observable;\n\n/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */\nexport function combineLatest>(...observables: Array): Observable;\n\n/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */\nexport function combineLatest, R>(...observables: Array[]) => R) | SchedulerLike>): Observable;\n\n/** @deprecated Passing a scheduler here is deprecated, use {@link subscribeOn} and/or {@link observeOn} instead */\nexport function combineLatest(...observables: Array | ((...values: Array) => R) | SchedulerLike>): Observable;\n/* tslint:enable:max-line-length */\n\n/**\n * Combines multiple Observables to create an Observable whose values are\n * calculated from the latest values of each of its input Observables.\n *\n * Whenever any input Observable emits a value, it\n * computes a formula using the latest values from all the inputs, then emits\n * the output of that formula.\n *\n * ![](combineLatest.png)\n *\n * `combineLatest` combines the values from all the Observables passed as\n * arguments. This is done by subscribing to each Observable in order and,\n * whenever any Observable emits, collecting an array of the most recent\n * values from each Observable. So if you pass `n` Observables to operator,\n * returned Observable will always emit an array of `n` values, in order\n * corresponding to order of passed Observables (value from the first Observable\n * on the first place and so on).\n *\n * Static version of `combineLatest` accepts either an array of Observables\n * or each Observable can be put directly as an argument. Note that array of\n * Observables is good choice, if you don't know beforehand how many Observables\n * you will combine. Passing empty array will result in Observable that\n * completes immediately.\n *\n * To ensure output array has always the same length, `combineLatest` will\n * actually wait for all input Observables to emit at least once,\n * before it starts emitting results. This means if some Observable emits\n * values before other Observables started emitting, all these values but the last\n * will be lost. On the other hand, if some Observable does not emit a value but\n * completes, resulting Observable will complete at the same moment without\n * emitting anything, since it will be now impossible to include value from\n * completed Observable in resulting array. Also, if some input Observable does\n * not emit any value and never completes, `combineLatest` will also never emit\n * and never complete, since, again, it will wait for all streams to emit some\n * value.\n *\n * If at least one Observable was passed to `combineLatest` and all passed Observables\n * emitted something, resulting Observable will complete when all combined\n * streams complete. So even if some Observable completes, result of\n * `combineLatest` will still emit values when other Observables do. In case\n * of completed Observable, its value from now on will always be the last\n * emitted value. On the other hand, if any Observable errors, `combineLatest`\n * will error immediately as well, and all other Observables will be unsubscribed.\n *\n * `combineLatest` accepts as optional parameter `project` function, which takes\n * as arguments all values that would normally be emitted by resulting Observable.\n * `project` can return any kind of value, which will be then emitted by Observable\n * instead of default array. Note that `project` does not take as argument that array\n * of values, but values themselves. That means default `project` can be imagined\n * as function that takes all its arguments and puts them into an array.\n *\n * ## Examples\n * ### Combine two timer Observables\n * ```ts\n * import { combineLatest, timer } from 'rxjs';\n *\n * const firstTimer = timer(0, 1000); // emit 0, 1, 2... after every second, starting from now\n * const secondTimer = timer(500, 1000); // emit 0, 1, 2... after every second, starting 0,5s from now\n * const combinedTimers = combineLatest(firstTimer, secondTimer);\n * combinedTimers.subscribe(value => console.log(value));\n * // Logs\n * // [0, 0] after 0.5s\n * // [1, 0] after 1s\n * // [1, 1] after 1.5s\n * // [2, 1] after 2s\n * ```\n *\n * ### Combine an array of Observables\n * ```ts\n * import { combineLatest, of } from 'rxjs';\n * import { delay, starWith } from 'rxjs/operators';\n *\n * const observables = [1, 5, 10].map(\n * n => of(n).pipe(\n * delay(n * 1000), // emit 0 and then emit n after n seconds\n * startWith(0),\n * )\n * );\n * const combined = combineLatest(observables);\n * combined.subscribe(value => console.log(value));\n * // Logs\n * // [0, 0, 0] immediately\n * // [1, 0, 0] after 1s\n * // [1, 5, 0] after 5s\n * // [1, 5, 10] after 10s\n * ```\n *\n *\n * ### Use project function to dynamically calculate the Body-Mass Index\n * ```ts\n * import { combineLatest, of } from 'rxjs';\n * import { map } from 'rxjs/operators';\n *\n * const weight = of(70, 72, 76, 79, 75);\n * const height = of(1.76, 1.77, 1.78);\n * const bmi = combineLatest(weight, height).pipe(\n * map(([w, h]) => w / (h * h)),\n * );\n * bmi.subscribe(x => console.log('BMI is ' + x));\n *\n * // With output to console:\n * // BMI is 24.212293388429753\n * // BMI is 23.93948099205209\n * // BMI is 23.671253629592222\n * ```\n *\n * @see {@link combineAll}\n * @see {@link merge}\n * @see {@link withLatestFrom}\n *\n * @param {ObservableInput} observable1 An input Observable to combine with other Observables.\n * @param {ObservableInput} observable2 An input Observable to combine with other Observables.\n * More than one input Observables may be given as arguments\n * or an array of Observables may be given as the first argument.\n * @param {function} [project] An optional function to project the values from\n * the combined latest values into a new value on the output Observable.\n * @param {SchedulerLike} [scheduler=null] The {@link SchedulerLike} to use for subscribing to\n * each input Observable.\n * @return {Observable} An Observable of projected values from the most recent\n * values from each input Observable, or an array of the most recent values from\n * each input Observable.\n */\nexport function combineLatest, R>(\n ...observables: (O | ((...values: ObservedValueOf[]) => R) | SchedulerLike)[]\n): Observable {\n let resultSelector: ((...values: Array) => R) | undefined = undefined;\n let scheduler: SchedulerLike|undefined = undefined;\n\n if (isScheduler(observables[observables.length - 1])) {\n scheduler = observables.pop() as SchedulerLike;\n }\n\n if (typeof observables[observables.length - 1] === 'function') {\n resultSelector = observables.pop() as (...values: Array) => R;\n }\n\n // if the first and only other argument besides the resultSelector is an array\n // assume it's been called with `combineLatest([obs1, obs2, obs3], resultSelector)`\n if (observables.length === 1 && isArray(observables[0])) {\n observables = observables[0] as any;\n }\n\n return fromArray(observables, scheduler).lift(new CombineLatestOperator(resultSelector));\n}\n\nexport class CombineLatestOperator implements Operator {\n constructor(private resultSelector?: (...values: Array) => R) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new CombineLatestSubscriber(subscriber, this.resultSelector));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class CombineLatestSubscriber extends OuterSubscriber {\n private active: number = 0;\n private values: any[] = [];\n private observables: any[] = [];\n private toRespond?: number;\n\n constructor(destination: Subscriber, private resultSelector?: (...values: Array) => R) {\n super(destination);\n }\n\n protected _next(observable: any) {\n this.values.push(NONE);\n this.observables.push(observable);\n }\n\n protected _complete() {\n const observables = this.observables;\n const len = observables.length;\n if (len === 0) {\n this.destination.complete!();\n } else {\n this.active = len;\n this.toRespond = len;\n for (let i = 0; i < len; i++) {\n const observable = observables[i];\n this.add(subscribeToResult(this, observable, undefined, i));\n }\n }\n }\n\n notifyComplete(unused: Subscriber): void {\n if ((this.active -= 1) === 0) {\n this.destination.complete!();\n }\n }\n\n notifyNext(_outerValue: T, innerValue: R,\n outerIndex: number): void {\n const values = this.values;\n const oldVal = values[outerIndex];\n const toRespond = !this.toRespond\n ? 0\n : oldVal === NONE ? --this.toRespond : this.toRespond;\n values[outerIndex] = innerValue;\n\n if (toRespond === 0) {\n if (this.resultSelector) {\n this._tryResultSelector(values);\n } else {\n this.destination.next!(values.slice());\n }\n }\n }\n\n private _tryResultSelector(values: any[]) {\n let result: any;\n try {\n result = this.resultSelector!.apply(this, values);\n } catch (err) {\n this.destination.error!(err);\n return;\n }\n this.destination.next!(result);\n }\n}\n","import { Observable } from '../Observable';\nimport { ObservableInput, SchedulerLike, ObservedValueOf } from '../types';\nimport { isScheduler } from '../util/isScheduler';\nimport { of } from './of';\nimport { from } from './from';\nimport { concatAll } from '../operators/concatAll';\n\n/* tslint:disable:max-line-length */\n/** @deprecated Use {@link scheduled} and {@link concatAll} (e.g. `scheduled([o1, o2, o3], scheduler).pipe(concatAll())`) */\nexport function concat>(v1: O1, scheduler: SchedulerLike): Observable>;\n/** @deprecated Use {@link scheduled} and {@link concatAll} (e.g. `scheduled([o1, o2, o3], scheduler).pipe(concatAll())`) */\nexport function concat, O2 extends ObservableInput>(v1: O1, v2: O2, scheduler: SchedulerLike): Observable | ObservedValueOf>;\n/** @deprecated Use {@link scheduled} and {@link concatAll} (e.g. `scheduled([o1, o2, o3], scheduler).pipe(concatAll())`) */\nexport function concat, O2 extends ObservableInput, O3 extends ObservableInput>(v1: O1, v2: O2, v3: O3, scheduler: SchedulerLike): Observable | ObservedValueOf | ObservedValueOf>;\n/** @deprecated Use {@link scheduled} and {@link concatAll} (e.g. `scheduled([o1, o2, o3], scheduler).pipe(concatAll())`) */\nexport function concat, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4, scheduler: SchedulerLike): Observable | ObservedValueOf | ObservedValueOf | ObservedValueOf>;\n/** @deprecated Use {@link scheduled} and {@link concatAll} (e.g. `scheduled([o1, o2, o3], scheduler).pipe(concatAll())`) */\nexport function concat, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, scheduler: SchedulerLike): Observable | ObservedValueOf | ObservedValueOf | ObservedValueOf | ObservedValueOf>;\n/** @deprecated Use {@link scheduled} and {@link concatAll} (e.g. `scheduled([o1, o2, o3], scheduler).pipe(concatAll())`) */\nexport function concat, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, v6: O6, scheduler: SchedulerLike): Observable | ObservedValueOf | ObservedValueOf | ObservedValueOf | ObservedValueOf | ObservedValueOf>;\n\nexport function concat>(v1: O1): Observable>;\nexport function concat, O2 extends ObservableInput>(v1: O1, v2: O2): Observable | ObservedValueOf>;\nexport function concat, O2 extends ObservableInput, O3 extends ObservableInput>(v1: O1, v2: O2, v3: O3): Observable | ObservedValueOf | ObservedValueOf>;\nexport function concat, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4): Observable | ObservedValueOf | ObservedValueOf | ObservedValueOf>;\nexport function concat, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5): Observable | ObservedValueOf | ObservedValueOf | ObservedValueOf | ObservedValueOf>;\nexport function concat, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, v6: O6): Observable | ObservedValueOf | ObservedValueOf | ObservedValueOf | ObservedValueOf | ObservedValueOf>;\nexport function concat>(...observables: O[]): Observable>;\n/** @deprecated Use {@link scheduled} and {@link concatAll} (e.g. `scheduled([o1, o2, o3], scheduler).pipe(concatAll())`) */\nexport function concat>(...observables: (O | SchedulerLike)[]): Observable>;\nexport function concat(...observables: ObservableInput[]): Observable;\n/** @deprecated Use {@link scheduled} and {@link concatAll} (e.g. `scheduled([o1, o2, o3], scheduler).pipe(concatAll())`) */\nexport function concat(...observables: (ObservableInput | SchedulerLike)[]): Observable;\n/* tslint:enable:max-line-length */\n/**\n * Creates an output Observable which sequentially emits all values from given\n * Observable and then moves on to the next.\n *\n * Concatenates multiple Observables together by\n * sequentially emitting their values, one Observable after the other.\n *\n * ![](concat.png)\n *\n * `concat` joins multiple Observables together, by subscribing to them one at a time and\n * merging their results into the output Observable. You can pass either an array of\n * Observables, or put them directly as arguments. Passing an empty array will result\n * in Observable that completes immediately.\n *\n * `concat` will subscribe to first input Observable and emit all its values, without\n * changing or affecting them in any way. When that Observable completes, it will\n * subscribe to then next Observable passed and, again, emit its values. This will be\n * repeated, until the operator runs out of Observables. When last input Observable completes,\n * `concat` will complete as well. At any given moment only one Observable passed to operator\n * emits values. If you would like to emit values from passed Observables concurrently, check out\n * {@link merge} instead, especially with optional `concurrent` parameter. As a matter of fact,\n * `concat` is an equivalent of `merge` operator with `concurrent` parameter set to `1`.\n *\n * Note that if some input Observable never completes, `concat` will also never complete\n * and Observables following the one that did not complete will never be subscribed. On the other\n * hand, if some Observable simply completes immediately after it is subscribed, it will be\n * invisible for `concat`, which will just move on to the next Observable.\n *\n * If any Observable in chain errors, instead of passing control to the next Observable,\n * `concat` will error immediately as well. Observables that would be subscribed after\n * the one that emitted error, never will.\n *\n * If you pass to `concat` the same Observable many times, its stream of values\n * will be \"replayed\" on every subscription, which means you can repeat given Observable\n * as many times as you like. If passing the same Observable to `concat` 1000 times becomes tedious,\n * you can always use {@link repeat}.\n *\n * ## Examples\n * ### Concatenate a timer counting from 0 to 3 with a synchronous sequence from 1 to 10\n * ```ts\n * import { concat, interval, range } from 'rxjs';\n * import { take } from 'rxjs/operators';\n *\n * const timer = interval(1000).pipe(take(4));\n * const sequence = range(1, 10);\n * const result = concat(timer, sequence);\n * result.subscribe(x => console.log(x));\n *\n * // results in:\n * // 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3 -immediate-> 1 ... 10\n * ```\n *\n * ### Concatenate 3 Observables\n * ```ts\n * import { concat, interval } from 'rxjs';\n * import { take } from 'rxjs/operators';\n *\n * const timer1 = interval(1000).pipe(take(10));\n * const timer2 = interval(2000).pipe(take(6));\n * const timer3 = interval(500).pipe(take(10));\n *\n * const result = concat(timer1, timer2, timer3);\n * result.subscribe(x => console.log(x));\n *\n * // results in the following:\n * // (Prints to console sequentially)\n * // -1000ms-> 0 -1000ms-> 1 -1000ms-> ... 9\n * // -2000ms-> 0 -2000ms-> 1 -2000ms-> ... 5\n * // -500ms-> 0 -500ms-> 1 -500ms-> ... 9\n * ```\n *\n * ### Concatenate the same Observable to repeat it\n * ```ts\n * import { concat, interval } from 'rxjs';\n * import { take } from 'rxjs/operators';\n *\n * const timer = interval(1000).pipe(take(2));\n *\n * concat(timer, timer) // concatenating the same Observable!\n * .subscribe(\n * value => console.log(value),\n * err => {},\n * () => console.log('...and it is done!')\n * );\n *\n * // Logs:\n * // 0 after 1s\n * // 1 after 2s\n * // 0 after 3s\n * // 1 after 4s\n * // \"...and it is done!\" also after 4s\n * ```\n *\n * @see {@link concatAll}\n * @see {@link concatMap}\n * @see {@link concatMapTo}\n * @see {@link startWith}\n * @see {@link endWith}\n *\n * @param {ObservableInput} input1 An input Observable to concatenate with others.\n * @param {ObservableInput} input2 An input Observable to concatenate with others.\n * More than one input Observables may be given as argument.\n * @param {SchedulerLike} [scheduler=null] An optional {@link SchedulerLike} to schedule each\n * Observable subscription on.\n * @return {Observable} All values of each passed Observable merged into a\n * single Observable, in order, in serial fashion.\n * @static true\n * @name concat\n * @owner Observable\n */\nexport function concat, R>(...observables: Array): Observable | R> {\n return concatAll()(of(...observables));\n}\n","import { Observable } from '../Observable';\nimport { SubscribableOrPromise, ObservedValueOf, ObservableInput } from '../types';\nimport { from } from './from'; // lol\nimport { empty } from './empty';\n\n/**\n * Creates an Observable that, on subscribe, calls an Observable factory to\n * make an Observable for each new Observer.\n *\n * Creates the Observable lazily, that is, only when it\n * is subscribed.\n * \n *\n * ![](defer.png)\n *\n * `defer` allows you to create the Observable only when the Observer\n * subscribes, and create a fresh Observable for each Observer. It waits until\n * an Observer subscribes to it, and then it generates an Observable,\n * typically with an Observable factory function. It does this afresh for each\n * subscriber, so although each subscriber may think it is subscribing to the\n * same Observable, in fact each subscriber gets its own individual\n * Observable.\n *\n * ## Example\n * ### Subscribe to either an Observable of clicks or an Observable of interval, at random\n * ```ts\n * import { defer, fromEvent, interval } from 'rxjs';\n *\n * const clicksOrInterval = defer(function () {\n * return Math.random() > 0.5\n * ? fromEvent(document, 'click')\n * : interval(1000);\n * });\n * clicksOrInterval.subscribe(x => console.log(x));\n *\n * // Results in the following behavior:\n * // If the result of Math.random() is greater than 0.5 it will listen\n * // for clicks anywhere on the \"document\"; when document is clicked it\n * // will log a MouseEvent object to the console. If the result is less\n * // than 0.5 it will emit ascending numbers, one every second(1000ms).\n * ```\n *\n * @see {@link Observable}\n *\n * @param {function(): SubscribableOrPromise} observableFactory The Observable\n * factory function to invoke for each Observer that subscribes to the output\n * Observable. May also return a Promise, which will be converted on the fly\n * to an Observable.\n * @return {Observable} An Observable whose Observers' subscriptions trigger\n * an invocation of the given Observable factory function.\n * @static true\n * @name defer\n * @owner Observable\n */\nexport function defer | void>(observableFactory: () => R): Observable> {\n return new Observable>(subscriber => {\n let input: R | void;\n try {\n input = observableFactory();\n } catch (err) {\n subscriber.error(err);\n return undefined;\n }\n const source = input ? from(input as ObservableInput>) : empty();\n return source.subscribe(subscriber);\n });\n}\n","import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\n\n/**\n * The same Observable instance returned by any call to {@link empty} without a\n * `scheduler`. It is preferrable to use this over `empty()`.\n */\nexport const EMPTY = new Observable(subscriber => subscriber.complete());\n\n/**\n * Creates an Observable that emits no items to the Observer and immediately\n * emits a complete notification.\n *\n * Just emits 'complete', and nothing else.\n * \n *\n * ![](empty.png)\n *\n * This static operator is useful for creating a simple Observable that only\n * emits the complete notification. It can be used for composing with other\n * Observables, such as in a {@link mergeMap}.\n *\n * ## Examples\n * ### Emit the number 7, then complete\n * ```ts\n * import { empty } from 'rxjs';\n * import { startWith } from 'rxjs/operators';\n *\n * const result = empty().pipe(startWith(7));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * ### Map and flatten only odd numbers to the sequence 'a', 'b', 'c'\n * ```ts\n * import { empty, interval, of } from 'rxjs';\n * import { mergeMap } from 'rxjs/operators';\n *\n * const interval$ = interval(1000);\n * const result = interval$.pipe(\n * mergeMap(x => x % 2 === 1 ? of('a', 'b', 'c') : empty()),\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following to the console:\n * // x is equal to the count on the interval eg(0,1,2,3,...)\n * // x will occur every 1000ms\n * // if x % 2 is equal to 1 print abc\n * // if x % 2 is not equal to 1 nothing will be output\n * ```\n *\n * @see {@link Observable}\n * @see {@link never}\n * @see {@link of}\n * @see {@link throwError}\n *\n * @param scheduler A {@link SchedulerLike} to use for scheduling\n * the emission of the complete notification.\n * @return An \"empty\" Observable: emits only the complete\n * notification.\n * @deprecated Deprecated in favor of using {@link EMPTY} constant, or {@link scheduled} (e.g. `scheduled([], scheduler)`)\n */\nexport function empty(scheduler?: SchedulerLike) {\n return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\n\nfunction emptyScheduled(scheduler: SchedulerLike) {\n return new Observable(subscriber => scheduler.schedule(() => subscriber.complete()));\n}\n","import { Observable } from '../Observable';\nimport { subscribeTo } from '../util/subscribeTo';\nimport { ObservableInput, SchedulerLike, ObservedValueOf } from '../types';\nimport { scheduled } from '../scheduled/scheduled';\n\nexport function from>(input: O): Observable>;\n/** @deprecated use {@link scheduled} instead. */\nexport function from>(input: O, scheduler: SchedulerLike): Observable>;\n\n/**\n * Creates an Observable from an Array, an array-like object, a Promise, an iterable object, or an Observable-like object.\n *\n * Converts almost anything to an Observable.\n *\n * ![](from.png)\n *\n * `from` converts various other objects and data types into Observables. It also converts a Promise, an array-like, or an\n * iterable\n * object into an Observable that emits the items in that promise, array, or iterable. A String, in this context, is treated\n * as an array of characters. Observable-like objects (contains a function named with the ES2015 Symbol for Observable) can also be\n * converted through this operator.\n *\n * ## Examples\n *\n * ### Converts an array to an Observable\n *\n * ```ts\n * import { from } from 'rxjs';\n *\n * const array = [10, 20, 30];\n * const result = from(array);\n *\n * result.subscribe(x => console.log(x));\n *\n * // Logs:\n * // 10\n * // 20\n * // 30\n * ```\n *\n * ---\n *\n * ### Convert an infinite iterable (from a generator) to an Observable\n *\n * ```ts\n * import { from } from 'rxjs';\n * import { take } from 'rxjs/operators';\n *\n * function* generateDoubles(seed) {\n * let i = seed;\n * while (true) {\n * yield i;\n * i = 2 * i; // double it\n * }\n * }\n *\n * const iterator = generateDoubles(3);\n * const result = from(iterator).pipe(take(10));\n *\n * result.subscribe(x => console.log(x));\n *\n * // Logs:\n * // 3\n * // 6\n * // 12\n * // 24\n * // 48\n * // 96\n * // 192\n * // 384\n * // 768\n * // 1536\n * ```\n *\n * ---\n *\n * ### With async scheduler\n *\n * ```ts\n * import { from, asyncScheduler } from 'rxjs';\n *\n * console.log('start');\n *\n * const array = [10, 20, 30];\n * const result = from(array, asyncScheduler);\n *\n * result.subscribe(x => console.log(x));\n *\n * console.log('end');\n *\n * // Logs:\n * // start\n * // end\n * // 10\n * // 20\n * // 30\n * ```\n *\n * @see {@link fromEvent}\n * @see {@link fromEventPattern}\n *\n * @param {ObservableInput} A subscription object, a Promise, an Observable-like,\n * an Array, an iterable, or an array-like object to be converted.\n * @param {SchedulerLike} An optional {@link SchedulerLike} on which to schedule the emission of values.\n * @return {Observable}\n * @name from\n * @owner Observable\n */\nexport function from(input: ObservableInput, scheduler?: SchedulerLike): Observable {\n if (!scheduler) {\n if (input instanceof Observable) {\n return input;\n }\n return new Observable(subscribeTo(input));\n } else {\n return scheduled(input, scheduler);\n }\n}\n","import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\nimport { subscribeToArray } from '../util/subscribeToArray';\nimport { scheduleArray } from '../scheduled/scheduleArray';\n\nexport function fromArray(input: ArrayLike, scheduler?: SchedulerLike) {\n if (!scheduler) {\n return new Observable(subscribeToArray(input));\n } else {\n return scheduleArray(input, scheduler);\n }\n}\n","import { Observable } from '../Observable';\nimport { ObservableInput, SchedulerLike} from '../types';\nimport { isScheduler } from '../util/isScheduler';\nimport { mergeAll } from '../operators/mergeAll';\nimport { fromArray } from './fromArray';\n\n/* tslint:disable:max-line-length */\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, concurrent: number, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, concurrent: number, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, concurrent: number, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, concurrent: number, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, concurrent: number, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput, concurrent: number, scheduler: SchedulerLike): Observable;\n\nexport function merge(v1: ObservableInput): Observable;\nexport function merge(v1: ObservableInput, concurrent?: number): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput, concurrent?: number): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, concurrent?: number): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, concurrent?: number): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, concurrent?: number): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput): Observable;\nexport function merge(v1: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput, concurrent?: number): Observable;\nexport function merge(...observables: (ObservableInput | number)[]): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(...observables: (ObservableInput | SchedulerLike | number)[]): Observable;\nexport function merge(...observables: (ObservableInput | number)[]): Observable;\n/** @deprecated use {@link scheduled} and {@link mergeAll} (e.g. `scheduled([ob1, ob2, ob3], scheduled).pipe(mergeAll())*/\nexport function merge(...observables: (ObservableInput | SchedulerLike | number)[]): Observable;\n/* tslint:enable:max-line-length */\n/**\n * Creates an output Observable which concurrently emits all values from every\n * given input Observable.\n *\n * Flattens multiple Observables together by blending\n * their values into one Observable.\n *\n * ![](merge.png)\n *\n * `merge` subscribes to each given input Observable (as arguments), and simply\n * forwards (without doing any transformation) all the values from all the input\n * Observables to the output Observable. The output Observable only completes\n * once all input Observables have completed. Any error delivered by an input\n * Observable will be immediately emitted on the output Observable.\n *\n * ## Examples\n * ### Merge together two Observables: 1s interval and clicks\n * ```ts\n * import { merge, fromEvent, interval } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const timer = interval(1000);\n * const clicksOrTimer = merge(clicks, timer);\n * clicksOrTimer.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // timer will emit ascending values, one every second(1000ms) to console\n * // clicks logs MouseEvents to console everytime the \"document\" is clicked\n * // Since the two streams are merged you see these happening\n * // as they occur.\n * ```\n *\n * ### Merge together 3 Observables, but only 2 run concurrently\n * ```ts\n * import { merge, interval } from 'rxjs';\n * import { take } from 'rxjs/operators';\n *\n * const timer1 = interval(1000).pipe(take(10));\n * const timer2 = interval(2000).pipe(take(6));\n * const timer3 = interval(500).pipe(take(10));\n * const concurrent = 2; // the argument\n * const merged = merge(timer1, timer2, timer3, concurrent);\n * merged.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // - First timer1 and timer2 will run concurrently\n * // - timer1 will emit a value every 1000ms for 10 iterations\n * // - timer2 will emit a value every 2000ms for 6 iterations\n * // - after timer1 hits its max iteration, timer2 will\n * // continue, and timer3 will start to run concurrently with timer2\n * // - when timer2 hits its max iteration it terminates, and\n * // timer3 will continue to emit a value every 500ms until it is complete\n * ```\n *\n * @see {@link mergeAll}\n * @see {@link mergeMap}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n *\n * @param {...ObservableInput} observables Input Observables to merge together.\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input\n * Observables being subscribed to concurrently.\n * @param {SchedulerLike} [scheduler=null] The {@link SchedulerLike} to use for managing\n * concurrency of input Observables.\n * @return {Observable} an Observable that emits items that are the result of\n * every input Observable.\n * @static true\n * @name merge\n * @owner Observable\n */\nexport function merge(...observables: Array | SchedulerLike | number>): Observable {\n let concurrent = Number.POSITIVE_INFINITY;\n let scheduler: SchedulerLike = null;\n let last: any = observables[observables.length - 1];\n if (isScheduler(last)) {\n scheduler = observables.pop();\n if (observables.length > 1 && typeof observables[observables.length - 1] === 'number') {\n concurrent = observables.pop();\n }\n } else if (typeof last === 'number') {\n concurrent = observables.pop();\n }\n\n if (scheduler === null && observables.length === 1 && observables[0] instanceof Observable) {\n return >observables[0];\n }\n\n return mergeAll(concurrent)(fromArray(observables, scheduler));\n}\n","import { SchedulerLike } from '../types';\nimport { isScheduler } from '../util/isScheduler';\nimport { fromArray } from './fromArray';\nimport { Observable } from '../Observable';\nimport { scheduleArray } from '../scheduled/scheduleArray';\n\n/* tslint:disable:max-line-length */\n/** @deprecated use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */\nexport function of(a: T, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */\nexport function of(a: T, b: T2, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */\nexport function of(a: T, b: T2, c: T3, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */\nexport function of(a: T, b: T2, c: T3, d: T4, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5, f: T6, scheduler: SchedulerLike): Observable;\n/** @deprecated use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5, f: T6, g: T7, scheduler: SchedulerLike):\n Observable;\n/** @deprecated use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5, f: T6, g: T7, h: T8, scheduler: SchedulerLike):\n Observable;\n/** @deprecated use {@link scheduled} instead `scheduled([a, b, c], scheduler)` */\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5, f: T6, g: T7, h: T8, i: T9, scheduler: SchedulerLike):\n Observable;\nexport function of(...args: (T | SchedulerLike)[]): Observable;\n\n// TODO(benlesh): Update the typings for this when we can switch to TS 3.x\nexport function of(a: T): Observable;\nexport function of(a: T, b: T2): Observable;\nexport function of(a: T, b: T2, c: T3): Observable;\nexport function of(a: T, b: T2, c: T3, d: T4): Observable;\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5): Observable;\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5, f: T6): Observable;\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5, f: T6, g: T7):\n Observable;\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5, f: T6, g: T7, h: T8):\n Observable;\nexport function of(a: T, b: T2, c: T3, d: T4, e: T5, f: T6, g: T7, h: T8, i: T9):\n Observable;\nexport function of(...args: T[]): Observable;\n/* tslint:enable:max-line-length */\n\n/**\n * Converts the arguments to an observable sequence.\n *\n * Each argument becomes a `next` notification.\n *\n * ![](of.png)\n *\n * Unlike {@link from}, it does not do any flattening and emits each argument in whole\n * as a separate `next` notification.\n *\n * ## Examples\n *\n * Emit the values `10, 20, 30`\n *\n * ```ts\n * import { of } from 'rxjs';\n *\n * of(10, 20, 30)\n * .subscribe(\n * next => console.log('next:', next),\n * err => console.log('error:', err),\n * () => console.log('the end'),\n * );\n * // result:\n * // 'next: 10'\n * // 'next: 20'\n * // 'next: 30'\n *\n * ```\n *\n * Emit the array `[1,2,3]`\n *\n * ```ts\n * import { of } from 'rxjs';\n *\n * of([1,2,3])\n * .subscribe(\n * next => console.log('next:', next),\n * err => console.log('error:', err),\n * () => console.log('the end'),\n * );\n * // result:\n * // 'next: [1,2,3]'\n * ```\n *\n * @see {@link from}\n * @see {@link range}\n *\n * @param {...T} values A comma separated list of arguments you want to be emitted\n * @return {Observable} An Observable that emits the arguments\n * described above and then completes.\n * @method of\n * @owner Observable\n */\n\nexport function of(...args: Array): Observable {\n let scheduler = args[args.length - 1] as SchedulerLike;\n if (isScheduler(scheduler)) {\n args.pop();\n return scheduleArray(args as T[], scheduler);\n } else {\n return fromArray(args as T[]);\n }\n}\n","import { Observable } from '../Observable';\nimport { isArray } from '../util/isArray';\nimport { fromArray } from './fromArray';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { TeardownLogic, ObservableInput } from '../types';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\n\n// tslint:disable:max-line-length\nexport function race(arg: [ObservableInput]): Observable;\nexport function race(arg: [ObservableInput, ObservableInput]): Observable;\nexport function race(arg: [ObservableInput, ObservableInput, ObservableInput]): Observable;\nexport function race(arg: [ObservableInput, ObservableInput, ObservableInput, ObservableInput]): Observable;\nexport function race(arg: [ObservableInput, ObservableInput, ObservableInput, ObservableInput, ObservableInput]): Observable;\nexport function race(arg: ObservableInput[]): Observable;\nexport function race(arg: ObservableInput[]): Observable<{}>;\n\nexport function race(a: ObservableInput): Observable;\nexport function race(a: ObservableInput, b: ObservableInput): Observable;\nexport function race(a: ObservableInput, b: ObservableInput, c: ObservableInput): Observable;\nexport function race(a: ObservableInput, b: ObservableInput, c: ObservableInput, d: ObservableInput): Observable;\nexport function race(a: ObservableInput, b: ObservableInput, c: ObservableInput, d: ObservableInput, e: ObservableInput): Observable;\n// tslint:enable:max-line-length\n\nexport function race(observables: ObservableInput[]): Observable;\nexport function race(observables: ObservableInput[]): Observable<{}>;\nexport function race(...observables: ObservableInput[]): Observable;\nexport function race(...observables: ObservableInput[]): Observable<{}>;\n\n/**\n * Returns an Observable that mirrors the first source Observable to emit an item.\n *\n * ## Example\n * ### Subscribes to the observable that was the first to start emitting.\n *\n * ```ts\n * import { race, interval } from 'rxjs';\n * import { mapTo } from 'rxjs/operators';\n *\n * const obs1 = interval(1000).pipe(mapTo('fast one'));\n * const obs2 = interval(3000).pipe(mapTo('medium one'));\n * const obs3 = interval(5000).pipe(mapTo('slow one'));\n *\n * race(obs3, obs1, obs2)\n * .subscribe(\n * winner => console.log(winner)\n * );\n *\n * // result:\n * // a series of 'fast one'\n * ```\n *\n * @param {...Observables} ...observables sources used to race for which Observable emits first.\n * @return {Observable} an Observable that mirrors the output of the first Observable to emit an item.\n * @static true\n * @name race\n * @owner Observable\n */\nexport function race(...observables: ObservableInput[]): Observable {\n // if the only argument is an array, it was most likely called with\n // `race([obs1, obs2, ...])`\n if (observables.length === 1) {\n if (isArray(observables[0])) {\n observables = observables[0] as Observable[];\n } else {\n return observables[0] as Observable;\n }\n }\n\n return fromArray(observables, undefined).lift(new RaceOperator());\n}\n\nexport class RaceOperator implements Operator {\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new RaceSubscriber(subscriber));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class RaceSubscriber extends OuterSubscriber {\n private hasFirst: boolean = false;\n private observables: Observable[] = [];\n private subscriptions: Subscription[] = [];\n\n constructor(destination: Subscriber) {\n super(destination);\n }\n\n protected _next(observable: any): void {\n this.observables.push(observable);\n }\n\n protected _complete() {\n const observables = this.observables;\n const len = observables.length;\n\n if (len === 0) {\n this.destination.complete!();\n } else {\n for (let i = 0; i < len && !this.hasFirst; i++) {\n const observable = observables[i];\n const subscription = subscribeToResult(this, observable, undefined, i)!;\n\n if (this.subscriptions) {\n this.subscriptions.push(subscription);\n }\n this.add(subscription);\n }\n this.observables = null!;\n }\n }\n\n notifyNext(_outerValue: T, innerValue: T,\n outerIndex: number): void {\n if (!this.hasFirst) {\n this.hasFirst = true;\n\n for (let i = 0; i < this.subscriptions.length; i++) {\n if (i !== outerIndex) {\n let subscription = this.subscriptions[i];\n\n subscription.unsubscribe();\n this.remove(subscription);\n }\n }\n\n this.subscriptions = null!;\n }\n\n this.destination.next!(innerValue);\n }\n}\n","import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\nimport { Subscriber } from '../Subscriber';\n\n/**\n * Creates an Observable that emits no items to the Observer and immediately\n * emits an error notification.\n *\n * Just emits 'error', and nothing else.\n * \n *\n * ![](throw.png)\n *\n * This static operator is useful for creating a simple Observable that only\n * emits the error notification. It can be used for composing with other\n * Observables, such as in a {@link mergeMap}.\n *\n * ## Examples\n * ### Emit the number 7, then emit an error\n * ```ts\n * import { throwError, concat, of } from 'rxjs';\n *\n * const result = concat(of(7), throwError(new Error('oops!')));\n * result.subscribe(x => console.log(x), e => console.error(e));\n *\n * // Logs:\n * // 7\n * // Error: oops!\n * ```\n *\n * ---\n *\n * ### Map and flatten numbers to the sequence 'a', 'b', 'c', but throw an error for 2\n * ```ts\n * import { throwError, interval, of } from 'rxjs';\n * import { mergeMap } from 'rxjs/operators';\n *\n * interval(1000).pipe(\n * mergeMap(x => x === 2\n * ? throwError('Twos are bad')\n * : of('a', 'b', 'c')\n * ),\n * ).subscribe(x => console.log(x), e => console.error(e));\n *\n * // Logs:\n * // a\n * // b\n * // c\n * // a\n * // b\n * // c\n * // Twos are bad\n * ```\n *\n * @see {@link Observable}\n * @see {@link empty}\n * @see {@link never}\n * @see {@link of}\n *\n * @param {any} error The particular Error to pass to the error notification.\n * @param {SchedulerLike} [scheduler] A {@link SchedulerLike} to use for scheduling\n * the emission of the error notification.\n * @return {Observable} An error Observable: emits only the error notification\n * using the given error argument.\n * @static true\n * @name throwError\n * @owner Observable\n */\nexport function throwError(error: any, scheduler?: SchedulerLike): Observable {\n if (!scheduler) {\n return new Observable(subscriber => subscriber.error(error));\n } else {\n return new Observable(subscriber => scheduler.schedule(dispatch, 0, { error, subscriber }));\n }\n}\n\ninterface DispatchArg {\n error: any;\n subscriber: Subscriber;\n}\n\nfunction dispatch({ error, subscriber }: DispatchArg) {\n subscriber.error(error);\n}\n","import { Observable } from '../Observable';\nimport { SchedulerAction, SchedulerLike } from '../types';\nimport { async } from '../scheduler/async';\nimport { isNumeric } from '../util/isNumeric';\nimport { isScheduler } from '../util/isScheduler';\nimport { Subscriber } from '../Subscriber';\n\n/**\n * Creates an Observable that starts emitting after an `dueTime` and\n * emits ever increasing numbers after each `period` of time thereafter.\n *\n * Its like {@link index/interval}, but you can specify when\n * should the emissions start.\n *\n * ![](timer.png)\n *\n * `timer` returns an Observable that emits an infinite sequence of ascending\n * integers, with a constant interval of time, `period` of your choosing\n * between those emissions. The first emission happens after the specified\n * `dueTime`. The initial delay may be a `Date`. By default, this\n * operator uses the {@link asyncScheduler} {@link SchedulerLike} to provide a notion of time, but you\n * may pass any {@link SchedulerLike} to it. If `period` is not specified, the output\n * Observable emits only one value, `0`. Otherwise, it emits an infinite\n * sequence.\n *\n * ## Examples\n * ### Emits ascending numbers, one every second (1000ms), starting after 3 seconds\n * ```ts\n * import { timer } from 'rxjs';\n *\n * const numbers = timer(3000, 1000);\n * numbers.subscribe(x => console.log(x));\n * ```\n *\n * ### Emits one number after five seconds\n * ```ts\n * import { timer } from 'rxjs';\n *\n * const numbers = timer(5000);\n * numbers.subscribe(x => console.log(x));\n * ```\n * @see {@link index/interval}\n * @see {@link delay}\n *\n * @param {number|Date} [dueTime] The initial delay time specified as a Date object or as an integer denoting\n * milliseconds to wait before emitting the first value of 0`.\n * @param {number|SchedulerLike} [periodOrScheduler] The period of time between emissions of the\n * subsequent numbers.\n * @param {SchedulerLike} [scheduler=async] The {@link SchedulerLike} to use for scheduling\n * the emission of values, and providing a notion of \"time\".\n * @return {Observable} An Observable that emits a `0` after the\n * `dueTime` and ever increasing numbers after each `period` of time\n * thereafter.\n * @static true\n * @name timer\n * @owner Observable\n */\nexport function timer(dueTime: number | Date = 0,\n periodOrScheduler?: number | SchedulerLike,\n scheduler?: SchedulerLike): Observable {\n let period = -1;\n if (isNumeric(periodOrScheduler)) {\n period = Number(periodOrScheduler) < 1 && 1 || Number(periodOrScheduler);\n } else if (isScheduler(periodOrScheduler)) {\n scheduler = periodOrScheduler as any;\n }\n\n if (!isScheduler(scheduler)) {\n scheduler = async;\n }\n\n return new Observable(subscriber => {\n const due = isNumeric(dueTime)\n ? (dueTime as number)\n : (+dueTime - scheduler.now());\n\n return scheduler.schedule(dispatch, due, {\n index: 0, period, subscriber\n });\n });\n}\n\ninterface TimerState {\n index: number;\n period: number;\n subscriber: Subscriber;\n}\n\nfunction dispatch(this: SchedulerAction, state: TimerState) {\n const { index, period, subscriber } = state;\n subscriber.next(index);\n\n if (subscriber.closed) {\n return;\n } else if (period === -1) {\n return subscriber.complete();\n }\n\n state.index = index + 1;\n this.schedule(state, period);\n}\n","import { Observable } from '../Observable';\nimport { fromArray } from './fromArray';\nimport { isArray } from '../util/isArray';\nimport { Operator } from '../Operator';\nimport { ObservableInput, PartialObserver, ObservedValueOf } from '../types';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { iterator as Symbol_iterator } from '../../internal/symbol/iterator';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\n\n/* tslint:disable:max-line-length */\n/** @deprecated resultSelector is no longer supported, pipe to map instead */\nexport function zip, R>(v1: O1, resultSelector: (v1: ObservedValueOf) => R): Observable;\n/** @deprecated resultSelector is no longer supported, pipe to map instead */\nexport function zip, O2 extends ObservableInput, R>(v1: O1, v2: O2, resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf) => R): Observable;\n/** @deprecated resultSelector is no longer supported, pipe to map instead */\nexport function zip, O2 extends ObservableInput, O3 extends ObservableInput, R>(v1: O1, v2: O2, v3: O3, resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf) => R): Observable;\n/** @deprecated resultSelector is no longer supported, pipe to map instead */\nexport function zip, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, R>(v1: O1, v2: O2, v3: O3, v4: O4, resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf) => R): Observable;\n/** @deprecated resultSelector is no longer supported, pipe to map instead */\nexport function zip, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, R>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf, v5: ObservedValueOf) => R): Observable;\n/** @deprecated resultSelector is no longer supported, pipe to map instead */\nexport function zip, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput, R>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, v6: O6, resultSelector: (v1: ObservedValueOf, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf, v5: ObservedValueOf, v6: ObservedValueOf) => R): Observable;\n\nexport function zip, O2 extends ObservableInput>(v1: O1, v2: O2): Observable<[ObservedValueOf, ObservedValueOf]>;\nexport function zip, O2 extends ObservableInput, O3 extends ObservableInput>(v1: O1, v2: O2, v3: O3): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\nexport function zip, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\nexport function zip, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\nexport function zip, O2 extends ObservableInput, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput>(v1: O1, v2: O2, v3: O3, v4: O4, v5: O5, v6: O6): Observable<[ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\n\nexport function zip>(array: O[]): Observable[]>;\nexport function zip(array: ObservableInput[]): Observable;\n/** @deprecated resultSelector is no longer supported, pipe to map instead */\nexport function zip, R>(array: O[], resultSelector: (...values: ObservedValueOf[]) => R): Observable;\n/** @deprecated resultSelector is no longer supported, pipe to map instead */\nexport function zip(array: ObservableInput[], resultSelector: (...values: any[]) => R): Observable;\n\nexport function zip>(...observables: O[]): Observable[]>;\nexport function zip, R>(...observables: Array[]) => R)>): Observable;\nexport function zip(...observables: Array | ((...values: Array) => R)>): Observable;\n/* tslint:enable:max-line-length */\n\n/**\n * Combines multiple Observables to create an Observable whose values are calculated from the values, in order, of each\n * of its input Observables.\n *\n * If the last parameter is a function, this function is used to compute the created value from the input values.\n * Otherwise, an array of the input values is returned.\n *\n * ## Example\n * Combine age and name from different sources\n * ```ts\n * import { zip, of } from 'rxjs';\n * import { map } from 'rxjs/operators';\n *\n * let age$ = of(27, 25, 29);\n * let name$ = of('Foo', 'Bar', 'Beer');\n * let isDev$ = of(true, true, false);\n *\n * zip(age$, name$, isDev$).pipe(\n * map(([age, name, isDev]) => ({ age, name, isDev })),\n * )\n * .subscribe(x => console.log(x));\n *\n * // outputs\n * // { age: 27, name: 'Foo', isDev: true }\n * // { age: 25, name: 'Bar', isDev: true }\n * // { age: 29, name: 'Beer', isDev: false }\n * ```\n * @param observables\n * @return {Observable}\n * @static true\n * @name zip\n * @owner Observable\n */\nexport function zip, R>(\n ...observables: Array[]) => R)>\n): Observable[]|R> {\n const resultSelector = <((...ys: Array) => R)> observables[observables.length - 1];\n if (typeof resultSelector === 'function') {\n observables.pop();\n }\n return fromArray(observables, undefined).lift(new ZipOperator(resultSelector));\n}\n\nexport class ZipOperator implements Operator {\n\n resultSelector?: (...values: Array) => R;\n\n constructor(resultSelector?: (...values: Array) => R) {\n this.resultSelector = resultSelector;\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new ZipSubscriber(subscriber, this.resultSelector));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class ZipSubscriber extends Subscriber {\n private iterators: LookAheadIterator[] = [];\n private active = 0;\n\n constructor(destination: Subscriber,\n private resultSelector?: (...values: Array) => R,\n values: any = Object.create(null)) {\n super(destination);\n this.resultSelector = (typeof resultSelector === 'function') ? resultSelector : undefined;\n }\n\n protected _next(value: any) {\n const iterators = this.iterators;\n if (isArray(value)) {\n iterators.push(new StaticArrayIterator(value));\n } else if (typeof value[Symbol_iterator] === 'function') {\n iterators.push(new StaticIterator(value[Symbol_iterator]()));\n } else {\n iterators.push(new ZipBufferIterator(this.destination, this, value));\n }\n }\n\n protected _complete() {\n const iterators = this.iterators;\n const len = iterators.length;\n\n this.unsubscribe();\n\n if (len === 0) {\n this.destination.complete!();\n return;\n }\n\n this.active = len;\n for (let i = 0; i < len; i++) {\n let iterator: ZipBufferIterator = iterators[i];\n if (iterator.stillUnsubscribed) {\n const destination = this.destination as Subscription;\n destination.add(iterator.subscribe());\n } else {\n this.active--; // not an observable\n }\n }\n }\n\n notifyInactive() {\n this.active--;\n if (this.active === 0) {\n this.destination.complete!();\n }\n }\n\n checkIterators() {\n const iterators = this.iterators;\n const len = iterators.length;\n const destination = this.destination;\n\n // abort if not all of them have values\n for (let i = 0; i < len; i++) {\n let iterator = iterators[i];\n if (typeof iterator.hasValue === 'function' && !iterator.hasValue()) {\n return;\n }\n }\n\n let shouldComplete = false;\n const args: any[] = [];\n for (let i = 0; i < len; i++) {\n let iterator = iterators[i];\n let result = iterator.next();\n\n // check to see if it's completed now that you've gotten\n // the next value.\n if (iterator.hasCompleted()) {\n shouldComplete = true;\n }\n\n if (result.done) {\n destination.complete!();\n return;\n }\n\n args.push(result.value);\n }\n\n if (this.resultSelector) {\n this._tryresultSelector(args);\n } else {\n destination.next!(args);\n }\n\n if (shouldComplete) {\n destination.complete!();\n }\n }\n\n protected _tryresultSelector(args: any[]) {\n let result: any;\n try {\n result = this.resultSelector!.apply(this, args);\n } catch (err) {\n this.destination.error!(err);\n return;\n }\n this.destination.next!(result);\n }\n}\n\ninterface LookAheadIterator extends Iterator {\n hasValue(): boolean;\n hasCompleted(): boolean;\n}\n\nclass StaticIterator implements LookAheadIterator {\n private nextResult: IteratorResult;\n\n constructor(private iterator: Iterator) {\n this.nextResult = iterator.next();\n }\n\n hasValue() {\n return true;\n }\n\n next(): IteratorResult {\n const result = this.nextResult;\n this.nextResult = this.iterator.next();\n return result;\n }\n\n hasCompleted(): boolean {\n const nextResult = this.nextResult;\n return Boolean(nextResult && nextResult.done);\n }\n}\n\nclass StaticArrayIterator implements LookAheadIterator {\n private index = 0;\n private length = 0;\n\n constructor(private array: T[]) {\n this.length = array.length;\n }\n\n [Symbol_iterator]() {\n return this;\n }\n\n next(value?: any): IteratorResult {\n const i = this.index++;\n const array = this.array;\n return i < this.length ? { value: array[i], done: false } : { value: null, done: true };\n }\n\n hasValue() {\n return this.array.length > this.index;\n }\n\n hasCompleted() {\n return this.array.length === this.index;\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass ZipBufferIterator extends SimpleOuterSubscriber implements LookAheadIterator {\n stillUnsubscribed = true;\n buffer: T[] = [];\n isComplete = false;\n\n constructor(destination: PartialObserver,\n private parent: ZipSubscriber,\n private observable: Observable) {\n super(destination);\n }\n\n [Symbol_iterator]() {\n return this;\n }\n\n // NOTE: there is actually a name collision here with Subscriber.next and Iterator.next\n // this is legit because `next()` will never be called by a subscription in this case.\n next(): IteratorResult {\n const buffer = this.buffer;\n if (buffer.length === 0 && this.isComplete) {\n return { value: null, done: true };\n } else {\n return { value: buffer.shift()!, done: false };\n }\n }\n\n hasValue() {\n return this.buffer.length > 0;\n }\n\n hasCompleted() {\n return this.buffer.length === 0 && this.isComplete;\n }\n\n notifyComplete() {\n if (this.buffer.length > 0) {\n this.isComplete = true;\n this.parent.notifyInactive();\n } else {\n this.destination.complete!();\n }\n }\n\n notifyNext(innerValue: any): void {\n this.buffer.push(innerValue);\n this.parent.checkIterators();\n }\n\n subscribe() {\n return innerSubscribe(this.observable, new SimpleInnerSubscriber(this));\n }\n}\n","\nimport { mergeAll } from './mergeAll';\nimport { OperatorFunction, ObservableInput } from '../types';\n\nexport function concatAll(): OperatorFunction, T>;\nexport function concatAll(): OperatorFunction;\n\n/**\n * Converts a higher-order Observable into a first-order Observable by\n * concatenating the inner Observables in order.\n *\n * Flattens an Observable-of-Observables by putting one\n * inner Observable after the other.\n *\n * ![](concatAll.png)\n *\n * Joins every Observable emitted by the source (a higher-order Observable), in\n * a serial fashion. It subscribes to each inner Observable only after the\n * previous inner Observable has completed, and merges all of their values into\n * the returned observable.\n *\n * __Warning:__ If the source Observable emits Observables quickly and\n * endlessly, and the inner Observables it emits generally complete slower than\n * the source emits, you can run into memory issues as the incoming Observables\n * collect in an unbounded buffer.\n *\n * Note: `concatAll` is equivalent to `mergeAll` with concurrency parameter set\n * to `1`.\n *\n * ## Example\n *\n * For each click event, tick every second from 0 to 3, with no concurrency\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { map, take, concatAll } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const higherOrder = clicks.pipe(\n * map(ev => interval(1000).pipe(take(4))),\n * );\n * const firstOrder = higherOrder.pipe(concatAll());\n * firstOrder.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // (results are not concurrent)\n * // For every click on the \"document\" it will emit values 0 to 3 spaced\n * // on a 1000ms interval\n * // one click = 1000ms-> 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3\n * ```\n *\n * @see {@link combineAll}\n * @see {@link concat}\n * @see {@link concatMap}\n * @see {@link concatMapTo}\n * @see {@link exhaust}\n * @see {@link mergeAll}\n * @see {@link switchAll}\n * @see {@link switchMap}\n * @see {@link zipAll}\n *\n * @return {Observable} An Observable emitting values from all the inner\n * Observables concatenated.\n * @method concatAll\n * @owner Observable\n */\nexport function concatAll(): OperatorFunction, T> {\n return mergeAll(1);\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { OperatorFunction, MonoTypeOperatorFunction, TeardownLogic } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function filter(predicate: (value: T, index: number) => value is S,\n thisArg?: any): OperatorFunction;\nexport function filter(predicate: (value: T, index: number) => boolean,\n thisArg?: any): MonoTypeOperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Filter items emitted by the source Observable by only emitting those that\n * satisfy a specified predicate.\n *\n * Like\n * [Array.prototype.filter()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter),\n * it only emits a value from the source if it passes a criterion function.\n *\n * ![](filter.png)\n *\n * Similar to the well-known `Array.prototype.filter` method, this operator\n * takes values from the source Observable, passes them through a `predicate`\n * function and only emits those values that yielded `true`.\n *\n * ## Example\n * Emit only click events whose target was a DIV element\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { filter } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const clicksOnDivs = clicks.pipe(filter(ev => ev.target.tagName === 'DIV'));\n * clicksOnDivs.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link distinct}\n * @see {@link distinctUntilChanged}\n * @see {@link distinctUntilKeyChanged}\n * @see {@link ignoreElements}\n * @see {@link partition}\n * @see {@link skip}\n *\n * @param {function(value: T, index: number): boolean} predicate A function that\n * evaluates each value emitted by the source Observable. If it returns `true`,\n * the value is emitted, if `false` the value is not passed to the output\n * Observable. The `index` parameter is the number `i` for the i-th source\n * emission that has happened since the subscription, starting from the number\n * `0`.\n * @param {any} [thisArg] An optional argument to determine the value of `this`\n * in the `predicate` function.\n * @return {Observable} An Observable of values from the source that were\n * allowed by the `predicate` function.\n * @method filter\n * @owner Observable\n */\nexport function filter(predicate: (value: T, index: number) => boolean,\n thisArg?: any): MonoTypeOperatorFunction {\n return function filterOperatorFunction(source: Observable): Observable {\n return source.lift(new FilterOperator(predicate, thisArg));\n };\n}\n\nclass FilterOperator implements Operator {\n constructor(private predicate: (value: T, index: number) => boolean,\n private thisArg?: any) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new FilterSubscriber(subscriber, this.predicate, this.thisArg));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass FilterSubscriber extends Subscriber {\n\n count: number = 0;\n\n constructor(destination: Subscriber,\n private predicate: (value: T, index: number) => boolean,\n private thisArg: any) {\n super(destination);\n }\n\n // the try catch block below is left specifically for\n // optimization and perf reasons. a tryCatcher is not necessary here.\n protected _next(value: T) {\n let result: any;\n try {\n result = this.predicate.call(this.thisArg, value, this.count++);\n } catch (err) {\n this.destination.error(err);\n return;\n }\n if (result) {\n this.destination.next(value);\n }\n }\n}\n","import { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Subject } from '../Subject';\nimport { OperatorFunction } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function groupBy(keySelector: (value: T) => K): OperatorFunction>;\nexport function groupBy(keySelector: (value: T) => K, elementSelector: void, durationSelector: (grouped: GroupedObservable) => Observable): OperatorFunction>;\nexport function groupBy(keySelector: (value: T) => K, elementSelector?: (value: T) => R, durationSelector?: (grouped: GroupedObservable) => Observable): OperatorFunction>;\nexport function groupBy(keySelector: (value: T) => K, elementSelector?: (value: T) => R, durationSelector?: (grouped: GroupedObservable) => Observable, subjectSelector?: () => Subject): OperatorFunction>;\n/* tslint:enable:max-line-length */\n\n/**\n * Groups the items emitted by an Observable according to a specified criterion,\n * and emits these grouped items as `GroupedObservables`, one\n * {@link GroupedObservable} per group.\n *\n * ![](groupBy.png)\n *\n * When the Observable emits an item, a key is computed for this item with the keySelector function.\n *\n * If a {@link GroupedObservable} for this key exists, this {@link GroupedObservable} emits. Elsewhere, a new\n * {@link GroupedObservable} for this key is created and emits.\n *\n * A {@link GroupedObservable} represents values belonging to the same group represented by a common key. The common\n * key is available as the key field of a {@link GroupedObservable} instance.\n *\n * The elements emitted by {@link GroupedObservable}s are by default the items emitted by the Observable, or elements\n * returned by the elementSelector function.\n *\n * ## Examples\n *\n * ### Group objects by id and return as array\n *\n * ```ts\n * import { of } from 'rxjs';\n * import { mergeMap, groupBy, reduce } from 'rxjs/operators';\n *\n * of(\n * {id: 1, name: 'JavaScript'},\n * {id: 2, name: 'Parcel'},\n * {id: 2, name: 'webpack'},\n * {id: 1, name: 'TypeScript'},\n * {id: 3, name: 'TSLint'}\n * ).pipe(\n * groupBy(p => p.id),\n * mergeMap((group$) => group$.pipe(reduce((acc, cur) => [...acc, cur], []))),\n * )\n * .subscribe(p => console.log(p));\n *\n * // displays:\n * // [ { id: 1, name: 'JavaScript'},\n * // { id: 1, name: 'TypeScript'} ]\n * //\n * // [ { id: 2, name: 'Parcel'},\n * // { id: 2, name: 'webpack'} ]\n * //\n * // [ { id: 3, name: 'TSLint'} ]\n * ```\n *\n * ### Pivot data on the id field\n *\n * ```ts\n * import { of } from 'rxjs';\n * import { groupBy, map, mergeMap, reduce } from 'rxjs/operators';\n *\n * of(\n * { id: 1, name: 'JavaScript' },\n * { id: 2, name: 'Parcel' },\n * { id: 2, name: 'webpack' },\n * { id: 1, name: 'TypeScript' },\n * { id: 3, name: 'TSLint' }\n * )\n * .pipe(\n * groupBy(p => p.id, p => p.name),\n * mergeMap(group$ =>\n * group$.pipe(reduce((acc, cur) => [...acc, cur], [`${group$.key}`]))\n * ),\n * map(arr => ({ id: parseInt(arr[0], 10), values: arr.slice(1) }))\n * )\n * .subscribe(p => console.log(p));\n *\n * // displays:\n * // { id: 1, values: [ 'JavaScript', 'TypeScript' ] }\n * // { id: 2, values: [ 'Parcel', 'webpack' ] }\n * // { id: 3, values: [ 'TSLint' ] }\n * ```\n *\n * @param {function(value: T): K} keySelector A function that extracts the key\n * for each item.\n * @param {function(value: T): R} [elementSelector] A function that extracts the\n * return element for each item.\n * @param {function(grouped: GroupedObservable): Observable} [durationSelector]\n * A function that returns an Observable to determine how long each group should\n * exist.\n * @return {Observable>} An Observable that emits\n * GroupedObservables, each of which corresponds to a unique key value and each\n * of which emits those items from the source Observable that share that key\n * value.\n * @method groupBy\n * @owner Observable\n */\nexport function groupBy(keySelector: (value: T) => K,\n elementSelector?: ((value: T) => R) | void,\n durationSelector?: (grouped: GroupedObservable) => Observable,\n subjectSelector?: () => Subject): OperatorFunction> {\n return (source: Observable) =>\n source.lift(new GroupByOperator(keySelector, elementSelector, durationSelector, subjectSelector));\n}\n\nexport interface RefCountSubscription {\n count: number;\n unsubscribe: () => void;\n closed: boolean;\n attemptedToUnsubscribe: boolean;\n}\n\nclass GroupByOperator implements Operator> {\n constructor(private keySelector: (value: T) => K,\n private elementSelector?: ((value: T) => R) | void,\n private durationSelector?: (grouped: GroupedObservable) => Observable,\n private subjectSelector?: () => Subject) {\n }\n\n call(subscriber: Subscriber>, source: any): any {\n return source.subscribe(new GroupBySubscriber(\n subscriber, this.keySelector, this.elementSelector, this.durationSelector, this.subjectSelector\n ));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass GroupBySubscriber extends Subscriber implements RefCountSubscription {\n private groups: Map> = null;\n public attemptedToUnsubscribe: boolean = false;\n public count: number = 0;\n\n constructor(destination: Subscriber>,\n private keySelector: (value: T) => K,\n private elementSelector?: ((value: T) => R) | void,\n private durationSelector?: (grouped: GroupedObservable) => Observable,\n private subjectSelector?: () => Subject) {\n super(destination);\n }\n\n protected _next(value: T): void {\n let key: K;\n try {\n key = this.keySelector(value);\n } catch (err) {\n this.error(err);\n return;\n }\n\n this._group(value, key);\n }\n\n private _group(value: T, key: K) {\n let groups = this.groups;\n\n if (!groups) {\n groups = this.groups = new Map>();\n }\n\n let group = groups.get(key);\n\n let element: R;\n if (this.elementSelector) {\n try {\n element = this.elementSelector(value);\n } catch (err) {\n this.error(err);\n }\n } else {\n element = value;\n }\n\n if (!group) {\n group = (this.subjectSelector ? this.subjectSelector() : new Subject()) as Subject;\n groups.set(key, group);\n const groupedObservable = new GroupedObservable(key, group, this);\n this.destination.next(groupedObservable);\n if (this.durationSelector) {\n let duration: any;\n try {\n duration = this.durationSelector(new GroupedObservable(key, >group));\n } catch (err) {\n this.error(err);\n return;\n }\n this.add(duration.subscribe(new GroupDurationSubscriber(key, group, this)));\n }\n }\n\n if (!group.closed) {\n group.next(element);\n }\n }\n\n protected _error(err: any): void {\n const groups = this.groups;\n if (groups) {\n groups.forEach((group, key) => {\n group.error(err);\n });\n\n groups.clear();\n }\n this.destination.error(err);\n }\n\n protected _complete(): void {\n const groups = this.groups;\n if (groups) {\n groups.forEach((group, key) => {\n group.complete();\n });\n\n groups.clear();\n }\n this.destination.complete();\n }\n\n removeGroup(key: K): void {\n this.groups.delete(key);\n }\n\n unsubscribe() {\n if (!this.closed) {\n this.attemptedToUnsubscribe = true;\n if (this.count === 0) {\n super.unsubscribe();\n }\n }\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass GroupDurationSubscriber extends Subscriber {\n constructor(private key: K,\n private group: Subject,\n private parent: GroupBySubscriber) {\n super(group);\n }\n\n protected _next(value: T): void {\n this.complete();\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _unsubscribe() {\n const { parent, key } = this;\n this.key = this.parent = null;\n if (parent) {\n parent.removeGroup(key);\n }\n }\n}\n\n/**\n * An Observable representing values belonging to the same group represented by\n * a common key. The values emitted by a GroupedObservable come from the source\n * Observable. The common key is available as the field `key` on a\n * GroupedObservable instance.\n *\n * @class GroupedObservable\n */\nexport class GroupedObservable extends Observable {\n /** @deprecated Do not construct this type. Internal use only */\n constructor(public key: K,\n private groupSubject: Subject,\n private refCountSubscription?: RefCountSubscription) {\n super();\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _subscribe(subscriber: Subscriber) {\n const subscription = new Subscription();\n const { refCountSubscription, groupSubject } = this;\n if (refCountSubscription && !refCountSubscription.closed) {\n subscription.add(new InnerRefCountSubscription(refCountSubscription));\n }\n subscription.add(groupSubject.subscribe(subscriber));\n return subscription;\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass InnerRefCountSubscription extends Subscription {\n constructor(private parent: RefCountSubscription) {\n super();\n parent.count++;\n }\n\n unsubscribe() {\n const parent = this.parent;\n if (!parent.closed && !this.closed) {\n super.unsubscribe();\n parent.count -= 1;\n if (parent.count === 0 && parent.attemptedToUnsubscribe) {\n parent.unsubscribe();\n }\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { OperatorFunction } from '../types';\n\n/**\n * Applies a given `project` function to each value emitted by the source\n * Observable, and emits the resulting values as an Observable.\n *\n * Like [Array.prototype.map()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map),\n * it passes each source value through a transformation function to get\n * corresponding output values.\n *\n * ![](map.png)\n *\n * Similar to the well known `Array.prototype.map` function, this operator\n * applies a projection to each value and emits that projection in the output\n * Observable.\n *\n * ## Example\n * Map every click to the clientX position of that click\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { map } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const positions = clicks.pipe(map(ev => ev.clientX));\n * positions.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link mapTo}\n * @see {@link pluck}\n *\n * @param {function(value: T, index: number): R} project The function to apply\n * to each `value` emitted by the source Observable. The `index` parameter is\n * the number `i` for the i-th emission that has happened since the\n * subscription, starting from the number `0`.\n * @param {any} [thisArg] An optional argument to define what `this` is in the\n * `project` function.\n * @return {Observable} An Observable that emits the values from the source\n * Observable transformed by the given `project` function.\n * @method map\n * @owner Observable\n */\nexport function map(project: (value: T, index: number) => R, thisArg?: any): OperatorFunction {\n return function mapOperation(source: Observable): Observable {\n if (typeof project !== 'function') {\n throw new TypeError('argument is not a function. Are you looking for `mapTo()`?');\n }\n return source.lift(new MapOperator(project, thisArg));\n };\n}\n\nexport class MapOperator implements Operator {\n constructor(private project: (value: T, index: number) => R, private thisArg: any) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new MapSubscriber(subscriber, this.project, this.thisArg));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass MapSubscriber extends Subscriber {\n count: number = 0;\n private thisArg: any;\n\n constructor(destination: Subscriber,\n private project: (value: T, index: number) => R,\n thisArg: any) {\n super(destination);\n this.thisArg = thisArg || this;\n }\n\n // NOTE: This looks unoptimized, but it's actually purposefully NOT\n // using try/catch optimizations.\n protected _next(value: T) {\n let result: R;\n try {\n result = this.project.call(this.thisArg, value, this.count++);\n } catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n }\n}\n","\nimport { mergeMap } from './mergeMap';\nimport { identity } from '../util/identity';\nimport { OperatorFunction, ObservableInput } from '../types';\n\n/**\n * Converts a higher-order Observable into a first-order Observable which\n * concurrently delivers all values that are emitted on the inner Observables.\n *\n * Flattens an Observable-of-Observables.\n *\n * ![](mergeAll.png)\n *\n * `mergeAll` subscribes to an Observable that emits Observables, also known as\n * a higher-order Observable. Each time it observes one of these emitted inner\n * Observables, it subscribes to that and delivers all the values from the\n * inner Observable on the output Observable. The output Observable only\n * completes once all inner Observables have completed. Any error delivered by\n * a inner Observable will be immediately emitted on the output Observable.\n *\n * ## Examples\n * Spawn a new interval Observable for each click event, and blend their outputs as one Observable\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { map, mergeAll } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const higherOrder = clicks.pipe(map((ev) => interval(1000)));\n * const firstOrder = higherOrder.pipe(mergeAll());\n * firstOrder.subscribe(x => console.log(x));\n * ```\n *\n * Count from 0 to 9 every second for each click, but only allow 2 concurrent timers\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { take, map, mergeAll } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const higherOrder = clicks.pipe(\n * map((ev) => interval(1000).pipe(take(10))),\n * );\n * const firstOrder = higherOrder.pipe(mergeAll(2));\n * firstOrder.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link combineAll}\n * @see {@link concatAll}\n * @see {@link exhaust}\n * @see {@link merge}\n * @see {@link mergeMap}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n * @see {@link switchAll}\n * @see {@link switchMap}\n * @see {@link zipAll}\n *\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of inner\n * Observables being subscribed to concurrently.\n * @return {Observable} An Observable that emits values coming from all the\n * inner Observables emitted by the source Observable.\n * @method mergeAll\n * @owner Observable\n */\nexport function mergeAll(concurrent: number = Number.POSITIVE_INFINITY): OperatorFunction, T> {\n return mergeMap(identity, concurrent);\n}\n","import { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\nimport { map } from './map';\nimport { from } from '../observable/from';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\n\n/* tslint:disable:max-line-length */\nexport function mergeMap>(project: (value: T, index: number) => O, concurrent?: number): OperatorFunction>;\n/** @deprecated resultSelector no longer supported, use inner map instead */\nexport function mergeMap>(project: (value: T, index: number) => O, resultSelector: undefined, concurrent?: number): OperatorFunction>;\n/** @deprecated resultSelector no longer supported, use inner map instead */\nexport function mergeMap>(project: (value: T, index: number) => O, resultSelector: (outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R, concurrent?: number): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable.\n *\n * Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link mergeAll}.\n *\n * ![](mergeMap.png)\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an Observable, and then merging those resulting Observables and\n * emitting the results of this merger.\n *\n * ## Example\n * Map and flatten each letter to an Observable ticking every 1 second\n * ```ts\n * import { of, interval } from 'rxjs';\n * import { mergeMap, map } from 'rxjs/operators';\n *\n * const letters = of('a', 'b', 'c');\n * const result = letters.pipe(\n * mergeMap(x => interval(1000).pipe(map(i => x+i))),\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // a0\n * // b0\n * // c0\n * // a1\n * // b1\n * // c1\n * // continues to list a,b,c with respective ascending integers\n * ```\n *\n * @see {@link concatMap}\n * @see {@link exhaustMap}\n * @see {@link merge}\n * @see {@link mergeAll}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n * @see {@link switchMap}\n *\n * @param {function(value: T, ?index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input\n * Observables being subscribed to concurrently.\n * @return {Observable} An Observable that emits the result of applying the\n * projection function (and the optional deprecated `resultSelector`) to each item\n * emitted by the source Observable and merging the results of the Observables\n * obtained from this transformation.\n */\nexport function mergeMap>(\n project: (value: T, index: number) => O,\n resultSelector?: ((outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R) | number,\n concurrent: number = Number.POSITIVE_INFINITY\n): OperatorFunction|R> {\n if (typeof resultSelector === 'function') {\n // DEPRECATED PATH\n return (source: Observable) => source.pipe(\n mergeMap((a, i) => from(project(a, i)).pipe(\n map((b: any, ii: number) => resultSelector(a, b, i, ii)),\n ), concurrent)\n );\n } else if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return (source: Observable) => source.lift(new MergeMapOperator(project, concurrent));\n}\n\nexport class MergeMapOperator implements Operator {\n constructor(private project: (value: T, index: number) => ObservableInput,\n private concurrent: number = Number.POSITIVE_INFINITY) {\n }\n\n call(observer: Subscriber, source: any): any {\n return source.subscribe(new MergeMapSubscriber(\n observer, this.project, this.concurrent\n ));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class MergeMapSubscriber extends SimpleOuterSubscriber {\n private hasCompleted: boolean = false;\n private buffer: T[] = [];\n private active: number = 0;\n protected index: number = 0;\n\n constructor(destination: Subscriber,\n private project: (value: T, index: number) => ObservableInput,\n private concurrent: number = Number.POSITIVE_INFINITY) {\n super(destination);\n }\n\n protected _next(value: T): void {\n if (this.active < this.concurrent) {\n this._tryNext(value);\n } else {\n this.buffer.push(value);\n }\n }\n\n protected _tryNext(value: T) {\n let result: ObservableInput;\n const index = this.index++;\n try {\n result = this.project(value, index);\n } catch (err) {\n this.destination.error!(err);\n return;\n }\n this.active++;\n this._innerSub(result);\n }\n\n private _innerSub(ish: ObservableInput): void {\n const innerSubscriber = new SimpleInnerSubscriber(this);\n const destination = this.destination as Subscription;\n destination.add(innerSubscriber);\n const innerSubscription = innerSubscribe(ish, innerSubscriber);\n // The returned subscription will usually be the subscriber that was\n // passed. However, interop subscribers will be wrapped and for\n // unsubscriptions to chain correctly, the wrapper needs to be added, too.\n if (innerSubscription !== innerSubscriber) {\n destination.add(innerSubscription);\n }\n }\n\n protected _complete(): void {\n this.hasCompleted = true;\n if (this.active === 0 && this.buffer.length === 0) {\n this.destination.complete!();\n }\n this.unsubscribe();\n }\n\n notifyNext(innerValue: R): void {\n this.destination.next!(innerValue);\n }\n\n notifyComplete(): void {\n const buffer = this.buffer;\n this.active--;\n if (buffer.length > 0) {\n this._next(buffer.shift()!);\n } else if (this.active === 0 && this.hasCompleted) {\n this.destination.complete!();\n }\n }\n}\n\n/**\n * @deprecated renamed. Use {@link mergeMap}\n */\nexport const flatMap = mergeMap;","import { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { Notification } from '../Notification';\nimport { MonoTypeOperatorFunction, PartialObserver, SchedulerAction, SchedulerLike, TeardownLogic } from '../types';\n\n/**\n *\n * Re-emits all notifications from source Observable with specified scheduler.\n *\n * Ensure a specific scheduler is used, from outside of an Observable.\n *\n * `observeOn` is an operator that accepts a scheduler as a first parameter, which will be used to reschedule\n * notifications emitted by the source Observable. It might be useful, if you do not have control over\n * internal scheduler of a given Observable, but want to control when its values are emitted nevertheless.\n *\n * Returned Observable emits the same notifications (nexted values, complete and error events) as the source Observable,\n * but rescheduled with provided scheduler. Note that this doesn't mean that source Observables internal\n * scheduler will be replaced in any way. Original scheduler still will be used, but when the source Observable emits\n * notification, it will be immediately scheduled again - this time with scheduler passed to `observeOn`.\n * An anti-pattern would be calling `observeOn` on Observable that emits lots of values synchronously, to split\n * that emissions into asynchronous chunks. For this to happen, scheduler would have to be passed into the source\n * Observable directly (usually into the operator that creates it). `observeOn` simply delays notifications a\n * little bit more, to ensure that they are emitted at expected moments.\n *\n * As a matter of fact, `observeOn` accepts second parameter, which specifies in milliseconds with what delay notifications\n * will be emitted. The main difference between {@link delay} operator and `observeOn` is that `observeOn`\n * will delay all notifications - including error notifications - while `delay` will pass through error\n * from source Observable immediately when it is emitted. In general it is highly recommended to use `delay` operator\n * for any kind of delaying of values in the stream, while using `observeOn` to specify which scheduler should be used\n * for notification emissions in general.\n *\n * ## Example\n * Ensure values in subscribe are called just before browser repaint.\n * ```ts\n * import { interval } from 'rxjs';\n * import { observeOn } from 'rxjs/operators';\n *\n * const intervals = interval(10); // Intervals are scheduled\n * // with async scheduler by default...\n * intervals.pipe(\n * observeOn(animationFrameScheduler), // ...but we will observe on animationFrame\n * ) // scheduler to ensure smooth animation.\n * .subscribe(val => {\n * someDiv.style.height = val + 'px';\n * });\n * ```\n *\n * @see {@link delay}\n *\n * @param {SchedulerLike} scheduler Scheduler that will be used to reschedule notifications from source Observable.\n * @param {number} [delay] Number of milliseconds that states with what delay every notification should be rescheduled.\n * @return {Observable} Observable that emits the same notifications as the source Observable,\n * but with provided scheduler.\n *\n * @method observeOn\n * @owner Observable\n */\nexport function observeOn(scheduler: SchedulerLike, delay: number = 0): MonoTypeOperatorFunction {\n return function observeOnOperatorFunction(source: Observable): Observable {\n return source.lift(new ObserveOnOperator(scheduler, delay));\n };\n}\n\nexport class ObserveOnOperator implements Operator {\n constructor(private scheduler: SchedulerLike, private delay: number = 0) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new ObserveOnSubscriber(subscriber, this.scheduler, this.delay));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class ObserveOnSubscriber extends Subscriber {\n /** @nocollapse */\n static dispatch(this: SchedulerAction, arg: ObserveOnMessage) {\n const { notification, destination } = arg;\n notification.observe(destination);\n this.unsubscribe();\n }\n\n constructor(destination: Subscriber,\n private scheduler: SchedulerLike,\n private delay: number = 0) {\n super(destination);\n }\n\n private scheduleMessage(notification: Notification): void {\n const destination = this.destination as Subscription;\n destination.add(this.scheduler.schedule(\n ObserveOnSubscriber.dispatch,\n this.delay,\n new ObserveOnMessage(notification, this.destination)\n ));\n }\n\n protected _next(value: T): void {\n this.scheduleMessage(Notification.createNext(value));\n }\n\n protected _error(err: any): void {\n this.scheduleMessage(Notification.createError(err));\n this.unsubscribe();\n }\n\n protected _complete(): void {\n this.scheduleMessage(Notification.createComplete());\n this.unsubscribe();\n }\n}\n\nexport class ObserveOnMessage {\n constructor(public notification: Notification,\n public destination: PartialObserver) {\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\nimport { ConnectableObservable } from '../observable/ConnectableObservable';\nimport { Observable } from '../Observable';\n\n/**\n * Make a {@link ConnectableObservable} behave like a ordinary observable and automates the way\n * you can connect to it.\n *\n * Internally it counts the subscriptions to the observable and subscribes (only once) to the source if\n * the number of subscriptions is larger than 0. If the number of subscriptions is smaller than 1, it\n * unsubscribes from the source. This way you can make sure that everything before the *published*\n * refCount has only a single subscription independently of the number of subscribers to the target\n * observable.\n *\n * Note that using the {@link share} operator is exactly the same as using the *publish* operator\n * (making the observable hot) and the *refCount* operator in a sequence.\n *\n * ![](refCount.png)\n *\n * ## Example\n *\n * In the following example there are two intervals turned into connectable observables\n * by using the *publish* operator. The first one uses the *refCount* operator, the\n * second one does not use it. You will notice that a connectable observable does nothing\n * until you call its connect function.\n *\n * ```ts\n * import { interval } from 'rxjs';\n * import { tap, publish, refCount } from 'rxjs/operators';\n *\n * // Turn the interval observable into a ConnectableObservable (hot)\n * const refCountInterval = interval(400).pipe(\n * tap((num) => console.log(`refCount ${num}`)),\n * publish(),\n * refCount()\n * );\n *\n * const publishedInterval = interval(400).pipe(\n * tap((num) => console.log(`publish ${num}`)),\n * publish()\n * );\n *\n * refCountInterval.subscribe();\n * refCountInterval.subscribe();\n * // 'refCount 0' -----> 'refCount 1' -----> etc\n * // All subscriptions will receive the same value and the tap (and\n * // every other operator) before the publish operator will be executed\n * // only once per event independently of the number of subscriptions.\n *\n * publishedInterval.subscribe();\n * // Nothing happens until you call .connect() on the observable.\n * ```\n *\n * @see {@link ConnectableObservable}\n * @see {@link share}\n * @see {@link publish}\n */\nexport function refCount(): MonoTypeOperatorFunction {\n return function refCountOperatorFunction(source: ConnectableObservable): Observable {\n return source.lift(new RefCountOperator(source));\n } as MonoTypeOperatorFunction;\n}\n\nclass RefCountOperator implements Operator {\n constructor(private connectable: ConnectableObservable) {\n }\n call(subscriber: Subscriber, source: any): TeardownLogic {\n\n const { connectable } = this;\n ( connectable)._refCount++;\n\n const refCounter = new RefCountSubscriber(subscriber, connectable);\n const subscription = source.subscribe(refCounter);\n\n if (!refCounter.closed) {\n ( refCounter).connection = connectable.connect();\n }\n\n return subscription;\n }\n}\n\nclass RefCountSubscriber extends Subscriber {\n\n private connection: Subscription;\n\n constructor(destination: Subscriber,\n private connectable: ConnectableObservable) {\n super(destination);\n }\n\n protected _unsubscribe() {\n\n const { connectable } = this;\n if (!connectable) {\n this.connection = null;\n return;\n }\n\n this.connectable = null;\n const refCount = ( connectable)._refCount;\n if (refCount <= 0) {\n this.connection = null;\n return;\n }\n\n ( connectable)._refCount = refCount - 1;\n if (refCount > 1) {\n this.connection = null;\n return;\n }\n\n ///\n // Compare the local RefCountSubscriber's connection Subscription to the\n // connection Subscription on the shared ConnectableObservable. In cases\n // where the ConnectableObservable source synchronously emits values, and\n // the RefCountSubscriber's downstream Observers synchronously unsubscribe,\n // execution continues to here before the RefCountOperator has a chance to\n // supply the RefCountSubscriber with the shared connection Subscription.\n // For example:\n // ```\n // range(0, 10).pipe(\n // publish(),\n // refCount(),\n // take(5),\n // )\n // .subscribe();\n // ```\n // In order to account for this case, RefCountSubscriber should only dispose\n // the ConnectableObservable's shared connection Subscription if the\n // connection Subscription exists, *and* either:\n // a. RefCountSubscriber doesn't have a reference to the shared connection\n // Subscription yet, or,\n // b. RefCountSubscriber's connection Subscription reference is identical\n // to the shared connection Subscription\n ///\n const { connection } = this;\n const sharedConnection = ( connectable)._connection;\n this.connection = null;\n\n if (sharedConnection && (!connection || sharedConnection === connection)) {\n sharedConnection.unsubscribe();\n }\n }\n}\n","import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\nimport { Subscription } from '../Subscription';\n\nexport function scheduleArray(input: ArrayLike, scheduler: SchedulerLike) {\n return new Observable(subscriber => {\n const sub = new Subscription();\n let i = 0;\n sub.add(scheduler.schedule(function () {\n if (i === input.length) {\n subscriber.complete();\n return;\n }\n subscriber.next(input[i++]);\n if (!subscriber.closed) {\n sub.add(this.schedule());\n }\n }));\n return sub;\n });\n}\n","import { scheduleObservable } from './scheduleObservable';\nimport { schedulePromise } from './schedulePromise';\nimport { scheduleArray } from './scheduleArray';\nimport { scheduleIterable } from './scheduleIterable';\nimport { ObservableInput, SchedulerLike, Observable } from 'rxjs';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isPromise } from '../util/isPromise';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isIterable } from '../util/isIterable';\n\n/**\n * Converts from a common {@link ObservableInput} type to an observable where subscription and emissions\n * are scheduled on the provided scheduler.\n *\n * @see from\n * @see of\n *\n * @param input The observable, array, promise, iterable, etc you would like to schedule\n * @param scheduler The scheduler to use to schedule the subscription and emissions from\n * the returned observable.\n */\nexport function scheduled(input: ObservableInput, scheduler: SchedulerLike): Observable {\n if (input != null) {\n if (isInteropObservable(input)) {\n return scheduleObservable(input, scheduler);\n } else if (isPromise(input)) {\n return schedulePromise(input, scheduler);\n } else if (isArrayLike(input)) {\n return scheduleArray(input, scheduler);\n } else if (isIterable(input) || typeof input === 'string') {\n return scheduleIterable(input, scheduler);\n }\n }\n\n throw new TypeError((input !== null && typeof input || input) + ' is not observable');\n}\n","import { InteropObservable } from '../types';\nimport { observable as Symbol_observable } from '../symbol/observable';\n\n/** Identifies an input as being Observable (but not necessary an Rx Observable) */\nexport function isInteropObservable(input: any): input is InteropObservable {\n return input && typeof input[Symbol_observable] === 'function';\n}\n","import { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { observable as Symbol_observable } from '../symbol/observable';\nimport { InteropObservable, SchedulerLike, Subscribable } from '../types';\n\nexport function scheduleObservable(input: InteropObservable, scheduler: SchedulerLike) {\n return new Observable(subscriber => {\n const sub = new Subscription();\n sub.add(scheduler.schedule(() => {\n const observable: Subscribable = input[Symbol_observable]();\n sub.add(observable.subscribe({\n next(value) { sub.add(scheduler.schedule(() => subscriber.next(value))); },\n error(err) { sub.add(scheduler.schedule(() => subscriber.error(err))); },\n complete() { sub.add(scheduler.schedule(() => subscriber.complete())); },\n }));\n }));\n return sub;\n });\n}\n","import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\nimport { Subscription } from '../Subscription';\n\nexport function schedulePromise(input: PromiseLike, scheduler: SchedulerLike) {\n return new Observable(subscriber => {\n const sub = new Subscription();\n sub.add(scheduler.schedule(() => input.then(\n value => {\n sub.add(scheduler.schedule(() => {\n subscriber.next(value);\n sub.add(scheduler.schedule(() => subscriber.complete()));\n }));\n },\n err => {\n sub.add(scheduler.schedule(() => subscriber.error(err)));\n }\n )));\n return sub;\n });\n}\n","import { iterator as Symbol_iterator } from '../symbol/iterator';\n\n/** Identifies an input as being an Iterable */\nexport function isIterable(input: any): input is Iterable {\n return input && typeof input[Symbol_iterator] === 'function';\n}\n","import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\nimport { Subscription } from '../Subscription';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\n\nexport function scheduleIterable(input: Iterable, scheduler: SchedulerLike) {\n if (!input) {\n throw new Error('Iterable cannot be null');\n }\n return new Observable(subscriber => {\n const sub = new Subscription();\n let iterator: Iterator;\n sub.add(() => {\n // Finalize generators\n if (iterator && typeof iterator.return === 'function') {\n iterator.return();\n }\n });\n sub.add(scheduler.schedule(() => {\n iterator = input[Symbol_iterator]();\n sub.add(scheduler.schedule(function () {\n if (subscriber.closed) {\n return;\n }\n let value: T;\n let done: boolean;\n try {\n const result = iterator.next();\n value = result.value;\n done = result.done;\n } catch (err) {\n subscriber.error(err);\n return;\n }\n if (done) {\n subscriber.complete();\n } else {\n subscriber.next(value);\n this.schedule();\n }\n }));\n }));\n return sub;\n });\n}\n","import { Action } from './Action';\nimport { SchedulerAction } from '../types';\nimport { Subscription } from '../Subscription';\nimport { AsyncScheduler } from './AsyncScheduler';\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class AsyncAction extends Action {\n\n public id: any;\n public state: T;\n public delay: number;\n protected pending: boolean = false;\n\n constructor(protected scheduler: AsyncScheduler,\n protected work: (this: SchedulerAction, state?: T) => void) {\n super(scheduler, work);\n }\n\n public schedule(state?: T, delay: number = 0): Subscription {\n\n if (this.closed) {\n return this;\n }\n\n // Always replace the current state with the new state.\n this.state = state;\n\n const id = this.id;\n const scheduler = this.scheduler;\n\n //\n // Important implementation note:\n //\n // Actions only execute once by default, unless rescheduled from within the\n // scheduled callback. This allows us to implement single and repeat\n // actions via the same code path, without adding API surface area, as well\n // as mimic traditional recursion but across asynchronous boundaries.\n //\n // However, JS runtimes and timers distinguish between intervals achieved by\n // serial `setTimeout` calls vs. a single `setInterval` call. An interval of\n // serial `setTimeout` calls can be individually delayed, which delays\n // scheduling the next `setTimeout`, and so on. `setInterval` attempts to\n // guarantee the interval callback will be invoked more precisely to the\n // interval period, regardless of load.\n //\n // Therefore, we use `setInterval` to schedule single and repeat actions.\n // If the action reschedules itself with the same delay, the interval is not\n // canceled. If the action doesn't reschedule, or reschedules with a\n // different delay, the interval will be canceled after scheduled callback\n // execution.\n //\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n\n // Set the pending flag indicating that this action has been scheduled, or\n // has recursively rescheduled itself.\n this.pending = true;\n\n this.delay = delay;\n // If this action has already an async Id, don't request a new one.\n this.id = this.id || this.requestAsyncId(scheduler, this.id, delay);\n\n return this;\n }\n\n protected requestAsyncId(scheduler: AsyncScheduler, id?: any, delay: number = 0): any {\n return setInterval(scheduler.flush.bind(scheduler, this), delay);\n }\n\n protected recycleAsyncId(scheduler: AsyncScheduler, id: any, delay: number = 0): any {\n // If this action is rescheduled with the same delay time, don't clear the interval id.\n if (delay !== null && this.delay === delay && this.pending === false) {\n return id;\n }\n // Otherwise, if the action's delay time is different from the current delay,\n // or the action has been rescheduled before it's executed, clear the interval id\n clearInterval(id);\n return undefined;\n }\n\n /**\n * Immediately executes this action and the `work` it contains.\n * @return {any}\n */\n public execute(state: T, delay: number): any {\n\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n\n this.pending = false;\n const error = this._execute(state, delay);\n if (error) {\n return error;\n } else if (this.pending === false && this.id != null) {\n // Dequeue if the action didn't reschedule itself. Don't call\n // unsubscribe(), because the action could reschedule later.\n // For example:\n // ```\n // scheduler.schedule(function doWork(counter) {\n // /* ... I'm a busy worker bee ... */\n // var originalAction = this;\n // /* wait 100ms before rescheduling the action */\n // setTimeout(function () {\n // originalAction.schedule(counter + 1);\n // }, 100);\n // }, 1000);\n // ```\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n }\n\n protected _execute(state: T, delay: number): any {\n let errored: boolean = false;\n let errorValue: any = undefined;\n try {\n this.work(state);\n } catch (e) {\n errored = true;\n errorValue = !!e && e || new Error(e);\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _unsubscribe() {\n\n const id = this.id;\n const scheduler = this.scheduler;\n const actions = scheduler.actions;\n const index = actions.indexOf(this);\n\n this.work = null;\n this.state = null;\n this.pending = false;\n this.scheduler = null;\n\n if (index !== -1) {\n actions.splice(index, 1);\n }\n\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n\n this.delay = null;\n }\n}\n","import { Scheduler } from '../Scheduler';\nimport { Subscription } from '../Subscription';\nimport { SchedulerAction } from '../types';\n\n/**\n * A unit of work to be executed in a `scheduler`. An action is typically\n * created from within a {@link SchedulerLike} and an RxJS user does not need to concern\n * themselves about creating and manipulating an Action.\n *\n * ```ts\n * class Action extends Subscription {\n * new (scheduler: Scheduler, work: (state?: T) => void);\n * schedule(state?: T, delay: number = 0): Subscription;\n * }\n * ```\n *\n * @class Action\n */\nexport class Action extends Subscription {\n constructor(scheduler: Scheduler, work: (this: SchedulerAction, state?: T) => void) {\n super();\n }\n /**\n * Schedules this action on its parent {@link SchedulerLike} for execution. May be passed\n * some context object, `state`. May happen at some point in the future,\n * according to the `delay` parameter, if specified.\n * @param {T} [state] Some contextual data that the `work` function uses when\n * called by the Scheduler.\n * @param {number} [delay] Time to wait before executing the work, where the\n * time unit is implicit and defined by the Scheduler.\n * @return {void}\n */\n public schedule(state?: T, delay: number = 0): Subscription {\n return this;\n }\n}\n","import { Scheduler } from '../Scheduler';\nimport { Action } from './Action';\nimport { AsyncAction } from './AsyncAction';\nimport { SchedulerAction } from '../types';\nimport { Subscription } from '../Subscription';\n\nexport class AsyncScheduler extends Scheduler {\n public static delegate?: Scheduler;\n public actions: Array> = [];\n /**\n * A flag to indicate whether the Scheduler is currently executing a batch of\n * queued actions.\n * @type {boolean}\n * @deprecated internal use only\n */\n public active: boolean = false;\n /**\n * An internal ID used to track the latest asynchronous task such as those\n * coming from `setTimeout`, `setInterval`, `requestAnimationFrame`, and\n * others.\n * @type {any}\n * @deprecated internal use only\n */\n public scheduled: any = undefined;\n\n constructor(SchedulerAction: typeof Action,\n now: () => number = Scheduler.now) {\n super(SchedulerAction, () => {\n if (AsyncScheduler.delegate && AsyncScheduler.delegate !== this) {\n return AsyncScheduler.delegate.now();\n } else {\n return now();\n }\n });\n }\n\n public schedule(work: (this: SchedulerAction, state?: T) => void, delay: number = 0, state?: T): Subscription {\n if (AsyncScheduler.delegate && AsyncScheduler.delegate !== this) {\n return AsyncScheduler.delegate.schedule(work, delay, state);\n } else {\n return super.schedule(work, delay, state);\n }\n }\n\n public flush(action: AsyncAction): void {\n\n const {actions} = this;\n\n if (this.active) {\n actions.push(action);\n return;\n }\n\n let error: any;\n this.active = true;\n\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (action = actions.shift()); // exhaust the scheduler queue\n\n this.active = false;\n\n if (error) {\n while (action = actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n","let nextHandle = 1;\nconst RESOLVED = (() => Promise.resolve())();\nconst activeHandles: { [key: number]: any } = {};\n\n/**\n * Finds the handle in the list of active handles, and removes it.\n * Returns `true` if found, `false` otherwise. Used both to clear\n * Immediate scheduled tasks, and to identify if a task should be scheduled.\n */\nfunction findAndClearHandle(handle: number): boolean {\n if (handle in activeHandles) {\n delete activeHandles[handle];\n return true;\n }\n return false;\n}\n\n/**\n * Helper functions to schedule and unschedule microtasks.\n */\nexport const Immediate = {\n setImmediate(cb: () => void): number {\n const handle = nextHandle++;\n activeHandles[handle] = true;\n RESOLVED.then(() => findAndClearHandle(handle) && cb());\n return handle;\n },\n\n clearImmediate(handle: number): void {\n findAndClearHandle(handle);\n },\n};\n\n/**\n * Used for internal testing purposes only. Do not export from library.\n */\nexport const TestTools = {\n pending() {\n return Object.keys(activeHandles).length;\n }\n};\n","import { Immediate } from '../util/Immediate';\nimport { AsyncAction } from './AsyncAction';\nimport { AsapScheduler } from './AsapScheduler';\nimport { SchedulerAction } from '../types';\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class AsapAction extends AsyncAction {\n\n constructor(protected scheduler: AsapScheduler,\n protected work: (this: SchedulerAction, state?: T) => void) {\n super(scheduler, work);\n }\n\n protected requestAsyncId(scheduler: AsapScheduler, id?: any, delay: number = 0): any {\n // If delay is greater than 0, request as an async action.\n if (delay !== null && delay > 0) {\n return super.requestAsyncId(scheduler, id, delay);\n }\n // Push the action to the end of the scheduler queue.\n scheduler.actions.push(this);\n // If a microtask has already been scheduled, don't schedule another\n // one. If a microtask hasn't been scheduled yet, schedule one now. Return\n // the current scheduled microtask id.\n return scheduler.scheduled || (scheduler.scheduled = Immediate.setImmediate(\n scheduler.flush.bind(scheduler, null)\n ));\n }\n protected recycleAsyncId(scheduler: AsapScheduler, id?: any, delay: number = 0): any {\n // If delay exists and is greater than 0, or if the delay is null (the\n // action wasn't rescheduled) but was originally scheduled as an async\n // action, then recycle as an async action.\n if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {\n return super.recycleAsyncId(scheduler, id, delay);\n }\n // If the scheduler queue is empty, cancel the requested microtask and\n // set the scheduled flag to undefined so the next AsapAction will schedule\n // its own.\n if (scheduler.actions.length === 0) {\n Immediate.clearImmediate(id);\n scheduler.scheduled = undefined;\n }\n // Return undefined so the action knows to request a new async id if it's rescheduled.\n return undefined;\n }\n}\n","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\n\nexport class AsapScheduler extends AsyncScheduler {\n public flush(action?: AsyncAction): void {\n\n this.active = true;\n this.scheduled = undefined;\n\n const {actions} = this;\n let error: any;\n let index: number = -1;\n let count: number = actions.length;\n action = action || actions.shift();\n\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (++index < count && (action = actions.shift()));\n\n this.active = false;\n\n if (error) {\n while (++index < count && (action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n","import { AsapAction } from './AsapAction';\nimport { AsapScheduler } from './AsapScheduler';\n\n/**\n *\n * Asap Scheduler\n *\n * Perform task as fast as it can be performed asynchronously\n *\n * `asap` scheduler behaves the same as {@link asyncScheduler} scheduler when you use it to delay task\n * in time. If however you set delay to `0`, `asap` will wait for current synchronously executing\n * code to end and then it will try to execute given task as fast as possible.\n *\n * `asap` scheduler will do its best to minimize time between end of currently executing code\n * and start of scheduled task. This makes it best candidate for performing so called \"deferring\".\n * Traditionally this was achieved by calling `setTimeout(deferredTask, 0)`, but that technique involves\n * some (although minimal) unwanted delay.\n *\n * Note that using `asap` scheduler does not necessarily mean that your task will be first to process\n * after currently executing code. In particular, if some task was also scheduled with `asap` before,\n * that task will execute first. That being said, if you need to schedule task asynchronously, but\n * as soon as possible, `asap` scheduler is your best bet.\n *\n * ## Example\n * Compare async and asap scheduler<\n * ```ts\n * import { asapScheduler, asyncScheduler } from 'rxjs';\n *\n * asyncScheduler.schedule(() => console.log('async')); // scheduling 'async' first...\n * asapScheduler.schedule(() => console.log('asap'));\n *\n * // Logs:\n * // \"asap\"\n * // \"async\"\n * // ... but 'asap' goes first!\n * ```\n */\nexport const asapScheduler = new AsapScheduler(AsapAction);\n\n/**\n * @deprecated renamed. Use {@link asapScheduler}\n */\nexport const asap = asapScheduler;\n","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\n\n/**\n *\n * Async Scheduler\n *\n * Schedule task as if you used setTimeout(task, duration)\n *\n * `async` scheduler schedules tasks asynchronously, by putting them on the JavaScript\n * event loop queue. It is best used to delay tasks in time or to schedule tasks repeating\n * in intervals.\n *\n * If you just want to \"defer\" task, that is to perform it right after currently\n * executing synchronous code ends (commonly achieved by `setTimeout(deferredTask, 0)`),\n * better choice will be the {@link asapScheduler} scheduler.\n *\n * ## Examples\n * Use async scheduler to delay task\n * ```ts\n * import { asyncScheduler } from 'rxjs';\n *\n * const task = () => console.log('it works!');\n *\n * asyncScheduler.schedule(task, 2000);\n *\n * // After 2 seconds logs:\n * // \"it works!\"\n * ```\n *\n * Use async scheduler to repeat task in intervals\n * ```ts\n * import { asyncScheduler } from 'rxjs';\n *\n * function task(state) {\n * console.log(state);\n * this.schedule(state + 1, 1000); // `this` references currently executing Action,\n * // which we reschedule with new state and delay\n * }\n *\n * asyncScheduler.schedule(task, 3000, 0);\n *\n * // Logs:\n * // 0 after 3s\n * // 1 after 4s\n * // 2 after 5s\n * // 3 after 6s\n * ```\n */\nexport const asyncScheduler = new AsyncScheduler(AsyncAction);\n\n/**\n * @deprecated renamed. Use {@link asyncScheduler}\n */\nexport const async = asyncScheduler;","import { AsyncAction } from './AsyncAction';\nimport { Subscription } from '../Subscription';\nimport { QueueScheduler } from './QueueScheduler';\nimport { SchedulerAction } from '../types';\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class QueueAction extends AsyncAction {\n\n constructor(protected scheduler: QueueScheduler,\n protected work: (this: SchedulerAction, state?: T) => void) {\n super(scheduler, work);\n }\n\n public schedule(state?: T, delay: number = 0): Subscription {\n if (delay > 0) {\n return super.schedule(state, delay);\n }\n this.delay = delay;\n this.state = state;\n this.scheduler.flush(this);\n return this;\n }\n\n public execute(state: T, delay: number): any {\n return (delay > 0 || this.closed) ?\n super.execute(state, delay) :\n this._execute(state, delay) ;\n }\n\n protected requestAsyncId(scheduler: QueueScheduler, id?: any, delay: number = 0): any {\n // If delay exists and is greater than 0, or if the delay is null (the\n // action wasn't rescheduled) but was originally scheduled as an async\n // action, then recycle as an async action.\n if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {\n return super.requestAsyncId(scheduler, id, delay);\n }\n // Otherwise flush the scheduler starting with this action.\n return scheduler.flush(this);\n }\n}\n","import { AsyncScheduler } from './AsyncScheduler';\n\nexport class QueueScheduler extends AsyncScheduler {\n}\n","import { QueueAction } from './QueueAction';\nimport { QueueScheduler } from './QueueScheduler';\n\n/**\n *\n * Queue Scheduler\n *\n * Put every next task on a queue, instead of executing it immediately\n *\n * `queue` scheduler, when used with delay, behaves the same as {@link asyncScheduler} scheduler.\n *\n * When used without delay, it schedules given task synchronously - executes it right when\n * it is scheduled. However when called recursively, that is when inside the scheduled task,\n * another task is scheduled with queue scheduler, instead of executing immediately as well,\n * that task will be put on a queue and wait for current one to finish.\n *\n * This means that when you execute task with `queue` scheduler, you are sure it will end\n * before any other task scheduled with that scheduler will start.\n *\n * ## Examples\n * Schedule recursively first, then do something\n * ```ts\n * import { queueScheduler } from 'rxjs';\n *\n * queueScheduler.schedule(() => {\n * queueScheduler.schedule(() => console.log('second')); // will not happen now, but will be put on a queue\n *\n * console.log('first');\n * });\n *\n * // Logs:\n * // \"first\"\n * // \"second\"\n * ```\n *\n * Reschedule itself recursively\n * ```ts\n * import { queueScheduler } from 'rxjs';\n *\n * queueScheduler.schedule(function(state) {\n * if (state !== 0) {\n * console.log('before', state);\n * this.schedule(state - 1); // `this` references currently executing Action,\n * // which we reschedule with new state\n * console.log('after', state);\n * }\n * }, 0, 3);\n *\n * // In scheduler that runs recursively, you would expect:\n * // \"before\", 3\n * // \"before\", 2\n * // \"before\", 1\n * // \"after\", 1\n * // \"after\", 2\n * // \"after\", 3\n *\n * // But with queue it logs:\n * // \"before\", 3\n * // \"after\", 3\n * // \"before\", 2\n * // \"after\", 2\n * // \"before\", 1\n * // \"after\", 1\n * ```\n */\nexport const queueScheduler = new QueueScheduler(QueueAction);\n\n/**\n * @deprecated renamed. Use {@link queueScheduler}\n */\nexport const queue = queueScheduler;\n","export function getSymbolIterator(): symbol {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator' as any;\n }\n\n return Symbol.iterator;\n}\n\nexport const iterator = getSymbolIterator();\n\n/**\n * @deprecated use {@link iterator} instead\n */\nexport const $$iterator = iterator;\n","/** @deprecated do not use, this is no longer checked by RxJS internals */\nexport const rxSubscriber = (() =>\n typeof Symbol === 'function'\n ? Symbol('rxSubscriber')\n : '@@rxSubscriber_' + Math.random())();\n\n/**\n * @deprecated use rxSubscriber instead\n */\nexport const $$rxSubscriber = rxSubscriber;\n","export interface ArgumentOutOfRangeError extends Error {\n}\n\nexport interface ArgumentOutOfRangeErrorCtor {\n new(): ArgumentOutOfRangeError;\n}\n\nconst ArgumentOutOfRangeErrorImpl = (() => {\n function ArgumentOutOfRangeErrorImpl(this: any) {\n Error.call(this);\n this.message = 'argument out of range';\n this.name = 'ArgumentOutOfRangeError';\n return this;\n }\n\n ArgumentOutOfRangeErrorImpl.prototype = Object.create(Error.prototype);\n\n return ArgumentOutOfRangeErrorImpl;\n})();\n\n/**\n * An error thrown when an element was queried at a certain index of an\n * Observable, but no such index or position exists in that sequence.\n *\n * @see {@link elementAt}\n * @see {@link take}\n * @see {@link takeLast}\n *\n * @class ArgumentOutOfRangeError\n */\nexport const ArgumentOutOfRangeError: ArgumentOutOfRangeErrorCtor = ArgumentOutOfRangeErrorImpl as any;","export interface EmptyError extends Error {\n}\n\nexport interface EmptyErrorCtor {\n new(): EmptyError;\n}\n\nconst EmptyErrorImpl = (() => {\n function EmptyErrorImpl(this: any) {\n Error.call(this);\n this.message = 'no elements in sequence';\n this.name = 'EmptyError';\n return this;\n }\n\n EmptyErrorImpl.prototype = Object.create(Error.prototype);\n\n return EmptyErrorImpl;\n})();\n\n/**\n * An error thrown when an Observable or a sequence was queried but has no\n * elements.\n *\n * @see {@link first}\n * @see {@link last}\n * @see {@link single}\n *\n * @class EmptyError\n */\nexport const EmptyError: EmptyErrorCtor = EmptyErrorImpl as any;","export interface ObjectUnsubscribedError extends Error {\n}\n\nexport interface ObjectUnsubscribedErrorCtor {\n new(): ObjectUnsubscribedError;\n}\n\nconst ObjectUnsubscribedErrorImpl = (() => {\n function ObjectUnsubscribedErrorImpl(this: any) {\n Error.call(this);\n this.message = 'object unsubscribed';\n this.name = 'ObjectUnsubscribedError';\n return this;\n }\n\n ObjectUnsubscribedErrorImpl.prototype = Object.create(Error.prototype);\n\n return ObjectUnsubscribedErrorImpl;\n})();\n\n/**\n * An error thrown when an action is invalid because the object has been\n * unsubscribed.\n *\n * @see {@link Subject}\n * @see {@link BehaviorSubject}\n *\n * @class ObjectUnsubscribedError\n */\nexport const ObjectUnsubscribedError: ObjectUnsubscribedErrorCtor = ObjectUnsubscribedErrorImpl as any;","export interface TimeoutError extends Error {\n}\n\nexport interface TimeoutErrorCtor {\n new(): TimeoutError;\n}\n\nconst TimeoutErrorImpl = (() => {\n function TimeoutErrorImpl(this: any) {\n Error.call(this);\n this.message = 'Timeout has occurred';\n this.name = 'TimeoutError';\n return this;\n }\n\n TimeoutErrorImpl.prototype = Object.create(Error.prototype);\n\n return TimeoutErrorImpl;\n})();\n\n/**\n * An error thrown when duetime elapses.\n *\n * @see {@link operators/timeout}\n *\n * @class TimeoutError\n */\nexport const TimeoutError: TimeoutErrorCtor = TimeoutErrorImpl as any;\n","export interface UnsubscriptionError extends Error {\n readonly errors: any[];\n}\n\nexport interface UnsubscriptionErrorCtor {\n new(errors: any[]): UnsubscriptionError;\n}\n\nconst UnsubscriptionErrorImpl = (() => {\n function UnsubscriptionErrorImpl(this: any, errors: any[]) {\n Error.call(this);\n this.message = errors ?\n `${errors.length} errors occurred during unsubscription:\n${errors.map((err, i) => `${i + 1}) ${err.toString()}`).join('\\n ')}` : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n return this;\n }\n\n UnsubscriptionErrorImpl.prototype = Object.create(Error.prototype);\n\n return UnsubscriptionErrorImpl;\n})();\n\n/**\n * An error thrown when one or more errors have occurred during the\n * `unsubscribe` of a {@link Subscription}.\n */\nexport const UnsubscriptionError: UnsubscriptionErrorCtor = UnsubscriptionErrorImpl as any;","import { Subscriber } from '../Subscriber';\nimport { Subject } from '../Subject';\n\n/**\n * Determines whether the ErrorObserver is closed or stopped or has a\n * destination that is closed or stopped - in which case errors will\n * need to be reported via a different mechanism.\n * @param observer the observer\n */\nexport function canReportError(observer: Subscriber | Subject): boolean {\n while (observer) {\n const { closed, destination, isStopped } = observer as any;\n if (closed || isStopped) {\n return false;\n } else if (destination && destination instanceof Subscriber) {\n observer = destination;\n } else {\n observer = null;\n }\n }\n return true;\n}\n","/**\n * Throws an error on another job so that it's picked up by the runtime's\n * uncaught error handling mechanism.\n * @param err the error to throw\n */\nexport function hostReportError(err: any) {\n setTimeout(() => { throw err; }, 0);\n}","export function identity(x: T): T {\n return x;\n}\n","export function isFunction(x: any): x is Function {\n return typeof x === 'function';\n}\n","import { isArray } from './isArray';\n\nexport function isNumeric(val: any): val is number | string {\n // parseFloat NaNs numeric-cast false positives (null|true|false|\"\")\n // ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n // subtraction forces infinities to NaN\n // adding 1 corrects loss of precision from parseFloat (#15100)\n return !isArray(val) && (val - parseFloat(val) + 1) >= 0;\n}\n","export function isObject(x: any): x is Object {\n return x !== null && typeof x === 'object';\n}\n","/**\n * Tests to see if the object is an ES2015 (ES6) Promise\n * @see {@link https://www.ecma-international.org/ecma-262/6.0/#sec-promise-objects}\n * @param value the object to test\n */\nexport function isPromise(value: any): value is PromiseLike {\n return !!value && typeof (value).subscribe !== 'function' && typeof (value as any).then === 'function';\n}\n","import { SchedulerLike } from '../types';\n\nexport function isScheduler(value: any): value is SchedulerLike {\n return value && typeof (value).schedule === 'function';\n}\n","export function not(pred: Function, thisArg: any): Function {\n function notPred(): any {\n return !(( notPred).pred.apply(( notPred).thisArg, arguments));\n }\n ( notPred).pred = pred;\n ( notPred).thisArg = thisArg;\n return notPred;\n}","import { noop } from './noop';\nimport { identity } from './identity';\nimport { UnaryFunction } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function pipe(): UnaryFunction;\nexport function pipe(fn1: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction, fn3: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction, fn3: UnaryFunction, fn4: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction, fn3: UnaryFunction, fn4: UnaryFunction, fn5: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction, fn3: UnaryFunction, fn4: UnaryFunction, fn5: UnaryFunction, fn6: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction, fn3: UnaryFunction, fn4: UnaryFunction, fn5: UnaryFunction, fn6: UnaryFunction, fn7: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction, fn3: UnaryFunction, fn4: UnaryFunction, fn5: UnaryFunction, fn6: UnaryFunction, fn7: UnaryFunction, fn8: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction, fn3: UnaryFunction, fn4: UnaryFunction, fn5: UnaryFunction, fn6: UnaryFunction, fn7: UnaryFunction, fn8: UnaryFunction, fn9: UnaryFunction): UnaryFunction;\nexport function pipe(fn1: UnaryFunction, fn2: UnaryFunction, fn3: UnaryFunction, fn4: UnaryFunction, fn5: UnaryFunction, fn6: UnaryFunction, fn7: UnaryFunction, fn8: UnaryFunction, fn9: UnaryFunction, ...fns: UnaryFunction[]): UnaryFunction;\n/* tslint:enable:max-line-length */\n\nexport function pipe(...fns: Array>): UnaryFunction {\n return pipeFromArray(fns);\n}\n\n/** @internal */\nexport function pipeFromArray(fns: Array>): UnaryFunction {\n if (fns.length === 0) {\n return identity as UnaryFunction;\n }\n\n if (fns.length === 1) {\n return fns[0];\n }\n\n return function piped(input: T): R {\n return fns.reduce((prev: any, fn: UnaryFunction) => fn(prev), input as any);\n };\n}\n","import { ObservableInput } from '../types';\nimport { subscribeToArray } from './subscribeToArray';\nimport { subscribeToPromise } from './subscribeToPromise';\nimport { subscribeToIterable } from './subscribeToIterable';\nimport { subscribeToObservable } from './subscribeToObservable';\nimport { isArrayLike } from './isArrayLike';\nimport { isPromise } from './isPromise';\nimport { isObject } from './isObject';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { observable as Symbol_observable } from '../symbol/observable';\nimport { Subscription } from '../Subscription';\nimport { Subscriber } from '../Subscriber';\n\nexport const subscribeTo = (result: ObservableInput): (subscriber: Subscriber) => Subscription | void => {\n if (!!result && typeof result[Symbol_observable] === 'function') {\n return subscribeToObservable(result as any);\n } else if (isArrayLike(result)) {\n return subscribeToArray(result);\n } else if (isPromise(result)) {\n return subscribeToPromise(result as Promise);\n } else if (!!result && typeof result[Symbol_iterator] === 'function') {\n return subscribeToIterable(result as any);\n } else {\n const value = isObject(result) ? 'an invalid object' : `'${result}'`;\n const msg = `You provided ${value} where a stream was expected.`\n + ' You can provide an Observable, Promise, Array, or Iterable.';\n throw new TypeError(msg);\n }\n};\n","import { Subscriber } from '../Subscriber';\nimport { observable as Symbol_observable } from '../symbol/observable';\n\n/**\n * Subscribes to an object that implements Symbol.observable with the given\n * Subscriber.\n * @param obj An object that implements Symbol.observable\n */\nexport const subscribeToObservable = (obj: any) => (subscriber: Subscriber) => {\n const obs = obj[Symbol_observable]();\n if (typeof obs.subscribe !== 'function') {\n // Should be caught by observable subscribe function error handling.\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n } else {\n return obs.subscribe(subscriber);\n }\n};\n","import { Subscriber } from '../Subscriber';\nimport { hostReportError } from './hostReportError';\n\nexport const subscribeToPromise = (promise: PromiseLike) => (subscriber: Subscriber) => {\n promise.then(\n (value) => {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n },\n (err: any) => subscriber.error(err)\n )\n .then(null, hostReportError);\n return subscriber;\n};\n","import { Subscriber } from '../Subscriber';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\n\nexport const subscribeToIterable = (iterable: Iterable) => (subscriber: Subscriber) => {\n const iterator = (iterable as any)[Symbol_iterator]();\n\n do {\n let item: IteratorResult;\n try {\n item = iterator.next();\n } catch (err) {\n subscriber.error(err);\n return subscriber;\n }\n if (item.done) {\n subscriber.complete();\n break;\n }\n subscriber.next(item.value);\n if (subscriber.closed) {\n break;\n }\n } while (true);\n\n // Finalize the iterator if it happens to be a Generator\n if (typeof iterator.return === 'function') {\n subscriber.add(() => {\n if (iterator.return) {\n iterator.return();\n }\n });\n }\n\n return subscriber;\n};\n","import { Subscriber } from '../Subscriber';\n\n/**\n * Subscribes to an ArrayLike with a subscriber\n * @param array The array or array-like to subscribe to\n */\nexport const subscribeToArray = (array: ArrayLike) => (subscriber: Subscriber) => {\n for (let i = 0, len = array.length; i < len && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n};\n","import { Subscriber } from './Subscriber';\nimport { OuterSubscriber } from './OuterSubscriber';\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class InnerSubscriber extends Subscriber {\n private index = 0;\n\n constructor(private parent: OuterSubscriber, public outerValue: T, public outerIndex: number) {\n super();\n }\n\n protected _next(value: R): void {\n this.parent.notifyNext(this.outerValue, value, this.outerIndex, this.index++, this);\n }\n\n protected _error(error: any): void {\n this.parent.notifyError(error, this);\n this.unsubscribe();\n }\n\n protected _complete(): void {\n this.parent.notifyComplete(this);\n this.unsubscribe();\n }\n}\n","import { Subscription } from '../Subscription';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { Subscriber } from '../Subscriber';\nimport { subscribeTo } from './subscribeTo';\nimport { Observable } from '../Observable';\n\nexport function subscribeToResult(\n outerSubscriber: OuterSubscriber,\n result: any,\n outerValue: undefined,\n outerIndex: undefined,\n innerSubscriber: InnerSubscriber\n): Subscription | undefined;\n\nexport function subscribeToResult(\n outerSubscriber: OuterSubscriber,\n result: any,\n outerValue?: T,\n outerIndex?: number\n): Subscription | undefined;\n\nexport function subscribeToResult(\n outerSubscriber: OuterSubscriber,\n result: any,\n outerValue?: T,\n outerIndex?: number,\n innerSubscriber: Subscriber = new InnerSubscriber(outerSubscriber, outerValue, outerIndex)\n): Subscription | undefined {\n if (innerSubscriber.closed) {\n return undefined;\n }\n if (result instanceof Observable) {\n return result.subscribe(innerSubscriber);\n }\n return subscribeTo(result)(innerSubscriber) as Subscription;\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { MonoTypeOperatorFunction, SubscribableOrPromise, TeardownLogic } from '../types';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\n\n/**\n * Ignores source values for a duration determined by another Observable, then\n * emits the most recent value from the source Observable, then repeats this\n * process.\n *\n * It's like {@link auditTime}, but the silencing\n * duration is determined by a second Observable.\n *\n * ![](audit.png)\n *\n * `audit` is similar to `throttle`, but emits the last value from the silenced\n * time window, instead of the first value. `audit` emits the most recent value\n * from the source Observable on the output Observable as soon as its internal\n * timer becomes disabled, and ignores source values while the timer is enabled.\n * Initially, the timer is disabled. As soon as the first source value arrives,\n * the timer is enabled by calling the `durationSelector` function with the\n * source value, which returns the \"duration\" Observable. When the duration\n * Observable emits a value or completes, the timer is disabled, then the most\n * recent source value is emitted on the output Observable, and this process\n * repeats for the next source value.\n *\n * ## Example\n *\n * Emit clicks at a rate of at most one click per second\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { audit } from 'rxjs/operators'\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(audit(ev => interval(1000)));\n * result.subscribe(x => console.log(x));\n * ```\n * @see {@link auditTime}\n * @see {@link debounce}\n * @see {@link delayWhen}\n * @see {@link sample}\n * @see {@link throttle}\n *\n * @param {function(value: T): SubscribableOrPromise} durationSelector A function\n * that receives a value from the source Observable, for computing the silencing\n * duration, returned as an Observable or a Promise.\n * @return {Observable} An Observable that performs rate-limiting of\n * emissions from the source Observable.\n * @method audit\n * @owner Observable\n */\nexport function audit(durationSelector: (value: T) => SubscribableOrPromise): MonoTypeOperatorFunction {\n return function auditOperatorFunction(source: Observable) {\n return source.lift(new AuditOperator(durationSelector));\n };\n}\n\nclass AuditOperator implements Operator {\n constructor(private durationSelector: (value: T) => SubscribableOrPromise) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new AuditSubscriber(subscriber, this.durationSelector));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass AuditSubscriber extends SimpleOuterSubscriber {\n\n private value?: T;\n private hasValue: boolean = false;\n private throttled?: Subscription;\n\n constructor(destination: Subscriber,\n private durationSelector: (value: T) => SubscribableOrPromise) {\n super(destination);\n }\n\n protected _next(value: T): void {\n this.value = value;\n this.hasValue = true;\n if (!this.throttled) {\n let duration;\n try {\n const { durationSelector } = this;\n duration = durationSelector(value);\n } catch (err) {\n return this.destination.error!(err);\n }\n const innerSubscription = innerSubscribe(duration, new SimpleInnerSubscriber(this));\n if (!innerSubscription || innerSubscription.closed) {\n this.clearThrottle();\n } else {\n this.add(this.throttled = innerSubscription);\n }\n }\n }\n\n clearThrottle() {\n const { value, hasValue, throttled } = this;\n if (throttled) {\n this.remove(throttled);\n this.throttled = undefined;\n throttled.unsubscribe();\n }\n if (hasValue) {\n this.value = undefined;\n this.hasValue = false;\n this.destination.next!(value);\n }\n }\n\n notifyNext(): void {\n this.clearThrottle();\n }\n\n notifyComplete(): void {\n this.clearThrottle();\n }\n}\n","import { async } from '../scheduler/async';\nimport { audit } from './audit';\nimport { timer } from '../observable/timer';\nimport { MonoTypeOperatorFunction, SchedulerLike } from '../types';\n\n/**\n * Ignores source values for `duration` milliseconds, then emits the most recent\n * value from the source Observable, then repeats this process.\n *\n * When it sees a source value, it ignores that plus\n * the next ones for `duration` milliseconds, and then it emits the most recent\n * value from the source.\n *\n * ![](auditTime.png)\n *\n * `auditTime` is similar to `throttleTime`, but emits the last value from the\n * silenced time window, instead of the first value. `auditTime` emits the most\n * recent value from the source Observable on the output Observable as soon as\n * its internal timer becomes disabled, and ignores source values while the\n * timer is enabled. Initially, the timer is disabled. As soon as the first\n * source value arrives, the timer is enabled. After `duration` milliseconds (or\n * the time unit determined internally by the optional `scheduler`) has passed,\n * the timer is disabled, then the most recent source value is emitted on the\n * output Observable, and this process repeats for the next source value.\n * Optionally takes a {@link SchedulerLike} for managing timers.\n *\n * ## Example\n *\n * Emit clicks at a rate of at most one click per second\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { auditTime } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(auditTime(1000));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link audit}\n * @see {@link debounceTime}\n * @see {@link delay}\n * @see {@link sampleTime}\n * @see {@link throttleTime}\n *\n * @param {number} duration Time to wait before emitting the most recent source\n * value, measured in milliseconds or the time unit determined internally\n * by the optional `scheduler`.\n * @param {SchedulerLike} [scheduler=async] The {@link SchedulerLike} to use for\n * managing the timers that handle the rate-limiting behavior.\n * @return {Observable} An Observable that performs rate-limiting of\n * emissions from the source Observable.\n * @method auditTime\n * @owner Observable\n */\nexport function auditTime(duration: number, scheduler: SchedulerLike = async): MonoTypeOperatorFunction {\n return audit(() => timer(duration, scheduler));\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { OperatorFunction } from '../types';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\n\n/**\n * Buffers the source Observable values until `closingNotifier` emits.\n *\n * Collects values from the past as an array, and emits\n * that array only when another Observable emits.\n *\n * ![](buffer.png)\n *\n * Buffers the incoming Observable values until the given `closingNotifier`\n * Observable emits a value, at which point it emits the buffer on the output\n * Observable and starts a new buffer internally, awaiting the next time\n * `closingNotifier` emits.\n *\n * ## Example\n *\n * On every click, emit array of most recent interval events\n *\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { buffer } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const intervalEvents = interval(1000);\n * const buffered = intervalEvents.pipe(buffer(clicks));\n * buffered.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link bufferCount}\n * @see {@link bufferTime}\n * @see {@link bufferToggle}\n * @see {@link bufferWhen}\n * @see {@link window}\n *\n * @param {Observable} closingNotifier An Observable that signals the\n * buffer to be emitted on the output Observable.\n * @return {Observable} An Observable of buffers, which are arrays of\n * values.\n * @method buffer\n * @owner Observable\n */\nexport function buffer(closingNotifier: Observable): OperatorFunction {\n return function bufferOperatorFunction(source: Observable) {\n return source.lift(new BufferOperator(closingNotifier));\n };\n}\n\nclass BufferOperator implements Operator {\n\n constructor(private closingNotifier: Observable) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new BufferSubscriber(subscriber, this.closingNotifier));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass BufferSubscriber extends SimpleOuterSubscriber {\n private buffer: T[] = [];\n\n constructor(destination: Subscriber, closingNotifier: Observable) {\n super(destination);\n this.add(innerSubscribe(closingNotifier, new SimpleInnerSubscriber(this)));\n }\n\n protected _next(value: T) {\n this.buffer.push(value);\n }\n\n notifyNext(): void {\n const buffer = this.buffer;\n this.buffer = [];\n this.destination.next!(buffer);\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { OperatorFunction, TeardownLogic } from '../types';\n\n/**\n * Buffers the source Observable values until the size hits the maximum\n * `bufferSize` given.\n *\n * Collects values from the past as an array, and emits\n * that array only when its size reaches `bufferSize`.\n *\n * ![](bufferCount.png)\n *\n * Buffers a number of values from the source Observable by `bufferSize` then\n * emits the buffer and clears it, and starts a new buffer each\n * `startBufferEvery` values. If `startBufferEvery` is not provided or is\n * `null`, then new buffers are started immediately at the start of the source\n * and when each buffer closes and is emitted.\n *\n * ## Examples\n *\n * Emit the last two click events as an array\n *\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { bufferCount } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const buffered = clicks.pipe(bufferCount(2));\n * buffered.subscribe(x => console.log(x));\n * ```\n *\n * On every click, emit the last two click events as an array\n *\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { bufferCount } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const buffered = clicks.pipe(bufferCount(2, 1));\n * buffered.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link buffer}\n * @see {@link bufferTime}\n * @see {@link bufferToggle}\n * @see {@link bufferWhen}\n * @see {@link pairwise}\n * @see {@link windowCount}\n *\n * @param {number} bufferSize The maximum size of the buffer emitted.\n * @param {number} [startBufferEvery] Interval at which to start a new buffer.\n * For example if `startBufferEvery` is `2`, then a new buffer will be started\n * on every other value from the source. A new buffer is started at the\n * beginning of the source by default.\n * @return {Observable} An Observable of arrays of buffered values.\n * @method bufferCount\n * @owner Observable\n */\nexport function bufferCount(bufferSize: number, startBufferEvery: number = null): OperatorFunction {\n return function bufferCountOperatorFunction(source: Observable) {\n return source.lift(new BufferCountOperator(bufferSize, startBufferEvery));\n };\n}\n\nclass BufferCountOperator implements Operator {\n private subscriberClass: any;\n\n constructor(private bufferSize: number, private startBufferEvery: number) {\n if (!startBufferEvery || bufferSize === startBufferEvery) {\n this.subscriberClass = BufferCountSubscriber;\n } else {\n this.subscriberClass = BufferSkipCountSubscriber;\n }\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new this.subscriberClass(subscriber, this.bufferSize, this.startBufferEvery));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass BufferCountSubscriber extends Subscriber {\n private buffer: T[] = [];\n\n constructor(destination: Subscriber, private bufferSize: number) {\n super(destination);\n }\n\n protected _next(value: T): void {\n const buffer = this.buffer;\n\n buffer.push(value);\n\n if (buffer.length == this.bufferSize) {\n this.destination.next(buffer);\n this.buffer = [];\n }\n }\n\n protected _complete(): void {\n const buffer = this.buffer;\n if (buffer.length > 0) {\n this.destination.next(buffer);\n }\n super._complete();\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass BufferSkipCountSubscriber extends Subscriber {\n private buffers: Array = [];\n private count: number = 0;\n\n constructor(destination: Subscriber, private bufferSize: number, private startBufferEvery: number) {\n super(destination);\n }\n\n protected _next(value: T): void {\n const { bufferSize, startBufferEvery, buffers, count } = this;\n\n this.count++;\n if (count % startBufferEvery === 0) {\n buffers.push([]);\n }\n\n for (let i = buffers.length; i--; ) {\n const buffer = buffers[i];\n buffer.push(value);\n if (buffer.length === bufferSize) {\n buffers.splice(i, 1);\n this.destination.next(buffer);\n }\n }\n }\n\n protected _complete(): void {\n const { buffers, destination } = this;\n\n while (buffers.length > 0) {\n let buffer = buffers.shift();\n if (buffer.length > 0) {\n destination.next(buffer);\n }\n }\n super._complete();\n }\n\n}\n","import { Operator } from '../Operator';\nimport { async } from '../scheduler/async';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { isScheduler } from '../util/isScheduler';\nimport { OperatorFunction, SchedulerAction, SchedulerLike } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function bufferTime(bufferTimeSpan: number, scheduler?: SchedulerLike): OperatorFunction;\nexport function bufferTime(bufferTimeSpan: number, bufferCreationInterval: number | null | undefined, scheduler?: SchedulerLike): OperatorFunction;\nexport function bufferTime(bufferTimeSpan: number, bufferCreationInterval: number | null | undefined, maxBufferSize: number, scheduler?: SchedulerLike): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Buffers the source Observable values for a specific time period.\n *\n * Collects values from the past as an array, and emits\n * those arrays periodically in time.\n *\n * ![](bufferTime.png)\n *\n * Buffers values from the source for a specific time duration `bufferTimeSpan`.\n * Unless the optional argument `bufferCreationInterval` is given, it emits and\n * resets the buffer every `bufferTimeSpan` milliseconds. If\n * `bufferCreationInterval` is given, this operator opens the buffer every\n * `bufferCreationInterval` milliseconds and closes (emits and resets) the\n * buffer every `bufferTimeSpan` milliseconds. When the optional argument\n * `maxBufferSize` is specified, the buffer will be closed either after\n * `bufferTimeSpan` milliseconds or when it contains `maxBufferSize` elements.\n *\n * ## Examples\n *\n * Every second, emit an array of the recent click events\n *\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { bufferTime } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const buffered = clicks.pipe(bufferTime(1000));\n * buffered.subscribe(x => console.log(x));\n * ```\n *\n * Every 5 seconds, emit the click events from the next 2 seconds\n *\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { bufferTime } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const buffered = clicks.pipe(bufferTime(2000, 5000));\n * buffered.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link buffer}\n * @see {@link bufferCount}\n * @see {@link bufferToggle}\n * @see {@link bufferWhen}\n * @see {@link windowTime}\n *\n * @param {number} bufferTimeSpan The amount of time to fill each buffer array.\n * @param {number} [bufferCreationInterval] The interval at which to start new\n * buffers.\n * @param {number} [maxBufferSize] The maximum buffer size.\n * @param {SchedulerLike} [scheduler=async] The scheduler on which to schedule the\n * intervals that determine buffer boundaries.\n * @return {Observable} An observable of arrays of buffered values.\n * @method bufferTime\n * @owner Observable\n */\nexport function bufferTime(bufferTimeSpan: number): OperatorFunction {\n let length: number = arguments.length;\n\n let scheduler: SchedulerLike = async;\n if (isScheduler(arguments[arguments.length - 1])) {\n scheduler = arguments[arguments.length - 1];\n length--;\n }\n\n let bufferCreationInterval: number = null;\n if (length >= 2) {\n bufferCreationInterval = arguments[1];\n }\n\n let maxBufferSize: number = Number.POSITIVE_INFINITY;\n if (length >= 3) {\n maxBufferSize = arguments[2];\n }\n\n return function bufferTimeOperatorFunction(source: Observable) {\n return source.lift(new BufferTimeOperator(bufferTimeSpan, bufferCreationInterval, maxBufferSize, scheduler));\n };\n}\n\nclass BufferTimeOperator implements Operator {\n constructor(private bufferTimeSpan: number,\n private bufferCreationInterval: number,\n private maxBufferSize: number,\n private scheduler: SchedulerLike) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new BufferTimeSubscriber(\n subscriber, this.bufferTimeSpan, this.bufferCreationInterval, this.maxBufferSize, this.scheduler\n ));\n }\n}\n\nclass Context {\n buffer: T[] = [];\n closeAction: Subscription;\n}\n\ninterface DispatchCreateArg {\n bufferTimeSpan: number;\n bufferCreationInterval: number;\n subscriber: BufferTimeSubscriber;\n scheduler: SchedulerLike;\n}\n\ninterface DispatchCloseArg {\n subscriber: BufferTimeSubscriber;\n context: Context;\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass BufferTimeSubscriber extends Subscriber {\n private contexts: Array> = [];\n private timespanOnly: boolean;\n\n constructor(destination: Subscriber,\n private bufferTimeSpan: number,\n private bufferCreationInterval: number,\n private maxBufferSize: number,\n private scheduler: SchedulerLike) {\n super(destination);\n const context = this.openContext();\n this.timespanOnly = bufferCreationInterval == null || bufferCreationInterval < 0;\n if (this.timespanOnly) {\n const timeSpanOnlyState = { subscriber: this, context, bufferTimeSpan };\n this.add(context.closeAction = scheduler.schedule(dispatchBufferTimeSpanOnly, bufferTimeSpan, timeSpanOnlyState));\n } else {\n const closeState = { subscriber: this, context };\n const creationState: DispatchCreateArg = { bufferTimeSpan, bufferCreationInterval, subscriber: this, scheduler };\n this.add(context.closeAction = scheduler.schedule>(dispatchBufferClose, bufferTimeSpan, closeState));\n this.add(scheduler.schedule>(dispatchBufferCreation, bufferCreationInterval, creationState));\n }\n }\n\n protected _next(value: T) {\n const contexts = this.contexts;\n const len = contexts.length;\n let filledBufferContext: Context;\n for (let i = 0; i < len; i++) {\n const context = contexts[i];\n const buffer = context.buffer;\n buffer.push(value);\n if (buffer.length == this.maxBufferSize) {\n filledBufferContext = context;\n }\n }\n\n if (filledBufferContext) {\n this.onBufferFull(filledBufferContext);\n }\n }\n\n protected _error(err: any) {\n this.contexts.length = 0;\n super._error(err);\n }\n\n protected _complete() {\n const { contexts, destination } = this;\n while (contexts.length > 0) {\n const context = contexts.shift();\n destination.next(context.buffer);\n }\n super._complete();\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _unsubscribe() {\n this.contexts = null;\n }\n\n protected onBufferFull(context: Context) {\n this.closeContext(context);\n const closeAction = context.closeAction;\n closeAction.unsubscribe();\n this.remove(closeAction);\n\n if (!this.closed && this.timespanOnly) {\n context = this.openContext();\n const bufferTimeSpan = this.bufferTimeSpan;\n const timeSpanOnlyState = { subscriber: this, context, bufferTimeSpan };\n this.add(context.closeAction = this.scheduler.schedule(dispatchBufferTimeSpanOnly, bufferTimeSpan, timeSpanOnlyState));\n }\n }\n\n openContext(): Context {\n const context: Context = new Context();\n this.contexts.push(context);\n return context;\n }\n\n closeContext(context: Context) {\n this.destination.next(context.buffer);\n const contexts = this.contexts;\n\n const spliceIndex = contexts ? contexts.indexOf(context) : -1;\n if (spliceIndex >= 0) {\n contexts.splice(contexts.indexOf(context), 1);\n }\n }\n}\n\nfunction dispatchBufferTimeSpanOnly(this: SchedulerAction, state: any) {\n const subscriber: BufferTimeSubscriber = state.subscriber;\n\n const prevContext = state.context;\n if (prevContext) {\n subscriber.closeContext(prevContext);\n }\n\n if (!subscriber.closed) {\n state.context = subscriber.openContext();\n state.context.closeAction = this.schedule(state, state.bufferTimeSpan);\n }\n}\n\nfunction dispatchBufferCreation(this: SchedulerAction>, state: DispatchCreateArg) {\n const { bufferCreationInterval, bufferTimeSpan, subscriber, scheduler } = state;\n const context = subscriber.openContext();\n const action = >>this;\n if (!subscriber.closed) {\n subscriber.add(context.closeAction = scheduler.schedule>(dispatchBufferClose, bufferTimeSpan, { subscriber, context }));\n action.schedule(state, bufferCreationInterval);\n }\n}\n\nfunction dispatchBufferClose(arg: DispatchCloseArg) {\n const { subscriber, context } = arg;\n subscriber.closeContext(context);\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { OperatorFunction, SubscribableOrPromise } from '../types';\n\n/**\n * Buffers the source Observable values starting from an emission from\n * `openings` and ending when the output of `closingSelector` emits.\n *\n * Collects values from the past as an array. Starts\n * collecting only when `opening` emits, and calls the `closingSelector`\n * function to get an Observable that tells when to close the buffer.\n *\n * ![](bufferToggle.png)\n *\n * Buffers values from the source by opening the buffer via signals from an\n * Observable provided to `openings`, and closing and sending the buffers when\n * a Subscribable or Promise returned by the `closingSelector` function emits.\n *\n * ## Example\n *\n * Every other second, emit the click events from the next 500ms\n *\n * ```ts\n * import { fromEvent, interval, EMPTY } from 'rxjs';\n * import { bufferToggle } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const openings = interval(1000);\n * const buffered = clicks.pipe(bufferToggle(openings, i =>\n * i % 2 ? interval(500) : EMPTY\n * ));\n * buffered.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link buffer}\n * @see {@link bufferCount}\n * @see {@link bufferTime}\n * @see {@link bufferWhen}\n * @see {@link windowToggle}\n *\n * @param {SubscribableOrPromise} openings A Subscribable or Promise of notifications to start new\n * buffers.\n * @param {function(value: O): SubscribableOrPromise} closingSelector A function that takes\n * the value emitted by the `openings` observable and returns a Subscribable or Promise,\n * which, when it emits, signals that the associated buffer should be emitted\n * and cleared.\n * @return {Observable} An observable of arrays of buffered values.\n * @method bufferToggle\n * @owner Observable\n */\nexport function bufferToggle(\n openings: SubscribableOrPromise,\n closingSelector: (value: O) => SubscribableOrPromise\n): OperatorFunction {\n return function bufferToggleOperatorFunction(source: Observable) {\n return source.lift(new BufferToggleOperator(openings, closingSelector));\n };\n}\n\nclass BufferToggleOperator implements Operator {\n\n constructor(private openings: SubscribableOrPromise,\n private closingSelector: (value: O) => SubscribableOrPromise) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new BufferToggleSubscriber(subscriber, this.openings, this.closingSelector));\n }\n}\n\ninterface BufferContext {\n buffer: T[];\n subscription: Subscription;\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass BufferToggleSubscriber extends OuterSubscriber {\n private contexts: Array> = [];\n\n constructor(destination: Subscriber,\n openings: SubscribableOrPromise,\n private closingSelector: (value: O) => SubscribableOrPromise | void) {\n super(destination);\n this.add(subscribeToResult(this, openings));\n }\n\n protected _next(value: T): void {\n const contexts = this.contexts;\n const len = contexts.length;\n for (let i = 0; i < len; i++) {\n contexts[i].buffer.push(value);\n }\n }\n\n protected _error(err: any): void {\n const contexts = this.contexts;\n while (contexts.length > 0) {\n const context = contexts.shift()!;\n context.subscription.unsubscribe();\n context.buffer = null!;\n context.subscription = null!;\n }\n this.contexts = null!;\n super._error(err);\n }\n\n protected _complete(): void {\n const contexts = this.contexts;\n while (contexts.length > 0) {\n const context = contexts.shift()!;\n this.destination.next!(context.buffer);\n context.subscription.unsubscribe();\n context.buffer = null!;\n context.subscription = null!;\n }\n this.contexts = null!;\n super._complete();\n }\n\n notifyNext(outerValue: any, innerValue: O): void {\n outerValue ? this.closeBuffer(outerValue) : this.openBuffer(innerValue);\n }\n\n notifyComplete(innerSub: InnerSubscriber): void {\n this.closeBuffer(( innerSub).context);\n }\n\n private openBuffer(value: O): void {\n try {\n const closingSelector = this.closingSelector;\n const closingNotifier = closingSelector.call(this, value);\n if (closingNotifier) {\n this.trySubscribe(closingNotifier);\n }\n } catch (err) {\n this._error(err);\n }\n }\n\n private closeBuffer(context: BufferContext): void {\n const contexts = this.contexts;\n\n if (contexts && context) {\n const { buffer, subscription } = context;\n this.destination.next!(buffer);\n contexts.splice(contexts.indexOf(context), 1);\n this.remove(subscription);\n subscription.unsubscribe();\n }\n }\n\n private trySubscribe(closingNotifier: any): void {\n const contexts = this.contexts;\n\n const buffer: Array = [];\n const subscription = new Subscription();\n const context = { buffer, subscription };\n contexts.push(context);\n\n const innerSubscription = subscribeToResult(this, closingNotifier, context as any);\n\n if (!innerSubscription || innerSubscription.closed) {\n this.closeBuffer(context);\n } else {\n (innerSubscription as any).context = context;\n\n this.add(innerSubscription);\n subscription.add(innerSubscription);\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { OperatorFunction } from '../types';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\n\n/**\n * Buffers the source Observable values, using a factory function of closing\n * Observables to determine when to close, emit, and reset the buffer.\n *\n * Collects values from the past as an array. When it\n * starts collecting values, it calls a function that returns an Observable that\n * tells when to close the buffer and restart collecting.\n *\n * ![](bufferWhen.png)\n *\n * Opens a buffer immediately, then closes the buffer when the observable\n * returned by calling `closingSelector` function emits a value. When it closes\n * the buffer, it immediately opens a new buffer and repeats the process.\n *\n * ## Example\n *\n * Emit an array of the last clicks every [1-5] random seconds\n *\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { bufferWhen } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const buffered = clicks.pipe(bufferWhen(() =>\n * interval(1000 + Math.random() * 4000)\n * ));\n * buffered.subscribe(x => console.log(x));\n * ```\n *\n *\n * @see {@link buffer}\n * @see {@link bufferCount}\n * @see {@link bufferTime}\n * @see {@link bufferToggle}\n * @see {@link windowWhen}\n *\n * @param {function(): Observable} closingSelector A function that takes no\n * arguments and returns an Observable that signals buffer closure.\n * @return {Observable} An observable of arrays of buffered values.\n * @method bufferWhen\n * @owner Observable\n */\nexport function bufferWhen(closingSelector: () => Observable): OperatorFunction {\n return function (source: Observable) {\n return source.lift(new BufferWhenOperator(closingSelector));\n };\n}\n\nclass BufferWhenOperator implements Operator {\n\n constructor(private closingSelector: () => Observable) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new BufferWhenSubscriber(subscriber, this.closingSelector));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass BufferWhenSubscriber extends SimpleOuterSubscriber {\n private buffer?: T[];\n private subscribing: boolean = false;\n private closingSubscription?: Subscription;\n\n constructor(destination: Subscriber, private closingSelector: () => Observable) {\n super(destination);\n this.openBuffer();\n }\n\n protected _next(value: T) {\n this.buffer!.push(value);\n }\n\n protected _complete() {\n const buffer = this.buffer;\n if (buffer) {\n this.destination.next!(buffer);\n }\n super._complete();\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _unsubscribe() {\n this.buffer = undefined;\n this.subscribing = false;\n }\n\n notifyNext(): void {\n this.openBuffer();\n }\n\n notifyComplete(): void {\n if (this.subscribing) {\n this.complete();\n } else {\n this.openBuffer();\n }\n }\n\n openBuffer() {\n let { closingSubscription } = this;\n\n if (closingSubscription) {\n this.remove(closingSubscription);\n closingSubscription.unsubscribe();\n }\n\n const buffer = this.buffer;\n if (this.buffer) {\n this.destination.next!(buffer);\n }\n\n this.buffer = [];\n\n let closingNotifier;\n try {\n const { closingSelector } = this;\n closingNotifier = closingSelector();\n } catch (err) {\n return this.error(err);\n }\n closingSubscription = new Subscription();\n this.closingSubscription = closingSubscription;\n this.add(closingSubscription);\n this.subscribing = true;\n closingSubscription.add(innerSubscribe(closingNotifier, new SimpleInnerSubscriber(this)));\n this.subscribing = false;\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\n\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\n\n/* tslint:disable:max-line-length */\nexport function catchError>(selector: (err: any, caught: Observable) => O): OperatorFunction>;\n/* tslint:enable:max-line-length */\n\n/**\n * Catches errors on the observable to be handled by returning a new observable or throwing an error.\n *\n * ![](catch.png)\n *\n * ## Examples\n * Continues with a different Observable when there's an error\n *\n * ```ts\n * import { of } from 'rxjs';\n * import { map, catchError } from 'rxjs/operators';\n *\n * of(1, 2, 3, 4, 5).pipe(\n * map(n => {\n * \t if (n === 4) {\n * \t throw 'four!';\n * }\n *\t return n;\n * }),\n * catchError(err => of('I', 'II', 'III', 'IV', 'V')),\n * )\n * .subscribe(x => console.log(x));\n * // 1, 2, 3, I, II, III, IV, V\n * ```\n *\n * Retries the caught source Observable again in case of error, similar to retry() operator\n *\n * ```ts\n * import { of } from 'rxjs';\n * import { map, catchError, take } from 'rxjs/operators';\n *\n * of(1, 2, 3, 4, 5).pipe(\n * map(n => {\n * \t if (n === 4) {\n * \t throw 'four!';\n * }\n * \t return n;\n * }),\n * catchError((err, caught) => caught),\n * take(30),\n * )\n * .subscribe(x => console.log(x));\n * // 1, 2, 3, 1, 2, 3, ...\n * ```\n *\n * Throws a new error when the source Observable throws an error\n *\n * ```ts\n * import { of } from 'rxjs';\n * import { map, catchError } from 'rxjs/operators';\n *\n * of(1, 2, 3, 4, 5).pipe(\n * map(n => {\n * if (n === 4) {\n * throw 'four!';\n * }\n * return n;\n * }),\n * catchError(err => {\n * throw 'error in source. Details: ' + err;\n * }),\n * )\n * .subscribe(\n * x => console.log(x),\n * err => console.log(err)\n * );\n * // 1, 2, 3, error in source. Details: four!\n * ```\n *\n * @param {function} selector a function that takes as arguments `err`, which is the error, and `caught`, which\n * is the source observable, in case you'd like to \"retry\" that observable by returning it again. Whatever observable\n * is returned by the `selector` will be used to continue the observable chain.\n * @return {Observable} An observable that originates from either the source or the observable returned by the\n * catch `selector` function.\n * @name catchError\n */\nexport function catchError>(\n selector: (err: any, caught: Observable) => O\n): OperatorFunction> {\n return function catchErrorOperatorFunction(source: Observable): Observable> {\n const operator = new CatchOperator(selector);\n const caught = source.lift(operator);\n return (operator.caught = caught as Observable);\n };\n}\n\nclass CatchOperator implements Operator {\n caught: Observable;\n\n constructor(private selector: (err: any, caught: Observable) => ObservableInput) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new CatchSubscriber(subscriber, this.selector, this.caught));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass CatchSubscriber extends SimpleOuterSubscriber {\n constructor(destination: Subscriber,\n private selector: (err: any, caught: Observable) => ObservableInput,\n private caught: Observable) {\n super(destination);\n }\n\n // NOTE: overriding `error` instead of `_error` because we don't want\n // to have this flag this subscriber as `isStopped`. We can mimic the\n // behavior of the RetrySubscriber (from the `retry` operator), where\n // we unsubscribe from our source chain, reset our Subscriber flags,\n // then subscribe to the selector result.\n error(err: any) {\n if (!this.isStopped) {\n let result: any;\n try {\n result = this.selector(err, this.caught);\n } catch (err2) {\n super.error(err2);\n return;\n }\n this._unsubscribeAndRecycle();\n const innerSubscriber = new SimpleInnerSubscriber(this);\n this.add(innerSubscriber);\n const innerSubscription = innerSubscribe(result, innerSubscriber);\n // The returned subscription will usually be the subscriber that was\n // passed. However, interop subscribers will be wrapped and for\n // unsubscriptions to chain correctly, the wrapper needs to be added, too.\n if (innerSubscription !== innerSubscriber) {\n this.add(innerSubscription);\n }\n }\n }\n}\n","import { CombineLatestOperator } from '../observable/combineLatest';\nimport { Observable } from '../Observable';\nimport { OperatorFunction, ObservableInput } from '../types';\n\nexport function combineAll(): OperatorFunction, T[]>;\nexport function combineAll(): OperatorFunction;\nexport function combineAll(project: (...values: T[]) => R): OperatorFunction, R>;\nexport function combineAll(project: (...values: Array) => R): OperatorFunction;\n/**\n * Flattens an Observable-of-Observables by applying {@link combineLatest} when the Observable-of-Observables completes.\n *\n * ![](combineAll.png)\n *\n * `combineAll` takes an Observable of Observables, and collects all Observables from it. Once the outer Observable completes,\n * it subscribes to all collected Observables and combines their values using the {@link combineLatest} strategy, such that:\n *\n * * Every time an inner Observable emits, the output Observable emits\n * * When the returned observable emits, it emits all of the latest values by:\n * * If a `project` function is provided, it is called with each recent value from each inner Observable in whatever order they\n * arrived, and the result of the `project` function is what is emitted by the output Observable.\n * * If there is no `project` function, an array of all the most recent values is emitted by the output Observable.\n *\n * ---\n *\n * ## Examples\n *\n * ### Map two click events to a finite interval Observable, then apply `combineAll`\n *\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { map, combineAll, take } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const higherOrder = clicks.pipe(\n * map(ev =>\n * interval(Math.random() * 2000).pipe(take(3))\n * ),\n * take(2)\n * );\n * const result = higherOrder.pipe(\n * combineAll()\n * );\n *\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link combineLatest}\n * @see {@link mergeAll}\n *\n * @param {function(...values: Array)} An optional function to map the most recent values from each inner Observable into a new result.\n * Takes each of the most recent values from each collected inner Observable as arguments, in order.\n * @return {Observable}\n * @name combineAll\n */\nexport function combineAll(project?: (...values: Array) => R): OperatorFunction {\n return (source: Observable) => source.lift(new CombineLatestOperator(project));\n}\n","\nimport { isArray } from '../util/isArray';\nimport { CombineLatestOperator } from '../observable/combineLatest';\nimport { from } from '../observable/from';\nimport { Observable } from '../Observable';\nimport { ObservableInput, OperatorFunction } from '../types';\n\nconst none = {};\n\n/* tslint:disable:max-line-length */\n/** @deprecated Deprecated in favor of static combineLatest. */\nexport function combineLatest(project: (v1: T) => R): OperatorFunction;\n/** @deprecated Deprecated in favor of static combineLatest. */\nexport function combineLatest(v2: ObservableInput, project: (v1: T, v2: T2) => R): OperatorFunction;\n/** @deprecated Deprecated in favor of static combineLatest. */\nexport function combineLatest(v2: ObservableInput, v3: ObservableInput, project: (v1: T, v2: T2, v3: T3) => R): OperatorFunction;\n/** @deprecated Deprecated in favor of static combineLatest. */\nexport function combineLatest(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, project: (v1: T, v2: T2, v3: T3, v4: T4) => R): OperatorFunction;\n/** @deprecated Deprecated in favor of static combineLatest. */\nexport function combineLatest(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, project: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5) => R): OperatorFunction;\n/** @deprecated Deprecated in favor of static combineLatest. */\nexport function combineLatest(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput, project: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6) => R): OperatorFunction ;\n/** @deprecated Deprecated in favor of static combineLatest. */\nexport function combineLatest(v2: ObservableInput): OperatorFunction;\n/** @deprecated Deprecated in favor of static combineLatest. */\nexport function combineLatest(v2: ObservableInput, v3: ObservableInput): OperatorFunction;\n/** @deprecated Deprecated in favor of static combineLatest. */\nexport function combineLatest(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput): OperatorFunction;\n/** @deprecated Deprecated in favor of static combineLatest. */\nexport function combineLatest(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput): OperatorFunction;\n/** @deprecated Deprecated in favor of static combineLatest. */\nexport function combineLatest(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput): OperatorFunction ;\n/** @deprecated Deprecated in favor of static combineLatest. */\nexport function combineLatest(...observables: Array | ((...values: Array) => R)>): OperatorFunction;\n/** @deprecated Deprecated in favor of static combineLatest. */\nexport function combineLatest(array: ObservableInput[]): OperatorFunction>;\n/** @deprecated Deprecated in favor of static combineLatest. */\nexport function combineLatest(array: ObservableInput[], project: (v1: T, ...values: Array) => R): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * @deprecated Deprecated in favor of static {@link combineLatest}.\n */\nexport function combineLatest(...observables: Array |\n Array> |\n ((...values: Array) => R)>): OperatorFunction {\n let project: (...values: Array) => R = null;\n if (typeof observables[observables.length - 1] === 'function') {\n project = <(...values: Array) => R>observables.pop();\n }\n\n // if the first and only other argument besides the resultSelector is an array\n // assume it's been called with `combineLatest([obs1, obs2, obs3], project)`\n if (observables.length === 1 && isArray(observables[0])) {\n observables = (observables[0]).slice();\n }\n\n return (source: Observable) => source.lift.call(from([source, ...observables]), new CombineLatestOperator(project));\n}\n","import { concat as concatStatic } from '../observable/concat';\nimport { Observable } from '../Observable';\nimport { ObservableInput, OperatorFunction, MonoTypeOperatorFunction, SchedulerLike } from '../types';\n\n/* tslint:disable:max-line-length */\n/** @deprecated Deprecated in favor of static concat. */\nexport function concat(scheduler?: SchedulerLike): MonoTypeOperatorFunction;\n/** @deprecated Deprecated in favor of static concat. */\nexport function concat(v2: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static concat. */\nexport function concat(v2: ObservableInput, v3: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static concat. */\nexport function concat(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static concat. */\nexport function concat(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static concat. */\nexport function concat(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static concat. */\nexport function concat(...observables: Array | SchedulerLike>): MonoTypeOperatorFunction;\n/** @deprecated Deprecated in favor of static concat. */\nexport function concat(...observables: Array | SchedulerLike>): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * @deprecated Deprecated in favor of static {@link concat}.\n */\nexport function concat(...observables: Array | SchedulerLike>): OperatorFunction {\n return (source: Observable) => source.lift.call(concatStatic(source, ...observables));\n}\n","import { mergeMap } from './mergeMap';\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function concatMap>(project: (value: T, index: number) => O): OperatorFunction>;\n/** @deprecated resultSelector no longer supported, use inner map instead */\nexport function concatMap>(project: (value: T, index: number) => O, resultSelector: undefined): OperatorFunction>;\n/** @deprecated resultSelector no longer supported, use inner map instead */\nexport function concatMap>(project: (value: T, index: number) => O, resultSelector: (outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable, in a serialized fashion waiting for each one to complete before\n * merging the next.\n *\n * Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link concatAll}.\n *\n * ![](concatMap.png)\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an (so-called \"inner\") Observable. Each new inner Observable is\n * concatenated with the previous inner Observable.\n *\n * __Warning:__ if source values arrive endlessly and faster than their\n * corresponding inner Observables can complete, it will result in memory issues\n * as inner Observables amass in an unbounded buffer waiting for their turn to\n * be subscribed to.\n *\n * Note: `concatMap` is equivalent to `mergeMap` with concurrency parameter set\n * to `1`.\n *\n * ## Example\n * For each click event, tick every second from 0 to 3, with no concurrency\n *\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { concatMap, take } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n * concatMap(ev => interval(1000).pipe(take(4)))\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // (results are not concurrent)\n * // For every click on the \"document\" it will emit values 0 to 3 spaced\n * // on a 1000ms interval\n * // one click = 1000ms-> 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3\n * ```\n *\n * @see {@link concat}\n * @see {@link concatAll}\n * @see {@link concatMapTo}\n * @see {@link exhaustMap}\n * @see {@link mergeMap}\n * @see {@link switchMap}\n *\n * @param {function(value: T, ?index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @return {Observable} An Observable that emits the result of applying the\n * projection function (and the optional deprecated `resultSelector`) to each item emitted\n * by the source Observable and taking values from each projected inner\n * Observable sequentially.\n * @method concatMap\n * @owner Observable\n */\nexport function concatMap>(\n project: (value: T, index: number) => O,\n resultSelector?: (outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R\n): OperatorFunction|R> {\n return mergeMap(project, resultSelector, 1);\n}\n","import { concatMap } from './concatMap';\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function concatMapTo>(observable: O): OperatorFunction>;\n/** @deprecated */\nexport function concatMapTo>(observable: O, resultSelector: undefined): OperatorFunction>;\n/** @deprecated */\nexport function concatMapTo>(observable: O, resultSelector: (outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to the same Observable which is merged multiple\n * times in a serialized fashion on the output Observable.\n *\n * It's like {@link concatMap}, but maps each value\n * always to the same inner Observable.\n *\n * ![](concatMapTo.png)\n *\n * Maps each source value to the given Observable `innerObservable` regardless\n * of the source value, and then flattens those resulting Observables into one\n * single Observable, which is the output Observable. Each new `innerObservable`\n * instance emitted on the output Observable is concatenated with the previous\n * `innerObservable` instance.\n *\n * __Warning:__ if source values arrive endlessly and faster than their\n * corresponding inner Observables can complete, it will result in memory issues\n * as inner Observables amass in an unbounded buffer waiting for their turn to\n * be subscribed to.\n *\n * Note: `concatMapTo` is equivalent to `mergeMapTo` with concurrency parameter\n * set to `1`.\n *\n * ## Example\n * For each click event, tick every second from 0 to 3, with no concurrency\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { concatMapTo, take } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n * concatMapTo(interval(1000).pipe(take(4))),\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // (results are not concurrent)\n * // For every click on the \"document\" it will emit values 0 to 3 spaced\n * // on a 1000ms interval\n * // one click = 1000ms-> 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3\n * ```\n *\n * @see {@link concat}\n * @see {@link concatAll}\n * @see {@link concatMap}\n * @see {@link mergeMapTo}\n * @see {@link switchMapTo}\n *\n * @param {ObservableInput} innerObservable An Observable to replace each value from\n * the source Observable.\n * @return {Observable} An observable of values merged together by joining the\n * passed observable with itself, one after the other, for each value emitted\n * from the source.\n * @method concatMapTo\n * @owner Observable\n */\nexport function concatMapTo>(\n innerObservable: O,\n resultSelector?: (outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R\n): OperatorFunction|R> {\n return concatMap(() => innerObservable, resultSelector);\n}\n","import { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Observer, OperatorFunction } from '../types';\nimport { Subscriber } from '../Subscriber';\n/**\n * Counts the number of emissions on the source and emits that number when the\n * source completes.\n *\n * Tells how many values were emitted, when the source\n * completes.\n *\n * ![](count.png)\n *\n * `count` transforms an Observable that emits values into an Observable that\n * emits a single value that represents the number of values emitted by the\n * source Observable. If the source Observable terminates with an error, `count`\n * will pass this error notification along without emitting a value first. If\n * the source Observable does not terminate at all, `count` will neither emit\n * a value nor terminate. This operator takes an optional `predicate` function\n * as argument, in which case the output emission will represent the number of\n * source values that matched `true` with the `predicate`.\n *\n * ## Examples\n *\n * Counts how many seconds have passed before the first click happened\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { count, takeUntil } from 'rxjs/operators';\n *\n * const seconds = interval(1000);\n * const clicks = fromEvent(document, 'click');\n * const secondsBeforeClick = seconds.pipe(takeUntil(clicks));\n * const result = secondsBeforeClick.pipe(count());\n * result.subscribe(x => console.log(x));\n * ```\n *\n * Counts how many odd numbers are there between 1 and 7\n * ```ts\n * import { range } from 'rxjs';\n * import { count } from 'rxjs/operators';\n *\n * const numbers = range(1, 7);\n * const result = numbers.pipe(count(i => i % 2 === 1));\n * result.subscribe(x => console.log(x));\n * // Results in:\n * // 4\n * ```\n *\n * @see {@link max}\n * @see {@link min}\n * @see {@link reduce}\n *\n * @param {function(value: T, i: number, source: Observable): boolean} [predicate] A\n * boolean function to select what values are to be counted. It is provided with\n * arguments of:\n * - `value`: the value from the source Observable.\n * - `index`: the (zero-based) \"index\" of the value from the source Observable.\n * - `source`: the source Observable instance itself.\n * @return {Observable} An Observable of one number that represents the count as\n * described above.\n * @method count\n * @owner Observable\n */\n\nexport function count(predicate?: (value: T, index: number, source: Observable) => boolean): OperatorFunction {\n return (source: Observable) => source.lift(new CountOperator(predicate, source));\n}\n\nclass CountOperator implements Operator {\n constructor(private predicate?: (value: T, index: number, source: Observable) => boolean,\n private source?: Observable) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new CountSubscriber(subscriber, this.predicate, this.source));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass CountSubscriber extends Subscriber {\n private count: number = 0;\n private index: number = 0;\n\n constructor(destination: Observer,\n private predicate?: (value: T, index: number, source: Observable) => boolean,\n private source?: Observable) {\n super(destination);\n }\n\n protected _next(value: T): void {\n if (this.predicate) {\n this._tryPredicate(value);\n } else {\n this.count++;\n }\n }\n\n private _tryPredicate(value: T) {\n let result: any;\n\n try {\n result = this.predicate(value, this.index++, this.source);\n } catch (err) {\n this.destination.error(err);\n return;\n }\n\n if (result) {\n this.count++;\n }\n }\n\n protected _complete(): void {\n this.destination.next(this.count);\n this.destination.complete();\n }\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { MonoTypeOperatorFunction, SubscribableOrPromise, TeardownLogic } from '../types';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\n\n/**\n * Emits a value from the source Observable only after a particular time span\n * determined by another Observable has passed without another source emission.\n *\n * It's like {@link debounceTime}, but the time span of\n * emission silence is determined by a second Observable.\n *\n * ![](debounce.png)\n *\n * `debounce` delays values emitted by the source Observable, but drops previous\n * pending delayed emissions if a new value arrives on the source Observable.\n * This operator keeps track of the most recent value from the source\n * Observable, and spawns a duration Observable by calling the\n * `durationSelector` function. The value is emitted only when the duration\n * Observable emits a value or completes, and if no other value was emitted on\n * the source Observable since the duration Observable was spawned. If a new\n * value appears before the duration Observable emits, the previous value will\n * be dropped and will not be emitted on the output Observable.\n *\n * Like {@link debounceTime}, this is a rate-limiting operator, and also a\n * delay-like operator since output emissions do not necessarily occur at the\n * same time as they did on the source Observable.\n *\n * ## Example\n * Emit the most recent click after a burst of clicks\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { debounce } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(debounce(() => interval(1000)));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link audit}\n * @see {@link debounceTime}\n * @see {@link delayWhen}\n * @see {@link throttle}\n *\n * @param {function(value: T): SubscribableOrPromise} durationSelector A function\n * that receives a value from the source Observable, for computing the timeout\n * duration for each source value, returned as an Observable or a Promise.\n * @return {Observable} An Observable that delays the emissions of the source\n * Observable by the specified duration Observable returned by\n * `durationSelector`, and may drop some values if they occur too frequently.\n * @method debounce\n * @owner Observable\n */\nexport function debounce(durationSelector: (value: T) => SubscribableOrPromise): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new DebounceOperator(durationSelector));\n}\n\nclass DebounceOperator implements Operator {\n constructor(private durationSelector: (value: T) => SubscribableOrPromise) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new DebounceSubscriber(subscriber, this.durationSelector));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass DebounceSubscriber extends SimpleOuterSubscriber {\n private value?: T;\n private hasValue = false;\n private durationSubscription?: Subscription;\n\n constructor(destination: Subscriber,\n private durationSelector: (value: T) => SubscribableOrPromise) {\n super(destination);\n }\n\n protected _next(value: T): void {\n try {\n const result = this.durationSelector.call(this, value);\n\n if (result) {\n this._tryNext(value, result);\n }\n } catch (err) {\n this.destination.error!(err);\n }\n }\n\n protected _complete(): void {\n this.emitValue();\n this.destination.complete!();\n }\n\n private _tryNext(value: T, duration: SubscribableOrPromise): void {\n let subscription = this.durationSubscription;\n this.value = value;\n this.hasValue = true;\n if (subscription) {\n subscription.unsubscribe();\n this.remove(subscription);\n }\n\n subscription = innerSubscribe(duration, new SimpleInnerSubscriber(this));\n if (subscription && !subscription.closed) {\n this.add(this.durationSubscription = subscription);\n }\n }\n\n notifyNext(): void {\n this.emitValue();\n }\n\n notifyComplete(): void {\n this.emitValue();\n }\n\n emitValue(): void {\n if (this.hasValue) {\n const value = this.value;\n const subscription = this.durationSubscription;\n if (subscription) {\n this.durationSubscription = undefined;\n subscription.unsubscribe();\n this.remove(subscription);\n }\n // This must be done *before* passing the value\n // along to the destination because it's possible for\n // the value to synchronously re-enter this operator\n // recursively if the duration selector Observable\n // emits synchronously\n this.value = undefined;\n this.hasValue = false;\n super._next(value!);\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { async } from '../scheduler/async';\nimport { MonoTypeOperatorFunction, SchedulerLike, TeardownLogic } from '../types';\n\n/**\n * Emits a value from the source Observable only after a particular time span\n * has passed without another source emission.\n *\n * It's like {@link delay}, but passes only the most\n * recent value from each burst of emissions.\n *\n * ![](debounceTime.png)\n *\n * `debounceTime` delays values emitted by the source Observable, but drops\n * previous pending delayed emissions if a new value arrives on the source\n * Observable. This operator keeps track of the most recent value from the\n * source Observable, and emits that only when `dueTime` enough time has passed\n * without any other value appearing on the source Observable. If a new value\n * appears before `dueTime` silence occurs, the previous value will be dropped\n * and will not be emitted on the output Observable.\n *\n * This is a rate-limiting operator, because it is impossible for more than one\n * value to be emitted in any time window of duration `dueTime`, but it is also\n * a delay-like operator since output emissions do not occur at the same time as\n * they did on the source Observable. Optionally takes a {@link SchedulerLike} for\n * managing timers.\n *\n * ## Example\n * Emit the most recent click after a burst of clicks\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { debounceTime } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(debounceTime(1000));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link auditTime}\n * @see {@link debounce}\n * @see {@link delay}\n * @see {@link sampleTime}\n * @see {@link throttleTime}\n *\n * @param {number} dueTime The timeout duration in milliseconds (or the time\n * unit determined internally by the optional `scheduler`) for the window of\n * time required to wait for emission silence before emitting the most recent\n * source value.\n * @param {SchedulerLike} [scheduler=async] The {@link SchedulerLike} to use for\n * managing the timers that handle the timeout for each value.\n * @return {Observable} An Observable that delays the emissions of the source\n * Observable by the specified `dueTime`, and may drop some values if they occur\n * too frequently.\n * @method debounceTime\n * @owner Observable\n */\nexport function debounceTime(dueTime: number, scheduler: SchedulerLike = async): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new DebounceTimeOperator(dueTime, scheduler));\n}\n\nclass DebounceTimeOperator implements Operator {\n constructor(private dueTime: number, private scheduler: SchedulerLike) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new DebounceTimeSubscriber(subscriber, this.dueTime, this.scheduler));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass DebounceTimeSubscriber extends Subscriber {\n private debouncedSubscription: Subscription = null;\n private lastValue: T = null;\n private hasValue: boolean = false;\n\n constructor(destination: Subscriber,\n private dueTime: number,\n private scheduler: SchedulerLike) {\n super(destination);\n }\n\n protected _next(value: T) {\n this.clearDebounce();\n this.lastValue = value;\n this.hasValue = true;\n this.add(this.debouncedSubscription = this.scheduler.schedule(dispatchNext, this.dueTime, this));\n }\n\n protected _complete() {\n this.debouncedNext();\n this.destination.complete();\n }\n\n debouncedNext(): void {\n this.clearDebounce();\n\n if (this.hasValue) {\n const { lastValue } = this;\n // This must be done *before* passing the value\n // along to the destination because it's possible for\n // the value to synchronously re-enter this operator\n // recursively when scheduled with things like\n // VirtualScheduler/TestScheduler.\n this.lastValue = null;\n this.hasValue = false;\n this.destination.next(lastValue);\n }\n }\n\n private clearDebounce(): void {\n const debouncedSubscription = this.debouncedSubscription;\n\n if (debouncedSubscription !== null) {\n this.remove(debouncedSubscription);\n debouncedSubscription.unsubscribe();\n this.debouncedSubscription = null;\n }\n }\n}\n\nfunction dispatchNext(subscriber: DebounceTimeSubscriber) {\n subscriber.debouncedNext();\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { OperatorFunction, MonoTypeOperatorFunction } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function defaultIfEmpty(defaultValue?: T): MonoTypeOperatorFunction;\nexport function defaultIfEmpty(defaultValue?: R): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Emits a given value if the source Observable completes without emitting any\n * `next` value, otherwise mirrors the source Observable.\n *\n * If the source Observable turns out to be empty, then\n * this operator will emit a default value.\n *\n * ![](defaultIfEmpty.png)\n *\n * `defaultIfEmpty` emits the values emitted by the source Observable or a\n * specified default value if the source Observable is empty (completes without\n * having emitted any `next` value).\n *\n * ## Example\n * If no clicks happen in 5 seconds, then emit \"no clicks\"\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { defaultIfEmpty, takeUntil } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const clicksBeforeFive = clicks.pipe(takeUntil(interval(5000)));\n * const result = clicksBeforeFive.pipe(defaultIfEmpty('no clicks'));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link empty}\n * @see {@link last}\n *\n * @param {any} [defaultValue=null] The default value used if the source\n * Observable is empty.\n * @return {Observable} An Observable that emits either the specified\n * `defaultValue` if the source Observable emits no items, or the values emitted\n * by the source Observable.\n * @method defaultIfEmpty\n * @owner Observable\n */\nexport function defaultIfEmpty(defaultValue: R = null): OperatorFunction {\n return (source: Observable) => source.lift(new DefaultIfEmptyOperator(defaultValue)) as Observable;\n}\n\nclass DefaultIfEmptyOperator implements Operator {\n\n constructor(private defaultValue: R) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new DefaultIfEmptySubscriber(subscriber, this.defaultValue));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass DefaultIfEmptySubscriber extends Subscriber {\n private isEmpty: boolean = true;\n\n constructor(destination: Subscriber, private defaultValue: R) {\n super(destination);\n }\n\n protected _next(value: T): void {\n this.isEmpty = false;\n this.destination.next(value);\n }\n\n protected _complete(): void {\n if (this.isEmpty) {\n this.destination.next(this.defaultValue);\n }\n this.destination.complete();\n }\n}\n","export function isDate(value: any): value is Date {\n return value instanceof Date && !isNaN(+value);\n}\n","import { async } from '../scheduler/async';\nimport { isDate } from '../util/isDate';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { Notification } from '../Notification';\nimport { Observable } from '../Observable';\nimport { MonoTypeOperatorFunction, PartialObserver, SchedulerAction, SchedulerLike, TeardownLogic } from '../types';\n\n/**\n * Delays the emission of items from the source Observable by a given timeout or\n * until a given Date.\n *\n * Time shifts each item by some specified amount of\n * milliseconds.\n *\n * ![](delay.png)\n *\n * If the delay argument is a Number, this operator time shifts the source\n * Observable by that amount of time expressed in milliseconds. The relative\n * time intervals between the values are preserved.\n *\n * If the delay argument is a Date, this operator time shifts the start of the\n * Observable execution until the given date occurs.\n *\n * ## Examples\n * Delay each click by one second\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { delay } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const delayedClicks = clicks.pipe(delay(1000)); // each click emitted after 1 second\n * delayedClicks.subscribe(x => console.log(x));\n * ```\n *\n * Delay all clicks until a future date happens\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { delay } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const date = new Date('March 15, 2050 12:00:00'); // in the future\n * const delayedClicks = clicks.pipe(delay(date)); // click emitted only after that date\n * delayedClicks.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link debounceTime}\n * @see {@link delayWhen}\n *\n * @param {number|Date} delay The delay duration in milliseconds (a `number`) or\n * a `Date` until which the emission of the source items is delayed.\n * @param {SchedulerLike} [scheduler=async] The {@link SchedulerLike} to use for\n * managing the timers that handle the time-shift for each item.\n * @return {Observable} An Observable that delays the emissions of the source\n * Observable by the specified timeout or Date.\n * @method delay\n * @owner Observable\n */\nexport function delay(delay: number|Date,\n scheduler: SchedulerLike = async): MonoTypeOperatorFunction {\n const absoluteDelay = isDate(delay);\n const delayFor = absoluteDelay ? (+delay - scheduler.now()) : Math.abs(delay);\n return (source: Observable) => source.lift(new DelayOperator(delayFor, scheduler));\n}\n\nclass DelayOperator implements Operator {\n constructor(private delay: number,\n private scheduler: SchedulerLike) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new DelaySubscriber(subscriber, this.delay, this.scheduler));\n }\n}\n\ninterface DelayState {\n source: DelaySubscriber;\n destination: PartialObserver;\n scheduler: SchedulerLike;\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass DelaySubscriber extends Subscriber {\n private queue: Array> = [];\n private active: boolean = false;\n private errored: boolean = false;\n\n private static dispatch(this: SchedulerAction>, state: DelayState): void {\n const source = state.source;\n const queue = source.queue;\n const scheduler = state.scheduler;\n const destination = state.destination;\n\n while (queue.length > 0 && (queue[0].time - scheduler.now()) <= 0) {\n queue.shift().notification.observe(destination);\n }\n\n if (queue.length > 0) {\n const delay = Math.max(0, queue[0].time - scheduler.now());\n this.schedule(state, delay);\n } else {\n this.unsubscribe();\n source.active = false;\n }\n }\n\n constructor(destination: Subscriber,\n private delay: number,\n private scheduler: SchedulerLike) {\n super(destination);\n }\n\n private _schedule(scheduler: SchedulerLike): void {\n this.active = true;\n const destination = this.destination as Subscription;\n destination.add(scheduler.schedule>(DelaySubscriber.dispatch, this.delay, {\n source: this, destination: this.destination, scheduler: scheduler\n }));\n }\n\n private scheduleNotification(notification: Notification): void {\n if (this.errored === true) {\n return;\n }\n\n const scheduler = this.scheduler;\n const message = new DelayMessage(scheduler.now() + this.delay, notification);\n this.queue.push(message);\n\n if (this.active === false) {\n this._schedule(scheduler);\n }\n }\n\n protected _next(value: T) {\n this.scheduleNotification(Notification.createNext(value));\n }\n\n protected _error(err: any) {\n this.errored = true;\n this.queue = [];\n this.destination.error(err);\n this.unsubscribe();\n }\n\n protected _complete() {\n this.scheduleNotification(Notification.createComplete());\n this.unsubscribe();\n }\n}\n\nclass DelayMessage {\n constructor(public readonly time: number,\n public readonly notification: Notification) {\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\n\n/* tslint:disable:max-line-length */\n/** @deprecated In future versions, empty notifiers will no longer re-emit the source value on the output observable. */\nexport function delayWhen(delayDurationSelector: (value: T, index: number) => Observable, subscriptionDelay?: Observable): MonoTypeOperatorFunction;\nexport function delayWhen(delayDurationSelector: (value: T, index: number) => Observable, subscriptionDelay?: Observable): MonoTypeOperatorFunction;\n/* tslint:disable:max-line-length */\n\n/**\n * Delays the emission of items from the source Observable by a given time span\n * determined by the emissions of another Observable.\n *\n * It's like {@link delay}, but the time span of the\n * delay duration is determined by a second Observable.\n *\n * ![](delayWhen.png)\n *\n * `delayWhen` time shifts each emitted value from the source Observable by a\n * time span determined by another Observable. When the source emits a value,\n * the `delayDurationSelector` function is called with the source value as\n * argument, and should return an Observable, called the \"duration\" Observable.\n * The source value is emitted on the output Observable only when the duration\n * Observable emits a value or completes.\n * The completion of the notifier triggering the emission of the source value\n * is deprecated behavior and will be removed in future versions.\n *\n * Optionally, `delayWhen` takes a second argument, `subscriptionDelay`, which\n * is an Observable. When `subscriptionDelay` emits its first value or\n * completes, the source Observable is subscribed to and starts behaving like\n * described in the previous paragraph. If `subscriptionDelay` is not provided,\n * `delayWhen` will subscribe to the source Observable as soon as the output\n * Observable is subscribed.\n *\n * ## Example\n * Delay each click by a random amount of time, between 0 and 5 seconds\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { delayWhen } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const delayedClicks = clicks.pipe(\n * delayWhen(event => interval(Math.random() * 5000)),\n * );\n * delayedClicks.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link delay}\n * @see {@link throttle}\n * @see {@link throttleTime}\n * @see {@link debounce}\n * @see {@link debounceTime}\n * @see {@link sample}\n * @see {@link sampleTime}\n * @see {@link audit}\n * @see {@link auditTime}\n *\n * @param {function(value: T, index: number): Observable} delayDurationSelector A function that\n * returns an Observable for each value emitted by the source Observable, which\n * is then used to delay the emission of that item on the output Observable\n * until the Observable returned from this function emits a value.\n * @param {Observable} subscriptionDelay An Observable that triggers the\n * subscription to the source Observable once it emits any value.\n * @return {Observable} An Observable that delays the emissions of the source\n * Observable by an amount of time specified by the Observable returned by\n * `delayDurationSelector`.\n * @method delayWhen\n * @owner Observable\n */\nexport function delayWhen(delayDurationSelector: (value: T, index: number) => Observable,\n subscriptionDelay?: Observable): MonoTypeOperatorFunction {\n if (subscriptionDelay) {\n return (source: Observable) =>\n new SubscriptionDelayObservable(source, subscriptionDelay)\n .lift(new DelayWhenOperator(delayDurationSelector));\n }\n return (source: Observable) => source.lift(new DelayWhenOperator(delayDurationSelector));\n}\n\nclass DelayWhenOperator implements Operator {\n constructor(private delayDurationSelector: (value: T, index: number) => Observable) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new DelayWhenSubscriber(subscriber, this.delayDurationSelector));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass DelayWhenSubscriber extends OuterSubscriber {\n private completed: boolean = false;\n private delayNotifierSubscriptions: Array = [];\n private index: number = 0;\n\n constructor(destination: Subscriber,\n private delayDurationSelector: (value: T, index: number) => Observable) {\n super(destination);\n }\n\n notifyNext(outerValue: T, _innerValue: any,\n _outerIndex: number, _innerIndex: number,\n innerSub: InnerSubscriber): void {\n this.destination.next!(outerValue);\n this.removeSubscription(innerSub);\n this.tryComplete();\n }\n\n notifyError(error: any, innerSub: InnerSubscriber): void {\n this._error(error);\n }\n\n notifyComplete(innerSub: InnerSubscriber): void {\n const value = this.removeSubscription(innerSub);\n if (value) {\n this.destination.next!(value);\n }\n this.tryComplete();\n }\n\n protected _next(value: T): void {\n const index = this.index++;\n try {\n const delayNotifier = this.delayDurationSelector(value, index);\n if (delayNotifier) {\n this.tryDelay(delayNotifier, value);\n }\n } catch (err) {\n this.destination.error!(err);\n }\n }\n\n protected _complete(): void {\n this.completed = true;\n this.tryComplete();\n this.unsubscribe();\n }\n\n private removeSubscription(subscription: InnerSubscriber): T {\n subscription.unsubscribe();\n\n const subscriptionIdx = this.delayNotifierSubscriptions.indexOf(subscription);\n if (subscriptionIdx !== -1) {\n this.delayNotifierSubscriptions.splice(subscriptionIdx, 1);\n }\n\n return subscription.outerValue;\n }\n\n private tryDelay(delayNotifier: Observable, value: T): void {\n const notifierSubscription = subscribeToResult(this, delayNotifier, value);\n\n if (notifierSubscription && !notifierSubscription.closed) {\n const destination = this.destination as Subscription;\n destination.add(notifierSubscription);\n this.delayNotifierSubscriptions.push(notifierSubscription);\n }\n }\n\n private tryComplete(): void {\n if (this.completed && this.delayNotifierSubscriptions.length === 0) {\n this.destination.complete!();\n }\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass SubscriptionDelayObservable extends Observable {\n constructor(public source: Observable, private subscriptionDelay: Observable) {\n super();\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _subscribe(subscriber: Subscriber) {\n this.subscriptionDelay.subscribe(new SubscriptionDelaySubscriber(subscriber, this.source));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass SubscriptionDelaySubscriber extends Subscriber {\n private sourceSubscribed: boolean = false;\n\n constructor(private parent: Subscriber, private source: Observable) {\n super();\n }\n\n protected _next(unused: any) {\n this.subscribeToSource();\n }\n\n protected _error(err: any) {\n this.unsubscribe();\n this.parent.error(err);\n }\n\n protected _complete() {\n this.unsubscribe();\n this.subscribeToSource();\n }\n\n private subscribeToSource(): void {\n if (!this.sourceSubscribed) {\n this.sourceSubscribed = true;\n this.unsubscribe();\n this.source.subscribe(this.parent);\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Notification } from '../Notification';\nimport { OperatorFunction } from '../types';\n\n/**\n * Converts an Observable of {@link Notification} objects into the emissions\n * that they represent.\n *\n * Unwraps {@link Notification} objects as actual `next`,\n * `error` and `complete` emissions. The opposite of {@link materialize}.\n *\n * ![](dematerialize.png)\n *\n * `dematerialize` is assumed to operate an Observable that only emits\n * {@link Notification} objects as `next` emissions, and does not emit any\n * `error`. Such Observable is the output of a `materialize` operation. Those\n * notifications are then unwrapped using the metadata they contain, and emitted\n * as `next`, `error`, and `complete` on the output Observable.\n *\n * Use this operator in conjunction with {@link materialize}.\n *\n * ## Example\n * Convert an Observable of Notifications to an actual Observable\n * ```ts\n * import { of, Notification } from 'rxjs';\n * import { dematerialize } from 'rxjs/operators';\n *\n * const notifA = new Notification('N', 'A');\n * const notifB = new Notification('N', 'B');\n * const notifE = new Notification('E', undefined,\n * new TypeError('x.toUpperCase is not a function')\n * );\n * const materialized = of(notifA, notifB, notifE);\n * const upperCase = materialized.pipe(dematerialize());\n * upperCase.subscribe(x => console.log(x), e => console.error(e));\n *\n * // Results in:\n * // A\n * // B\n * // TypeError: x.toUpperCase is not a function\n * ```\n *\n * @see {@link Notification}\n * @see {@link materialize}\n *\n * @return {Observable} An Observable that emits items and notifications\n * embedded in Notification objects emitted by the source Observable.\n * @method dematerialize\n * @owner Observable\n */\nexport function dematerialize(): OperatorFunction, T> {\n return function dematerializeOperatorFunction(source: Observable>) {\n return source.lift(new DeMaterializeOperator());\n };\n}\n\nclass DeMaterializeOperator, R> implements Operator {\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new DeMaterializeSubscriber(subscriber));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass DeMaterializeSubscriber> extends Subscriber {\n constructor(destination: Subscriber) {\n super(destination);\n }\n\n protected _next(value: T) {\n value.observe(this.destination);\n }\n}\n","import { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\n\n/**\n * Returns an Observable that emits all items emitted by the source Observable that are distinct by comparison from previous items.\n *\n * If a keySelector function is provided, then it will project each value from the source observable into a new value that it will\n * check for equality with previously projected values. If a keySelector function is not provided, it will use each value from the\n * source observable directly with an equality check against previous values.\n *\n * In JavaScript runtimes that support `Set`, this operator will use a `Set` to improve performance of the distinct value checking.\n *\n * In other runtimes, this operator will use a minimal implementation of `Set` that relies on an `Array` and `indexOf` under the\n * hood, so performance will degrade as more values are checked for distinction. Even in newer browsers, a long-running `distinct`\n * use might result in memory leaks. To help alleviate this in some scenarios, an optional `flushes` parameter is also provided so\n * that the internal `Set` can be \"flushed\", basically clearing it of values.\n *\n * ## Examples\n * A simple example with numbers\n * ```ts\n * import { of } from 'rxjs';\n * import { distinct } from 'rxjs/operators';\n *\n * of(1, 1, 2, 2, 2, 1, 2, 3, 4, 3, 2, 1).pipe(\n * distinct(),\n * )\n * .subscribe(x => console.log(x)); // 1, 2, 3, 4\n * ```\n *\n * An example using a keySelector function\n * ```typescript\n * import { of } from 'rxjs';\n * import { distinct } from 'rxjs/operators';\n *\n * interface Person {\n * age: number,\n * name: string\n * }\n *\n * of(\n * { age: 4, name: 'Foo'},\n * { age: 7, name: 'Bar'},\n * { age: 5, name: 'Foo'},\n * ).pipe(\n * distinct((p: Person) => p.name),\n * )\n * .subscribe(x => console.log(x));\n *\n * // displays:\n * // { age: 4, name: 'Foo' }\n * // { age: 7, name: 'Bar' }\n * ```\n * @see {@link distinctUntilChanged}\n * @see {@link distinctUntilKeyChanged}\n *\n * @param {function} [keySelector] Optional function to select which value you want to check as distinct.\n * @param {Observable} [flushes] Optional Observable for flushing the internal HashSet of the operator.\n * @return {Observable} An Observable that emits items from the source Observable with distinct values.\n * @method distinct\n * @owner Observable\n */\nexport function distinct(keySelector?: (value: T) => K,\n flushes?: Observable): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new DistinctOperator(keySelector, flushes));\n}\n\nclass DistinctOperator implements Operator {\n constructor(private keySelector?: (value: T) => K, private flushes?: Observable) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new DistinctSubscriber(subscriber, this.keySelector, this.flushes));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class DistinctSubscriber extends SimpleOuterSubscriber {\n private values = new Set();\n\n constructor(destination: Subscriber, private keySelector?: (value: T) => K, flushes?: Observable) {\n super(destination);\n\n if (flushes) {\n this.add(innerSubscribe(flushes, new SimpleInnerSubscriber(this)));\n }\n }\n\n notifyNext(): void {\n this.values.clear();\n }\n\n notifyError(error: any): void {\n this._error(error);\n }\n\n protected _next(value: T): void {\n if (this.keySelector) {\n this._useKeySelector(value);\n } else {\n this._finalizeNext(value, value);\n }\n }\n\n private _useKeySelector(value: T): void {\n let key: K;\n const { destination } = this;\n try {\n key = this.keySelector!(value);\n } catch (err) {\n destination.error!(err);\n return;\n }\n this._finalizeNext(key, value);\n }\n\n private _finalizeNext(key: K|T, value: T) {\n const { values } = this;\n if (!values.has(key)) {\n values.add(key);\n this.destination.next!(value);\n }\n }\n\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function distinctUntilChanged(compare?: (x: T, y: T) => boolean): MonoTypeOperatorFunction;\nexport function distinctUntilChanged(compare: (x: K, y: K) => boolean, keySelector: (x: T) => K): MonoTypeOperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Returns an Observable that emits all items emitted by the source Observable that are distinct by comparison from the previous item.\n *\n * If a comparator function is provided, then it will be called for each item to test for whether or not that value should be emitted.\n *\n * If a comparator function is not provided, an equality check is used by default.\n *\n * ## Example\n * A simple example with numbers\n * ```ts\n * import { of } from 'rxjs';\n * import { distinctUntilChanged } from 'rxjs/operators';\n *\n * of(1, 1, 2, 2, 2, 1, 1, 2, 3, 3, 4).pipe(\n * distinctUntilChanged(),\n * )\n * .subscribe(x => console.log(x)); // 1, 2, 1, 2, 3, 4\n * ```\n *\n * An example using a compare function\n * ```typescript\n * import { of } from 'rxjs';\n * import { distinctUntilChanged } from 'rxjs/operators';\n *\n * interface Person {\n * age: number,\n * name: string\n * }\n *\n * of(\n * { age: 4, name: 'Foo'},\n * { age: 7, name: 'Bar'},\n * { age: 5, name: 'Foo'},\n * { age: 6, name: 'Foo'},\n * ).pipe(\n * distinctUntilChanged((p: Person, q: Person) => p.name === q.name),\n * )\n * .subscribe(x => console.log(x));\n *\n * // displays:\n * // { age: 4, name: 'Foo' }\n * // { age: 7, name: 'Bar' }\n * // { age: 5, name: 'Foo' }\n * ```\n *\n * @see {@link distinct}\n * @see {@link distinctUntilKeyChanged}\n *\n * @param {function} [compare] Optional comparison function called to test if an item is distinct from the previous item in the source.\n * @return {Observable} An Observable that emits items from the source Observable with distinct values.\n * @method distinctUntilChanged\n * @owner Observable\n */\nexport function distinctUntilChanged(compare?: (x: K, y: K) => boolean, keySelector?: (x: T) => K): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new DistinctUntilChangedOperator(compare, keySelector));\n}\n\nclass DistinctUntilChangedOperator implements Operator {\n constructor(private compare: (x: K, y: K) => boolean,\n private keySelector: (x: T) => K) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new DistinctUntilChangedSubscriber(subscriber, this.compare, this.keySelector));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass DistinctUntilChangedSubscriber extends Subscriber {\n private key: K;\n private hasKey: boolean = false;\n\n constructor(destination: Subscriber,\n compare: (x: K, y: K) => boolean,\n private keySelector: (x: T) => K) {\n super(destination);\n if (typeof compare === 'function') {\n this.compare = compare;\n }\n }\n\n private compare(x: any, y: any): boolean {\n return x === y;\n }\n\n protected _next(value: T): void {\n let key: any;\n try {\n const { keySelector } = this;\n key = keySelector ? keySelector(value) : value;\n } catch (err) {\n return this.destination.error(err);\n }\n let result = false;\n if (this.hasKey) {\n try {\n const { compare } = this;\n result = compare(this.key, key);\n } catch (err) {\n return this.destination.error(err);\n }\n } else {\n this.hasKey = true;\n }\n if (!result) {\n this.key = key;\n this.destination.next(value);\n }\n }\n}\n","import { distinctUntilChanged } from './distinctUntilChanged';\nimport { MonoTypeOperatorFunction } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function distinctUntilKeyChanged(key: keyof T): MonoTypeOperatorFunction;\nexport function distinctUntilKeyChanged(key: K, compare: (x: T[K], y: T[K]) => boolean): MonoTypeOperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Returns an Observable that emits all items emitted by the source Observable that are distinct by comparison from the previous item,\n * using a property accessed by using the key provided to check if the two items are distinct.\n *\n * If a comparator function is provided, then it will be called for each item to test for whether or not that value should be emitted.\n *\n * If a comparator function is not provided, an equality check is used by default.\n *\n * ## Examples\n * An example comparing the name of persons\n * ```typescript\n * import { of } from 'rxjs';\n * import { distinctUntilKeyChanged } from 'rxjs/operators';\n *\n * interface Person {\n * age: number,\n * name: string\n * }\n *\n * of(\n * { age: 4, name: 'Foo'},\n * { age: 7, name: 'Bar'},\n * { age: 5, name: 'Foo'},\n * { age: 6, name: 'Foo'},\n * ).pipe(\n * distinctUntilKeyChanged('name'),\n * )\n * .subscribe(x => console.log(x));\n *\n * // displays:\n * // { age: 4, name: 'Foo' }\n * // { age: 7, name: 'Bar' }\n * // { age: 5, name: 'Foo' }\n * ```\n *\n * An example comparing the first letters of the name\n * ```typescript\n * import { of } from 'rxjs';\n * import { distinctUntilKeyChanged } from 'rxjs/operators';\n *\n * interface Person {\n * age: number,\n * name: string\n * }\n *\n * of(\n * { age: 4, name: 'Foo1'},\n * { age: 7, name: 'Bar'},\n * { age: 5, name: 'Foo2'},\n * { age: 6, name: 'Foo3'},\n * ).pipe(\n * distinctUntilKeyChanged('name', (x: string, y: string) => x.substring(0, 3) === y.substring(0, 3)),\n * )\n * .subscribe(x => console.log(x));\n *\n * // displays:\n * // { age: 4, name: 'Foo1' }\n * // { age: 7, name: 'Bar' }\n * // { age: 5, name: 'Foo2' }\n * ```\n *\n * @see {@link distinct}\n * @see {@link distinctUntilChanged}\n *\n * @param {string} key String key for object property lookup on each item.\n * @param {function} [compare] Optional comparison function called to test if an item is distinct from the previous item in the source.\n * @return {Observable} An Observable that emits items from the source Observable with distinct values based on the key specified.\n * @method distinctUntilKeyChanged\n * @owner Observable\n */\nexport function distinctUntilKeyChanged(key: K, compare?: (x: T[K], y: T[K]) => boolean): MonoTypeOperatorFunction {\n return distinctUntilChanged((x: T, y: T) => compare ? compare(x[key], y[key]) : x[key] === y[key]);\n}\n","import { EmptyError } from '../util/EmptyError';\nimport { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { TeardownLogic, MonoTypeOperatorFunction } from '../types';\n\n/**\n * If the source observable completes without emitting a value, it will emit\n * an error. The error will be created at that time by the optional\n * `errorFactory` argument, otherwise, the error will be {@link EmptyError}.\n *\n * ![](throwIfEmpty.png)\n *\n * ## Example\n * ```ts\n * import { fromEvent, timer } from 'rxjs';\n * import { throwIfEmpty, takeUntil } from 'rxjs/operators';\n *\n * const click$ = fromEvent(document, 'click');\n *\n * click$.pipe(\n * takeUntil(timer(1000)),\n * throwIfEmpty(\n * () => new Error('the document was not clicked within 1 second')\n * ),\n * )\n * .subscribe({\n * next() { console.log('The button was clicked'); },\n * error(err) { console.error(err); }\n * });\n * ```\n *\n * @param errorFactory A factory function called to produce the\n * error to be thrown when the source observable completes without emitting a\n * value.\n */\nexport function throwIfEmpty (errorFactory: (() => any) = defaultErrorFactory): MonoTypeOperatorFunction {\n return (source: Observable) => {\n return source.lift(new ThrowIfEmptyOperator(errorFactory));\n };\n}\n\nclass ThrowIfEmptyOperator implements Operator {\n constructor(private errorFactory: () => any) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new ThrowIfEmptySubscriber(subscriber, this.errorFactory));\n }\n}\n\nclass ThrowIfEmptySubscriber extends Subscriber {\n private hasValue: boolean = false;\n\n constructor(destination: Subscriber, private errorFactory: () => any) {\n super(destination);\n }\n\n protected _next(value: T): void {\n this.hasValue = true;\n this.destination.next(value);\n }\n\n protected _complete() {\n if (!this.hasValue) {\n let err: any;\n try {\n err = this.errorFactory();\n } catch (e) {\n err = e;\n }\n this.destination.error(err);\n } else {\n return this.destination.complete();\n }\n }\n}\n\nfunction defaultErrorFactory() {\n return new EmptyError();\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { ArgumentOutOfRangeError } from '../util/ArgumentOutOfRangeError';\nimport { empty } from '../observable/empty';\nimport { Observable } from '../Observable';\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\n\n/**\n * Emits only the first `count` values emitted by the source Observable.\n *\n * Takes the first `count` values from the source, then\n * completes.\n *\n * ![](take.png)\n *\n * `take` returns an Observable that emits only the first `count` values emitted\n * by the source Observable. If the source emits fewer than `count` values then\n * all of its values are emitted. After that, it completes, regardless if the\n * source completes.\n *\n * ## Example\n * Take the first 5 seconds of an infinite 1-second interval Observable\n * ```ts\n * import { interval } from 'rxjs';\n * import { take } from 'rxjs/operators';\n *\n * const intervalCount = interval(1000);\n * const takeFive = intervalCount.pipe(take(5));\n * takeFive.subscribe(x => console.log(x));\n *\n * // Logs:\n * // 0\n * // 1\n * // 2\n * // 3\n * // 4\n * ```\n *\n * @see {@link takeLast}\n * @see {@link takeUntil}\n * @see {@link takeWhile}\n * @see {@link skip}\n *\n * @throws {ArgumentOutOfRangeError} When using `take(i)`, it delivers an\n * ArgumentOutOrRangeError to the Observer's `error` callback if `i < 0`.\n *\n * @param {number} count The maximum number of `next` values to emit.\n * @return {Observable} An Observable that emits only the first `count`\n * values emitted by the source Observable, or all of the values from the source\n * if the source emits fewer than `count` values.\n * @method take\n * @owner Observable\n */\nexport function take(count: number): MonoTypeOperatorFunction {\n return (source: Observable) => {\n if (count === 0) {\n return empty();\n } else {\n return source.lift(new TakeOperator(count));\n }\n };\n}\n\nclass TakeOperator implements Operator {\n constructor(private total: number) {\n if (this.total < 0) {\n throw new ArgumentOutOfRangeError;\n }\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new TakeSubscriber(subscriber, this.total));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass TakeSubscriber extends Subscriber {\n private count: number = 0;\n\n constructor(destination: Subscriber, private total: number) {\n super(destination);\n }\n\n protected _next(value: T): void {\n const total = this.total;\n const count = ++this.count;\n if (count <= total) {\n this.destination.next(value);\n if (count === total) {\n this.destination.complete();\n this.unsubscribe();\n }\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { ArgumentOutOfRangeError } from '../util/ArgumentOutOfRangeError';\nimport { Observable } from '../Observable';\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\nimport { filter } from './filter';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { take } from './take';\n\n/**\n * Emits the single value at the specified `index` in a sequence of emissions\n * from the source Observable.\n *\n * Emits only the i-th value, then completes.\n *\n * ![](elementAt.png)\n *\n * `elementAt` returns an Observable that emits the item at the specified\n * `index` in the source Observable, or a default value if that `index` is out\n * of range and the `default` argument is provided. If the `default` argument is\n * not given and the `index` is out of range, the output Observable will emit an\n * `ArgumentOutOfRangeError` error.\n *\n * ## Example\n * Emit only the third click event\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { elementAt } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(elementAt(2));\n * result.subscribe(x => console.log(x));\n *\n * // Results in:\n * // click 1 = nothing\n * // click 2 = nothing\n * // click 3 = MouseEvent object logged to console\n * ```\n *\n * @see {@link first}\n * @see {@link last}\n * @see {@link skip}\n * @see {@link single}\n * @see {@link take}\n *\n * @throws {ArgumentOutOfRangeError} When using `elementAt(i)`, it delivers an\n * ArgumentOutOrRangeError to the Observer's `error` callback if `i < 0` or the\n * Observable has completed before emitting the i-th `next` notification.\n *\n * @param {number} index Is the number `i` for the i-th source emission that has\n * happened since the subscription, starting from the number `0`.\n * @param {T} [defaultValue] The default value returned for missing indices.\n * @return {Observable} An Observable that emits a single item, if it is found.\n * Otherwise, will emit the default value if given. If not, then emits an error.\n * @method elementAt\n * @owner Observable\n */\nexport function elementAt(index: number, defaultValue?: T): MonoTypeOperatorFunction {\n if (index < 0) { throw new ArgumentOutOfRangeError(); }\n const hasDefaultValue = arguments.length >= 2;\n return (source: Observable) => source.pipe(\n filter((v, i) => i === index),\n take(1),\n hasDefaultValue\n ? defaultIfEmpty(defaultValue)\n : throwIfEmpty(() => new ArgumentOutOfRangeError()),\n );\n}\n","import { Observable } from '../Observable';\nimport { concat } from '../observable/concat';\nimport { of } from '../observable/of';\nimport { MonoTypeOperatorFunction, SchedulerLike, OperatorFunction } from '../types';\n\n/* tslint:disable:max-line-length */\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([source, [a, b, c]], scheduler).pipe(concatAll())`) */\nexport function endWith(scheduler: SchedulerLike): MonoTypeOperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([source, [a, b, c]], scheduler).pipe(concatAll())`) */\nexport function endWith(v1: A, scheduler: SchedulerLike): OperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([source, [a, b, c]], scheduler).pipe(concatAll())`) */\nexport function endWith(v1: A, v2: B, scheduler: SchedulerLike): OperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([source, [a, b, c]], scheduler).pipe(concatAll())`) */\nexport function endWith(v1: A, v2: B, v3: C, scheduler: SchedulerLike): OperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([source, [a, b, c]], scheduler).pipe(concatAll())`) */\nexport function endWith(v1: A, v2: B, v3: C, v4: D, scheduler: SchedulerLike): OperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([source, [a, b, c]], scheduler).pipe(concatAll())`) */\nexport function endWith(v1: A, v2: B, v3: C, v4: D, v5: E, scheduler: SchedulerLike): OperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([source, [a, b, c]], scheduler).pipe(concatAll())`) */\nexport function endWith(v1: A, v2: B, v3: C, v4: D, v5: E, v6: F, scheduler: SchedulerLike): OperatorFunction;\n\nexport function endWith(v1: A): OperatorFunction;\nexport function endWith(v1: A, v2: B): OperatorFunction;\nexport function endWith(v1: A, v2: B, v3: C): OperatorFunction;\nexport function endWith(v1: A, v2: B, v3: C, v4: D): OperatorFunction;\nexport function endWith(v1: A, v2: B, v3: C, v4: D, v5: E): OperatorFunction;\nexport function endWith(v1: A, v2: B, v3: C, v4: D, v5: E, v6: F): OperatorFunction;\nexport function endWith(...array: Z[]): OperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([source, [a, b, c]], scheduler).pipe(concatAll())`) */\nexport function endWith(...array: Array): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Returns an Observable that emits the items you specify as arguments after it finishes emitting\n * items emitted by the source Observable.\n *\n * ![](endWith.png)\n *\n * ## Example\n * ### After the source observable completes, appends an emission and then completes too.\n *\n * ```ts\n * import { of } from 'rxjs';\n * import { endWith } from 'rxjs/operators';\n *\n * of('hi', 'how are you?', 'sorry, I have to go now').pipe(\n * endWith('goodbye!'),\n * )\n * .subscribe(word => console.log(word));\n * // result:\n * // 'hi'\n * // 'how are you?'\n * // 'sorry, I have to go now'\n * // 'goodbye!'\n * ```\n *\n * @param {...T} values - Items you want the modified Observable to emit last.\n * @param {SchedulerLike} [scheduler] - A {@link SchedulerLike} to use for scheduling\n * the emissions of the `next` notifications.\n * @return {Observable} An Observable that emits the items emitted by the source Observable\n * and then emits the items in the specified Iterable.\n * @method endWith\n * @owner Observable\n */\nexport function endWith(...array: Array): MonoTypeOperatorFunction {\n return (source: Observable) => concat(source, of(...array)) as Observable;\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Observer, OperatorFunction } from '../types';\n\n/**\n * Returns an Observable that emits whether or not every item of the source satisfies the condition specified.\n *\n * ## Example\n * A simple example emitting true if all elements are less than 5, false otherwise\n * ```ts\n * import { of } from 'rxjs';\n * import { every } from 'rxjs/operators';\n *\n * of(1, 2, 3, 4, 5, 6).pipe(\n * every(x => x < 5),\n * )\n * .subscribe(x => console.log(x)); // -> false\n * ```\n *\n * @param {function} predicate A function for determining if an item meets a specified condition.\n * @param {any} [thisArg] Optional object to use for `this` in the callback.\n * @return {Observable} An Observable of booleans that determines if all items of the source Observable meet the condition specified.\n * @method every\n * @owner Observable\n */\nexport function every(predicate: (value: T, index: number, source: Observable) => boolean,\n thisArg?: any): OperatorFunction {\n return (source: Observable) => source.lift(new EveryOperator(predicate, thisArg, source));\n}\n\nclass EveryOperator implements Operator {\n constructor(private predicate: (value: T, index: number, source: Observable) => boolean,\n private thisArg?: any,\n private source?: Observable) {\n }\n\n call(observer: Subscriber, source: any): any {\n return source.subscribe(new EverySubscriber(observer, this.predicate, this.thisArg, this.source));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass EverySubscriber extends Subscriber {\n private index: number = 0;\n\n constructor(destination: Observer,\n private predicate: (value: T, index: number, source: Observable) => boolean,\n private thisArg: any,\n private source?: Observable) {\n super(destination);\n this.thisArg = thisArg || this;\n }\n\n private notifyComplete(everyValueMatch: boolean): void {\n this.destination.next(everyValueMatch);\n this.destination.complete();\n }\n\n protected _next(value: T): void {\n let result = false;\n try {\n result = this.predicate.call(this.thisArg, value, this.index++, this.source);\n } catch (err) {\n this.destination.error(err);\n return;\n }\n\n if (!result) {\n this.notifyComplete(false);\n }\n }\n\n protected _complete(): void {\n this.notifyComplete(true);\n }\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { ObservableInput, OperatorFunction, TeardownLogic } from '../types';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\n\nexport function exhaust(): OperatorFunction, T>;\nexport function exhaust(): OperatorFunction;\n\n/**\n * Converts a higher-order Observable into a first-order Observable by dropping\n * inner Observables while the previous inner Observable has not yet completed.\n *\n * Flattens an Observable-of-Observables by dropping the\n * next inner Observables while the current inner is still executing.\n *\n * ![](exhaust.png)\n *\n * `exhaust` subscribes to an Observable that emits Observables, also known as a\n * higher-order Observable. Each time it observes one of these emitted inner\n * Observables, the output Observable begins emitting the items emitted by that\n * inner Observable. So far, it behaves like {@link mergeAll}. However,\n * `exhaust` ignores every new inner Observable if the previous Observable has\n * not yet completed. Once that one completes, it will accept and flatten the\n * next inner Observable and repeat this process.\n *\n * ## Example\n * Run a finite timer for each click, only if there is no currently active timer\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { exhaust, map, take } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const higherOrder = clicks.pipe(\n * map((ev) => interval(1000).pipe(take(5))),\n * );\n * const result = higherOrder.pipe(exhaust());\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link combineAll}\n * @see {@link concatAll}\n * @see {@link switchAll}\n * @see {@link switchMap}\n * @see {@link mergeAll}\n * @see {@link exhaustMap}\n * @see {@link zipAll}\n *\n * @return {Observable} An Observable that takes a source of Observables and propagates the first observable\n * exclusively until it completes before subscribing to the next.\n * @method exhaust\n * @owner Observable\n */\nexport function exhaust(): OperatorFunction {\n return (source: Observable) => source.lift(new SwitchFirstOperator());\n}\n\nclass SwitchFirstOperator implements Operator {\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new SwitchFirstSubscriber(subscriber));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass SwitchFirstSubscriber extends SimpleOuterSubscriber {\n private hasCompleted: boolean = false;\n private hasSubscription: boolean = false;\n\n constructor(destination: Subscriber) {\n super(destination);\n }\n\n protected _next(value: T): void {\n if (!this.hasSubscription) {\n this.hasSubscription = true;\n this.add(innerSubscribe(value, new SimpleInnerSubscriber(this)));\n }\n }\n\n protected _complete(): void {\n this.hasCompleted = true;\n if (!this.hasSubscription) {\n this.destination.complete!();\n }\n }\n\n notifyComplete(): void {\n this.hasSubscription = false;\n if (this.hasCompleted) {\n this.destination.complete!();\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\nimport { map } from './map';\nimport { from } from '../observable/from';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\n\n/* tslint:disable:max-line-length */\nexport function exhaustMap>(project: (value: T, index: number) => O): OperatorFunction>;\n/** @deprecated resultSelector is no longer supported. Use inner map instead. */\nexport function exhaustMap>(project: (value: T, index: number) => O, resultSelector: undefined): OperatorFunction>;\n/** @deprecated resultSelector is no longer supported. Use inner map instead. */\nexport function exhaustMap(project: (value: T, index: number) => ObservableInput, resultSelector: (outerValue: T, innerValue: I, outerIndex: number, innerIndex: number) => R): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable only if the previous projected Observable has completed.\n *\n * Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link exhaust}.\n *\n * ![](exhaustMap.png)\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an (so-called \"inner\") Observable. When it projects a source value to\n * an Observable, the output Observable begins emitting the items emitted by\n * that projected Observable. However, `exhaustMap` ignores every new projected\n * Observable if the previous projected Observable has not yet completed. Once\n * that one completes, it will accept and flatten the next projected Observable\n * and repeat this process.\n *\n * ## Example\n * Run a finite timer for each click, only if there is no currently active timer\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { exhaustMap, take } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n * exhaustMap(ev => interval(1000).pipe(take(5)))\n * );\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link concatMap}\n * @see {@link exhaust}\n * @see {@link mergeMap}\n * @see {@link switchMap}\n *\n * @param {function(value: T, ?index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @return {Observable} An Observable containing projected Observables\n * of each item of the source, ignoring projected Observables that start before\n * their preceding Observable has completed.\n * @method exhaustMap\n * @owner Observable\n */\nexport function exhaustMap>(\n project: (value: T, index: number) => O,\n resultSelector?: (outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R,\n): OperatorFunction|R> {\n if (resultSelector) {\n // DEPRECATED PATH\n return (source: Observable) => source.pipe(\n exhaustMap((a, i) => from(project(a, i)).pipe(\n map((b: any, ii: any) => resultSelector(a, b, i, ii)),\n )),\n );\n }\n return (source: Observable) =>\n source.lift(new ExhaustMapOperator(project));\n}\n\nclass ExhaustMapOperator implements Operator {\n constructor(private project: (value: T, index: number) => ObservableInput) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new ExhaustMapSubscriber(subscriber, this.project));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass ExhaustMapSubscriber extends SimpleOuterSubscriber {\n private hasSubscription = false;\n private hasCompleted = false;\n private index = 0;\n\n constructor(destination: Subscriber,\n private project: (value: T, index: number) => ObservableInput) {\n super(destination);\n }\n\n protected _next(value: T): void {\n if (!this.hasSubscription) {\n this.tryNext(value);\n }\n }\n\n private tryNext(value: T): void {\n let result: ObservableInput;\n const index = this.index++;\n try {\n result = this.project(value, index);\n } catch (err) {\n this.destination.error!(err);\n return;\n }\n this.hasSubscription = true;\n this._innerSub(result);\n }\n\n private _innerSub(result: ObservableInput): void {\n const innerSubscriber = new SimpleInnerSubscriber(this);\n const destination = this.destination as Subscription;\n destination.add(innerSubscriber);\n const innerSubscription = innerSubscribe(result, innerSubscriber);\n // The returned subscription will usually be the subscriber that was\n // passed. However, interop subscribers will be wrapped and for\n // unsubscriptions to chain correctly, the wrapper needs to be added, too.\n if (innerSubscription !== innerSubscriber) {\n destination.add(innerSubscription);\n }\n }\n\n protected _complete(): void {\n this.hasCompleted = true;\n if (!this.hasSubscription) {\n this.destination.complete!();\n }\n this.unsubscribe();\n }\n\n notifyNext(innerValue: R): void {\n this.destination.next!(innerValue);\n }\n\n notifyError(err: any): void {\n this.destination.error!(err);\n }\n\n notifyComplete(): void {\n this.hasSubscription = false;\n if (this.hasCompleted) {\n this.destination.complete!();\n }\n }\n}\n","import { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { MonoTypeOperatorFunction, OperatorFunction, ObservableInput, SchedulerLike } from '../types';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\n\n/* tslint:disable:max-line-length */\nexport function expand(project: (value: T, index: number) => ObservableInput, concurrent?: number, scheduler?: SchedulerLike): OperatorFunction;\nexport function expand(project: (value: T, index: number) => ObservableInput, concurrent?: number, scheduler?: SchedulerLike): MonoTypeOperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Recursively projects each source value to an Observable which is merged in\n * the output Observable.\n *\n * It's similar to {@link mergeMap}, but applies the\n * projection function to every source value as well as every output value.\n * It's recursive.\n *\n * ![](expand.png)\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an Observable, and then merging those resulting Observables and\n * emitting the results of this merger. *Expand* will re-emit on the output\n * Observable every source value. Then, each output value is given to the\n * `project` function which returns an inner Observable to be merged on the\n * output Observable. Those output values resulting from the projection are also\n * given to the `project` function to produce new output values. This is how\n * *expand* behaves recursively.\n *\n * ## Example\n * Start emitting the powers of two on every click, at most 10 of them\n * ```ts\n * import { fromEvent, of } from 'rxjs';\n * import { expand, mapTo, delay, take } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const powersOfTwo = clicks.pipe(\n * mapTo(1),\n * expand(x => of(2 * x).pipe(delay(1000))),\n * take(10),\n * );\n * powersOfTwo.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link mergeMap}\n * @see {@link mergeScan}\n *\n * @param {function(value: T, index: number) => Observable} project A function\n * that, when applied to an item emitted by the source or the output Observable,\n * returns an Observable.\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input\n * Observables being subscribed to concurrently.\n * @param {SchedulerLike} [scheduler=null] The {@link SchedulerLike} to use for subscribing to\n * each projected inner Observable.\n * @return {Observable} An Observable that emits the source values and also\n * result of applying the projection function to each value emitted on the\n * output Observable and and merging the results of the Observables obtained\n * from this transformation.\n * @method expand\n * @owner Observable\n */\nexport function expand(project: (value: T, index: number) => ObservableInput,\n concurrent: number = Number.POSITIVE_INFINITY,\n scheduler?: SchedulerLike): OperatorFunction {\n concurrent = (concurrent || 0) < 1 ? Number.POSITIVE_INFINITY : concurrent;\n\n return (source: Observable) => source.lift(new ExpandOperator(project, concurrent, scheduler));\n}\n\nexport class ExpandOperator implements Operator {\n constructor(private project: (value: T, index: number) => ObservableInput,\n private concurrent: number,\n private scheduler?: SchedulerLike) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new ExpandSubscriber(subscriber, this.project, this.concurrent, this.scheduler));\n }\n}\n\ninterface DispatchArg {\n subscriber: ExpandSubscriber;\n result: ObservableInput;\n value: any;\n index: number;\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class ExpandSubscriber extends SimpleOuterSubscriber {\n private index: number = 0;\n private active: number = 0;\n private hasCompleted: boolean = false;\n private buffer?: any[];\n\n constructor(destination: Subscriber,\n private project: (value: T, index: number) => ObservableInput,\n private concurrent: number,\n private scheduler?: SchedulerLike) {\n super(destination);\n if (concurrent < Number.POSITIVE_INFINITY) {\n this.buffer = [];\n }\n }\n\n private static dispatch(arg: DispatchArg): void {\n const {subscriber, result, value, index} = arg;\n subscriber.subscribeToProjection(result, value, index);\n }\n\n protected _next(value: any): void {\n const destination = this.destination;\n\n if (destination.closed) {\n this._complete();\n return;\n }\n\n const index = this.index++;\n if (this.active < this.concurrent) {\n destination.next!(value);\n try {\n const { project } = this;\n const result = project(value, index);\n if (!this.scheduler) {\n this.subscribeToProjection(result, value, index);\n } else {\n const state: DispatchArg = { subscriber: this, result, value, index };\n const destination = this.destination as Subscription;\n destination.add(this.scheduler.schedule>(ExpandSubscriber.dispatch as any, 0, state));\n }\n } catch (e) {\n destination.error!(e);\n }\n } else {\n this.buffer!.push(value);\n }\n }\n\n private subscribeToProjection(result: any, value: T, index: number): void {\n this.active++;\n const destination = this.destination as Subscription;\n destination.add(innerSubscribe(result, new SimpleInnerSubscriber(this)));\n }\n\n protected _complete(): void {\n this.hasCompleted = true;\n if (this.hasCompleted && this.active === 0) {\n this.destination.complete!();\n }\n this.unsubscribe();\n }\n\n notifyNext(innerValue: R): void {\n this._next(innerValue);\n }\n\n notifyComplete(): void {\n const buffer = this.buffer;\n this.active--;\n if (buffer && buffer.length > 0) {\n this._next(buffer.shift());\n }\n if (this.hasCompleted && this.active === 0) {\n this.destination.complete!();\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { Observable } from '../Observable';\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\n\n/**\n * Returns an Observable that mirrors the source Observable, but will call a specified function when\n * the source terminates on complete or error.\n * @param {function} callback Function to be called when source terminates.\n * @return {Observable} An Observable that mirrors the source, but will call the specified function on termination.\n * @method finally\n * @owner Observable\n */\nexport function finalize(callback: () => void): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new FinallyOperator(callback));\n}\n\nclass FinallyOperator implements Operator {\n constructor(private callback: () => void) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new FinallySubscriber(subscriber, this.callback));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass FinallySubscriber extends Subscriber {\n constructor(destination: Subscriber, callback: () => void) {\n super(destination);\n this.add(new Subscription(callback));\n }\n}\n","import {Observable} from '../Observable';\nimport {Operator} from '../Operator';\nimport {Subscriber} from '../Subscriber';\nimport {OperatorFunction} from '../types';\n\nexport function find(predicate: (value: T, index: number, source: Observable) => value is S,\n thisArg?: any): OperatorFunction;\nexport function find(predicate: (value: T, index: number, source: Observable) => boolean,\n thisArg?: any): OperatorFunction;\n/**\n * Emits only the first value emitted by the source Observable that meets some\n * condition.\n *\n * Finds the first value that passes some test and emits\n * that.\n *\n * ![](find.png)\n *\n * `find` searches for the first item in the source Observable that matches the\n * specified condition embodied by the `predicate`, and returns the first\n * occurrence in the source. Unlike {@link first}, the `predicate` is required\n * in `find`, and does not emit an error if a valid value is not found.\n *\n * ## Example\n * Find and emit the first click that happens on a DIV element\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { find } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(find(ev => ev.target.tagName === 'DIV'));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link filter}\n * @see {@link first}\n * @see {@link findIndex}\n * @see {@link take}\n *\n * @param {function(value: T, index: number, source: Observable): boolean} predicate\n * A function called with each item to test for condition matching.\n * @param {any} [thisArg] An optional argument to determine the value of `this`\n * in the `predicate` function.\n * @return {Observable} An Observable of the first item that matches the\n * condition.\n * @method find\n * @owner Observable\n */\nexport function find(predicate: (value: T, index: number, source: Observable) => boolean,\n thisArg?: any): OperatorFunction {\n if (typeof predicate !== 'function') {\n throw new TypeError('predicate is not a function');\n }\n return (source: Observable) => source.lift(new FindValueOperator(predicate, source, false, thisArg)) as Observable;\n}\n\nexport class FindValueOperator implements Operator {\n constructor(private predicate: (value: T, index: number, source: Observable) => boolean,\n private source: Observable,\n private yieldIndex: boolean,\n private thisArg?: any) {\n }\n\n call(observer: Subscriber, source: any): any {\n return source.subscribe(new FindValueSubscriber(observer, this.predicate, this.source, this.yieldIndex, this.thisArg));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class FindValueSubscriber extends Subscriber {\n private index: number = 0;\n\n constructor(destination: Subscriber,\n private predicate: (value: T, index: number, source: Observable) => boolean,\n private source: Observable,\n private yieldIndex: boolean,\n private thisArg?: any) {\n super(destination);\n }\n\n private notifyComplete(value: any): void {\n const destination = this.destination;\n\n destination.next(value);\n destination.complete();\n this.unsubscribe();\n }\n\n protected _next(value: T): void {\n const {predicate, thisArg} = this;\n const index = this.index++;\n try {\n const result = predicate.call(thisArg || this, value, index, this.source);\n if (result) {\n this.notifyComplete(this.yieldIndex ? index : value);\n }\n } catch (err) {\n this.destination.error(err);\n }\n }\n\n protected _complete(): void {\n this.notifyComplete(this.yieldIndex ? -1 : undefined);\n }\n}\n","import { Observable } from '../Observable';\nimport { FindValueOperator } from '../operators/find';\nimport { OperatorFunction } from '../types';\n/**\n * Emits only the index of the first value emitted by the source Observable that\n * meets some condition.\n *\n * It's like {@link find}, but emits the index of the\n * found value, not the value itself.\n *\n * ![](findIndex.png)\n *\n * `findIndex` searches for the first item in the source Observable that matches\n * the specified condition embodied by the `predicate`, and returns the\n * (zero-based) index of the first occurrence in the source. Unlike\n * {@link first}, the `predicate` is required in `findIndex`, and does not emit\n * an error if a valid value is not found.\n *\n * ## Example\n * Emit the index of first click that happens on a DIV element\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { findIndex } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(findIndex(ev => ev.target.tagName === 'DIV'));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link filter}\n * @see {@link find}\n * @see {@link first}\n * @see {@link take}\n *\n * @param {function(value: T, index: number, source: Observable): boolean} predicate\n * A function called with each item to test for condition matching.\n * @param {any} [thisArg] An optional argument to determine the value of `this`\n * in the `predicate` function.\n * @return {Observable} An Observable of the index of the first item that\n * matches the condition.\n * @method find\n * @owner Observable\n */\nexport function findIndex(predicate: (value: T, index: number, source: Observable) => boolean,\n thisArg?: any): OperatorFunction {\n return (source: Observable) => source.lift(new FindValueOperator(predicate, source, true, thisArg)) as Observable;\n}\n","import { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { EmptyError } from '../util/EmptyError';\nimport { OperatorFunction } from '../../internal/types';\nimport { filter } from './filter';\nimport { take } from './take';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { identity } from '../util/identity';\n\n/* tslint:disable:max-line-length */\nexport function first(\n predicate?: null,\n defaultValue?: D\n): OperatorFunction;\nexport function first(\n predicate: (value: T, index: number, source: Observable) => value is S,\n defaultValue?: S\n): OperatorFunction;\nexport function first(\n predicate: (value: T, index: number, source: Observable) => boolean,\n defaultValue?: D\n): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Emits only the first value (or the first value that meets some condition)\n * emitted by the source Observable.\n *\n * Emits only the first value. Or emits only the first\n * value that passes some test.\n *\n * ![](first.png)\n *\n * If called with no arguments, `first` emits the first value of the source\n * Observable, then completes. If called with a `predicate` function, `first`\n * emits the first value of the source that matches the specified condition. It\n * may also take a deprecated `resultSelector` function to produce the output\n * value from the input value, and a `defaultValue` to emit in case the source\n * completes before it is able to emit a valid value. Throws an error if\n * `defaultValue` was not provided and a matching element is not found.\n *\n * ## Examples\n * Emit only the first click that happens on the DOM\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { first } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(first());\n * result.subscribe(x => console.log(x));\n * ```\n *\n * Emits the first click that happens on a DIV\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { first } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(first(ev => ev.target.tagName === 'DIV'));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link filter}\n * @see {@link find}\n * @see {@link take}\n *\n * @throws {EmptyError} Delivers an EmptyError to the Observer's `error`\n * callback if the Observable completes before any `next` notification was sent.\n *\n * @param {function(value: T, index: number, source: Observable): boolean} [predicate]\n * An optional function called with each item to test for condition matching.\n * @param {R} [defaultValue] The default value emitted in case no valid value\n * was found on the source.\n * @return {Observable} An Observable of the first item that matches the\n * condition.\n * @method first\n * @owner Observable\n */\nexport function first(\n predicate?: ((value: T, index: number, source: Observable) => boolean) | null,\n defaultValue?: D\n): OperatorFunction {\n const hasDefaultValue = arguments.length >= 2;\n return (source: Observable) => source.pipe(\n predicate ? filter((v, i) => predicate(v, i, source)) : identity,\n take(1),\n hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(() => new EmptyError()),\n );\n}\n","import { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { OperatorFunction } from '../types';\n\n/**\n * Ignores all items emitted by the source Observable and only passes calls of `complete` or `error`.\n *\n * ![](ignoreElements.png)\n *\n * ## Examples\n * ### Ignores emitted values, reacts to observable's completion.\n * ```ts\n * import { of } from 'rxjs';\n * import { ignoreElements } from 'rxjs/operators';\n *\n * of('you', 'talking', 'to', 'me').pipe(\n * ignoreElements(),\n * )\n * .subscribe(\n * word => console.log(word),\n * err => console.log('error:', err),\n * () => console.log('the end'),\n * );\n * // result:\n * // 'the end'\n * ```\n * @return {Observable} An empty Observable that only calls `complete`\n * or `error`, based on which one is called by the source Observable.\n * @method ignoreElements\n * @owner Observable\n */\nexport function ignoreElements(): OperatorFunction {\n return function ignoreElementsOperatorFunction(source: Observable) {\n return source.lift(new IgnoreElementsOperator());\n };\n}\n\nclass IgnoreElementsOperator implements Operator {\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new IgnoreElementsSubscriber(subscriber));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass IgnoreElementsSubscriber extends Subscriber {\n protected _next(unused: T): void {\n // Do nothing\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { OperatorFunction } from '../types';\n\n/**\n * Emits false if the input observable emits any values, or emits true if the\n * input observable completes without emitting any values.\n *\n * Tells whether any values are emitted by an observable\n *\n * ![](isEmpty.png)\n *\n * `isEmpty` transforms an Observable that emits values into an Observable that\n * emits a single boolean value representing whether or not any values were\n * emitted by the source Observable. As soon as the source Observable emits a\n * value, `isEmpty` will emit a `false` and complete. If the source Observable\n * completes having not emitted anything, `isEmpty` will emit a `true` and\n * complete.\n *\n * A similar effect could be achieved with {@link count}, but `isEmpty` can emit\n * a `false` value sooner.\n *\n * ## Examples\n *\n * Emit `false` for a non-empty Observable\n * ```javascript\n * import { Subject } from 'rxjs';\n * import { isEmpty } from 'rxjs/operators';\n *\n * const source = new Subject();\n * const result = source.pipe(isEmpty());\n * source.subscribe(x => console.log(x));\n * result.subscribe(x => console.log(x));\n * source.next('a');\n * source.next('b');\n * source.next('c');\n * source.complete();\n *\n * // Results in:\n * // a\n * // false\n * // b\n * // c\n * ```\n *\n * Emit `true` for an empty Observable\n * ```javascript\n * import { EMPTY } from 'rxjs';\n * import { isEmpty } from 'rxjs/operators';\n *\n * const result = EMPTY.pipe(isEmpty());\n * result.subscribe(x => console.log(x));\n * // Results in:\n * // true\n * ```\n *\n * @see {@link count}\n * @see {@link EMPTY}\n *\n * @return {OperatorFunction} An Observable of a boolean value indicating whether observable was empty or not\n * @method isEmpty\n * @owner Observable\n */\n\nexport function isEmpty(): OperatorFunction {\n return (source: Observable) => source.lift(new IsEmptyOperator());\n}\n\nclass IsEmptyOperator implements Operator {\n call (observer: Subscriber, source: any): any {\n return source.subscribe(new IsEmptySubscriber(observer));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass IsEmptySubscriber extends Subscriber {\n constructor(destination: Subscriber) {\n super(destination);\n }\n\n private notifyComplete(isEmpty: boolean): void {\n const destination = this.destination;\n\n destination.next(isEmpty);\n destination.complete();\n }\n\n protected _next(value: boolean) {\n this.notifyComplete(false);\n }\n\n protected _complete() {\n this.notifyComplete(true);\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { ArgumentOutOfRangeError } from '../util/ArgumentOutOfRangeError';\nimport { empty } from '../observable/empty';\nimport { Observable } from '../Observable';\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\n\n/**\n * Emits only the last `count` values emitted by the source Observable.\n *\n * Remembers the latest `count` values, then emits those\n * only when the source completes.\n *\n * ![](takeLast.png)\n *\n * `takeLast` returns an Observable that emits at most the last `count` values\n * emitted by the source Observable. If the source emits fewer than `count`\n * values then all of its values are emitted. This operator must wait until the\n * `complete` notification emission from the source in order to emit the `next`\n * values on the output Observable, because otherwise it is impossible to know\n * whether or not more values will be emitted on the source. For this reason,\n * all values are emitted synchronously, followed by the complete notification.\n *\n * ## Example\n * Take the last 3 values of an Observable with many values\n * ```ts\n * import { range } from 'rxjs';\n * import { takeLast } from 'rxjs/operators';\n *\n * const many = range(1, 100);\n * const lastThree = many.pipe(takeLast(3));\n * lastThree.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link take}\n * @see {@link takeUntil}\n * @see {@link takeWhile}\n * @see {@link skip}\n *\n * @throws {ArgumentOutOfRangeError} When using `takeLast(i)`, it delivers an\n * ArgumentOutOrRangeError to the Observer's `error` callback if `i < 0`.\n *\n * @param {number} count The maximum number of values to emit from the end of\n * the sequence of values emitted by the source Observable.\n * @return {Observable} An Observable that emits at most the last count\n * values emitted by the source Observable.\n * @method takeLast\n * @owner Observable\n */\nexport function takeLast(count: number): MonoTypeOperatorFunction {\n return function takeLastOperatorFunction(source: Observable): Observable {\n if (count === 0) {\n return empty();\n } else {\n return source.lift(new TakeLastOperator(count));\n }\n };\n}\n\nclass TakeLastOperator implements Operator {\n constructor(private total: number) {\n if (this.total < 0) {\n throw new ArgumentOutOfRangeError;\n }\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new TakeLastSubscriber(subscriber, this.total));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass TakeLastSubscriber extends Subscriber {\n private ring: Array = new Array();\n private count: number = 0;\n\n constructor(destination: Subscriber, private total: number) {\n super(destination);\n }\n\n protected _next(value: T): void {\n const ring = this.ring;\n const total = this.total;\n const count = this.count++;\n\n if (ring.length < total) {\n ring.push(value);\n } else {\n const index = count % total;\n ring[index] = value;\n }\n }\n\n protected _complete(): void {\n const destination = this.destination;\n let count = this.count;\n\n if (count > 0) {\n const total = this.count >= this.total ? this.total : this.count;\n const ring = this.ring;\n\n for (let i = 0; i < total; i++) {\n const idx = (count++) % total;\n destination.next(ring[idx]);\n }\n }\n\n destination.complete();\n }\n}\n","import { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { EmptyError } from '../util/EmptyError';\nimport { OperatorFunction } from '../../internal/types';\nimport { filter } from './filter';\nimport { takeLast } from './takeLast';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { identity } from '../util/identity';\n\n/* tslint:disable:max-line-length */\nexport function last(\n predicate?: null,\n defaultValue?: D\n): OperatorFunction;\nexport function last(\n predicate: (value: T, index: number, source: Observable) => value is S,\n defaultValue?: S\n): OperatorFunction;\nexport function last(\n predicate: (value: T, index: number, source: Observable) => boolean,\n defaultValue?: D\n): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Returns an Observable that emits only the last item emitted by the source Observable.\n * It optionally takes a predicate function as a parameter, in which case, rather than emitting\n * the last item from the source Observable, the resulting Observable will emit the last item\n * from the source Observable that satisfies the predicate.\n *\n * ![](last.png)\n *\n * @throws {EmptyError} Delivers an EmptyError to the Observer's `error`\n * callback if the Observable completes before any `next` notification was sent.\n * @param {function} [predicate] - The condition any source emitted item has to satisfy.\n * @param {any} [defaultValue] - An optional default value to provide if last\n * predicate isn't met or no values were emitted.\n * @return {Observable} An Observable that emits only the last item satisfying the given condition\n * from the source, or an NoSuchElementException if no such items are emitted.\n * @throws - Throws if no items that match the predicate are emitted by the source Observable.\n */\nexport function last(\n predicate?: ((value: T, index: number, source: Observable) => boolean) | null,\n defaultValue?: D\n): OperatorFunction {\n const hasDefaultValue = arguments.length >= 2;\n return (source: Observable) => source.pipe(\n predicate ? filter((v, i) => predicate(v, i, source)) : identity,\n takeLast(1),\n hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(() => new EmptyError()),\n );\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { OperatorFunction } from '../types';\n\n/**\n * Emits the given constant value on the output Observable every time the source\n * Observable emits a value.\n *\n * Like {@link map}, but it maps every source value to\n * the same output value every time.\n *\n * ![](mapTo.png)\n *\n * Takes a constant `value` as argument, and emits that whenever the source\n * Observable emits a value. In other words, ignores the actual source value,\n * and simply uses the emission moment to know when to emit the given `value`.\n *\n * ## Example\n * Map every click to the string 'Hi'\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { mapTo } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const greetings = clicks.pipe(mapTo('Hi'));\n * greetings.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link map}\n *\n * @param {any} value The value to map each source value to.\n * @return {Observable} An Observable that emits the given `value` every time\n * the source Observable emits something.\n * @method mapTo\n * @owner Observable\n */\nexport function mapTo(value: R): OperatorFunction {\n return (source: Observable) => source.lift(new MapToOperator(value));\n}\n\nclass MapToOperator implements Operator {\n\n value: R;\n\n constructor(value: R) {\n this.value = value;\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new MapToSubscriber(subscriber, this.value));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass MapToSubscriber extends Subscriber {\n\n value: R;\n\n constructor(destination: Subscriber, value: R) {\n super(destination);\n this.value = value;\n }\n\n protected _next(x: T) {\n this.destination.next(this.value);\n }\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Notification } from '../Notification';\nimport { OperatorFunction } from '../types';\n\n/**\n * Represents all of the notifications from the source Observable as `next`\n * emissions marked with their original types within {@link Notification}\n * objects.\n *\n * Wraps `next`, `error` and `complete` emissions in\n * {@link Notification} objects, emitted as `next` on the output Observable.\n * \n *\n * ![](materialize.png)\n *\n * `materialize` returns an Observable that emits a `next` notification for each\n * `next`, `error`, or `complete` emission of the source Observable. When the\n * source Observable emits `complete`, the output Observable will emit `next` as\n * a Notification of type \"complete\", and then it will emit `complete` as well.\n * When the source Observable emits `error`, the output will emit `next` as a\n * Notification of type \"error\", and then `complete`.\n *\n * This operator is useful for producing metadata of the source Observable, to\n * be consumed as `next` emissions. Use it in conjunction with\n * {@link dematerialize}.\n *\n * ## Example\n * Convert a faulty Observable to an Observable of Notifications\n * ```ts\n * import { of } from 'rxjs';\n * import { materialize, map } from 'rxjs/operators';\n *\n * const letters = of('a', 'b', 13, 'd');\n * const upperCase = letters.pipe(map(x => x.toUpperCase()));\n * const materialized = upperCase.pipe(materialize());\n * materialized.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // - Notification {kind: \"N\", value: \"A\", error: undefined, hasValue: true}\n * // - Notification {kind: \"N\", value: \"B\", error: undefined, hasValue: true}\n * // - Notification {kind: \"E\", value: undefined, error: TypeError:\n * // x.toUpperCase is not a function at MapSubscriber.letters.map.x\n * // [as project] (http://1…, hasValue: false}\n * ```\n *\n * @see {@link Notification}\n * @see {@link dematerialize}\n *\n * @return {Observable>} An Observable that emits\n * {@link Notification} objects that wrap the original emissions from the source\n * Observable with metadata.\n * @method materialize\n * @owner Observable\n */\nexport function materialize(): OperatorFunction> {\n return function materializeOperatorFunction(source: Observable) {\n return source.lift(new MaterializeOperator());\n };\n}\n\nclass MaterializeOperator implements Operator> {\n call(subscriber: Subscriber>, source: any): any {\n return source.subscribe(new MaterializeSubscriber(subscriber));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass MaterializeSubscriber extends Subscriber {\n constructor(destination: Subscriber>) {\n super(destination);\n }\n\n protected _next(value: T) {\n this.destination.next(Notification.createNext(value));\n }\n\n protected _error(err: any) {\n const destination = this.destination;\n destination.next(Notification.createError(err));\n destination.complete();\n }\n\n protected _complete() {\n const destination = this.destination;\n destination.next(Notification.createComplete());\n destination.complete();\n }\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { OperatorFunction, MonoTypeOperatorFunction } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function scan(accumulator: (acc: R, value: T, index: number) => R, seed: R): OperatorFunction;\nexport function scan(accumulator: (acc: T, value: T, index: number) => T, seed?: T): MonoTypeOperatorFunction;\nexport function scan(accumulator: (acc: R, value: T, index: number) => R): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Applies an accumulator function over the source Observable, and returns each\n * intermediate result, with an optional seed value.\n *\n * It's like {@link reduce}, but emits the current\n * accumulation whenever the source emits a value.\n *\n * ![](scan.png)\n *\n * Combines together all values emitted on the source, using an accumulator\n * function that knows how to join a new source value into the accumulation from\n * the past. Is similar to {@link reduce}, but emits the intermediate\n * accumulations.\n *\n * Returns an Observable that applies a specified `accumulator` function to each\n * item emitted by the source Observable. If a `seed` value is specified, then\n * that value will be used as the initial value for the accumulator. If no seed\n * value is specified, the first item of the source is used as the seed.\n *\n * ## Example\n * Count the number of click events\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { scan, mapTo } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const ones = clicks.pipe(mapTo(1));\n * const seed = 0;\n * const count = ones.pipe(scan((acc, one) => acc + one, seed));\n * count.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link expand}\n * @see {@link mergeScan}\n * @see {@link reduce}\n *\n * @param {function(acc: R, value: T, index: number): R} accumulator\n * The accumulator function called on each source value.\n * @param {T|R} [seed] The initial accumulation value.\n * @return {Observable} An observable of the accumulated values.\n * @method scan\n * @owner Observable\n */\nexport function scan(accumulator: (acc: R, value: T, index: number) => R, seed?: T | R): OperatorFunction {\n let hasSeed = false;\n // providing a seed of `undefined` *should* be valid and trigger\n // hasSeed! so don't use `seed !== undefined` checks!\n // For this reason, we have to check it here at the original call site\n // otherwise inside Operator/Subscriber we won't know if `undefined`\n // means they didn't provide anything or if they literally provided `undefined`\n if (arguments.length >= 2) {\n hasSeed = true;\n }\n\n return function scanOperatorFunction(source: Observable): Observable {\n return source.lift(new ScanOperator(accumulator, seed, hasSeed));\n };\n}\n\nclass ScanOperator implements Operator {\n constructor(private accumulator: (acc: R, value: T, index: number) => R, private seed?: T | R, private hasSeed: boolean = false) {}\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new ScanSubscriber(subscriber, this.accumulator, this.seed, this.hasSeed));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass ScanSubscriber extends Subscriber {\n private index: number = 0;\n\n get seed(): T | R {\n return this._seed;\n }\n\n set seed(value: T | R) {\n this.hasSeed = true;\n this._seed = value;\n }\n\n constructor(destination: Subscriber, private accumulator: (acc: R, value: T, index: number) => R, private _seed: T | R,\n private hasSeed: boolean) {\n super(destination);\n }\n\n protected _next(value: T): void {\n if (!this.hasSeed) {\n this.seed = value;\n this.destination.next(value);\n } else {\n return this._tryNext(value);\n }\n }\n\n private _tryNext(value: T): void {\n const index = this.index++;\n let result: any;\n try {\n result = this.accumulator(this.seed, value, index);\n } catch (err) {\n this.destination.error(err);\n }\n this.seed = result;\n this.destination.next(result);\n }\n}\n","import { Observable } from '../Observable';\nimport { scan } from './scan';\nimport { takeLast } from './takeLast';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { OperatorFunction, MonoTypeOperatorFunction } from '../types';\nimport { pipe } from '../util/pipe';\n\n/* tslint:disable:max-line-length */\nexport function reduce(accumulator: (acc: R, value: T, index: number) => R, seed: R): OperatorFunction;\nexport function reduce(accumulator: (acc: T, value: T, index: number) => T, seed?: T): MonoTypeOperatorFunction;\nexport function reduce(accumulator: (acc: R, value: T, index: number) => R): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Applies an accumulator function over the source Observable, and returns the\n * accumulated result when the source completes, given an optional seed value.\n *\n * Combines together all values emitted on the source,\n * using an accumulator function that knows how to join a new source value into\n * the accumulation from the past.\n *\n * ![](reduce.png)\n *\n * Like\n * [Array.prototype.reduce()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce),\n * `reduce` applies an `accumulator` function against an accumulation and each\n * value of the source Observable (from the past) to reduce it to a single\n * value, emitted on the output Observable. Note that `reduce` will only emit\n * one value, only when the source Observable completes. It is equivalent to\n * applying operator {@link scan} followed by operator {@link last}.\n *\n * Returns an Observable that applies a specified `accumulator` function to each\n * item emitted by the source Observable. If a `seed` value is specified, then\n * that value will be used as the initial value for the accumulator. If no seed\n * value is specified, the first item of the source is used as the seed.\n *\n * ## Example\n * Count the number of click events that happened in 5 seconds\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { reduce, takeUntil, mapTo } from 'rxjs/operators';\n *\n * const clicksInFiveSeconds = fromEvent(document, 'click').pipe(\n * takeUntil(interval(5000)),\n * );\n * const ones = clicksInFiveSeconds.pipe(mapTo(1));\n * const seed = 0;\n * const count = ones.pipe(reduce((acc, one) => acc + one, seed));\n * count.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link count}\n * @see {@link expand}\n * @see {@link mergeScan}\n * @see {@link scan}\n *\n * @param {function(acc: R, value: T, index: number): R} accumulator The accumulator function\n * called on each source value.\n * @param {R} [seed] The initial accumulation value.\n * @return {Observable} An Observable that emits a single value that is the\n * result of accumulating the values emitted by the source Observable.\n * @method reduce\n * @owner Observable\n */\nexport function reduce(accumulator: (acc: T | R, value: T, index?: number) => T | R, seed?: T | R): OperatorFunction {\n // providing a seed of `undefined` *should* be valid and trigger\n // hasSeed! so don't use `seed !== undefined` checks!\n // For this reason, we have to check it here at the original call site\n // otherwise inside Operator/Subscriber we won't know if `undefined`\n // means they didn't provide anything or if they literally provided `undefined`\n if (arguments.length >= 2) {\n return function reduceOperatorFunctionWithSeed(source: Observable): Observable {\n return pipe(scan(accumulator, seed), takeLast(1), defaultIfEmpty(seed))(source);\n };\n }\n return function reduceOperatorFunction(source: Observable): Observable {\n return pipe(\n scan((acc, value, index) => accumulator(acc, value, index + 1)),\n takeLast(1),\n )(source);\n };\n}\n","import { reduce } from './reduce';\nimport { MonoTypeOperatorFunction } from '../types';\n\n/**\n * The Max operator operates on an Observable that emits numbers (or items that can be compared with a provided function),\n * and when source Observable completes it emits a single item: the item with the largest value.\n *\n * ![](max.png)\n *\n * ## Examples\n * Get the maximal value of a series of numbers\n * ```ts\n * import { of } from 'rxjs';\n * import { max } from 'rxjs/operators';\n *\n * of(5, 4, 7, 2, 8).pipe(\n * max(),\n * )\n * .subscribe(x => console.log(x)); // -> 8\n * ```\n *\n * Use a comparer function to get the maximal item\n * ```typescript\n * import { of } from 'rxjs';\n * import { max } from 'rxjs/operators';\n *\n * interface Person {\n * age: number,\n * name: string\n * }\n * of(\n * {age: 7, name: 'Foo'},\n * {age: 5, name: 'Bar'},\n * {age: 9, name: 'Beer'},\n * ).pipe(\n * max((a: Person, b: Person) => a.age < b.age ? -1 : 1),\n * )\n * .subscribe((x: Person) => console.log(x.name)); // -> 'Beer'\n * ```\n *\n * @see {@link min}\n *\n * @param {Function} [comparer] - Optional comparer function that it will use instead of its default to compare the\n * value of two items.\n * @return {Observable} An Observable that emits item with the largest value.\n * @method max\n * @owner Observable\n */\nexport function max(comparer?: (x: T, y: T) => number): MonoTypeOperatorFunction {\n const max: (x: T, y: T) => T = (typeof comparer === 'function')\n ? (x, y) => comparer(x, y) > 0 ? x : y\n : (x, y) => x > y ? x : y;\n\n return reduce(max);\n}\n","import { merge as mergeStatic } from '../observable/merge';\nimport { Observable } from '../Observable';\nimport { ObservableInput, OperatorFunction, MonoTypeOperatorFunction, SchedulerLike } from '../types';\n\n/* tslint:disable:max-line-length */\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(scheduler?: SchedulerLike): MonoTypeOperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(concurrent?: number, scheduler?: SchedulerLike): MonoTypeOperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(v2: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(v2: ObservableInput, concurrent?: number, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(v2: ObservableInput, v3: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(v2: ObservableInput, v3: ObservableInput, concurrent?: number, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, concurrent?: number, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, concurrent?: number, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput, concurrent?: number, scheduler?: SchedulerLike): OperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(...observables: Array | SchedulerLike | number>): MonoTypeOperatorFunction;\n/** @deprecated Deprecated in favor of static merge. */\nexport function merge(...observables: Array | SchedulerLike | number>): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * @deprecated Deprecated in favor of static {@link merge}.\n */\nexport function merge(...observables: Array | SchedulerLike | number>): OperatorFunction {\n return (source: Observable) => source.lift.call(mergeStatic(source, ...observables));\n}\n","import { Observable } from '../Observable';\nimport { OperatorFunction, ObservedValueOf } from '../../internal/types';\nimport { mergeMap } from './mergeMap';\nimport { ObservableInput } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function mergeMapTo>(innerObservable: O, concurrent?: number): OperatorFunction>;\n/** @deprecated */\nexport function mergeMapTo>(innerObservable: O, resultSelector: (outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R, concurrent?: number): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to the same Observable which is merged multiple\n * times in the output Observable.\n *\n * It's like {@link mergeMap}, but maps each value always\n * to the same inner Observable.\n *\n * ![](mergeMapTo.png)\n *\n * Maps each source value to the given Observable `innerObservable` regardless\n * of the source value, and then merges those resulting Observables into one\n * single Observable, which is the output Observable.\n *\n * ## Example\n * For each click event, start an interval Observable ticking every 1 second\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { mergeMapTo } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(mergeMapTo(interval(1000)));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link concatMapTo}\n * @see {@link merge}\n * @see {@link mergeAll}\n * @see {@link mergeMap}\n * @see {@link mergeScan}\n * @see {@link switchMapTo}\n *\n * @param {ObservableInput} innerObservable An Observable to replace each value from\n * the source Observable.\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input\n * Observables being subscribed to concurrently.\n * @return {Observable} An Observable that emits items from the given\n * `innerObservable`\n * @method mergeMapTo\n * @owner Observable\n */\nexport function mergeMapTo>(\n innerObservable: O,\n resultSelector?: ((outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R) | number,\n concurrent: number = Number.POSITIVE_INFINITY\n): OperatorFunction|R> {\n if (typeof resultSelector === 'function') {\n return mergeMap(() => innerObservable, resultSelector, concurrent);\n }\n if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return mergeMap(() => innerObservable, concurrent);\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { ObservableInput, OperatorFunction } from '../types';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\n\n/**\n * Applies an accumulator function over the source Observable where the\n * accumulator function itself returns an Observable, then each intermediate\n * Observable returned is merged into the output Observable.\n *\n * It's like {@link scan}, but the Observables returned\n * by the accumulator are merged into the outer Observable.\n *\n * ## Example\n * Count the number of click events\n * ```ts\n * import { fromEvent, of } from 'rxjs';\n * import { mapTo, mergeScan } from 'rxjs/operators';\n *\n * const click$ = fromEvent(document, 'click');\n * const one$ = click$.pipe(mapTo(1));\n * const seed = 0;\n * const count$ = one$.pipe(\n * mergeScan((acc, one) => of(acc + one), seed),\n * );\n * count$.subscribe(x => console.log(x));\n *\n * // Results:\n * // 1\n * // 2\n * // 3\n * // 4\n * // ...and so on for each click\n * ```\n *\n * @param {function(acc: R, value: T): Observable} accumulator\n * The accumulator function called on each source value.\n * @param seed The initial accumulation value.\n * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of\n * input Observables being subscribed to concurrently.\n * @return {Observable} An observable of the accumulated values.\n * @method mergeScan\n * @owner Observable\n */\nexport function mergeScan(accumulator: (acc: R, value: T, index: number) => ObservableInput,\n seed: R,\n concurrent: number = Number.POSITIVE_INFINITY): OperatorFunction {\n return (source: Observable) => source.lift(new MergeScanOperator(accumulator, seed, concurrent));\n}\n\nexport class MergeScanOperator implements Operator {\n constructor(private accumulator: (acc: R, value: T, index: number) => ObservableInput,\n private seed: R,\n private concurrent: number) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new MergeScanSubscriber(\n subscriber, this.accumulator, this.seed, this.concurrent\n ));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class MergeScanSubscriber extends SimpleOuterSubscriber {\n private hasValue: boolean = false;\n private hasCompleted: boolean = false;\n private buffer: Observable[] = [];\n private active: number = 0;\n protected index: number = 0;\n\n constructor(destination: Subscriber,\n private accumulator: (acc: R, value: T, index: number) => ObservableInput,\n private acc: R,\n private concurrent: number) {\n super(destination);\n }\n\n protected _next(value: any): void {\n if (this.active < this.concurrent) {\n const index = this.index++;\n const destination = this.destination;\n let ish;\n try {\n const { accumulator } = this;\n ish = accumulator(this.acc, value, index);\n } catch (e) {\n return destination.error!(e);\n }\n this.active++;\n this._innerSub(ish);\n } else {\n this.buffer.push(value);\n }\n }\n\n private _innerSub(ish: any): void {\n const innerSubscriber = new SimpleInnerSubscriber(this);\n const destination = this.destination as Subscription;\n destination.add(innerSubscriber);\n const innerSubscription = innerSubscribe(ish, innerSubscriber);\n // The returned subscription will usually be the subscriber that was\n // passed. However, interop subscribers will be wrapped and for\n // unsubscriptions to chain correctly, the wrapper needs to be added, too.\n if (innerSubscription !== innerSubscriber) {\n destination.add(innerSubscription);\n }\n }\n\n protected _complete(): void {\n this.hasCompleted = true;\n if (this.active === 0 && this.buffer.length === 0) {\n if (this.hasValue === false) {\n this.destination.next!(this.acc);\n }\n this.destination.complete!();\n }\n this.unsubscribe();\n }\n\n notifyNext(innerValue: R): void {\n const { destination } = this;\n this.acc = innerValue;\n this.hasValue = true;\n destination.next!(innerValue);\n }\n\n notifyComplete(): void {\n const buffer = this.buffer;\n this.active--;\n if (buffer.length > 0) {\n this._next(buffer.shift());\n } else if (this.active === 0 && this.hasCompleted) {\n if (this.hasValue === false) {\n this.destination.next!(this.acc);\n }\n this.destination.complete!();\n }\n }\n}\n","import { reduce } from './reduce';\nimport { MonoTypeOperatorFunction } from '../types';\n\n/**\n * The Min operator operates on an Observable that emits numbers (or items that can be compared with a provided function),\n * and when source Observable completes it emits a single item: the item with the smallest value.\n *\n * ![](min.png)\n *\n * ## Examples\n * Get the minimal value of a series of numbers\n * ```ts\n * import { of } from 'rxjs';\n * import { min } from 'rxjs/operators';\n *\n * of(5, 4, 7, 2, 8).pipe(\n * min(),\n * )\n * .subscribe(x => console.log(x)); // -> 2\n * ```\n *\n * Use a comparer function to get the minimal item\n * ```typescript\n * import { of } from 'rxjs';\n * import { min } from 'rxjs/operators';\n *\n * interface Person {\n * age: number,\n * name: string\n * }\n * of(\n * {age: 7, name: 'Foo'},\n * {age: 5, name: 'Bar'},\n * {age: 9, name: 'Beer'},\n * ).pipe(\n * min( (a: Person, b: Person) => a.age < b.age ? -1 : 1),\n * )\n * .subscribe((x: Person) => console.log(x.name)); // -> 'Bar'\n * ```\n * @see {@link max}\n *\n * @param {Function} [comparer] - Optional comparer function that it will use instead of its default to compare the\n * value of two items.\n * @return {Observable} An Observable that emits item with the smallest value.\n * @method min\n * @owner Observable\n */\nexport function min(comparer?: (x: T, y: T) => number): MonoTypeOperatorFunction {\n const min: (x: T, y: T) => T = (typeof comparer === 'function')\n ? (x, y) => comparer(x, y) < 0 ? x : y\n : (x, y) => x < y ? x : y;\n return reduce(min);\n}\n","import { Subject } from '../Subject';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { ConnectableObservable, connectableObservableDescriptor } from '../observable/ConnectableObservable';\nimport { MonoTypeOperatorFunction, OperatorFunction, UnaryFunction, ObservedValueOf, ObservableInput } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function multicast(subject: Subject): UnaryFunction, ConnectableObservable>;\nexport function multicast>(subject: Subject, selector: (shared: Observable) => O): UnaryFunction, ConnectableObservable>>;\nexport function multicast(subjectFactory: (this: Observable) => Subject): UnaryFunction, ConnectableObservable>;\nexport function multicast>(SubjectFactory: (this: Observable) => Subject, selector: (shared: Observable) => O): OperatorFunction>;\n/* tslint:enable:max-line-length */\n\n/**\n * Returns an Observable that emits the results of invoking a specified selector on items\n * emitted by a ConnectableObservable that shares a single subscription to the underlying stream.\n *\n * ![](multicast.png)\n *\n * @param {Function|Subject} subjectOrSubjectFactory - Factory function to create an intermediate subject through\n * which the source sequence's elements will be multicast to the selector function\n * or Subject to push source elements into.\n * @param {Function} [selector] - Optional selector function that can use the multicasted source stream\n * as many times as needed, without causing multiple subscriptions to the source stream.\n * Subscribers to the given source will receive all notifications of the source from the\n * time of the subscription forward.\n * @return {Observable} An Observable that emits the results of invoking the selector\n * on the items emitted by a `ConnectableObservable` that shares a single subscription to\n * the underlying stream.\n * @method multicast\n * @owner Observable\n */\nexport function multicast(subjectOrSubjectFactory: Subject | (() => Subject),\n selector?: (source: Observable) => Observable): OperatorFunction {\n return function multicastOperatorFunction(source: Observable): Observable {\n let subjectFactory: () => Subject;\n if (typeof subjectOrSubjectFactory === 'function') {\n subjectFactory = <() => Subject>subjectOrSubjectFactory;\n } else {\n subjectFactory = function subjectFactory() {\n return >subjectOrSubjectFactory;\n };\n }\n\n if (typeof selector === 'function') {\n return source.lift(new MulticastOperator(subjectFactory, selector));\n }\n\n const connectable: any = Object.create(source, connectableObservableDescriptor);\n connectable.source = source;\n connectable.subjectFactory = subjectFactory;\n\n return > connectable;\n };\n}\n\nexport class MulticastOperator implements Operator {\n constructor(private subjectFactory: () => Subject,\n private selector: (source: Observable) => Observable) {\n }\n call(subscriber: Subscriber, source: any): any {\n const { selector } = this;\n const subject = this.subjectFactory();\n const subscription = selector(subject).subscribe(subscriber);\n subscription.add(source.subscribe(subject));\n return subscription;\n }\n}\n","import { Observable } from '../Observable';\nimport { from } from '../observable/from';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { isArray } from '../util/isArray';\nimport { ObservableInput, OperatorFunction } from '../types';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\n\n/* tslint:disable:max-line-length */\nexport function onErrorResumeNext(): OperatorFunction;\nexport function onErrorResumeNext(v: ObservableInput): OperatorFunction;\nexport function onErrorResumeNext(v: ObservableInput, v2: ObservableInput): OperatorFunction;\nexport function onErrorResumeNext(v: ObservableInput, v2: ObservableInput, v3: ObservableInput): OperatorFunction;\nexport function onErrorResumeNext(v: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput): OperatorFunction;\nexport function onErrorResumeNext(v: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput): OperatorFunction;\nexport function onErrorResumeNext(v: ObservableInput, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput): OperatorFunction;\nexport function onErrorResumeNext(...observables: Array>): OperatorFunction;\nexport function onErrorResumeNext(array: ObservableInput[]): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * When any of the provided Observable emits an complete or error notification, it immediately subscribes to the next one\n * that was passed.\n *\n * Execute series of Observables no matter what, even if it means swallowing errors.\n *\n * ![](onErrorResumeNext.png)\n *\n * `onErrorResumeNext` is an operator that accepts a series of Observables, provided either directly as\n * arguments or as an array. If no single Observable is provided, returned Observable will simply behave the same\n * as the source.\n *\n * `onErrorResumeNext` returns an Observable that starts by subscribing and re-emitting values from the source Observable.\n * When its stream of values ends - no matter if Observable completed or emitted an error - `onErrorResumeNext`\n * will subscribe to the first Observable that was passed as an argument to the method. It will start re-emitting\n * its values as well and - again - when that stream ends, `onErrorResumeNext` will proceed to subscribing yet another\n * Observable in provided series, no matter if previous Observable completed or ended with an error. This will\n * be happening until there is no more Observables left in the series, at which point returned Observable will\n * complete - even if the last subscribed stream ended with an error.\n *\n * `onErrorResumeNext` can be therefore thought of as version of {@link concat} operator, which is more permissive\n * when it comes to the errors emitted by its input Observables. While `concat` subscribes to the next Observable\n * in series only if previous one successfully completed, `onErrorResumeNext` subscribes even if it ended with\n * an error.\n *\n * Note that you do not get any access to errors emitted by the Observables. In particular do not\n * expect these errors to appear in error callback passed to {@link Observable#subscribe}. If you want to take\n * specific actions based on what error was emitted by an Observable, you should try out {@link catchError} instead.\n *\n *\n * ## Example\n * Subscribe to the next Observable after map fails\n * ```ts\n * import { of } from 'rxjs';\n * import { onErrorResumeNext, map } from 'rxjs/operators';\n *\n * of(1, 2, 3, 0).pipe(\n * map(x => {\n * if (x === 0) { throw Error(); }\n * return 10 / x;\n * }),\n * onErrorResumeNext(of(1, 2, 3)),\n * )\n * .subscribe(\n * val => console.log(val),\n * err => console.log(err), // Will never be called.\n * () => console.log('that\\'s it!')\n * );\n *\n * // Logs:\n * // 10\n * // 5\n * // 3.3333333333333335\n * // 1\n * // 2\n * // 3\n * // \"that's it!\"\n * ```\n *\n * @see {@link concat}\n * @see {@link catchError}\n *\n * @param {...ObservableInput} observables Observables passed either directly or as an array.\n * @return {Observable} An Observable that emits values from source Observable, but - if it errors - subscribes\n * to the next passed Observable and so on, until it completes or runs out of Observables.\n * @method onErrorResumeNext\n * @owner Observable\n */\n\nexport function onErrorResumeNext(...nextSources: Array |\n Array>>): OperatorFunction {\n if (nextSources.length === 1 && isArray(nextSources[0])) {\n nextSources = >>nextSources[0];\n }\n\n return (source: Observable) => source.lift(new OnErrorResumeNextOperator(nextSources));\n}\n\n/* tslint:disable:max-line-length */\nexport function onErrorResumeNextStatic(v: ObservableInput): Observable;\nexport function onErrorResumeNextStatic(v2: ObservableInput, v3: ObservableInput): Observable;\nexport function onErrorResumeNextStatic(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput): Observable;\nexport function onErrorResumeNextStatic(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput): Observable;\nexport function onErrorResumeNextStatic(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput): Observable;\n\nexport function onErrorResumeNextStatic(...observables: Array | ((...values: Array) => R)>): Observable;\nexport function onErrorResumeNextStatic(array: ObservableInput[]): Observable;\n/* tslint:enable:max-line-length */\n\nexport function onErrorResumeNextStatic(...nextSources: Array |\n Array> |\n ((...values: Array) => R)>): Observable {\n let source: ObservableInput|undefined = undefined;\n\n if (nextSources.length === 1 && isArray(nextSources[0])) {\n nextSources = nextSources[0] as ObservableInput[];\n }\n // TODO: resolve issue with passing no arguments.\n source = nextSources.shift()!;\n\n return from(source).lift(new OnErrorResumeNextOperator(nextSources));\n}\n\nclass OnErrorResumeNextOperator implements Operator {\n constructor(private nextSources: Array>) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new OnErrorResumeNextSubscriber(subscriber, this.nextSources));\n }\n}\n\nclass OnErrorResumeNextSubscriber extends SimpleOuterSubscriber {\n constructor(protected destination: Subscriber,\n private nextSources: Array>) {\n super(destination);\n }\n\n notifyError(): void {\n this.subscribeToNextSource();\n }\n\n notifyComplete(): void {\n this.subscribeToNextSource();\n }\n\n protected _error(err: any): void {\n this.subscribeToNextSource();\n this.unsubscribe();\n }\n\n protected _complete(): void {\n this.subscribeToNextSource();\n this.unsubscribe();\n }\n\n private subscribeToNextSource(): void {\n const next = this.nextSources.shift();\n if (!!next) {\n const innerSubscriber = new SimpleInnerSubscriber(this);\n const destination = this.destination as Subscription;\n destination.add(innerSubscriber);\n const innerSubscription = innerSubscribe(next, innerSubscriber);\n // The returned subscription will usually be the subscriber that was\n // passed. However, interop subscribers will be wrapped and for\n // unsubscriptions to chain correctly, the wrapper needs to be added, too.\n if (innerSubscription !== innerSubscriber) {\n destination.add(innerSubscription);\n }\n } else {\n this.destination.complete();\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { OperatorFunction } from '../types';\n\n/**\n * Groups pairs of consecutive emissions together and emits them as an array of\n * two values.\n *\n * Puts the current value and previous value together as\n * an array, and emits that.\n *\n * ![](pairwise.png)\n *\n * The Nth emission from the source Observable will cause the output Observable\n * to emit an array [(N-1)th, Nth] of the previous and the current value, as a\n * pair. For this reason, `pairwise` emits on the second and subsequent\n * emissions from the source Observable, but not on the first emission, because\n * there is no previous value in that case.\n *\n * ## Example\n * On every click (starting from the second), emit the relative distance to the previous click\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { pairwise, map } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const pairs = clicks.pipe(pairwise());\n * const distance = pairs.pipe(\n * map(pair => {\n * const x0 = pair[0].clientX;\n * const y0 = pair[0].clientY;\n * const x1 = pair[1].clientX;\n * const y1 = pair[1].clientY;\n * return Math.sqrt(Math.pow(x0 - x1, 2) + Math.pow(y0 - y1, 2));\n * }),\n * );\n * distance.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link buffer}\n * @see {@link bufferCount}\n *\n * @return {Observable>} An Observable of pairs (as arrays) of\n * consecutive values from the source Observable.\n * @method pairwise\n * @owner Observable\n */\nexport function pairwise(): OperatorFunction {\n return (source: Observable) => source.lift(new PairwiseOperator());\n}\n\nclass PairwiseOperator implements Operator {\n call(subscriber: Subscriber<[T, T]>, source: any): any {\n return source.subscribe(new PairwiseSubscriber(subscriber));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass PairwiseSubscriber extends Subscriber {\n private prev: T;\n private hasPrev: boolean = false;\n\n constructor(destination: Subscriber<[T, T]>) {\n super(destination);\n }\n\n _next(value: T): void {\n let pair: [T, T] | undefined;\n\n if (this.hasPrev) {\n pair = [this.prev, value];\n } else {\n this.hasPrev = true;\n }\n\n this.prev = value;\n\n if (pair) {\n this.destination.next(pair);\n }\n }\n}\n","import { not } from '../util/not';\nimport { filter } from './filter';\nimport { Observable } from '../Observable';\nimport { UnaryFunction } from '../types';\n\n/**\n * Splits the source Observable into two, one with values that satisfy a\n * predicate, and another with values that don't satisfy the predicate.\n *\n * It's like {@link filter}, but returns two Observables:\n * one like the output of {@link filter}, and the other with values that did not\n * pass the condition.\n *\n * ![](partition.png)\n *\n * `partition` outputs an array with two Observables that partition the values\n * from the source Observable through the given `predicate` function. The first\n * Observable in that array emits source values for which the predicate argument\n * returns true. The second Observable emits source values for which the\n * predicate returns false. The first behaves like {@link filter} and the second\n * behaves like {@link filter} with the predicate negated.\n *\n * ## Example\n * Partition click events into those on DIV elements and those elsewhere\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { partition } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const parts = clicks.pipe(partition(ev => ev.target.tagName === 'DIV'));\n * const clicksOnDivs = parts[0];\n * const clicksElsewhere = parts[1];\n * clicksOnDivs.subscribe(x => console.log('DIV clicked: ', x));\n * clicksElsewhere.subscribe(x => console.log('Other clicked: ', x));\n * ```\n *\n * @see {@link filter}\n *\n * @param {function(value: T, index: number): boolean} predicate A function that\n * evaluates each value emitted by the source Observable. If it returns `true`,\n * the value is emitted on the first Observable in the returned array, if\n * `false` the value is emitted on the second Observable in the array. The\n * `index` parameter is the number `i` for the i-th source emission that has\n * happened since the subscription, starting from the number `0`.\n * @param {any} [thisArg] An optional argument to determine the value of `this`\n * in the `predicate` function.\n * @return {[Observable, Observable]} An array with two Observables: one\n * with values that passed the predicate, and another with values that did not\n * pass the predicate.\n * @method partition\n * @owner Observable\n * @deprecated use `partition` static creation function instead\n */\nexport function partition(predicate: (value: T, index: number) => boolean,\n thisArg?: any): UnaryFunction, [Observable, Observable]> {\n return (source: Observable) => [\n filter(predicate, thisArg)(source),\n filter(not(predicate, thisArg) as any)(source)\n ] as [Observable, Observable];\n}\n","import { Observable } from '../Observable';\nimport { map } from './map';\nimport { OperatorFunction } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function pluck(k1: K1): OperatorFunction;\nexport function pluck(k1: K1, k2: K2): OperatorFunction;\nexport function pluck(k1: K1, k2: K2, k3: K3): OperatorFunction;\nexport function pluck(k1: K1, k2: K2, k3: K3, k4: K4): OperatorFunction;\nexport function pluck(k1: K1, k2: K2, k3: K3, k4: K4, k5: K5): OperatorFunction;\nexport function pluck(k1: K1, k2: K2, k3: K3, k4: K4, k5: K5, k6: K6): OperatorFunction;\nexport function pluck(...properties: string[]): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Maps each source value (an object) to its specified nested property.\n *\n * Like {@link map}, but meant only for picking one of\n * the nested properties of every emitted object.\n *\n * ![](pluck.png)\n *\n * Given a list of strings describing a path to an object property, retrieves\n * the value of a specified nested property from all values in the source\n * Observable. If a property can't be resolved, it will return `undefined` for\n * that value.\n *\n * ## Example\n * Map every click to the tagName of the clicked target element\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { pluck } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const tagNames = clicks.pipe(pluck('target', 'tagName'));\n * tagNames.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link map}\n *\n * @param {...string} properties The nested properties to pluck from each source\n * value (an object).\n * @return {Observable} A new Observable of property values from the source values.\n * @method pluck\n * @owner Observable\n */\nexport function pluck(...properties: string[]): OperatorFunction {\n const length = properties.length;\n if (length === 0) {\n throw new Error('list of properties cannot be empty.');\n }\n return (source: Observable) => map(plucker(properties, length))(source as any);\n}\n\nfunction plucker(props: string[], length: number): (x: string) => any {\n const mapper = (x: string) => {\n let currentProp = x;\n for (let i = 0; i < length; i++) {\n const p = currentProp != null ? currentProp[props[i]] : undefined;\n if (p !== void 0) {\n currentProp = p;\n } else {\n return undefined;\n }\n }\n return currentProp;\n };\n\n return mapper;\n}\n","import { Observable } from '../Observable';\nimport { Subject } from '../Subject';\nimport { multicast } from './multicast';\nimport { ConnectableObservable } from '../observable/ConnectableObservable';\nimport { MonoTypeOperatorFunction, OperatorFunction, UnaryFunction, ObservableInput, ObservedValueOf } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function publish(): UnaryFunction, ConnectableObservable>;\nexport function publish>(selector: (shared: Observable) => O): OperatorFunction>;\nexport function publish(selector: MonoTypeOperatorFunction): MonoTypeOperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Returns a ConnectableObservable, which is a variety of Observable that waits until its connect method is called\n * before it begins emitting items to those Observers that have subscribed to it.\n *\n * Makes a cold Observable hot\n *\n * ![](publish.png)\n *\n * ## Examples\n * Make source$ hot by applying publish operator, then merge each inner observable into a single one\n * and subscribe.\n * ```ts\n * import { of, zip, interval, merge } from \"rxjs\";\n * import { map, publish, tap } from \"rxjs/operators\";\n *\n * const source$ = zip(interval(2000), of(1, 2, 3, 4, 5, 6, 7, 8, 9)).pipe(\n * map(values => values[1])\n * );\n *\n * source$\n * .pipe(\n * publish(multicasted$ =>\n * merge(\n * multicasted$.pipe(tap(x => console.log('Stream 1:', x))),\n * multicasted$.pipe(tap(x => console.log('Stream 2:', x))),\n * multicasted$.pipe(tap(x => console.log('Stream 3:', x))),\n * )\n * )\n * )\n * .subscribe();\n *\n * // Results every two seconds\n * // Stream 1: 1\n * // Stream 2: 1\n * // Stream 3: 1\n * // ...\n * // Stream 1: 9\n * // Stream 2: 9\n * // Stream 3: 9\n * ```\n *\n * @param {Function} [selector] - Optional selector function which can use the multicasted source sequence as many times\n * as needed, without causing multiple subscriptions to the source sequence.\n * Subscribers to the given source will receive all notifications of the source from the time of the subscription on.\n * @return A ConnectableObservable that upon connection causes the source Observable to emit items to its Observers.\n * @method publish\n * @owner Observable\n *\n *\n */\nexport function publish(selector?: OperatorFunction): MonoTypeOperatorFunction | OperatorFunction {\n return selector ?\n multicast(() => new Subject(), selector) :\n multicast(new Subject());\n}\n","import { Observable } from '../Observable';\nimport { BehaviorSubject } from '../BehaviorSubject';\nimport { multicast } from './multicast';\nimport { ConnectableObservable } from '../observable/ConnectableObservable';\nimport { UnaryFunction } from '../types';\n\n/**\n * @param value\n * @return {ConnectableObservable}\n * @method publishBehavior\n * @owner Observable\n */\nexport function publishBehavior(value: T): UnaryFunction, ConnectableObservable> {\n return (source: Observable) => multicast(new BehaviorSubject(value))(source) as ConnectableObservable;\n}\n","import { Observable } from '../Observable';\nimport { AsyncSubject } from '../AsyncSubject';\nimport { multicast } from './multicast';\nimport { ConnectableObservable } from '../observable/ConnectableObservable';\nimport { UnaryFunction } from '../types';\n\n/**\n * Returns a connectable observable sequence that shares a single subscription to the\n * underlying sequence containing only the last notification.\n *\n * ![](publishLast.png)\n *\n * Similar to {@link publish}, but it waits until the source observable completes and stores\n * the last emitted value.\n * Similarly to {@link publishReplay} and {@link publishBehavior}, this keeps storing the last\n * value even if it has no more subscribers. If subsequent subscriptions happen, they will\n * immediately get that last stored value and complete.\n *\n * ## Example\n *\n * ```ts\n * import { interval } from 'rxjs';\n * import { publishLast, tap, take } from 'rxjs/operators';\n *\n * const connectable =\n * interval(1000)\n * .pipe(\n * tap(x => console.log(\"side effect\", x)),\n * take(3),\n * publishLast());\n *\n * connectable.subscribe(\n * x => console.log( \"Sub. A\", x),\n * err => console.log(\"Sub. A Error\", err),\n * () => console.log( \"Sub. A Complete\"));\n *\n * connectable.subscribe(\n * x => console.log( \"Sub. B\", x),\n * err => console.log(\"Sub. B Error\", err),\n * () => console.log( \"Sub. B Complete\"));\n *\n * connectable.connect();\n *\n * // Results:\n * // \"side effect 0\"\n * // \"side effect 1\"\n * // \"side effect 2\"\n * // \"Sub. A 2\"\n * // \"Sub. B 2\"\n * // \"Sub. A Complete\"\n * // \"Sub. B Complete\"\n * ```\n *\n * @see {@link ConnectableObservable}\n * @see {@link publish}\n * @see {@link publishReplay}\n * @see {@link publishBehavior}\n *\n * @return {ConnectableObservable} An observable sequence that contains the elements of a\n * sequence produced by multicasting the source sequence.\n * @method publishLast\n * @owner Observable\n */\n\nexport function publishLast(): UnaryFunction, ConnectableObservable> {\n return (source: Observable) => multicast(new AsyncSubject())(source);\n}\n","import { Observable } from '../Observable';\nimport { ReplaySubject } from '../ReplaySubject';\nimport { multicast } from './multicast';\nimport { ConnectableObservable } from '../observable/ConnectableObservable';\nimport { UnaryFunction, MonoTypeOperatorFunction, OperatorFunction, SchedulerLike, ObservableInput, ObservedValueOf } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function publishReplay(bufferSize?: number, windowTime?: number, scheduler?: SchedulerLike): MonoTypeOperatorFunction;\nexport function publishReplay>(bufferSize?: number, windowTime?: number, selector?: (shared: Observable) => O, scheduler?: SchedulerLike): OperatorFunction>;\n/* tslint:enable:max-line-length */\n\nexport function publishReplay(bufferSize?: number,\n windowTime?: number,\n selectorOrScheduler?: SchedulerLike | OperatorFunction,\n scheduler?: SchedulerLike): UnaryFunction, ConnectableObservable> {\n\n if (selectorOrScheduler && typeof selectorOrScheduler !== 'function') {\n scheduler = selectorOrScheduler;\n }\n\n const selector = typeof selectorOrScheduler === 'function' ? selectorOrScheduler : undefined;\n const subject = new ReplaySubject(bufferSize, windowTime, scheduler);\n\n return (source: Observable) => multicast(() => subject, selector)(source) as ConnectableObservable;\n}\n","import { Observable } from '../Observable';\nimport { isArray } from '../util/isArray';\nimport { MonoTypeOperatorFunction, OperatorFunction } from '../types';\nimport { race as raceStatic } from '../observable/race';\n\n/* tslint:disable:max-line-length */\n/** @deprecated Deprecated in favor of static race. */\nexport function race(observables: Array>): MonoTypeOperatorFunction;\n/** @deprecated Deprecated in favor of static race. */\nexport function race(observables: Array>): OperatorFunction;\n/** @deprecated Deprecated in favor of static race. */\nexport function race(...observables: Array | Array>>): MonoTypeOperatorFunction;\n/** @deprecated Deprecated in favor of static race. */\nexport function race(...observables: Array | Array>>): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Returns an Observable that mirrors the first source Observable to emit a next,\n * error or complete notification from the combination of this Observable and supplied Observables.\n * @param {...Observables} ...observables Sources used to race for which Observable emits first.\n * @return {Observable} An Observable that mirrors the output of the first Observable to emit an item.\n * @method race\n * @owner Observable\n * @deprecated Deprecated in favor of static {@link race}.\n */\nexport function race(...observables: (Observable | Observable[])[]): MonoTypeOperatorFunction {\n return function raceOperatorFunction(source: Observable) {\n // if the only argument is an array, it was most likely called with\n // `pair([obs1, obs2, ...])`\n if (observables.length === 1 && isArray(observables[0])) {\n observables = observables[0] as Observable[];\n }\n\n return source.lift.call(raceStatic(source, ...(observables as Observable[])));\n };\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { empty } from '../observable/empty';\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\n\n/**\n * Returns an Observable that will resubscribe to the source stream when the source stream completes, at most count times.\n *\n * Repeats all values emitted on the source. It's like {@link retry}, but for non error cases.\n *\n * ![](repeat.png)\n *\n * Similar to {@link retry}, this operator repeats the stream of items emitted by the source for non error cases.\n * Repeat can be useful for creating observables that are meant to have some repeated pattern or rhythm.\n *\n * Note: `repeat(0)` returns an empty observable and `repeat()` will repeat forever\n *\n * ## Example\n * Repeat a message stream\n * ```ts\n * import { of } from 'rxjs';\n * import { repeat, delay } from 'rxjs/operators';\n *\n * const source = of('Repeat message');\n * const example = source.pipe(repeat(3));\n * example.subscribe(x => console.log(x));\n *\n * // Results\n * // Repeat message\n * // Repeat message\n * // Repeat message\n * ```\n *\n * Repeat 3 values, 2 times\n * ```ts\n * import { interval } from 'rxjs';\n * import { repeat, take } from 'rxjs/operators';\n *\n * const source = interval(1000);\n * const example = source.pipe(take(3), repeat(2));\n * example.subscribe(x => console.log(x));\n *\n * // Results every second\n * // 0\n * // 1\n * // 2\n * // 0\n * // 1\n * // 2\n * ```\n *\n * @see {@link repeatWhen}\n * @see {@link retry}\n *\n * @param {number} [count] The number of times the source Observable items are repeated, a count of 0 will yield\n * an empty Observable.\n * @return {Observable} An Observable that will resubscribe to the source stream when the source stream completes\n * , at most count times.\n * @method repeat\n * @owner Observable\n */\nexport function repeat(count: number = -1): MonoTypeOperatorFunction {\n return (source: Observable) => {\n if (count === 0) {\n return empty();\n } else if (count < 0) {\n return source.lift(new RepeatOperator(-1, source));\n } else {\n return source.lift(new RepeatOperator(count - 1, source));\n }\n };\n}\n\nclass RepeatOperator implements Operator {\n constructor(private count: number,\n private source: Observable) {\n }\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new RepeatSubscriber(subscriber, this.count, this.source));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass RepeatSubscriber extends Subscriber {\n constructor(destination: Subscriber,\n private count: number,\n private source: Observable) {\n super(destination);\n }\n complete() {\n if (!this.isStopped) {\n const { source, count } = this;\n if (count === 0) {\n return super.complete();\n } else if (count > -1) {\n this.count = count - 1;\n }\n source.subscribe(this._unsubscribeAndRecycle());\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { Subject } from '../Subject';\nimport { Subscription } from '../Subscription';\n\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\n\n/**\n * Returns an Observable that mirrors the source Observable with the exception of a `complete`. If the source\n * Observable calls `complete`, this method will emit to the Observable returned from `notifier`. If that Observable\n * calls `complete` or `error`, then this method will call `complete` or `error` on the child subscription. Otherwise\n * this method will resubscribe to the source Observable.\n *\n * ![](repeatWhen.png)\n *\n * ## Example\n * Repeat a message stream on click\n * ```ts\n * import { of, fromEvent } from 'rxjs';\n * import { repeatWhen } from 'rxjs/operators';\n *\n * const source = of('Repeat message');\n * const documentClick$ = fromEvent(document, 'click');\n *\n * source.pipe(repeatWhen(() => documentClick$)\n * ).subscribe(data => console.log(data))\n * ```\n * @see {@link repeat}\n * @see {@link retry}\n * @see {@link retryWhen}\n *\n * @param {function(notifications: Observable): Observable} notifier - Receives an Observable of notifications with\n * which a user can `complete` or `error`, aborting the repetition.\n * @return {Observable} The source Observable modified with repeat logic.\n * @method repeatWhen\n * @owner Observable\n */\nexport function repeatWhen(notifier: (notifications: Observable) => Observable): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new RepeatWhenOperator(notifier));\n}\n\nclass RepeatWhenOperator implements Operator {\n constructor(protected notifier: (notifications: Observable) => Observable) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new RepeatWhenSubscriber(subscriber, this.notifier, source));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass RepeatWhenSubscriber extends SimpleOuterSubscriber {\n\n private notifications?: Subject;\n private retries?: Observable;\n private retriesSubscription?: Subscription;\n private sourceIsBeingSubscribedTo: boolean = true;\n\n constructor(destination: Subscriber,\n private notifier: (notifications: Observable) => Observable,\n private source: Observable) {\n super(destination);\n }\n\n notifyNext(): void {\n this.sourceIsBeingSubscribedTo = true;\n this.source.subscribe(this);\n }\n\n notifyComplete(): void {\n if (this.sourceIsBeingSubscribedTo === false) {\n return super.complete();\n }\n }\n\n complete() {\n this.sourceIsBeingSubscribedTo = false;\n\n if (!this.isStopped) {\n if (!this.retries) {\n this.subscribeToRetries();\n }\n if (!this.retriesSubscription || this.retriesSubscription.closed) {\n return super.complete();\n }\n\n this._unsubscribeAndRecycle();\n this.notifications!.next(undefined);\n }\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _unsubscribe() {\n const { notifications, retriesSubscription } = this;\n if (notifications) {\n notifications.unsubscribe();\n this.notifications = undefined;\n }\n if (retriesSubscription) {\n retriesSubscription.unsubscribe();\n this.retriesSubscription = undefined;\n }\n this.retries = undefined;\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _unsubscribeAndRecycle(): Subscriber {\n const { _unsubscribe } = this;\n\n this._unsubscribe = null!;\n super._unsubscribeAndRecycle();\n this._unsubscribe = _unsubscribe;\n\n return this;\n }\n\n private subscribeToRetries() {\n this.notifications = new Subject();\n let retries;\n try {\n const { notifier } = this;\n retries = notifier(this.notifications);\n } catch (e) {\n return super.complete();\n }\n this.retries = retries;\n this.retriesSubscription = innerSubscribe(retries, new SimpleInnerSubscriber(this));\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\n\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\n\n/**\n * Returns an Observable that mirrors the source Observable with the exception of an `error`. If the source Observable\n * calls `error`, this method will resubscribe to the source Observable for a maximum of `count` resubscriptions (given\n * as a number parameter) rather than propagating the `error` call.\n *\n * ![](retry.png)\n *\n * Any and all items emitted by the source Observable will be emitted by the resulting Observable, even those emitted\n * during failed subscriptions. For example, if an Observable fails at first but emits [1, 2] then succeeds the second\n * time and emits: [1, 2, 3, 4, 5] then the complete stream of emissions and notifications\n * would be: [1, 2, 1, 2, 3, 4, 5, `complete`].\n *\n * ## Example\n * ```ts\n * import { interval, of, throwError } from 'rxjs';\n * import { mergeMap, retry } from 'rxjs/operators';\n *\n * const source = interval(1000);\n * const example = source.pipe(\n * mergeMap(val => {\n * if(val > 5){\n * return throwError('Error!');\n * }\n * return of(val);\n * }),\n * //retry 2 times on error\n * retry(2)\n * );\n *\n * const subscribe = example.subscribe({\n * next: val => console.log(val),\n * error: val => console.log(`${val}: Retried 2 times then quit!`)\n * });\n *\n * // Output:\n * // 0..1..2..3..4..5..\n * // 0..1..2..3..4..5..\n * // 0..1..2..3..4..5..\n * // \"Error!: Retried 2 times then quit!\"\n * ```\n *\n * @param {number} count - Number of retry attempts before failing.\n * @return {Observable} The source Observable modified with the retry logic.\n * @method retry\n * @owner Observable\n */\nexport function retry(count: number = -1): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new RetryOperator(count, source));\n}\n\nclass RetryOperator implements Operator {\n constructor(private count: number,\n private source: Observable) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new RetrySubscriber(subscriber, this.count, this.source));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass RetrySubscriber extends Subscriber {\n constructor(destination: Subscriber,\n private count: number,\n private source: Observable) {\n super(destination);\n }\n error(err: any) {\n if (!this.isStopped) {\n const { source, count } = this;\n if (count === 0) {\n return super.error(err);\n } else if (count > -1) {\n this.count = count - 1;\n }\n source.subscribe(this._unsubscribeAndRecycle());\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { Subject } from '../Subject';\nimport { Subscription } from '../Subscription';\n\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\n\n/**\n * Returns an Observable that mirrors the source Observable with the exception of an `error`. If the source Observable\n * calls `error`, this method will emit the Throwable that caused the error to the Observable returned from `notifier`.\n * If that Observable calls `complete` or `error` then this method will call `complete` or `error` on the child\n * subscription. Otherwise this method will resubscribe to the source Observable.\n *\n * ![](retryWhen.png)\n *\n * @param {function(errors: Observable): Observable} notifier - Receives an Observable of notifications with which a\n * user can `complete` or `error`, aborting the retry.\n * @return {Observable} The source Observable modified with retry logic.\n * @method retryWhen\n * @owner Observable\n */\nexport function retryWhen(notifier: (errors: Observable) => Observable): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new RetryWhenOperator(notifier, source));\n}\n\nclass RetryWhenOperator implements Operator {\n constructor(protected notifier: (errors: Observable) => Observable,\n protected source: Observable) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new RetryWhenSubscriber(subscriber, this.notifier, this.source));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass RetryWhenSubscriber extends SimpleOuterSubscriber {\n\n private errors?: Subject;\n private retries?: Observable;\n private retriesSubscription?: Subscription;\n\n constructor(destination: Subscriber,\n private notifier: (errors: Observable) => Observable,\n private source: Observable) {\n super(destination);\n }\n\n error(err: any) {\n if (!this.isStopped) {\n\n let errors = this.errors;\n let retries: any = this.retries;\n let retriesSubscription = this.retriesSubscription;\n\n if (!retries) {\n errors = new Subject();\n try {\n const { notifier } = this;\n retries = notifier(errors);\n } catch (e) {\n return super.error(e);\n }\n retriesSubscription = innerSubscribe(retries, new SimpleInnerSubscriber(this));\n } else {\n this.errors = undefined;\n this.retriesSubscription = undefined;\n }\n\n this._unsubscribeAndRecycle();\n\n this.errors = errors;\n this.retries = retries;\n this.retriesSubscription = retriesSubscription;\n\n errors!.next(err);\n }\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _unsubscribe() {\n const { errors, retriesSubscription } = this;\n if (errors) {\n errors.unsubscribe();\n this.errors = undefined;\n }\n if (retriesSubscription) {\n retriesSubscription.unsubscribe();\n this.retriesSubscription = undefined;\n }\n this.retries = undefined;\n }\n\n notifyNext(): void {\n const { _unsubscribe } = this;\n\n this._unsubscribe = null!;\n this._unsubscribeAndRecycle();\n this._unsubscribe = _unsubscribe;\n\n this.source.subscribe(this);\n }\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\n\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\n\n/**\n * Emits the most recently emitted value from the source Observable whenever\n * another Observable, the `notifier`, emits.\n *\n * It's like {@link sampleTime}, but samples whenever\n * the `notifier` Observable emits something.\n *\n * ![](sample.png)\n *\n * Whenever the `notifier` Observable emits a value or completes, `sample`\n * looks at the source Observable and emits whichever value it has most recently\n * emitted since the previous sampling, unless the source has not emitted\n * anything since the previous sampling. The `notifier` is subscribed to as soon\n * as the output Observable is subscribed.\n *\n * ## Example\n * On every click, sample the most recent \"seconds\" timer\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { sample } from 'rxjs/operators';\n *\n * const seconds = interval(1000);\n * const clicks = fromEvent(document, 'click');\n * const result = seconds.pipe(sample(clicks));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link audit}\n * @see {@link debounce}\n * @see {@link sampleTime}\n * @see {@link throttle}\n *\n * @param {Observable} notifier The Observable to use for sampling the\n * source Observable.\n * @return {Observable} An Observable that emits the results of sampling the\n * values emitted by the source Observable whenever the notifier Observable\n * emits value or completes.\n * @method sample\n * @owner Observable\n */\nexport function sample(notifier: Observable): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new SampleOperator(notifier));\n}\n\nclass SampleOperator implements Operator {\n constructor(private notifier: Observable) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n const sampleSubscriber = new SampleSubscriber(subscriber);\n const subscription = source.subscribe(sampleSubscriber);\n subscription.add(innerSubscribe(this.notifier, new SimpleInnerSubscriber(sampleSubscriber)));\n return subscription;\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass SampleSubscriber extends SimpleOuterSubscriber {\n private value?: T;\n private hasValue: boolean = false;\n\n protected _next(value: T) {\n this.value = value;\n this.hasValue = true;\n }\n\n notifyNext(): void {\n this.emitValue();\n }\n\n notifyComplete(): void {\n this.emitValue();\n }\n\n emitValue() {\n if (this.hasValue) {\n this.hasValue = false;\n this.destination.next!(this.value!);\n }\n }\n}\n","import { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { async } from '../scheduler/async';\nimport { MonoTypeOperatorFunction, SchedulerAction, SchedulerLike, TeardownLogic } from '../types';\n\n/**\n * Emits the most recently emitted value from the source Observable within\n * periodic time intervals.\n *\n * Samples the source Observable at periodic time\n * intervals, emitting what it samples.\n *\n * ![](sampleTime.png)\n *\n * `sampleTime` periodically looks at the source Observable and emits whichever\n * value it has most recently emitted since the previous sampling, unless the\n * source has not emitted anything since the previous sampling. The sampling\n * happens periodically in time every `period` milliseconds (or the time unit\n * defined by the optional `scheduler` argument). The sampling starts as soon as\n * the output Observable is subscribed.\n *\n * ## Example\n * Every second, emit the most recent click at most once\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { sampleTime } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(sampleTime(1000));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link auditTime}\n * @see {@link debounceTime}\n * @see {@link delay}\n * @see {@link sample}\n * @see {@link throttleTime}\n *\n * @param {number} period The sampling period expressed in milliseconds or the\n * time unit determined internally by the optional `scheduler`.\n * @param {SchedulerLike} [scheduler=async] The {@link SchedulerLike} to use for\n * managing the timers that handle the sampling.\n * @return {Observable} An Observable that emits the results of sampling the\n * values emitted by the source Observable at the specified time interval.\n * @method sampleTime\n * @owner Observable\n */\nexport function sampleTime(period: number, scheduler: SchedulerLike = async): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new SampleTimeOperator(period, scheduler));\n}\n\nclass SampleTimeOperator implements Operator {\n constructor(private period: number,\n private scheduler: SchedulerLike) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new SampleTimeSubscriber(subscriber, this.period, this.scheduler));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass SampleTimeSubscriber extends Subscriber {\n lastValue: T;\n hasValue: boolean = false;\n\n constructor(destination: Subscriber,\n private period: number,\n private scheduler: SchedulerLike) {\n super(destination);\n this.add(scheduler.schedule(dispatchNotification, period, { subscriber: this, period }));\n }\n\n protected _next(value: T) {\n this.lastValue = value;\n this.hasValue = true;\n }\n\n notifyNext() {\n if (this.hasValue) {\n this.hasValue = false;\n this.destination.next(this.lastValue);\n }\n }\n}\n\nfunction dispatchNotification(this: SchedulerAction, state: any) {\n let { subscriber, period } = state;\n subscriber.notifyNext();\n this.schedule(state, period);\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\n\nimport { Observer, OperatorFunction } from '../types';\n\n/**\n * Compares all values of two observables in sequence using an optional comparator function\n * and returns an observable of a single boolean value representing whether or not the two sequences\n * are equal.\n *\n * Checks to see of all values emitted by both observables are equal, in order.\n *\n * ![](sequenceEqual.png)\n *\n * `sequenceEqual` subscribes to two observables and buffers incoming values from each observable. Whenever either\n * observable emits a value, the value is buffered and the buffers are shifted and compared from the bottom\n * up; If any value pair doesn't match, the returned observable will emit `false` and complete. If one of the\n * observables completes, the operator will wait for the other observable to complete; If the other\n * observable emits before completing, the returned observable will emit `false` and complete. If one observable never\n * completes or emits after the other complets, the returned observable will never complete.\n *\n * ## Example\n * figure out if the Konami code matches\n * ```ts\n * import { from, fromEvent } from 'rxjs';\n * import { sequenceEqual, bufferCount, mergeMap, map } from 'rxjs/operators';\n *\n * const codes = from([\n * 'ArrowUp',\n * 'ArrowUp',\n * 'ArrowDown',\n * 'ArrowDown',\n * 'ArrowLeft',\n * 'ArrowRight',\n * 'ArrowLeft',\n * 'ArrowRight',\n * 'KeyB',\n * 'KeyA',\n * 'Enter', // no start key, clearly.\n * ]);\n *\n * const keys = fromEvent(document, 'keyup').pipe(map(e => e.code));\n * const matches = keys.pipe(\n * bufferCount(11, 1),\n * mergeMap(\n * last11 => from(last11).pipe(sequenceEqual(codes)),\n * ),\n * );\n * matches.subscribe(matched => console.log('Successful cheat at Contra? ', matched));\n * ```\n *\n * @see {@link combineLatest}\n * @see {@link zip}\n * @see {@link withLatestFrom}\n *\n * @param {Observable} compareTo The observable sequence to compare the source sequence to.\n * @param {function} [comparator] An optional function to compare each value pair\n * @return {Observable} An Observable of a single boolean value representing whether or not\n * the values emitted by both observables were equal in sequence.\n * @method sequenceEqual\n * @owner Observable\n */\nexport function sequenceEqual(compareTo: Observable,\n comparator?: (a: T, b: T) => boolean): OperatorFunction {\n return (source: Observable) => source.lift(new SequenceEqualOperator(compareTo, comparator));\n}\n\nexport class SequenceEqualOperator implements Operator {\n constructor(private compareTo: Observable,\n private comparator: (a: T, b: T) => boolean) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new SequenceEqualSubscriber(subscriber, this.compareTo, this.comparator));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class SequenceEqualSubscriber extends Subscriber {\n private _a: T[] = [];\n private _b: T[] = [];\n private _oneComplete = false;\n\n constructor(destination: Observer,\n private compareTo: Observable,\n private comparator: (a: T, b: T) => boolean) {\n super(destination);\n (this.destination as Subscription).add(compareTo.subscribe(new SequenceEqualCompareToSubscriber(destination, this)));\n }\n\n protected _next(value: T): void {\n if (this._oneComplete && this._b.length === 0) {\n this.emit(false);\n } else {\n this._a.push(value);\n this.checkValues();\n }\n }\n\n public _complete(): void {\n if (this._oneComplete) {\n this.emit(this._a.length === 0 && this._b.length === 0);\n } else {\n this._oneComplete = true;\n }\n this.unsubscribe();\n }\n\n checkValues() {\n const { _a, _b, comparator } = this;\n while (_a.length > 0 && _b.length > 0) {\n let a = _a.shift();\n let b = _b.shift();\n let areEqual = false;\n try {\n areEqual = comparator ? comparator(a, b) : a === b;\n } catch (e) {\n this.destination.error(e);\n }\n if (!areEqual) {\n this.emit(false);\n }\n }\n }\n\n emit(value: boolean) {\n const { destination } = this;\n destination.next(value);\n destination.complete();\n }\n\n nextB(value: T) {\n if (this._oneComplete && this._a.length === 0) {\n this.emit(false);\n } else {\n this._b.push(value);\n this.checkValues();\n }\n }\n\n completeB() {\n if (this._oneComplete) {\n this.emit(this._a.length === 0 && this._b.length === 0);\n } else {\n this._oneComplete = true;\n }\n }\n}\n\nclass SequenceEqualCompareToSubscriber extends Subscriber {\n constructor(destination: Observer, private parent: SequenceEqualSubscriber) {\n super(destination);\n }\n\n protected _next(value: T): void {\n this.parent.nextB(value);\n }\n\n protected _error(err: any): void {\n this.parent.error(err);\n this.unsubscribe();\n }\n\n protected _complete(): void {\n this.parent.completeB();\n this.unsubscribe();\n }\n}\n","import { Observable } from '../Observable';\nimport { multicast } from './multicast';\nimport { refCount } from './refCount';\nimport { Subject } from '../Subject';\n\nimport { MonoTypeOperatorFunction } from '../types';\n\nfunction shareSubjectFactory() {\n return new Subject();\n}\n\n/**\n * Returns a new Observable that multicasts (shares) the original Observable. As long as there is at least one\n * Subscriber this Observable will be subscribed and emitting data. When all subscribers have unsubscribed it will\n * unsubscribe from the source Observable. Because the Observable is multicasting it makes the stream `hot`.\n * This is an alias for `multicast(() => new Subject()), refCount()`.\n *\n * ![](share.png)\n *\n * @return {Observable} An Observable that upon connection causes the source Observable to emit items to its Observers.\n * @method share\n * @owner Observable\n */\nexport function share(): MonoTypeOperatorFunction {\n return (source: Observable) => refCount()(multicast(shareSubjectFactory)(source)) as Observable;\n}\n","import { Observable } from '../Observable';\nimport { ReplaySubject } from '../ReplaySubject';\nimport { Subscription } from '../Subscription';\nimport { MonoTypeOperatorFunction, SchedulerLike } from '../types';\nimport { Subscriber } from '../Subscriber';\n\nexport interface ShareReplayConfig {\n bufferSize?: number;\n windowTime?: number;\n refCount: boolean;\n scheduler?: SchedulerLike;\n}\n\n/**\n * Share source and replay specified number of emissions on subscription.\n *\n * This operator is a specialization of `replay` that connects to a source observable\n * and multicasts through a `ReplaySubject` constructed with the specified arguments.\n * A successfully completed source will stay cached in the `shareReplayed observable` forever,\n * but an errored source can be retried.\n *\n * ## Why use shareReplay?\n * You generally want to use `shareReplay` when you have side-effects or taxing computations\n * that you do not wish to be executed amongst multiple subscribers.\n * It may also be valuable in situations where you know you will have late subscribers to\n * a stream that need access to previously emitted values.\n * This ability to replay values on subscription is what differentiates {@link share} and `shareReplay`.\n *\n * ![](shareReplay.png)\n *\n * ## Example\n * ```ts\n * import { interval } from 'rxjs';\n * import { shareReplay, take } from 'rxjs/operators';\n *\n * const obs$ = interval(1000);\n * const shared$ = obs$.pipe(\n * take(4),\n * shareReplay(3)\n * );\n * shared$.subscribe(x => console.log('source A: ', x));\n * shared$.subscribe(y => console.log('source B: ', y));\n *\n * ```\n *\n * @see {@link publish}\n * @see {@link share}\n * @see {@link publishReplay}\n *\n * @param {Number} [bufferSize=Number.POSITIVE_INFINITY] Maximum element count of the replay buffer.\n * @param {Number} [windowTime=Number.POSITIVE_INFINITY] Maximum time length of the replay buffer in milliseconds.\n * @param {Scheduler} [scheduler] Scheduler where connected observers within the selector function\n * will be invoked on.\n * @return {Observable} An observable sequence that contains the elements of a sequence produced\n * by multicasting the source sequence within a selector function.\n * @method shareReplay\n * @owner Observable\n */\nexport function shareReplay(\n config: ShareReplayConfig\n): MonoTypeOperatorFunction;\nexport function shareReplay(\n bufferSize?: number,\n windowTime?: number,\n scheduler?: SchedulerLike\n): MonoTypeOperatorFunction;\nexport function shareReplay(\n configOrBufferSize?: ShareReplayConfig | number,\n windowTime?: number,\n scheduler?: SchedulerLike\n): MonoTypeOperatorFunction {\n let config: ShareReplayConfig;\n if (configOrBufferSize && typeof configOrBufferSize === 'object') {\n config = configOrBufferSize as ShareReplayConfig;\n } else {\n config = {\n bufferSize: configOrBufferSize as number | undefined,\n windowTime,\n refCount: false,\n scheduler,\n };\n }\n return (source: Observable) => source.lift(shareReplayOperator(config));\n}\n\nfunction shareReplayOperator({\n bufferSize = Number.POSITIVE_INFINITY,\n windowTime = Number.POSITIVE_INFINITY,\n refCount: useRefCount,\n scheduler,\n}: ShareReplayConfig) {\n let subject: ReplaySubject | undefined;\n let refCount = 0;\n let subscription: Subscription | undefined;\n let hasError = false;\n let isComplete = false;\n\n return function shareReplayOperation(\n this: Subscriber,\n source: Observable\n ) {\n refCount++;\n let innerSub: Subscription;\n if (!subject || hasError) {\n hasError = false;\n subject = new ReplaySubject(bufferSize, windowTime, scheduler);\n innerSub = subject.subscribe(this);\n subscription = source.subscribe({\n next(value) {\n subject.next(value);\n },\n error(err) {\n hasError = true;\n subject.error(err);\n },\n complete() {\n isComplete = true;\n subscription = undefined;\n subject.complete();\n },\n });\n\n // Here we need to check to see if the source synchronously completed. Although\n // we're setting `subscription = undefined` in the completion handler, if the source\n // is synchronous, that will happen *before* subscription is set by the return of\n // the `subscribe` call.\n if (isComplete) {\n subscription = undefined;\n }\n } else {\n innerSub = subject.subscribe(this);\n }\n\n this.add(() => {\n refCount--;\n innerSub.unsubscribe();\n innerSub = undefined;\n if (subscription && !isComplete && useRefCount && refCount === 0) {\n subscription.unsubscribe();\n subscription = undefined;\n subject = undefined;\n }\n });\n };\n}\n","import { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { EmptyError } from '../util/EmptyError';\n\nimport { Observer, MonoTypeOperatorFunction, TeardownLogic } from '../types';\n\n/**\n * Returns an Observable that emits the single item emitted by the source Observable that matches a specified\n * predicate, if that Observable emits one such item. If the source Observable emits more than one such item or no\n * items, notify of an IllegalArgumentException or NoSuchElementException respectively. If the source Observable\n * emits items but none match the specified predicate then `undefined` is emitted.\n *\n * Like {@link first}, but emit with error notification if there is more than one value.\n * ![](single.png)\n *\n * ## Example\n * emits 'error'\n * ```ts\n * import { range } from 'rxjs';\n * import { single } from 'rxjs/operators';\n *\n * const numbers = range(1,5).pipe(single());\n * numbers.subscribe(x => console.log('never get called'), e => console.log('error'));\n * // result\n * // 'error'\n * ```\n *\n * emits 'undefined'\n * ```ts\n * import { range } from 'rxjs';\n * import { single } from 'rxjs/operators';\n *\n * const numbers = range(1,5).pipe(single(x => x === 10));\n * numbers.subscribe(x => console.log(x));\n * // result\n * // 'undefined'\n * ```\n *\n * @see {@link first}\n * @see {@link find}\n * @see {@link findIndex}\n * @see {@link elementAt}\n *\n * @throws {EmptyError} Delivers an EmptyError to the Observer's `error`\n * callback if the Observable completes before any `next` notification was sent.\n * @param {Function} predicate - A predicate function to evaluate items emitted by the source Observable.\n * @return {Observable} An Observable that emits the single item emitted by the source Observable that matches\n * the predicate or `undefined` when no items match.\n *\n * @method single\n * @owner Observable\n */\nexport function single(predicate?: (value: T, index: number, source: Observable) => boolean): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new SingleOperator(predicate, source));\n}\n\nclass SingleOperator implements Operator {\n constructor(private predicate?: (value: T, index: number, source: Observable) => boolean,\n private source?: Observable) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new SingleSubscriber(subscriber, this.predicate, this.source));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass SingleSubscriber extends Subscriber {\n private seenValue: boolean = false;\n private singleValue: T;\n private index: number = 0;\n\n constructor(destination: Observer,\n private predicate?: (value: T, index: number, source: Observable) => boolean,\n private source?: Observable) {\n super(destination);\n }\n\n private applySingleValue(value: T): void {\n if (this.seenValue) {\n this.destination.error('Sequence contains more than one element');\n } else {\n this.seenValue = true;\n this.singleValue = value;\n }\n }\n\n protected _next(value: T): void {\n const index = this.index++;\n\n if (this.predicate) {\n this.tryNext(value, index);\n } else {\n this.applySingleValue(value);\n }\n }\n\n private tryNext(value: T, index: number): void {\n try {\n if (this.predicate(value, index, this.source)) {\n this.applySingleValue(value);\n }\n } catch (err) {\n this.destination.error(err);\n }\n }\n\n protected _complete(): void {\n const destination = this.destination;\n\n if (this.index > 0) {\n destination.next(this.seenValue ? this.singleValue : undefined);\n destination.complete();\n } else {\n destination.error(new EmptyError);\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\n\n/**\n * Returns an Observable that skips the first `count` items emitted by the source Observable.\n *\n * ![](skip.png)\n *\n * @param {Number} count - The number of times, items emitted by source Observable should be skipped.\n * @return {Observable} An Observable that skips values emitted by the source Observable.\n *\n * @method skip\n * @owner Observable\n */\nexport function skip(count: number): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new SkipOperator(count));\n}\n\nclass SkipOperator implements Operator {\n constructor(private total: number) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new SkipSubscriber(subscriber, this.total));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass SkipSubscriber extends Subscriber {\n count: number = 0;\n\n constructor(destination: Subscriber, private total: number) {\n super(destination);\n }\n\n protected _next(x: T) {\n if (++this.count > this.total) {\n this.destination.next(x);\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { ArgumentOutOfRangeError } from '../util/ArgumentOutOfRangeError';\nimport { Observable } from '../Observable';\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\n\n/**\n * Skip the last `count` values emitted by the source Observable.\n *\n * ![](skipLast.png)\n *\n * `skipLast` returns an Observable that accumulates a queue with a length\n * enough to store the first `count` values. As more values are received,\n * values are taken from the front of the queue and produced on the result\n * sequence. This causes values to be delayed.\n *\n * ## Example\n * Skip the last 2 values of an Observable with many values\n * ```ts\n * import { range } from 'rxjs';\n * import { skipLast } from 'rxjs/operators';\n *\n * const many = range(1, 5);\n * const skipLastTwo = many.pipe(skipLast(2));\n * skipLastTwo.subscribe(x => console.log(x));\n *\n * // Results in:\n * // 1 2 3\n * ```\n *\n * @see {@link skip}\n * @see {@link skipUntil}\n * @see {@link skipWhile}\n * @see {@link take}\n *\n * @throws {ArgumentOutOfRangeError} When using `skipLast(i)`, it throws\n * ArgumentOutOrRangeError if `i < 0`.\n *\n * @param {number} count Number of elements to skip from the end of the source Observable.\n * @returns {Observable} An Observable that skips the last count values\n * emitted by the source Observable.\n * @method skipLast\n * @owner Observable\n */\nexport function skipLast(count: number): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new SkipLastOperator(count));\n}\n\nclass SkipLastOperator implements Operator {\n constructor(private _skipCount: number) {\n if (this._skipCount < 0) {\n throw new ArgumentOutOfRangeError;\n }\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n if (this._skipCount === 0) {\n // If we don't want to skip any values then just subscribe\n // to Subscriber without any further logic.\n return source.subscribe(new Subscriber(subscriber));\n } else {\n return source.subscribe(new SkipLastSubscriber(subscriber, this._skipCount));\n }\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass SkipLastSubscriber extends Subscriber {\n private _ring: T[];\n private _count: number = 0;\n\n constructor(destination: Subscriber, private _skipCount: number) {\n super(destination);\n this._ring = new Array(_skipCount);\n }\n\n protected _next(value: T): void {\n const skipCount = this._skipCount;\n const count = this._count++;\n\n if (count < skipCount) {\n this._ring[count] = value;\n } else {\n const currentIndex = count % skipCount;\n const ring = this._ring;\n const oldValue = ring[currentIndex];\n\n ring[currentIndex] = value;\n this.destination.next(oldValue);\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { MonoTypeOperatorFunction, TeardownLogic, ObservableInput } from '../types';\nimport { Subscription } from '../Subscription';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\n\n/**\n * Returns an Observable that skips items emitted by the source Observable until a second Observable emits an item.\n *\n * The `skipUntil` operator causes the observable stream to skip the emission of values ​​until the passed in observable emits the first value.\n * This can be particularly useful in combination with user interactions, responses of http requests or waiting for specific times to pass by.\n *\n * ![](skipUntil.png)\n *\n * Internally the `skipUntil` operator subscribes to the passed in observable (in the following called *notifier*) in order to recognize the emission\n * of its first value. When this happens, the operator unsubscribes from the *notifier* and starts emitting the values of the *source*\n * observable. It will never let the *source* observable emit any values if the *notifier* completes or throws an error without emitting\n * a value before.\n *\n * ## Example\n *\n * In the following example, all emitted values ​​of the interval observable are skipped until the user clicks anywhere within the page.\n *\n * ```ts\n * import { interval, fromEvent } from 'rxjs';\n * import { skipUntil } from 'rxjs/operators';\n *\n * const intervalObservable = interval(1000);\n * const click = fromEvent(document, 'click');\n *\n * const emitAfterClick = intervalObservable.pipe(\n * skipUntil(click)\n * );\n * // clicked at 4.6s. output: 5...6...7...8........ or\n * // clicked at 7.3s. output: 8...9...10..11.......\n * const subscribe = emitAfterClick.subscribe(value => console.log(value));\n * ```\n *\n * @param {Observable} notifier - The second Observable that has to emit an item before the source Observable's elements begin to\n * be mirrored by the resulting Observable.\n * @return {Observable} An Observable that skips items from the source Observable until the second Observable emits\n * an item, then emits the remaining items.\n * @method skipUntil\n * @owner Observable\n */\nexport function skipUntil(notifier: Observable): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new SkipUntilOperator(notifier));\n}\n\nclass SkipUntilOperator implements Operator {\n constructor(private notifier: Observable) {\n }\n\n call(destination: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new SkipUntilSubscriber(destination, this.notifier));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass SkipUntilSubscriber extends SimpleOuterSubscriber {\n\n private hasValue: boolean = false;\n private innerSubscription?: Subscription;\n\n constructor(destination: Subscriber, notifier: ObservableInput) {\n super(destination);\n const innerSubscriber = new SimpleInnerSubscriber(this);\n this.add(innerSubscriber);\n this.innerSubscription = innerSubscriber;\n const innerSubscription = innerSubscribe(notifier, innerSubscriber);\n // The returned subscription will usually be the subscriber that was\n // passed. However, interop subscribers will be wrapped and for\n // unsubscriptions to chain correctly, the wrapper needs to be added, too.\n if (innerSubscription !== innerSubscriber) {\n this.add(innerSubscription);\n this.innerSubscription = innerSubscription;\n }\n }\n\n protected _next(value: T) {\n if (this.hasValue) {\n super._next(value);\n }\n }\n\n notifyNext(): void {\n this.hasValue = true;\n if (this.innerSubscription) {\n this.innerSubscription.unsubscribe();\n }\n }\n\n notifyComplete() {\n /* do nothing */\n }\n}\n","import { Observable } from '../Observable';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\n\n/**\n * Returns an Observable that skips all items emitted by the source Observable as long as a specified condition holds\n * true, but emits all further source items as soon as the condition becomes false.\n *\n * ![](skipWhile.png)\n *\n * @param {Function} predicate - A function to test each item emitted from the source Observable.\n * @return {Observable} An Observable that begins emitting items emitted by the source Observable when the\n * specified predicate becomes false.\n * @method skipWhile\n * @owner Observable\n */\nexport function skipWhile(predicate: (value: T, index: number) => boolean): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new SkipWhileOperator(predicate));\n}\n\nclass SkipWhileOperator implements Operator {\n constructor(private predicate: (value: T, index: number) => boolean) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new SkipWhileSubscriber(subscriber, this.predicate));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass SkipWhileSubscriber extends Subscriber {\n private skipping: boolean = true;\n private index: number = 0;\n\n constructor(destination: Subscriber,\n private predicate: (value: T, index: number) => boolean) {\n super(destination);\n }\n\n protected _next(value: T): void {\n const destination = this.destination;\n if (this.skipping) {\n this.tryCallPredicate(value);\n }\n\n if (!this.skipping) {\n destination.next(value);\n }\n }\n\n private tryCallPredicate(value: T): void {\n try {\n const result = this.predicate(value, this.index++);\n this.skipping = Boolean(result);\n } catch (err) {\n this.destination.error(err);\n }\n }\n}\n","import { Observable } from '../Observable';\nimport { concat } from '../observable/concat';\nimport { isScheduler } from '../util/isScheduler';\nimport { MonoTypeOperatorFunction, OperatorFunction, SchedulerLike } from '../types';\n\n/* tslint:disable:max-line-length */\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([[a, b, c], source], scheduler).pipe(concatAll())`) */\nexport function startWith(scheduler: SchedulerLike): MonoTypeOperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([[a, b, c], source], scheduler).pipe(concatAll())`) */\nexport function startWith(v1: D, scheduler: SchedulerLike): OperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([[a, b, c], source], scheduler).pipe(concatAll())`) */\nexport function startWith(v1: D, v2: E, scheduler: SchedulerLike): OperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([[a, b, c], source], scheduler).pipe(concatAll())`) */\nexport function startWith(v1: D, v2: E, v3: F, scheduler: SchedulerLike): OperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([[a, b, c], source], scheduler).pipe(concatAll())`) */\nexport function startWith(v1: D, v2: E, v3: F, v4: G, scheduler: SchedulerLike): OperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([[a, b, c], source], scheduler).pipe(concatAll())`) */\nexport function startWith(v1: D, v2: E, v3: F, v4: G, v5: H, scheduler: SchedulerLike): OperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([[a, b, c], source], scheduler).pipe(concatAll())`) */\nexport function startWith(v1: D, v2: E, v3: F, v4: G, v5: H, v6: I, scheduler: SchedulerLike): OperatorFunction;\n\nexport function startWith(v1: D): OperatorFunction;\nexport function startWith(v1: D, v2: E): OperatorFunction;\nexport function startWith(v1: D, v2: E, v3: F): OperatorFunction;\nexport function startWith(v1: D, v2: E, v3: F, v4: G): OperatorFunction;\nexport function startWith(v1: D, v2: E, v3: F, v4: G, v5: H): OperatorFunction;\nexport function startWith(v1: D, v2: E, v3: F, v4: G, v5: H, v6: I): OperatorFunction;\nexport function startWith(...array: D[]): OperatorFunction;\n/** @deprecated use {@link scheduled} and {@link concatAll} (e.g. `scheduled([[a, b, c], source], scheduler).pipe(concatAll())`) */\nexport function startWith(...array: Array): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Returns an Observable that emits the items you specify as arguments before it begins to emit\n * items emitted by the source Observable.\n *\n * First emits its arguments in order, and then any\n * emissions from the source.\n *\n * ![](startWith.png)\n *\n * ## Examples\n *\n * Start the chain of emissions with `\"first\"`, `\"second\"`\n *\n * ```ts\n * import { of } from 'rxjs';\n * import { startWith } from 'rxjs/operators';\n *\n * of(\"from source\")\n * .pipe(startWith(\"first\", \"second\"))\n * .subscribe(x => console.log(x));\n *\n * // results:\n * // \"first\"\n * // \"second\"\n * // \"from source\"\n * ```\n *\n * @param {...T} values - Items you want the modified Observable to emit first.\n * @param {SchedulerLike} [scheduler] - A {@link SchedulerLike} to use for scheduling\n * the emissions of the `next` notifications.\n * @return {Observable} An Observable that emits the items in the specified Iterable and then emits the items\n * emitted by the source Observable.\n * @method startWith\n * @owner Observable\n */\nexport function startWith(...array: Array): OperatorFunction {\n const scheduler = array[array.length - 1] as SchedulerLike;\n if (isScheduler(scheduler)) {\n // deprecated path\n array.pop();\n return (source: Observable) => concat(array as T[], source, scheduler);\n } else {\n return (source: Observable) => concat(array as T[], source);\n }\n}\n","import { SchedulerLike, SchedulerAction } from '../types';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { Observable } from '../Observable';\nimport { asap } from '../scheduler/asap';\nimport { isNumeric } from '../util/isNumeric';\n\nexport interface DispatchArg {\n source: Observable;\n subscriber: Subscriber;\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nexport class SubscribeOnObservable extends Observable {\n /** @nocollapse */\n static create(source: Observable, delay: number = 0, scheduler: SchedulerLike = asap): Observable {\n return new SubscribeOnObservable(source, delay, scheduler);\n }\n\n /** @nocollapse */\n static dispatch(this: SchedulerAction, arg: DispatchArg): Subscription {\n const { source, subscriber } = arg;\n return this.add(source.subscribe(subscriber));\n }\n\n constructor(public source: Observable,\n private delayTime: number = 0,\n private scheduler: SchedulerLike = asap) {\n super();\n if (!isNumeric(delayTime) || delayTime < 0) {\n this.delayTime = 0;\n }\n if (!scheduler || typeof scheduler.schedule !== 'function') {\n this.scheduler = asap;\n }\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _subscribe(subscriber: Subscriber) {\n const delay = this.delayTime;\n const source = this.source;\n const scheduler = this.scheduler;\n\n return scheduler.schedule>(SubscribeOnObservable.dispatch, delay, {\n source, subscriber\n });\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { SubscribeOnObservable } from '../observable/SubscribeOnObservable';\nimport { MonoTypeOperatorFunction, SchedulerLike, TeardownLogic } from '../types';\n\n/**\n * Asynchronously subscribes Observers to this Observable on the specified {@link SchedulerLike}.\n *\n * With `subscribeOn` you can decide what type of scheduler a specific Observable will be using when it is subscribed to.\n *\n * Schedulers control the speed and order of emissions to observers from an Observable stream.\n *\n * ![](subscribeOn.png)\n *\n * ## Example\n * Given the following code:\n * ```javascript\n * import { of, merge } from 'rxjs';\n *\n * const a = of(1, 2, 3, 4);\n * const b = of(5, 6, 7, 8, 9);\n * merge(a, b).subscribe(console.log);\n * ```\n *\n * Both Observable `a` and `b` will emit their values directly and synchronously once they are subscribed to.\n * This will result in the output of `1 2 3 4 5 6 7 8 9`.\n *\n * But if we instead us the `subscribeOn` operator declaring that we want to use the {@link asyncScheduler} for values emited by Observable `a`:\n * ```javascript\n * import { of, merge, asyncScheduler } from 'rxjs';\n * import { subscribeOn } from 'rxjs/operators';\n *\n * const a = of(1, 2, 3, 4).pipe(subscribeOn(asyncScheduler));\n * const b = of(5, 6, 7, 8, 9);\n * merge(a, b).subscribe(console.log);\n * ```\n *\n * The output will instead be `5 6 7 8 9 1 2 3 4`.\n * The reason for this is that Observable `b` emits its values directly and synchronously like before\n * but the emissions from `a` are scheduled on the event loop because we are now using the {@link asyncScheduler} for that specific Observable.\n *\n * @param {SchedulerLike} scheduler - The {@link SchedulerLike} to perform subscription actions on.\n * @return {Observable} The source Observable modified so that its subscriptions happen on the specified {@link SchedulerLike}.\n .\n * @method subscribeOn\n * @owner Observable\n */\nexport function subscribeOn(scheduler: SchedulerLike, delay: number = 0): MonoTypeOperatorFunction {\n return function subscribeOnOperatorFunction(source: Observable): Observable {\n return source.lift(new SubscribeOnOperator(scheduler, delay));\n };\n}\n\nclass SubscribeOnOperator implements Operator {\n constructor(private scheduler: SchedulerLike,\n private delay: number) {\n }\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return new SubscribeOnObservable(\n source, this.delay, this.scheduler\n ).subscribe(subscriber);\n }\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\nimport { map } from './map';\nimport { from } from '../observable/from';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\n\n/* tslint:disable:max-line-length */\nexport function switchMap>(project: (value: T, index: number) => O): OperatorFunction>;\n/** @deprecated resultSelector is no longer supported, use inner map instead */\nexport function switchMap>(project: (value: T, index: number) => O, resultSelector: undefined): OperatorFunction>;\n/** @deprecated resultSelector is no longer supported, use inner map instead */\nexport function switchMap>(project: (value: T, index: number) => O, resultSelector: (outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable, emitting values only from the most recently projected Observable.\n *\n * Maps each value to an Observable, then flattens all of\n * these inner Observables.\n *\n * ![](switchMap.png)\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an (so-called \"inner\") Observable. Each time it observes one of these\n * inner Observables, the output Observable begins emitting the items emitted by\n * that inner Observable. When a new inner Observable is emitted, `switchMap`\n * stops emitting items from the earlier-emitted inner Observable and begins\n * emitting items from the new one. It continues to behave like this for\n * subsequent inner Observables.\n *\n * ## Example\n * Generate new Observable according to source Observable values\n * ```typescript\n * import { of } from 'rxjs';\n * import { switchMap } from 'rxjs/operators';\n *\n * const switched = of(1, 2, 3).pipe(switchMap((x: number) => of(x, x ** 2, x ** 3)));\n * switched.subscribe(x => console.log(x));\n * // outputs\n * // 1\n * // 1\n * // 1\n * // 2\n * // 4\n * // 8\n * // ... and so on\n * ```\n *\n * Rerun an interval Observable on every click event\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { switchMap } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(switchMap((ev) => interval(1000)));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link concatMap}\n * @see {@link exhaustMap}\n * @see {@link mergeMap}\n * @see {@link switchAll}\n * @see {@link switchMapTo}\n *\n * @param {function(value: T, ?index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @return {Observable} An Observable that emits the result of applying the\n * projection function (and the optional deprecated `resultSelector`) to each item\n * emitted by the source Observable and taking only the values from the most recently\n * projected inner Observable.\n * @method switchMap\n * @owner Observable\n */\nexport function switchMap>(\n project: (value: T, index: number) => O,\n resultSelector?: (outerValue: T, innerValue: ObservedValueOf, outerIndex: number, innerIndex: number) => R,\n): OperatorFunction|R> {\n if (typeof resultSelector === 'function') {\n return (source: Observable) => source.pipe(\n switchMap((a, i) => from(project(a, i)).pipe(\n map((b, ii) => resultSelector(a, b, i, ii))\n ))\n );\n }\n return (source: Observable) => source.lift(new SwitchMapOperator(project));\n}\n\nclass SwitchMapOperator implements Operator {\n constructor(private project: (value: T, index: number) => ObservableInput) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new SwitchMapSubscriber(subscriber, this.project));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass SwitchMapSubscriber extends SimpleOuterSubscriber {\n private index = 0;\n private innerSubscription?: Subscription;\n\n constructor(destination: Subscriber,\n private project: (value: T, index: number) => ObservableInput) {\n super(destination);\n }\n\n protected _next(value: T) {\n let result: ObservableInput;\n const index = this.index++;\n try {\n result = this.project(value, index);\n } catch (error) {\n this.destination.error!(error);\n return;\n }\n this._innerSub(result);\n }\n\n private _innerSub(result: ObservableInput) {\n const innerSubscription = this.innerSubscription;\n if (innerSubscription) {\n innerSubscription.unsubscribe();\n }\n const innerSubscriber = new SimpleInnerSubscriber(this);\n const destination = this.destination as Subscription;\n destination.add(innerSubscriber);\n this.innerSubscription = innerSubscribe(result, innerSubscriber);\n // The returned subscription will usually be the subscriber that was\n // passed. However, interop subscribers will be wrapped and for\n // unsubscriptions to chain correctly, the wrapper needs to be added, too.\n if (this.innerSubscription !== innerSubscriber) {\n destination.add(this.innerSubscription);\n }\n }\n\n protected _complete(): void {\n const {innerSubscription} = this;\n if (!innerSubscription || innerSubscription.closed) {\n super._complete();\n }\n this.unsubscribe();\n }\n\n protected _unsubscribe() {\n this.innerSubscription = undefined;\n }\n\n notifyComplete(): void {\n this.innerSubscription = undefined;\n if (this.isStopped) {\n super._complete();\n }\n }\n\n notifyNext(innerValue: R): void {\n this.destination.next!(innerValue);\n }\n}\n","import {OperatorFunction, ObservableInput} from '../types';\nimport { switchMap } from './switchMap';\nimport { identity } from '../util/identity';\n\nexport function switchAll(): OperatorFunction, T>;\nexport function switchAll(): OperatorFunction;\n\n/**\n * Converts a higher-order Observable into a first-order Observable\n * producing values only from the most recent observable sequence\n *\n * Flattens an Observable-of-Observables.\n *\n * ![](switchAll.png)\n *\n * `switchAll` subscribes to a source that is an observable of observables, also known as a\n * \"higher-order observable\" (or `Observable>`). It subscribes to the most recently\n * provided \"inner observable\" emitted by the source, unsubscribing from any previously subscribed\n * to inner observable, such that only the most recent inner observable may be subscribed to at\n * any point in time. The resulting observable returned by `switchAll` will only complete if the\n * source observable completes, *and* any currently subscribed to inner observable also has completed,\n * if there are any.\n *\n * ## Examples\n * Spawn a new interval observable for each click event, but for every new\n * click, cancel the previous interval and subscribe to the new one.\n *\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { switchAll, map, tap } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click').pipe(tap(() => console.log('click')));\n * const source = clicks.pipe(map((ev) => interval(1000)));\n *\n * source.pipe(\n * switchAll()\n * ).subscribe(x => console.log(x));\n *\n * // Output\n * // click\n * // 1\n * // 2\n * // 3\n * // 4\n * // ...\n * // click\n * // 1\n * // 2\n * // 3\n * // ...\n * // click\n * // ...\n * ```\n *\n * @see {@link combineAll}\n * @see {@link concatAll}\n * @see {@link exhaust}\n * @see {@link switchMap}\n * @see {@link switchMapTo}\n * @see {@link mergeAll}\n */\n\nexport function switchAll(): OperatorFunction, T> {\n return switchMap(identity);\n}\n","import { ObservableInput, OperatorFunction } from '../types';\nimport { switchMap } from './switchMap';\n\n/* tslint:disable:max-line-length */\nexport function switchMapTo(observable: ObservableInput): OperatorFunction;\n/** @deprecated resultSelector is no longer supported. Switch to using switchMap with an inner map */\nexport function switchMapTo(observable: ObservableInput, resultSelector: undefined): OperatorFunction;\n/** @deprecated resultSelector is no longer supported. Switch to using switchMap with an inner map */\nexport function switchMapTo(observable: ObservableInput, resultSelector: (outerValue: T, innerValue: I, outerIndex: number, innerIndex: number) => R): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to the same Observable which is flattened multiple\n * times with {@link switchMap} in the output Observable.\n *\n * It's like {@link switchMap}, but maps each value\n * always to the same inner Observable.\n *\n * ![](switchMapTo.png)\n *\n * Maps each source value to the given Observable `innerObservable` regardless\n * of the source value, and then flattens those resulting Observables into one\n * single Observable, which is the output Observable. The output Observables\n * emits values only from the most recently emitted instance of\n * `innerObservable`.\n *\n * ## Example\n * Rerun an interval Observable on every click event\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { switchMapTo } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(switchMapTo(interval(1000)));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link concatMapTo}\n * @see {@link switchAll}\n * @see {@link switchMap}\n * @see {@link mergeMapTo}\n *\n * @param {ObservableInput} innerObservable An Observable to replace each value from\n * the source Observable.\n * @return {Observable} An Observable that emits items from the given\n * `innerObservable` (and optionally transformed through the deprecated `resultSelector`)\n * every time a value is emitted on the source Observable, and taking only the values\n * from the most recently projected inner Observable.\n * @method switchMapTo\n * @owner Observable\n */\nexport function switchMapTo(\n innerObservable: ObservableInput,\n resultSelector?: (outerValue: T, innerValue: I, outerIndex: number, innerIndex: number) => R\n): OperatorFunction {\n return resultSelector ? switchMap(() => innerObservable, resultSelector) : switchMap(() => innerObservable);\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\n\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\nimport { innerSubscribe, SimpleInnerSubscriber, SimpleOuterSubscriber } from '../innerSubscribe';\n\n/**\n * Emits the values emitted by the source Observable until a `notifier`\n * Observable emits a value.\n *\n * Lets values pass until a second Observable,\n * `notifier`, emits a value. Then, it completes.\n *\n * ![](takeUntil.png)\n *\n * `takeUntil` subscribes and begins mirroring the source Observable. It also\n * monitors a second Observable, `notifier` that you provide. If the `notifier`\n * emits a value, the output Observable stops mirroring the source Observable\n * and completes. If the `notifier` doesn't emit any value and completes\n * then `takeUntil` will pass all values.\n *\n * ## Example\n * Tick every second until the first click happens\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { takeUntil } from 'rxjs/operators';\n *\n * const source = interval(1000);\n * const clicks = fromEvent(document, 'click');\n * const result = source.pipe(takeUntil(clicks));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link take}\n * @see {@link takeLast}\n * @see {@link takeWhile}\n * @see {@link skip}\n *\n * @param {Observable} notifier The Observable whose first emitted value will\n * cause the output Observable of `takeUntil` to stop emitting values from the\n * source Observable.\n * @return {Observable} An Observable that emits the values from the source\n * Observable until such time as `notifier` emits its first value.\n * @method takeUntil\n * @owner Observable\n */\nexport function takeUntil(notifier: Observable): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new TakeUntilOperator(notifier));\n}\n\nclass TakeUntilOperator implements Operator {\n constructor(private notifier: Observable) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n const takeUntilSubscriber = new TakeUntilSubscriber(subscriber);\n const notifierSubscription = innerSubscribe(this.notifier, new SimpleInnerSubscriber(takeUntilSubscriber));\n if (notifierSubscription && !takeUntilSubscriber.seenValue) {\n takeUntilSubscriber.add(notifierSubscription);\n return source.subscribe(takeUntilSubscriber);\n }\n return takeUntilSubscriber;\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass TakeUntilSubscriber extends SimpleOuterSubscriber {\n seenValue = false;\n\n constructor(destination: Subscriber, ) {\n super(destination);\n }\n\n notifyNext(): void {\n this.seenValue = true;\n this.complete();\n }\n\n notifyComplete(): void {\n // noop\n }\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { OperatorFunction, MonoTypeOperatorFunction, TeardownLogic } from '../types';\n\nexport function takeWhile(predicate: (value: T, index: number) => value is S): OperatorFunction;\nexport function takeWhile(predicate: (value: T, index: number) => value is S, inclusive: false): OperatorFunction;\nexport function takeWhile(predicate: (value: T, index: number) => boolean, inclusive?: boolean): MonoTypeOperatorFunction;\n\n/**\n * Emits values emitted by the source Observable so long as each value satisfies\n * the given `predicate`, and then completes as soon as this `predicate` is not\n * satisfied.\n *\n * Takes values from the source only while they pass the\n * condition given. When the first value does not satisfy, it completes.\n *\n * ![](takeWhile.png)\n *\n * `takeWhile` subscribes and begins mirroring the source Observable. Each value\n * emitted on the source is given to the `predicate` function which returns a\n * boolean, representing a condition to be satisfied by the source values. The\n * output Observable emits the source values until such time as the `predicate`\n * returns false, at which point `takeWhile` stops mirroring the source\n * Observable and completes the output Observable.\n *\n * ## Example\n * Emit click events only while the clientX property is greater than 200\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { takeWhile } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(takeWhile(ev => ev.clientX > 200));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link take}\n * @see {@link takeLast}\n * @see {@link takeUntil}\n * @see {@link skip}\n *\n * @param {function(value: T, index: number): boolean} predicate A function that\n * evaluates a value emitted by the source Observable and returns a boolean.\n * Also takes the (zero-based) index as the second argument.\n * @param {boolean} inclusive When set to `true` the value that caused\n * `predicate` to return `false` will also be emitted.\n * @return {Observable} An Observable that emits the values from the source\n * Observable so long as each value satisfies the condition defined by the\n * `predicate`, then completes.\n * @method takeWhile\n * @owner Observable\n */\nexport function takeWhile(\n predicate: (value: T, index: number) => boolean,\n inclusive = false): MonoTypeOperatorFunction {\n return (source: Observable) =>\n source.lift(new TakeWhileOperator(predicate, inclusive));\n}\n\nclass TakeWhileOperator implements Operator {\n constructor(\n private predicate: (value: T, index: number) => boolean,\n private inclusive: boolean) {}\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(\n new TakeWhileSubscriber(subscriber, this.predicate, this.inclusive));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass TakeWhileSubscriber extends Subscriber {\n private index: number = 0;\n\n constructor(\n destination: Subscriber,\n private predicate: (value: T, index: number) => boolean,\n private inclusive: boolean) {\n super(destination);\n }\n\n protected _next(value: T): void {\n const destination = this.destination;\n let result: boolean;\n try {\n result = this.predicate(value, this.index++);\n } catch (err) {\n destination.error(err);\n return;\n }\n this.nextOrComplete(value, result);\n }\n\n private nextOrComplete(value: T, predicateResult: boolean): void {\n const destination = this.destination;\n if (Boolean(predicateResult)) {\n destination.next(value);\n } else {\n if (this.inclusive) {\n destination.next(value);\n }\n destination.complete();\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { MonoTypeOperatorFunction, PartialObserver, TeardownLogic } from '../types';\nimport { noop } from '../util/noop';\nimport { isFunction } from '../util/isFunction';\n\n/* tslint:disable:max-line-length */\n/** @deprecated Use an observer instead of a complete callback */\nexport function tap(next: null | undefined, error: null | undefined, complete: () => void): MonoTypeOperatorFunction;\n/** @deprecated Use an observer instead of an error callback */\nexport function tap(next: null | undefined, error: (error: any) => void, complete?: () => void): MonoTypeOperatorFunction;\n/** @deprecated Use an observer instead of a complete callback */\nexport function tap(next: (value: T) => void, error: null | undefined, complete: () => void): MonoTypeOperatorFunction;\nexport function tap(next?: (x: T) => void, error?: (e: any) => void, complete?: () => void): MonoTypeOperatorFunction;\nexport function tap(observer: PartialObserver): MonoTypeOperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Perform a side effect for every emission on the source Observable, but return\n * an Observable that is identical to the source.\n *\n * Intercepts each emission on the source and runs a\n * function, but returns an output which is identical to the source as long as errors don't occur.\n *\n * ![](do.png)\n *\n * Returns a mirrored Observable of the source Observable, but modified so that\n * the provided Observer is called to perform a side effect for every value,\n * error, and completion emitted by the source. Any errors that are thrown in\n * the aforementioned Observer or handlers are safely sent down the error path\n * of the output Observable.\n *\n * This operator is useful for debugging your Observables for the correct values\n * or performing other side effects.\n *\n * Note: this is different to a `subscribe` on the Observable. If the Observable\n * returned by `tap` is not subscribed, the side effects specified by the\n * Observer will never happen. `tap` therefore simply spies on existing\n * execution, it does not trigger an execution to happen like `subscribe` does.\n *\n * ## Example\n * Map every click to the clientX position of that click, while also logging the click event\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { tap, map } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const positions = clicks.pipe(\n * tap(ev => console.log(ev)),\n * map(ev => ev.clientX),\n * );\n * positions.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link map}\n * @see {@link Observable#subscribe}\n *\n * @param {Observer|function} [nextOrObserver] A normal Observer object or a\n * callback for `next`.\n * @param {function} [error] Callback for errors in the source.\n * @param {function} [complete] Callback for the completion of the source.\n * @return {Observable} An Observable identical to the source, but runs the\n * specified Observer or callback(s) for each item.\n * @name tap\n */\nexport function tap(nextOrObserver?: PartialObserver | ((x: T) => void),\n error?: (e: any) => void,\n complete?: () => void): MonoTypeOperatorFunction {\n return function tapOperatorFunction(source: Observable): Observable {\n return source.lift(new DoOperator(nextOrObserver, error, complete));\n };\n}\n\nclass DoOperator implements Operator {\n constructor(private nextOrObserver?: PartialObserver | ((x: T) => void),\n private error?: (e: any) => void,\n private complete?: () => void) {\n }\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new TapSubscriber(subscriber, this.nextOrObserver, this.error, this.complete));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\n\nclass TapSubscriber extends Subscriber {\n private _context: any;\n\n private _tapNext: ((value: T) => void) = noop;\n\n private _tapError: ((err: any) => void) = noop;\n\n private _tapComplete: (() => void) = noop;\n\n constructor(destination: Subscriber,\n observerOrNext?: PartialObserver | ((value: T) => void),\n error?: (e?: any) => void,\n complete?: () => void) {\n super(destination);\n this._tapError = error || noop;\n this._tapComplete = complete || noop;\n if (isFunction(observerOrNext)) {\n this._context = this;\n this._tapNext = observerOrNext;\n } else if (observerOrNext) {\n this._context = observerOrNext;\n this._tapNext = observerOrNext.next || noop;\n this._tapError = observerOrNext.error || noop;\n this._tapComplete = observerOrNext.complete || noop;\n }\n }\n\n _next(value: T) {\n try {\n this._tapNext.call(this._context, value);\n } catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(value);\n }\n\n _error(err: any) {\n try {\n this._tapError.call(this._context, err);\n } catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.error(err);\n }\n\n _complete() {\n try {\n this._tapComplete.call(this._context, );\n } catch (err) {\n this.destination.error(err);\n return;\n }\n return this.destination.complete();\n }\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\n\nimport { MonoTypeOperatorFunction, SubscribableOrPromise, TeardownLogic } from '../types';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\n\nexport interface ThrottleConfig {\n leading?: boolean;\n trailing?: boolean;\n}\n\nexport const defaultThrottleConfig: ThrottleConfig = {\n leading: true,\n trailing: false\n};\n\n/**\n * Emits a value from the source Observable, then ignores subsequent source\n * values for a duration determined by another Observable, then repeats this\n * process.\n *\n * It's like {@link throttleTime}, but the silencing\n * duration is determined by a second Observable.\n *\n * ![](throttle.png)\n *\n * `throttle` emits the source Observable values on the output Observable\n * when its internal timer is disabled, and ignores source values when the timer\n * is enabled. Initially, the timer is disabled. As soon as the first source\n * value arrives, it is forwarded to the output Observable, and then the timer\n * is enabled by calling the `durationSelector` function with the source value,\n * which returns the \"duration\" Observable. When the duration Observable emits a\n * value or completes, the timer is disabled, and this process repeats for the\n * next source value.\n *\n * ## Example\n * Emit clicks at a rate of at most one click per second\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { throttle } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(throttle(ev => interval(1000)));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link audit}\n * @see {@link debounce}\n * @see {@link delayWhen}\n * @see {@link sample}\n * @see {@link throttleTime}\n *\n * @param {function(value: T): SubscribableOrPromise} durationSelector A function\n * that receives a value from the source Observable, for computing the silencing\n * duration for each source value, returned as an Observable or a Promise.\n * @param {Object} config a configuration object to define `leading` and `trailing` behavior. Defaults\n * to `{ leading: true, trailing: false }`.\n * @return {Observable} An Observable that performs the throttle operation to\n * limit the rate of emissions from the source.\n * @method throttle\n * @owner Observable\n */\nexport function throttle(durationSelector: (value: T) => SubscribableOrPromise,\n config: ThrottleConfig = defaultThrottleConfig): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new ThrottleOperator(durationSelector, !!config.leading, !!config.trailing));\n}\n\nclass ThrottleOperator implements Operator {\n constructor(private durationSelector: (value: T) => SubscribableOrPromise,\n private leading: boolean,\n private trailing: boolean) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(\n new ThrottleSubscriber(subscriber, this.durationSelector, this.leading, this.trailing)\n );\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc\n * @ignore\n * @extends {Ignored}\n */\nclass ThrottleSubscriber extends SimpleOuterSubscriber {\n private _throttled?: Subscription;\n private _sendValue?: T;\n private _hasValue = false;\n\n constructor(protected destination: Subscriber,\n private durationSelector: (value: T) => SubscribableOrPromise,\n private _leading: boolean,\n private _trailing: boolean) {\n super(destination);\n }\n\n protected _next(value: T): void {\n this._hasValue = true;\n this._sendValue = value;\n\n if (!this._throttled) {\n if (this._leading) {\n this.send();\n } else {\n this.throttle(value);\n }\n }\n }\n\n private send() {\n const { _hasValue, _sendValue } = this;\n if (_hasValue) {\n this.destination.next(_sendValue);\n this.throttle(_sendValue!);\n }\n this._hasValue = false;\n this._sendValue = undefined;\n }\n\n private throttle(value: T): void {\n const duration = this.tryDurationSelector(value);\n if (!!duration) {\n this.add(this._throttled = innerSubscribe(duration, new SimpleInnerSubscriber(this)));\n }\n }\n\n private tryDurationSelector(value: T): SubscribableOrPromise | null {\n try {\n return this.durationSelector(value);\n } catch (err) {\n this.destination.error(err);\n return null;\n }\n }\n\n private throttlingDone() {\n const { _throttled, _trailing } = this;\n if (_throttled) {\n _throttled.unsubscribe();\n }\n this._throttled = undefined;\n\n if (_trailing) {\n this.send();\n }\n }\n\n notifyNext(): void {\n this.throttlingDone();\n }\n\n notifyComplete(): void {\n this.throttlingDone();\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { async } from '../scheduler/async';\nimport { Observable } from '../Observable';\nimport { ThrottleConfig, defaultThrottleConfig } from './throttle';\nimport { MonoTypeOperatorFunction, SchedulerLike, TeardownLogic } from '../types';\n\n/**\n * Emits a value from the source Observable, then ignores subsequent source\n * values for `duration` milliseconds, then repeats this process.\n *\n * Lets a value pass, then ignores source values for the\n * next `duration` milliseconds.\n *\n * ![](throttleTime.png)\n *\n * `throttleTime` emits the source Observable values on the output Observable\n * when its internal timer is disabled, and ignores source values when the timer\n * is enabled. Initially, the timer is disabled. As soon as the first source\n * value arrives, it is forwarded to the output Observable, and then the timer\n * is enabled. After `duration` milliseconds (or the time unit determined\n * internally by the optional `scheduler`) has passed, the timer is disabled,\n * and this process repeats for the next source value. Optionally takes a\n * {@link SchedulerLike} for managing timers.\n *\n * ## Examples\n *\n * #### Limit click rate\n *\n * Emit clicks at a rate of at most one click per second\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { throttleTime } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(throttleTime(1000));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * #### Double Click\n *\n * The following example only emits clicks which happen within a subsequent\n * delay of 400ms of the previous click. This for example can emulate a double\n * click. It makes use of the `trailing` parameter of the throttle configuration.\n *\n * ```ts\n * import { fromEvent, asyncScheduler } from 'rxjs';\n * import { throttleTime, withLatestFrom } from 'rxjs/operators';\n *\n * // defaultThottleConfig = { leading: true, trailing: false }\n * const throttleConfig = {\n * leading: false,\n * trailing: true\n * }\n *\n * const click = fromEvent(document, 'click');\n * const doubleClick = click.pipe(\n * throttleTime(400, asyncScheduler, throttleConfig)\n * );\n *\n * doubleClick.subscribe((throttleValue: Event) => {\n * console.log(`Double-clicked! Timestamp: ${throttleValue.timeStamp}`);\n * });\n * ```\n *\n * If you enable the `leading` parameter in this example, the output would be the primary click and\n * the double click, but restricts additional clicks within 400ms.\n *\n * @see {@link auditTime}\n * @see {@link debounceTime}\n * @see {@link delay}\n * @see {@link sampleTime}\n * @see {@link throttle}\n *\n * @param {number} duration Time to wait before emitting another value after\n * emitting the last value, measured in milliseconds or the time unit determined\n * internally by the optional `scheduler`.\n * @param {SchedulerLike} [scheduler=async] The {@link SchedulerLike} to use for\n * managing the timers that handle the throttling.\n * @param {Object} config a configuration object to define `leading` and\n * `trailing` behavior. Defaults to `{ leading: true, trailing: false }`.\n * @return {Observable} An Observable that performs the throttle operation to\n * limit the rate of emissions from the source.\n * @method throttleTime\n * @owner Observable\n */\nexport function throttleTime(duration: number,\n scheduler: SchedulerLike = async,\n config: ThrottleConfig = defaultThrottleConfig): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new ThrottleTimeOperator(duration, scheduler, config.leading, config.trailing));\n}\n\nclass ThrottleTimeOperator implements Operator {\n constructor(private duration: number,\n private scheduler: SchedulerLike,\n private leading: boolean,\n private trailing: boolean) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(\n new ThrottleTimeSubscriber(subscriber, this.duration, this.scheduler, this.leading, this.trailing)\n );\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass ThrottleTimeSubscriber extends Subscriber {\n private throttled: Subscription;\n private _hasTrailingValue: boolean = false;\n private _trailingValue: T = null;\n\n constructor(destination: Subscriber,\n private duration: number,\n private scheduler: SchedulerLike,\n private leading: boolean,\n private trailing: boolean) {\n super(destination);\n }\n\n protected _next(value: T) {\n if (this.throttled) {\n if (this.trailing) {\n this._trailingValue = value;\n this._hasTrailingValue = true;\n }\n } else {\n this.add(this.throttled = this.scheduler.schedule>(dispatchNext, this.duration, { subscriber: this }));\n if (this.leading) {\n this.destination.next(value);\n } else if (this.trailing) {\n this._trailingValue = value;\n this._hasTrailingValue = true;\n }\n }\n }\n\n protected _complete() {\n if (this._hasTrailingValue) {\n this.destination.next(this._trailingValue);\n this.destination.complete();\n } else {\n this.destination.complete();\n }\n }\n\n clearThrottle() {\n const throttled = this.throttled;\n if (throttled) {\n if (this.trailing && this._hasTrailingValue) {\n this.destination.next(this._trailingValue);\n this._trailingValue = null;\n this._hasTrailingValue = false;\n }\n throttled.unsubscribe();\n this.remove(throttled);\n this.throttled = null;\n }\n }\n}\n\ninterface DispatchArg {\n subscriber: ThrottleTimeSubscriber;\n}\n\nfunction dispatchNext(arg: DispatchArg) {\n const { subscriber } = arg;\n subscriber.clearThrottle();\n}\n","\nimport { Observable } from '../Observable';\nimport { async } from '../scheduler/async';\nimport { SchedulerLike, OperatorFunction } from '../types';\nimport { scan } from './scan';\nimport { defer } from '../observable/defer';\nimport { map } from './map';\n\n/**\n *\n * Emits an object containing the current value, and the time that has\n * passed between emitting the current value and the previous value, which is\n * calculated by using the provided `scheduler`'s `now()` method to retrieve\n * the current time at each emission, then calculating the difference. The `scheduler`\n * defaults to {@link asyncScheduler}, so by default, the `interval` will be in\n * milliseconds.\n *\n * Convert an Observable that emits items into one that\n * emits indications of the amount of time elapsed between those emissions.\n *\n * ![](timeinterval.png)\n *\n * ## Examples\n * Emit inteval between current value with the last value\n *\n * ```ts\n * const seconds = interval(1000);\n *\n * seconds.pipe(timeInterval())\n * .subscribe(\n * value => console.log(value),\n * err => console.log(err),\n * );\n *\n * seconds.pipe(timeout(900))\n * .subscribe(\n * value => console.log(value),\n * err => console.log(err),\n * );\n *\n * // NOTE: The values will never be this precise,\n * // intervals created with `interval` or `setInterval`\n * // are non-deterministic.\n *\n * // {value: 0, interval: 1000}\n * // {value: 1, interval: 1000}\n * // {value: 2, interval: 1000}\n * ```\n *\n * @param {SchedulerLike} [scheduler] Scheduler used to get the current time.\n * @return {Observable<{ interval: number, value: T }>} Observable that emit infomation about value and interval\n * @method timeInterval\n */\nexport function timeInterval(scheduler: SchedulerLike = async): OperatorFunction> {\n return (source: Observable) => defer(() => {\n return source.pipe(\n // TODO(benlesh): correct these typings.\n scan(\n ({ current }, value) => ({ value, current: scheduler.now(), last: current }),\n { current: scheduler.now(), value: undefined, last: undefined }\n ) as any,\n map>(({ current, last, value }) => new TimeInterval(value, current - last)),\n );\n });\n}\n\n// TODO(benlesh): make this an interface, export the interface, but not the implemented class,\n// there's no reason users should be manually creating this type.\n\n/**\n * @deprecated exposed API, use as interface only.\n */\nexport class TimeInterval {\n constructor(public value: T, public interval: number) {}\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { async } from '../scheduler/async';\nimport { Observable } from '../Observable';\nimport { isDate } from '../util/isDate';\nimport { ObservableInput, OperatorFunction, SchedulerAction, SchedulerLike, TeardownLogic } from '../types';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\n\n/* tslint:disable:max-line-length */\nexport function timeoutWith(due: number | Date, withObservable: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n *\n * Errors if Observable does not emit a value in given time span, in case of which\n * subscribes to the second Observable.\n *\n * It's a version of `timeout` operator that let's you specify fallback Observable.\n *\n * ![](timeoutWith.png)\n *\n * `timeoutWith` is a variation of `timeout` operator. It behaves exactly the same,\n * still accepting as a first argument either a number or a Date, which control - respectively -\n * when values of source Observable should be emitted or when it should complete.\n *\n * The only difference is that it accepts a second, required parameter. This parameter\n * should be an Observable which will be subscribed when source Observable fails any timeout check.\n * So whenever regular `timeout` would emit an error, `timeoutWith` will instead start re-emitting\n * values from second Observable. Note that this fallback Observable is not checked for timeouts\n * itself, so it can emit values and complete at arbitrary points in time. From the moment of a second\n * subscription, Observable returned from `timeoutWith` simply mirrors fallback stream. When that\n * stream completes, it completes as well.\n *\n * Scheduler, which in case of `timeout` is provided as as second argument, can be still provided\n * here - as a third, optional parameter. It still is used to schedule timeout checks and -\n * as a consequence - when second Observable will be subscribed, since subscription happens\n * immediately after failing check.\n *\n * ## Example\n * Add fallback observable\n * ```ts\n * import { interval } from 'rxjs';\n * import { timeoutWith } from 'rxjs/operators';\n *\n * const seconds = interval(1000);\n * const minutes = interval(60 * 1000);\n *\n * seconds.pipe(timeoutWith(900, minutes))\n * .subscribe(\n * value => console.log(value), // After 900ms, will start emitting `minutes`,\n * // since first value of `seconds` will not arrive fast enough.\n * err => console.log(err), // Would be called after 900ms in case of `timeout`,\n * // but here will never be called.\n * );\n * ```\n *\n * @param {number|Date} due Number specifying period within which Observable must emit values\n * or Date specifying before when Observable should complete\n * @param {Observable} withObservable Observable which will be subscribed if source fails timeout check.\n * @param {SchedulerLike} [scheduler] Scheduler controlling when timeout checks occur.\n * @return {Observable} Observable that mirrors behaviour of source or, when timeout check fails, of an Observable\n * passed as a second parameter.\n * @method timeoutWith\n * @owner Observable\n */\nexport function timeoutWith(due: number | Date,\n withObservable: ObservableInput,\n scheduler: SchedulerLike = async): OperatorFunction {\n return (source: Observable) => {\n let absoluteTimeout = isDate(due);\n let waitFor = absoluteTimeout ? (+due - scheduler.now()) : Math.abs(due);\n return source.lift(new TimeoutWithOperator(waitFor, absoluteTimeout, withObservable, scheduler));\n };\n}\n\nclass TimeoutWithOperator implements Operator {\n constructor(private waitFor: number,\n private absoluteTimeout: boolean,\n private withObservable: ObservableInput,\n private scheduler: SchedulerLike) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new TimeoutWithSubscriber(\n subscriber, this.absoluteTimeout, this.waitFor, this.withObservable, this.scheduler\n ));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass TimeoutWithSubscriber extends SimpleOuterSubscriber {\n\n private action?: SchedulerAction>;\n\n constructor(destination: Subscriber,\n private absoluteTimeout: boolean,\n private waitFor: number,\n private withObservable: ObservableInput,\n private scheduler: SchedulerLike) {\n super(destination);\n this.scheduleTimeout();\n }\n\n private static dispatchTimeout(subscriber: TimeoutWithSubscriber): void {\n const { withObservable } = subscriber;\n subscriber._unsubscribeAndRecycle();\n subscriber.add(innerSubscribe(withObservable, new SimpleInnerSubscriber(subscriber)));\n }\n\n private scheduleTimeout(): void {\n const { action } = this;\n if (action) {\n // Recycle the action if we've already scheduled one. All the production\n // Scheduler Actions mutate their state/delay time and return themeselves.\n // VirtualActions are immutable, so they create and return a clone. In this\n // case, we need to set the action reference to the most recent VirtualAction,\n // to ensure that's the one we clone from next time.\n this.action = (>> action.schedule(this, this.waitFor));\n } else {\n this.add(this.action = (>> this.scheduler.schedule>(\n TimeoutWithSubscriber.dispatchTimeout as any, this.waitFor, this\n )));\n }\n }\n\n protected _next(value: T): void {\n if (!this.absoluteTimeout) {\n this.scheduleTimeout();\n }\n super._next(value);\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _unsubscribe() {\n this.action = undefined;\n this.scheduler = null!;\n this.withObservable = null!;\n }\n}\n","import { async } from '../scheduler/async';\nimport { isDate } from '../util/isDate';\nimport { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { TimeoutError } from '../util/TimeoutError';\nimport { MonoTypeOperatorFunction, SchedulerAction, SchedulerLike, TeardownLogic } from '../types';\nimport { timeoutWith } from './timeoutWith';\nimport { throwError } from '../observable/throwError';\n\n/**\n *\n * Errors if Observable does not emit a value in given time span.\n *\n * Timeouts on Observable that doesn't emit values fast enough.\n *\n * ![](timeout.png)\n *\n * `timeout` operator accepts as an argument either a number or a Date.\n *\n * If number was provided, it returns an Observable that behaves like a source\n * Observable, unless there is a period of time where there is no value emitted.\n * So if you provide `100` as argument and first value comes after 50ms from\n * the moment of subscription, this value will be simply re-emitted by the resulting\n * Observable. If however after that 100ms passes without a second value being emitted,\n * stream will end with an error and source Observable will be unsubscribed.\n * These checks are performed throughout whole lifecycle of Observable - from the moment\n * it was subscribed to, until it completes or errors itself. Thus every value must be\n * emitted within specified period since previous value.\n *\n * If provided argument was Date, returned Observable behaves differently. It throws\n * if Observable did not complete before provided Date. This means that periods between\n * emission of particular values do not matter in this case. If Observable did not complete\n * before provided Date, source Observable will be unsubscribed. Other than that, resulting\n * stream behaves just as source Observable.\n *\n * `timeout` accepts also a Scheduler as a second parameter. It is used to schedule moment (or moments)\n * when returned Observable will check if source stream emitted value or completed.\n *\n * ## Examples\n * Check if ticks are emitted within certain timespan\n * ```ts\n * import { interval } from 'rxjs';\n * import { timeout } from 'rxjs/operators';\n *\n * const seconds = interval(1000);\n *\n * seconds.pipe(timeout(1100)) // Let's use bigger timespan to be safe,\n * // since `interval` might fire a bit later then scheduled.\n * .subscribe(\n * value => console.log(value), // Will emit numbers just as regular `interval` would.\n * err => console.log(err), // Will never be called.\n * );\n *\n * seconds.pipe(timeout(900))\n * .subscribe(\n * value => console.log(value), // Will never be called.\n * err => console.log(err), // Will emit error before even first value is emitted,\n * // since it did not arrive within 900ms period.\n * );\n * ```\n *\n * Use Date to check if Observable completed\n * ```ts\n * import { interval } from 'rxjs';\n * import { timeout } from 'rxjs/operators';\n *\n * const seconds = interval(1000);\n *\n * seconds.pipe(\n * timeout(new Date(\"December 17, 2020 03:24:00\")),\n * )\n * .subscribe(\n * value => console.log(value), // Will emit values as regular `interval` would\n * // until December 17, 2020 at 03:24:00.\n * err => console.log(err) // On December 17, 2020 at 03:24:00 it will emit an error,\n * // since Observable did not complete by then.\n * );\n * ```\n * @see {@link timeoutWith}\n *\n * @param {number|Date} due Number specifying period within which Observable must emit values\n * or Date specifying before when Observable should complete\n * @param {SchedulerLike} [scheduler] Scheduler controlling when timeout checks occur.\n * @return {Observable} Observable that mirrors behaviour of source, unless timeout checks fail.\n * @method timeout\n * @owner Observable\n */\nexport function timeout(due: number | Date,\n scheduler: SchedulerLike = async): MonoTypeOperatorFunction {\n return timeoutWith(due, throwError(new TimeoutError()), scheduler);\n}\n","\nimport { async } from '../scheduler/async';\nimport { OperatorFunction, SchedulerLike, Timestamp as TimestampInterface } from '../types';\nimport { map } from './map';\n\n/**\n * Attaches a timestamp to each item emitted by an observable indicating when it was emitted\n *\n * The `timestamp` operator maps the *source* observable stream to an object of type\n * `{value: T, timestamp: R}`. The properties are generically typed. The `value` property contains the value\n * and type of the *source* observable. The `timestamp` is generated by the schedulers `now` function. By\n * default it uses the *async* scheduler which simply returns `Date.now()` (milliseconds since 1970/01/01\n * 00:00:00:000) and therefore is of type `number`.\n *\n * ![](timestamp.png)\n *\n * ## Example\n *\n * In this example there is a timestamp attached to the documents click event.\n *\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { timestamp } from 'rxjs/operators';\n *\n * const clickWithTimestamp = fromEvent(document, 'click').pipe(\n * timestamp()\n * );\n *\n * // Emits data of type {value: MouseEvent, timestamp: number}\n * clickWithTimestamp.subscribe(data => {\n * console.log(data);\n * });\n * ```\n *\n * @param scheduler\n * @return {Observable>|WebSocketSubject|Observable}\n * @method timestamp\n * @owner Observable\n */\nexport function timestamp(scheduler: SchedulerLike = async): OperatorFunction> {\n return map((value: T) => new Timestamp(value, scheduler.now()));\n // return (source: Observable) => source.lift(new TimestampOperator(scheduler));\n}\n\nexport class Timestamp implements TimestampInterface {\n constructor(public value: T, public timestamp: number) {\n }\n}\n","import { reduce } from './reduce';\nimport { OperatorFunction } from '../types';\n\nfunction toArrayReducer(arr: T[], item: T, index: number) {\n if (index === 0) {\n return [item];\n }\n arr.push(item);\n return arr;\n}\n\n/**\n * Collects all source emissions and emits them as an array when the source completes.\n *\n * Get all values inside an array when the source completes\n *\n * ![](toArray.png)\n *\n * `toArray` will wait until the source Observable completes before emitting\n * the array containing all emissions. When the source Observable errors no\n * array will be emitted.\n *\n * ## Example\n * ```ts\n * import { interval } from 'rxjs';\n * import { toArray, take } from 'rxjs/operators';\n *\n * const source = interval(1000);\n * const example = source.pipe(\n * take(10),\n * toArray()\n * );\n *\n * const subscribe = example.subscribe(val => console.log(val));\n *\n * // output: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n *\n * ```\n* @return An array from an observable sequence.\n* @method toArray\n* @owner Observable\n*/\nexport function toArray(): OperatorFunction {\n return reduce(toArrayReducer, [] as T[]);\n}\n","import { Observable } from '../Observable';\nimport { OperatorFunction } from '../types';\nimport { Subject } from '../Subject';\nimport { Subscriber } from '../Subscriber';\nimport { Operator } from '../Operator';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\n\n/**\n * Branch out the source Observable values as a nested Observable whenever\n * `windowBoundaries` emits.\n *\n * It's like {@link buffer}, but emits a nested Observable\n * instead of an array.\n *\n * ![](window.png)\n *\n * Returns an Observable that emits windows of items it collects from the source\n * Observable. The output Observable emits connected, non-overlapping\n * windows. It emits the current window and opens a new one whenever the\n * Observable `windowBoundaries` emits an item. Because each window is an\n * Observable, the output is a higher-order Observable.\n *\n * ## Example\n * In every window of 1 second each, emit at most 2 click events\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { window, mergeAll, map, take } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const sec = interval(1000);\n * const result = clicks.pipe(\n * window(sec),\n * map(win => win.pipe(take(2))), // each window has at most 2 emissions\n * mergeAll(), // flatten the Observable-of-Observables\n * );\n * result.subscribe(x => console.log(x));\n * ```\n * @see {@link windowCount}\n * @see {@link windowTime}\n * @see {@link windowToggle}\n * @see {@link windowWhen}\n * @see {@link buffer}\n *\n * @param {Observable} windowBoundaries An Observable that completes the\n * previous window and starts a new window.\n * @return {Observable>} An Observable of windows, which are\n * Observables emitting values of the source Observable.\n * @method window\n * @owner Observable\n */\nexport function window(windowBoundaries: Observable): OperatorFunction> {\n return function windowOperatorFunction(source: Observable) {\n return source.lift(new WindowOperator(windowBoundaries));\n };\n}\n\nclass WindowOperator implements Operator> {\n\n constructor(private windowBoundaries: Observable) {\n }\n\n call(subscriber: Subscriber>, source: any): any {\n const windowSubscriber = new WindowSubscriber(subscriber);\n const sourceSubscription = source.subscribe(windowSubscriber);\n if (!sourceSubscription.closed) {\n windowSubscriber.add(innerSubscribe(this.windowBoundaries, new SimpleInnerSubscriber(windowSubscriber)));\n }\n return sourceSubscription;\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass WindowSubscriber extends SimpleOuterSubscriber {\n\n private window: Subject = new Subject();\n\n constructor(destination: Subscriber>) {\n super(destination);\n destination.next(this.window);\n }\n\n notifyNext(): void {\n this.openWindow();\n }\n\n notifyError(error: any): void {\n this._error(error);\n }\n\n notifyComplete(): void {\n this._complete();\n }\n\n protected _next(value: T): void {\n this.window.next(value);\n }\n\n protected _error(err: any): void {\n this.window.error(err);\n this.destination.error!(err);\n }\n\n protected _complete(): void {\n this.window.complete();\n this.destination.complete!();\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _unsubscribe() {\n this.window = null!;\n }\n\n private openWindow(): void {\n const prevWindow = this.window;\n if (prevWindow) {\n prevWindow.complete();\n }\n const destination = this.destination;\n const newWindow = this.window = new Subject();\n destination.next!(newWindow);\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { Subject } from '../Subject';\nimport { OperatorFunction } from '../types';\n\n/**\n * Branch out the source Observable values as a nested Observable with each\n * nested Observable emitting at most `windowSize` values.\n *\n * It's like {@link bufferCount}, but emits a nested\n * Observable instead of an array.\n *\n * ![](windowCount.png)\n *\n * Returns an Observable that emits windows of items it collects from the source\n * Observable. The output Observable emits windows every `startWindowEvery`\n * items, each containing no more than `windowSize` items. When the source\n * Observable completes or encounters an error, the output Observable emits\n * the current window and propagates the notification from the source\n * Observable. If `startWindowEvery` is not provided, then new windows are\n * started immediately at the start of the source and when each window completes\n * with size `windowSize`.\n *\n * ## Examples\n * Ignore every 3rd click event, starting from the first one\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { windowCount, map, mergeAll, skip } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n * windowCount(3),\n * map(win => win.pipe(skip(1))), // skip first of every 3 clicks\n * mergeAll() // flatten the Observable-of-Observables\n * );\n * result.subscribe(x => console.log(x));\n * ```\n *\n * Ignore every 3rd click event, starting from the third one\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { windowCount, mergeAll } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n * windowCount(2, 3),\n * mergeAll(), // flatten the Observable-of-Observables\n * );\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link window}\n * @see {@link windowTime}\n * @see {@link windowToggle}\n * @see {@link windowWhen}\n * @see {@link bufferCount}\n *\n * @param {number} windowSize The maximum number of values emitted by each\n * window.\n * @param {number} [startWindowEvery] Interval at which to start a new window.\n * For example if `startWindowEvery` is `2`, then a new window will be started\n * on every other value from the source. A new window is started at the\n * beginning of the source by default.\n * @return {Observable>} An Observable of windows, which in turn\n * are Observable of values.\n * @method windowCount\n * @owner Observable\n */\nexport function windowCount(windowSize: number,\n startWindowEvery: number = 0): OperatorFunction> {\n return function windowCountOperatorFunction(source: Observable) {\n return source.lift(new WindowCountOperator(windowSize, startWindowEvery));\n };\n}\n\nclass WindowCountOperator implements Operator> {\n\n constructor(private windowSize: number,\n private startWindowEvery: number) {\n }\n\n call(subscriber: Subscriber>, source: any): any {\n return source.subscribe(new WindowCountSubscriber(subscriber, this.windowSize, this.startWindowEvery));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass WindowCountSubscriber extends Subscriber {\n private windows: Subject[] = [ new Subject() ];\n private count: number = 0;\n\n constructor(protected destination: Subscriber>,\n private windowSize: number,\n private startWindowEvery: number) {\n super(destination);\n destination.next(this.windows[0]);\n }\n\n protected _next(value: T) {\n const startWindowEvery = (this.startWindowEvery > 0) ? this.startWindowEvery : this.windowSize;\n const destination = this.destination;\n const windowSize = this.windowSize;\n const windows = this.windows;\n const len = windows.length;\n\n for (let i = 0; i < len && !this.closed; i++) {\n windows[i].next(value);\n }\n const c = this.count - windowSize + 1;\n if (c >= 0 && c % startWindowEvery === 0 && !this.closed) {\n windows.shift().complete();\n }\n if (++this.count % startWindowEvery === 0 && !this.closed) {\n const window = new Subject();\n windows.push(window);\n destination.next(window);\n }\n }\n\n protected _error(err: any) {\n const windows = this.windows;\n if (windows) {\n while (windows.length > 0 && !this.closed) {\n windows.shift().error(err);\n }\n }\n this.destination.error(err);\n }\n\n protected _complete() {\n const windows = this.windows;\n if (windows) {\n while (windows.length > 0 && !this.closed) {\n windows.shift().complete();\n }\n }\n this.destination.complete();\n }\n\n protected _unsubscribe() {\n this.count = 0;\n this.windows = null;\n }\n}\n","import { Subject } from '../Subject';\nimport { Operator } from '../Operator';\nimport { async } from '../scheduler/async';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { isNumeric } from '../util/isNumeric';\nimport { isScheduler } from '../util/isScheduler';\nimport { OperatorFunction, SchedulerLike, SchedulerAction } from '../types';\n\n/**\n * Branch out the source Observable values as a nested Observable periodically\n * in time.\n *\n * It's like {@link bufferTime}, but emits a nested\n * Observable instead of an array.\n *\n * ![](windowTime.png)\n *\n * Returns an Observable that emits windows of items it collects from the source\n * Observable. The output Observable starts a new window periodically, as\n * determined by the `windowCreationInterval` argument. It emits each window\n * after a fixed timespan, specified by the `windowTimeSpan` argument. When the\n * source Observable completes or encounters an error, the output Observable\n * emits the current window and propagates the notification from the source\n * Observable. If `windowCreationInterval` is not provided, the output\n * Observable starts a new window when the previous window of duration\n * `windowTimeSpan` completes. If `maxWindowCount` is provided, each window\n * will emit at most fixed number of values. Window will complete immediately\n * after emitting last value and next one still will open as specified by\n * `windowTimeSpan` and `windowCreationInterval` arguments.\n *\n * ## Examples\n * In every window of 1 second each, emit at most 2 click events\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { windowTime, map, mergeAll, take } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n * windowTime(1000),\n * map(win => win.pipe(take(2))), // each window has at most 2 emissions\n * mergeAll(), // flatten the Observable-of-Observables\n * );\n * result.subscribe(x => console.log(x));\n * ```\n *\n * Every 5 seconds start a window 1 second long, and emit at most 2 click events per window\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { windowTime, map, mergeAll, take } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n * windowTime(1000, 5000),\n * map(win => win.pipe(take(2))), // each window has at most 2 emissions\n * mergeAll(), // flatten the Observable-of-Observables\n * );\n * result.subscribe(x => console.log(x));\n * ```\n *\n * Same as example above but with maxWindowCount instead of take\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { windowTime, mergeAll } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n * windowTime(1000, 5000, 2), // each window has still at most 2 emissions\n * mergeAll(), // flatten the Observable-of-Observables\n * );\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link window}\n * @see {@link windowCount}\n * @see {@link windowToggle}\n * @see {@link windowWhen}\n * @see {@link bufferTime}\n *\n * @param {number} windowTimeSpan The amount of time to fill each window.\n * @param {number} [windowCreationInterval] The interval at which to start new\n * windows.\n * @param {number} [maxWindowSize=Number.POSITIVE_INFINITY] Max number of\n * values each window can emit before completion.\n * @param {SchedulerLike} [scheduler=async] The scheduler on which to schedule the\n * intervals that determine window boundaries.\n * @return {Observable>} An observable of windows, which in turn\n * are Observables.\n * @method windowTime\n * @owner Observable\n */\nexport function windowTime(windowTimeSpan: number,\n scheduler?: SchedulerLike): OperatorFunction>;\nexport function windowTime(windowTimeSpan: number,\n windowCreationInterval: number,\n scheduler?: SchedulerLike): OperatorFunction>;\nexport function windowTime(windowTimeSpan: number,\n windowCreationInterval: number,\n maxWindowSize: number,\n scheduler?: SchedulerLike): OperatorFunction>;\n\nexport function windowTime(windowTimeSpan: number): OperatorFunction> {\n let scheduler: SchedulerLike = async;\n let windowCreationInterval: number = null;\n let maxWindowSize: number = Number.POSITIVE_INFINITY;\n\n if (isScheduler(arguments[3])) {\n scheduler = arguments[3];\n }\n\n if (isScheduler(arguments[2])) {\n scheduler = arguments[2];\n } else if (isNumeric(arguments[2])) {\n maxWindowSize = Number(arguments[2]);\n }\n\n if (isScheduler(arguments[1])) {\n scheduler = arguments[1];\n } else if (isNumeric(arguments[1])) {\n windowCreationInterval = Number(arguments[1]);\n }\n\n return function windowTimeOperatorFunction(source: Observable) {\n return source.lift(new WindowTimeOperator(windowTimeSpan, windowCreationInterval, maxWindowSize, scheduler));\n };\n}\n\nclass WindowTimeOperator implements Operator> {\n\n constructor(private windowTimeSpan: number,\n private windowCreationInterval: number | null,\n private maxWindowSize: number,\n private scheduler: SchedulerLike) {\n }\n\n call(subscriber: Subscriber>, source: any): any {\n return source.subscribe(new WindowTimeSubscriber(\n subscriber, this.windowTimeSpan, this.windowCreationInterval, this.maxWindowSize, this.scheduler\n ));\n }\n}\n\ninterface CreationState {\n windowTimeSpan: number;\n windowCreationInterval: number;\n subscriber: WindowTimeSubscriber;\n scheduler: SchedulerLike;\n}\n\ninterface TimeSpanOnlyState {\n window: CountedSubject;\n windowTimeSpan: number;\n subscriber: WindowTimeSubscriber;\n }\n\ninterface CloseWindowContext {\n action: SchedulerAction>;\n subscription: Subscription;\n}\n\ninterface CloseState {\n subscriber: WindowTimeSubscriber;\n window: CountedSubject;\n context: CloseWindowContext;\n}\n\nclass CountedSubject extends Subject {\n private _numberOfNextedValues: number = 0;\n\n next(value?: T): void {\n this._numberOfNextedValues++;\n super.next(value);\n }\n\n get numberOfNextedValues(): number {\n return this._numberOfNextedValues;\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass WindowTimeSubscriber extends Subscriber {\n private windows: CountedSubject[] = [];\n\n constructor(protected destination: Subscriber>,\n private windowTimeSpan: number,\n private windowCreationInterval: number | null,\n private maxWindowSize: number,\n private scheduler: SchedulerLike) {\n super(destination);\n\n const window = this.openWindow();\n if (windowCreationInterval !== null && windowCreationInterval >= 0) {\n const closeState: CloseState = { subscriber: this, window, context: null };\n const creationState: CreationState = { windowTimeSpan, windowCreationInterval, subscriber: this, scheduler };\n this.add(scheduler.schedule>(dispatchWindowClose, windowTimeSpan, closeState));\n this.add(scheduler.schedule>(dispatchWindowCreation, windowCreationInterval, creationState));\n } else {\n const timeSpanOnlyState: TimeSpanOnlyState = { subscriber: this, window, windowTimeSpan };\n this.add(scheduler.schedule>(dispatchWindowTimeSpanOnly, windowTimeSpan, timeSpanOnlyState));\n }\n }\n\n protected _next(value: T): void {\n const windows = this.windows;\n const len = windows.length;\n for (let i = 0; i < len; i++) {\n const window = windows[i];\n if (!window.closed) {\n window.next(value);\n if (window.numberOfNextedValues >= this.maxWindowSize) {\n this.closeWindow(window);\n }\n }\n }\n }\n\n protected _error(err: any): void {\n const windows = this.windows;\n while (windows.length > 0) {\n windows.shift().error(err);\n }\n this.destination.error(err);\n }\n\n protected _complete(): void {\n const windows = this.windows;\n while (windows.length > 0) {\n const window = windows.shift();\n if (!window.closed) {\n window.complete();\n }\n }\n this.destination.complete();\n }\n\n public openWindow(): CountedSubject {\n const window = new CountedSubject();\n this.windows.push(window);\n const destination = this.destination;\n destination.next(window);\n return window;\n }\n\n public closeWindow(window: CountedSubject): void {\n window.complete();\n const windows = this.windows;\n windows.splice(windows.indexOf(window), 1);\n }\n}\n\nfunction dispatchWindowTimeSpanOnly(this: SchedulerAction>, state: TimeSpanOnlyState): void {\n const { subscriber, windowTimeSpan, window } = state;\n if (window) {\n subscriber.closeWindow(window);\n }\n state.window = subscriber.openWindow();\n this.schedule(state, windowTimeSpan);\n}\n\nfunction dispatchWindowCreation(this: SchedulerAction>, state: CreationState): void {\n const { windowTimeSpan, subscriber, scheduler, windowCreationInterval } = state;\n const window = subscriber.openWindow();\n const action = this;\n let context: CloseWindowContext = { action, subscription: null };\n const timeSpanState: CloseState = { subscriber, window, context };\n context.subscription = scheduler.schedule>(dispatchWindowClose, windowTimeSpan, timeSpanState);\n action.add(context.subscription);\n action.schedule(state, windowCreationInterval);\n}\n\nfunction dispatchWindowClose(state: CloseState): void {\n const { subscriber, window, context } = state;\n if (context && context.action && context.subscription) {\n context.action.remove(context.subscription);\n }\n subscriber.closeWindow(window);\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { Subject } from '../Subject';\nimport { Subscription } from '../Subscription';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { OperatorFunction } from '../types';\n\n/**\n * Branch out the source Observable values as a nested Observable starting from\n * an emission from `openings` and ending when the output of `closingSelector`\n * emits.\n *\n * It's like {@link bufferToggle}, but emits a nested\n * Observable instead of an array.\n *\n * ![](windowToggle.png)\n *\n * Returns an Observable that emits windows of items it collects from the source\n * Observable. The output Observable emits windows that contain those items\n * emitted by the source Observable between the time when the `openings`\n * Observable emits an item and when the Observable returned by\n * `closingSelector` emits an item.\n *\n * ## Example\n * Every other second, emit the click events from the next 500ms\n * ```ts\n * import { fromEvent, interval, EMPTY } from 'rxjs';\n * import { windowToggle, mergeAll } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const openings = interval(1000);\n * const result = clicks.pipe(\n * windowToggle(openings, i => i % 2 ? interval(500) : EMPTY),\n * mergeAll()\n * );\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link window}\n * @see {@link windowCount}\n * @see {@link windowTime}\n * @see {@link windowWhen}\n * @see {@link bufferToggle}\n *\n * @param {Observable} openings An observable of notifications to start new\n * windows.\n * @param {function(value: O): Observable} closingSelector A function that takes\n * the value emitted by the `openings` observable and returns an Observable,\n * which, when it emits (either `next` or `complete`), signals that the\n * associated window should complete.\n * @return {Observable>} An observable of windows, which in turn\n * are Observables.\n * @method windowToggle\n * @owner Observable\n */\nexport function windowToggle(openings: Observable,\n closingSelector: (openValue: O) => Observable): OperatorFunction> {\n return (source: Observable) => source.lift(new WindowToggleOperator(openings, closingSelector));\n}\n\nclass WindowToggleOperator implements Operator> {\n\n constructor(private openings: Observable,\n private closingSelector: (openValue: O) => Observable) {\n }\n\n call(subscriber: Subscriber>, source: any): any {\n return source.subscribe(new WindowToggleSubscriber(\n subscriber, this.openings, this.closingSelector\n ));\n }\n}\n\ninterface WindowContext {\n window: Subject;\n subscription: Subscription;\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass WindowToggleSubscriber extends OuterSubscriber {\n private contexts: WindowContext[] = [];\n private openSubscription: Subscription;\n\n constructor(destination: Subscriber>,\n private openings: Observable,\n private closingSelector: (openValue: O) => Observable) {\n super(destination);\n this.add(this.openSubscription = subscribeToResult(this, openings, openings as any));\n }\n\n protected _next(value: T) {\n const { contexts } = this;\n if (contexts) {\n const len = contexts.length;\n for (let i = 0; i < len; i++) {\n contexts[i].window.next(value);\n }\n }\n }\n\n protected _error(err: any) {\n\n const { contexts } = this;\n this.contexts = null;\n\n if (contexts) {\n const len = contexts.length;\n let index = -1;\n\n while (++index < len) {\n const context = contexts[index];\n context.window.error(err);\n context.subscription.unsubscribe();\n }\n }\n\n super._error(err);\n }\n\n protected _complete() {\n const { contexts } = this;\n this.contexts = null;\n if (contexts) {\n const len = contexts.length;\n let index = -1;\n while (++index < len) {\n const context = contexts[index];\n context.window.complete();\n context.subscription.unsubscribe();\n }\n }\n super._complete();\n }\n\n /** @deprecated This is an internal implementation detail, do not use. */\n _unsubscribe() {\n const { contexts } = this;\n this.contexts = null;\n if (contexts) {\n const len = contexts.length;\n let index = -1;\n while (++index < len) {\n const context = contexts[index];\n context.window.unsubscribe();\n context.subscription.unsubscribe();\n }\n }\n }\n\n notifyNext(outerValue: any, innerValue: any,\n outerIndex: number, innerIndex: number,\n innerSub: InnerSubscriber): void {\n\n if (outerValue === this.openings) {\n let closingNotifier;\n try {\n const { closingSelector } = this;\n closingNotifier = closingSelector(innerValue);\n } catch (e) {\n return this.error(e);\n }\n\n const window = new Subject();\n const subscription = new Subscription();\n const context = { window, subscription };\n this.contexts.push(context);\n const innerSubscription = subscribeToResult(this, closingNotifier, context as any);\n\n if (innerSubscription.closed) {\n this.closeWindow(this.contexts.length - 1);\n } else {\n (innerSubscription).context = context;\n subscription.add(innerSubscription);\n }\n\n this.destination.next(window);\n } else {\n this.closeWindow(this.contexts.indexOf(outerValue));\n }\n }\n\n notifyError(err: any): void {\n this.error(err);\n }\n\n notifyComplete(inner: Subscription): void {\n if (inner !== this.openSubscription) {\n this.closeWindow(this.contexts.indexOf(( inner).context));\n }\n }\n\n private closeWindow(index: number): void {\n if (index === -1) {\n return;\n }\n\n const { contexts } = this;\n const context = contexts[index];\n const { window, subscription } = context;\n contexts.splice(index, 1);\n window.complete();\n subscription.unsubscribe();\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { Subject } from '../Subject';\nimport { Subscription } from '../Subscription';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { OperatorFunction } from '../types';\n\n/**\n * Branch out the source Observable values as a nested Observable using a\n * factory function of closing Observables to determine when to start a new\n * window.\n *\n * It's like {@link bufferWhen}, but emits a nested\n * Observable instead of an array.\n *\n * ![](windowWhen.png)\n *\n * Returns an Observable that emits windows of items it collects from the source\n * Observable. The output Observable emits connected, non-overlapping windows.\n * It emits the current window and opens a new one whenever the Observable\n * produced by the specified `closingSelector` function emits an item. The first\n * window is opened immediately when subscribing to the output Observable.\n *\n * ## Example\n * Emit only the first two clicks events in every window of [1-5] random seconds\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { windowWhen, map, mergeAll, take } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n * windowWhen(() => interval(1000 + Math.random() * 4000)),\n * map(win => win.pipe(take(2))), // each window has at most 2 emissions\n * mergeAll() // flatten the Observable-of-Observables\n * );\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link window}\n * @see {@link windowCount}\n * @see {@link windowTime}\n * @see {@link windowToggle}\n * @see {@link bufferWhen}\n *\n * @param {function(): Observable} closingSelector A function that takes no\n * arguments and returns an Observable that signals (on either `next` or\n * `complete`) when to close the previous window and start a new one.\n * @return {Observable>} An observable of windows, which in turn\n * are Observables.\n * @method windowWhen\n * @owner Observable\n */\nexport function windowWhen(closingSelector: () => Observable): OperatorFunction> {\n return function windowWhenOperatorFunction(source: Observable) {\n return source.lift(new WindowOperator(closingSelector));\n };\n}\n\nclass WindowOperator implements Operator> {\n constructor(private closingSelector: () => Observable) {\n }\n\n call(subscriber: Subscriber>, source: any): any {\n return source.subscribe(new WindowSubscriber(subscriber, this.closingSelector));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass WindowSubscriber extends OuterSubscriber {\n private window?: Subject;\n private closingNotification?: Subscription;\n\n constructor(protected destination: Subscriber>,\n private closingSelector: () => Observable) {\n super(destination);\n this.openWindow();\n }\n\n notifyNext(_outerValue: T, _innerValue: any,\n _outerIndex: number, _innerIndex: number,\n innerSub: InnerSubscriber): void {\n this.openWindow(innerSub);\n }\n\n notifyError(error: any): void {\n this._error(error);\n }\n\n notifyComplete(innerSub: InnerSubscriber): void {\n this.openWindow(innerSub);\n }\n\n protected _next(value: T): void {\n this.window!.next(value);\n }\n\n protected _error(err: any): void {\n this.window!.error(err);\n this.destination.error(err);\n this.unsubscribeClosingNotification();\n }\n\n protected _complete(): void {\n this.window!.complete();\n this.destination.complete();\n this.unsubscribeClosingNotification();\n }\n\n private unsubscribeClosingNotification(): void {\n if (this.closingNotification) {\n this.closingNotification.unsubscribe();\n }\n }\n\n private openWindow(innerSub: InnerSubscriber | null = null): void {\n if (innerSub) {\n this.remove(innerSub);\n innerSub.unsubscribe();\n }\n\n const prevWindow = this.window;\n if (prevWindow) {\n prevWindow.complete();\n }\n\n const window = this.window = new Subject();\n this.destination.next(window);\n\n let closingNotifier;\n try {\n const { closingSelector } = this;\n closingNotifier = closingSelector();\n } catch (e) {\n this.destination.error(e);\n this.window.error(e);\n return;\n }\n this.add(this.closingNotification = subscribeToResult(this, closingNotifier));\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function withLatestFrom(project: (v1: T) => R): OperatorFunction;\nexport function withLatestFrom, R>(source2: O2, project: (v1: T, v2: ObservedValueOf) => R): OperatorFunction;\nexport function withLatestFrom, O3 extends ObservableInput, R>(v2: O2, v3: O3, project: (v1: T, v2: ObservedValueOf, v3: ObservedValueOf) => R): OperatorFunction;\nexport function withLatestFrom, O3 extends ObservableInput, O4 extends ObservableInput, R>(v2: O2, v3: O3, v4: O4, project: (v1: T, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf) => R): OperatorFunction;\nexport function withLatestFrom, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, R>(v2: O2, v3: O3, v4: O4, v5: O5, project: (v1: T, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf, v5: ObservedValueOf) => R): OperatorFunction;\nexport function withLatestFrom, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput, R>(v2: O2, v3: O3, v4: O4, v5: O5, v6: O6, project: (v1: T, v2: ObservedValueOf, v3: ObservedValueOf, v4: ObservedValueOf, v5: ObservedValueOf, v6: ObservedValueOf) => R): OperatorFunction;\nexport function withLatestFrom>(source2: O2): OperatorFunction]>;\nexport function withLatestFrom, O3 extends ObservableInput>(v2: O2, v3: O3): OperatorFunction, ObservedValueOf]>;\nexport function withLatestFrom, O3 extends ObservableInput, O4 extends ObservableInput>(v2: O2, v3: O3, v4: O4): OperatorFunction, ObservedValueOf, ObservedValueOf]>;\nexport function withLatestFrom, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput>(v2: O2, v3: O3, v4: O4, v5: O5): OperatorFunction, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\nexport function withLatestFrom, O3 extends ObservableInput, O4 extends ObservableInput, O5 extends ObservableInput, O6 extends ObservableInput>(v2: O2, v3: O3, v4: O4, v5: O5, v6: O6): OperatorFunction, ObservedValueOf, ObservedValueOf, ObservedValueOf, ObservedValueOf]>;\nexport function withLatestFrom(...observables: Array | ((...values: Array) => R)>): OperatorFunction;\nexport function withLatestFrom(array: ObservableInput[]): OperatorFunction;\nexport function withLatestFrom(array: ObservableInput[], project: (...values: Array) => R): OperatorFunction;\n\n/* tslint:enable:max-line-length */\n\n/**\n * Combines the source Observable with other Observables to create an Observable\n * whose values are calculated from the latest values of each, only when the\n * source emits.\n *\n * Whenever the source Observable emits a value, it\n * computes a formula using that value plus the latest values from other input\n * Observables, then emits the output of that formula.\n *\n * ![](withLatestFrom.png)\n *\n * `withLatestFrom` combines each value from the source Observable (the\n * instance) with the latest values from the other input Observables only when\n * the source emits a value, optionally using a `project` function to determine\n * the value to be emitted on the output Observable. All input Observables must\n * emit at least one value before the output Observable will emit a value.\n *\n * ## Example\n * On every click event, emit an array with the latest timer event plus the click event\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { withLatestFrom } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const timer = interval(1000);\n * const result = clicks.pipe(withLatestFrom(timer));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link combineLatest}\n *\n * @param {ObservableInput} other An input Observable to combine with the source\n * Observable. More than one input Observables may be given as argument.\n * @param {Function} [project] Projection function for combining values\n * together. Receives all values in order of the Observables passed, where the\n * first parameter is a value from the source Observable. (e.g.\n * `a.pipe(withLatestFrom(b, c), map(([a1, b1, c1]) => a1 + b1 + c1))`). If this is not\n * passed, arrays will be emitted on the output Observable.\n * @return {Observable} An Observable of projected values from the most recent\n * values from each input Observable, or an array of the most recent values from\n * each input Observable.\n * @method withLatestFrom\n * @owner Observable\n */\nexport function withLatestFrom(...args: Array | ((...values: Array) => R)>): OperatorFunction {\n return (source: Observable) => {\n let project: any;\n if (typeof args[args.length - 1] === 'function') {\n project = args.pop();\n }\n const observables = []>args;\n return source.lift(new WithLatestFromOperator(observables, project));\n };\n}\n\nclass WithLatestFromOperator implements Operator {\n constructor(private observables: Observable[],\n private project?: (...values: any[]) => Observable) {\n }\n\n call(subscriber: Subscriber, source: any): any {\n return source.subscribe(new WithLatestFromSubscriber(subscriber, this.observables, this.project));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass WithLatestFromSubscriber extends OuterSubscriber {\n private values: any[];\n private toRespond: number[] = [];\n\n constructor(destination: Subscriber,\n private observables: Observable[],\n private project?: (...values: any[]) => Observable) {\n super(destination);\n const len = observables.length;\n this.values = new Array(len);\n\n for (let i = 0; i < len; i++) {\n this.toRespond.push(i);\n }\n\n for (let i = 0; i < len; i++) {\n let observable = observables[i];\n this.add(subscribeToResult(this, observable, undefined, i));\n }\n }\n\n notifyNext(_outerValue: T, innerValue: R,\n outerIndex: number): void {\n this.values[outerIndex] = innerValue;\n const toRespond = this.toRespond;\n if (toRespond.length > 0) {\n const found = toRespond.indexOf(outerIndex);\n if (found !== -1) {\n toRespond.splice(found, 1);\n }\n }\n }\n\n notifyComplete() {\n // noop\n }\n\n protected _next(value: T) {\n if (this.toRespond.length === 0) {\n const args = [value, ...this.values];\n if (this.project) {\n this._tryProject(args);\n } else {\n this.destination.next!(args);\n }\n }\n }\n\n private _tryProject(args: any[]) {\n let result: any;\n try {\n result = this.project!.apply(this, args);\n } catch (err) {\n this.destination.error!(err);\n return;\n }\n this.destination.next!(result);\n }\n}\n","import { zip as zipStatic } from '../observable/zip';\nimport { Observable } from '../Observable';\nimport { ObservableInput, OperatorFunction } from '../types';\n\n/* tslint:disable:max-line-length */\n/** @deprecated Deprecated in favor of static zip. */\nexport function zip(project: (v1: T) => R): OperatorFunction;\n/** @deprecated Deprecated in favor of static zip. */\nexport function zip(v2: ObservableInput, project: (v1: T, v2: T2) => R): OperatorFunction;\n/** @deprecated Deprecated in favor of static zip. */\nexport function zip(v2: ObservableInput, v3: ObservableInput, project: (v1: T, v2: T2, v3: T3) => R): OperatorFunction;\n/** @deprecated Deprecated in favor of static zip. */\nexport function zip(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, project: (v1: T, v2: T2, v3: T3, v4: T4) => R): OperatorFunction;\n/** @deprecated Deprecated in favor of static zip. */\nexport function zip(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, project: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5) => R): OperatorFunction;\n/** @deprecated Deprecated in favor of static zip. */\nexport function zip(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput, project: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6) => R): OperatorFunction ;\n/** @deprecated Deprecated in favor of static zip. */\nexport function zip(v2: ObservableInput): OperatorFunction;\n/** @deprecated Deprecated in favor of static zip. */\nexport function zip(v2: ObservableInput, v3: ObservableInput): OperatorFunction;\n/** @deprecated Deprecated in favor of static zip. */\nexport function zip(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput): OperatorFunction;\n/** @deprecated Deprecated in favor of static zip. */\nexport function zip(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput): OperatorFunction;\n/** @deprecated Deprecated in favor of static zip. */\nexport function zip(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput): OperatorFunction ;\n/** @deprecated Deprecated in favor of static zip. */\nexport function zip(...observables: Array | ((...values: Array) => R)>): OperatorFunction;\n/** @deprecated Deprecated in favor of static zip. */\nexport function zip(array: Array>): OperatorFunction;\n/** @deprecated Deprecated in favor of static zip. */\nexport function zip(array: Array>, project: (v1: T, ...values: Array) => R): OperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * @deprecated Deprecated in favor of static {@link zip}.\n */\nexport function zip(...observables: Array | ((...values: Array) => R)>): OperatorFunction {\n return function zipOperatorFunction(source: Observable) {\n return source.lift.call(zipStatic(source, ...observables));\n };\n}","import { ZipOperator } from '../observable/zip';\nimport { Observable } from '../Observable';\nimport { OperatorFunction, ObservableInput } from '../types';\n\nexport function zipAll(): OperatorFunction, T[]>;\nexport function zipAll(): OperatorFunction;\nexport function zipAll(project: (...values: T[]) => R): OperatorFunction, R>;\nexport function zipAll(project: (...values: Array) => R): OperatorFunction;\n\nexport function zipAll(project?: (...values: Array) => R): OperatorFunction {\n return (source: Observable) => source.lift(new ZipOperator(project));\n}\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","const util = require('util')\nconst EventEmitter = require('events/')\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n}\n\nmodule.exports = SafeEventEmitter\n\n\nfunction SafeEventEmitter() {\n EventEmitter.call(this)\n}\n\nutil.inherits(SafeEventEmitter, EventEmitter)\n\nSafeEventEmitter.prototype.emit = function (type) {\n // copied from https://github.com/Gozala/events/blob/master/events.js\n // modified lines are commented with \"edited:\"\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n // edited: using safeApply\n safeApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n // edited: using safeApply\n safeApply(listeners[i], this, args);\n }\n\n return true;\n}\n\nfunction safeApply(handler, context, args) {\n try {\n ReflectApply(handler, context, args)\n } catch (err) {\n // throw error after timeout so as not to interupt the stack\n setTimeout(() => {\n throw err\n })\n }\n}\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n","/**\n * @license React\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its 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'use strict';function f(a,b){var c=a.length;a.push(b);a:for(;0>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","var Buffer = require('safe-buffer').Buffer\n\n// prototype class for hash functions\nfunction Hash (blockSize, finalSize) {\n this._block = Buffer.alloc(blockSize)\n this._finalSize = finalSize\n this._blockSize = blockSize\n this._len = 0\n}\n\nHash.prototype.update = function (data, enc) {\n if (typeof data === 'string') {\n enc = enc || 'utf8'\n data = Buffer.from(data, enc)\n }\n\n var block = this._block\n var blockSize = this._blockSize\n var length = data.length\n var accum = this._len\n\n for (var offset = 0; offset < length;) {\n var assigned = accum % blockSize\n var remainder = Math.min(length - offset, blockSize - assigned)\n\n for (var i = 0; i < remainder; i++) {\n block[assigned + i] = data[offset + i]\n }\n\n accum += remainder\n offset += remainder\n\n if ((accum % blockSize) === 0) {\n this._update(block)\n }\n }\n\n this._len += length\n return this\n}\n\nHash.prototype.digest = function (enc) {\n var rem = this._len % this._blockSize\n\n this._block[rem] = 0x80\n\n // zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n this._block.fill(0, rem + 1)\n\n if (rem >= this._finalSize) {\n this._update(this._block)\n this._block.fill(0)\n }\n\n var bits = this._len * 8\n\n // uint32\n if (bits <= 0xffffffff) {\n this._block.writeUInt32BE(bits, this._blockSize - 4)\n\n // uint64\n } else {\n var lowBits = (bits & 0xffffffff) >>> 0\n var highBits = (bits - lowBits) / 0x100000000\n\n this._block.writeUInt32BE(highBits, this._blockSize - 8)\n this._block.writeUInt32BE(lowBits, this._blockSize - 4)\n }\n\n this._update(this._block)\n var hash = this._hash()\n\n return enc ? hash.toString(enc) : hash\n}\n\nHash.prototype._update = function () {\n throw new Error('_update must be implemented by subclass')\n}\n\nmodule.exports = Hash\n","var exports = module.exports = function SHA (algorithm) {\n algorithm = algorithm.toLowerCase()\n\n var Algorithm = exports[algorithm]\n if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')\n\n return new Algorithm()\n}\n\nexports.sha = require('./sha')\nexports.sha1 = require('./sha1')\nexports.sha224 = require('./sha224')\nexports.sha256 = require('./sha256')\nexports.sha384 = require('./sha384')\nexports.sha512 = require('./sha512')\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n * in FIPS PUB 180-1\n * This source code is derived from sha1.js of the same repository.\n * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n * operation was added.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha, Hash)\n\nSha.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha1 () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha1, Hash)\n\nSha1.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl1 (num) {\n return (num << 1) | (num >>> 31)\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha1.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha1.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha1\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Sha256 = require('./sha256')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(64)\n\nfunction Sha224 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha224, Sha256)\n\nSha224.prototype.init = function () {\n this._a = 0xc1059ed8\n this._b = 0x367cd507\n this._c = 0x3070dd17\n this._d = 0xf70e5939\n this._e = 0xffc00b31\n this._f = 0x68581511\n this._g = 0x64f98fa7\n this._h = 0xbefa4fa4\n\n return this\n}\n\nSha224.prototype._hash = function () {\n var H = Buffer.allocUnsafe(28)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n\n return H\n}\n\nmodule.exports = Sha224\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,\n 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,\n 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,\n 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,\n 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,\n 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,\n 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,\n 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,\n 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,\n 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,\n 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,\n 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,\n 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,\n 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,\n 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,\n 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2\n]\n\nvar W = new Array(64)\n\nfunction Sha256 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha256, Hash)\n\nSha256.prototype.init = function () {\n this._a = 0x6a09e667\n this._b = 0xbb67ae85\n this._c = 0x3c6ef372\n this._d = 0xa54ff53a\n this._e = 0x510e527f\n this._f = 0x9b05688c\n this._g = 0x1f83d9ab\n this._h = 0x5be0cd19\n\n return this\n}\n\nfunction ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x) {\n return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)\n}\n\nfunction sigma1 (x) {\n return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)\n}\n\nfunction gamma0 (x) {\n return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)\n}\n\nfunction gamma1 (x) {\n return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)\n}\n\nSha256.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n var f = this._f | 0\n var g = this._g | 0\n var h = this._h | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0\n\n for (var j = 0; j < 64; ++j) {\n var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0\n var T2 = (sigma0(a) + maj(a, b, c)) | 0\n\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\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n this._f = (f + this._f) | 0\n this._g = (g + this._g) | 0\n this._h = (h + this._h) | 0\n}\n\nSha256.prototype._hash = function () {\n var H = Buffer.allocUnsafe(32)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n H.writeInt32BE(this._h, 28)\n\n return H\n}\n\nmodule.exports = Sha256\n","var inherits = require('inherits')\nvar SHA512 = require('./sha512')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(160)\n\nfunction Sha384 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha384, SHA512)\n\nSha384.prototype.init = function () {\n this._ah = 0xcbbb9d5d\n this._bh = 0x629a292a\n this._ch = 0x9159015a\n this._dh = 0x152fecd8\n this._eh = 0x67332667\n this._fh = 0x8eb44a87\n this._gh = 0xdb0c2e0d\n this._hh = 0x47b5481d\n\n this._al = 0xc1059ed8\n this._bl = 0x367cd507\n this._cl = 0x3070dd17\n this._dl = 0xf70e5939\n this._el = 0xffc00b31\n this._fl = 0x68581511\n this._gl = 0x64f98fa7\n this._hl = 0xbefa4fa4\n\n return this\n}\n\nSha384.prototype._hash = function () {\n var H = Buffer.allocUnsafe(48)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n\n return H\n}\n\nmodule.exports = Sha384\n","var inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n]\n\nvar W = new Array(160)\n\nfunction Sha512 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha512, Hash)\n\nSha512.prototype.init = function () {\n this._ah = 0x6a09e667\n this._bh = 0xbb67ae85\n this._ch = 0x3c6ef372\n this._dh = 0xa54ff53a\n this._eh = 0x510e527f\n this._fh = 0x9b05688c\n this._gh = 0x1f83d9ab\n this._hh = 0x5be0cd19\n\n this._al = 0xf3bcc908\n this._bl = 0x84caa73b\n this._cl = 0xfe94f82b\n this._dl = 0x5f1d36f1\n this._el = 0xade682d1\n this._fl = 0x2b3e6c1f\n this._gl = 0xfb41bd6b\n this._hl = 0x137e2179\n\n return this\n}\n\nfunction Ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x, xl) {\n return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)\n}\n\nfunction sigma1 (x, xl) {\n return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)\n}\n\nfunction Gamma0 (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)\n}\n\nfunction Gamma0l (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)\n}\n\nfunction Gamma1 (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)\n}\n\nfunction Gamma1l (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)\n}\n\nfunction getCarry (a, b) {\n return (a >>> 0) < (b >>> 0) ? 1 : 0\n}\n\nSha512.prototype._update = function (M) {\n var W = this._w\n\n var ah = this._ah | 0\n var bh = this._bh | 0\n var ch = this._ch | 0\n var dh = this._dh | 0\n var eh = this._eh | 0\n var fh = this._fh | 0\n var gh = this._gh | 0\n var hh = this._hh | 0\n\n var al = this._al | 0\n var bl = this._bl | 0\n var cl = this._cl | 0\n var dl = this._dl | 0\n var el = this._el | 0\n var fl = this._fl | 0\n var gl = this._gl | 0\n var hl = this._hl | 0\n\n for (var i = 0; i < 32; i += 2) {\n W[i] = M.readInt32BE(i * 4)\n W[i + 1] = M.readInt32BE(i * 4 + 4)\n }\n for (; i < 160; i += 2) {\n var xh = W[i - 15 * 2]\n var xl = W[i - 15 * 2 + 1]\n var gamma0 = Gamma0(xh, xl)\n var gamma0l = Gamma0l(xl, xh)\n\n xh = W[i - 2 * 2]\n xl = W[i - 2 * 2 + 1]\n var gamma1 = Gamma1(xh, xl)\n var gamma1l = Gamma1l(xl, xh)\n\n // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n var Wi7h = W[i - 7 * 2]\n var Wi7l = W[i - 7 * 2 + 1]\n\n var Wi16h = W[i - 16 * 2]\n var Wi16l = W[i - 16 * 2 + 1]\n\n var Wil = (gamma0l + Wi7l) | 0\n var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0\n Wil = (Wil + gamma1l) | 0\n Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0\n Wil = (Wil + Wi16l) | 0\n Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0\n\n W[i] = Wih\n W[i + 1] = Wil\n }\n\n for (var j = 0; j < 160; j += 2) {\n Wih = W[j]\n Wil = W[j + 1]\n\n var majh = maj(ah, bh, ch)\n var majl = maj(al, bl, cl)\n\n var sigma0h = sigma0(ah, al)\n var sigma0l = sigma0(al, ah)\n var sigma1h = sigma1(eh, el)\n var sigma1l = sigma1(el, eh)\n\n // t1 = h + sigma1 + ch + K[j] + W[j]\n var Kih = K[j]\n var Kil = K[j + 1]\n\n var chh = Ch(eh, fh, gh)\n var chl = Ch(el, fl, gl)\n\n var t1l = (hl + sigma1l) | 0\n var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0\n t1l = (t1l + chl) | 0\n t1h = (t1h + chh + getCarry(t1l, chl)) | 0\n t1l = (t1l + Kil) | 0\n t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0\n t1l = (t1l + Wil) | 0\n t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0\n\n // t2 = sigma0 + maj\n var t2l = (sigma0l + majl) | 0\n var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0\n\n hh = gh\n hl = gl\n gh = fh\n gl = fl\n fh = eh\n fl = el\n el = (dl + t1l) | 0\n eh = (dh + t1h + getCarry(el, dl)) | 0\n dh = ch\n dl = cl\n ch = bh\n cl = bl\n bh = ah\n bl = al\n al = (t1l + t2l) | 0\n ah = (t1h + t2h + getCarry(al, t1l)) | 0\n }\n\n this._al = (this._al + al) | 0\n this._bl = (this._bl + bl) | 0\n this._cl = (this._cl + cl) | 0\n this._dl = (this._dl + dl) | 0\n this._el = (this._el + el) | 0\n this._fl = (this._fl + fl) | 0\n this._gl = (this._gl + gl) | 0\n this._hl = (this._hl + hl) | 0\n\n this._ah = (this._ah + ah + getCarry(this._al, al)) | 0\n this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0\n this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0\n this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0\n this._eh = (this._eh + eh + getCarry(this._el, el)) | 0\n this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0\n this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0\n this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0\n}\n\nSha512.prototype._hash = function () {\n var H = Buffer.allocUnsafe(64)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n writeInt64BE(this._gh, this._gl, 48)\n writeInt64BE(this._hh, this._hl, 56)\n\n return H\n}\n\nmodule.exports = Sha512\n","//\n\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n if (ret !== void 0) {\n return !!ret;\n }\n\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n // Test for A's keys different from B.\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key)) {\n return false;\n }\n\n var valueA = objA[key];\n var valueB = objB[key];\n\n ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n if (ret === false || (ret === void 0 && valueA !== valueB)) {\n return false;\n }\n }\n\n return true;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\nvar $Map = GetIntrinsic('%Map%', true);\n\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSet = callBound('Map.prototype.set', true);\nvar $mapHas = callBound('Map.prototype.has', true);\n\n/*\n * This function traverses the list returning the node corresponding to the\n * given key.\n *\n * That node is also moved to the head of the list, so that if it's accessed\n * again we don't need to traverse the whole list. By doing so, all the recently\n * used nodes can be accessed relatively quickly.\n */\nvar listGetNode = function (list, key) { // eslint-disable-line consistent-return\n\tfor (var prev = list, curr; (curr = prev.next) !== null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\tcurr.next = list.next;\n\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\nvar listGet = function (objects, key) {\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = { // eslint-disable-line no-param-reassign\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t};\n\t}\n};\nvar listHas = function (objects, key) {\n\treturn !!listGetNode(objects, key);\n};\n\nmodule.exports = function getSideChannel() {\n\tvar $wm;\n\tvar $m;\n\tvar $o;\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapGet($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listGet($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapHas($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listHas($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif (!$wm) {\n\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t}\n\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t} else if ($Map) {\n\t\t\t\tif (!$m) {\n\t\t\t\t\t$m = new $Map();\n\t\t\t\t}\n\t\t\t\t$mapSet($m, key, value);\n\t\t\t} else {\n\t\t\t\tif (!$o) {\n\t\t\t\t\t/*\n\t\t\t\t\t * Initialize the linked list as an empty node, so that we don't have\n\t\t\t\t\t * to special-case handling of the first node: we can always refer to\n\t\t\t\t\t * it as (previous node).next, instead of something like (list).head\n\t\t\t\t\t */\n\t\t\t\t\t$o = { key: {}, next: null };\n\t\t\t\t}\n\t\t\t\tlistSet($o, key, value);\n\t\t\t}\n\t\t}\n\t};\n\treturn channel;\n};\n","'use strict';\n\nmodule.exports = (string, separator) => {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (separator === '') {\n\t\treturn [string];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [string];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n};\n","'use strict';\nmodule.exports = str => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","\nmodule.exports = function () {\n var selection = document.getSelection();\n if (!selection.rangeCount) {\n return function () {};\n }\n var active = document.activeElement;\n\n var ranges = [];\n for (var i = 0; i < selection.rangeCount; i++) {\n ranges.push(selection.getRangeAt(i));\n }\n\n switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n case 'INPUT':\n case 'TEXTAREA':\n active.blur();\n break;\n\n default:\n active = null;\n break;\n }\n\n selection.removeAllRanges();\n return function () {\n selection.type === 'Caret' &&\n selection.removeAllRanges();\n\n if (!selection.rangeCount) {\n ranges.forEach(function(range) {\n selection.addRange(range);\n });\n }\n\n active &&\n active.focus();\n };\n};\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/**\n * Convert a typed array to a Buffer without a copy\n *\n * Author: Feross Aboukhadijeh \n * License: MIT\n *\n * `npm install typedarray-to-buffer`\n */\n\nvar isTypedArray = require('is-typedarray').strict\n\nmodule.exports = function typedarrayToBuffer (arr) {\n if (isTypedArray(arr)) {\n // To avoid a copy, use the typed array's underlying ArrayBuffer to back new Buffer\n var buf = Buffer.from(arr.buffer)\n if (arr.byteLength !== arr.buffer.byteLength) {\n // Respect the \"view\", i.e. byteOffset and byteLength, without doing a copy\n buf = buf.slice(arr.byteOffset, arr.byteOffset + arr.byteLength)\n }\n return buf\n } else {\n // Pass through all other types to `Buffer.from`\n return Buffer.from(arr)\n }\n}\n","/**\n * @license React\n * use-sync-external-store-shim.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its 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'use strict';var e=require(\"react\");function h(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var k=\"function\"===typeof Object.is?Object.is:h,l=e.useState,m=e.useEffect,n=e.useLayoutEffect,p=e.useDebugValue;function q(a,b){var d=b(),f=l({inst:{value:d,getSnapshot:b}}),c=f[0].inst,g=f[1];n(function(){c.value=d;c.getSnapshot=b;r(c)&&g({inst:c})},[a,d,b]);m(function(){r(c)&&g({inst:c});return a(function(){r(c)&&g({inst:c})})},[a]);p(d);return d}\nfunction r(a){var b=a.getSnapshot;a=a.value;try{var d=b();return!k(a,d)}catch(f){return!0}}function t(a,b){return b()}var u=\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement?t:q;exports.useSyncExternalStore=void 0!==e.useSyncExternalStore?e.useSyncExternalStore:u;\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its 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'use strict';var h=require(\"react\"),n=require(\"use-sync-external-store/shim\");function p(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var q=\"function\"===typeof Object.is?Object.is:p,r=n.useSyncExternalStore,t=h.useRef,u=h.useEffect,v=h.useMemo,w=h.useDebugValue;\nexports.useSyncExternalStoreWithSelector=function(a,b,e,l,g){var c=t(null);if(null===c.current){var f={hasValue:!1,value:null};c.current=f}else f=c.current;c=v(function(){function a(a){if(!c){c=!0;d=a;a=l(a);if(void 0!==g&&f.hasValue){var b=f.value;if(g(b,a))return k=b}return k=a}b=k;if(q(d,a))return b;var e=l(a);if(void 0!==g&&g(b,e))return b;d=a;return k=e}var c=!1,d,k,m=void 0===e?null:e;return[function(){return a(b())},null===m?void 0:function(){return a(m())}]},[b,e,l,g]);var d=r(a,c[0],c[1]);\nu(function(){f.hasValue=!0;f.value=d},[d]);w(d);return d};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.development.js');\n}\n","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}","// Currently in sync with Node.js lib/internal/util/types.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n\n'use strict';\n\nvar isArgumentsObject = require('is-arguments');\nvar isGeneratorFunction = require('is-generator-function');\nvar whichTypedArray = require('which-typed-array');\nvar isTypedArray = require('is-typed-array');\n\nfunction uncurryThis(f) {\n return f.call.bind(f);\n}\n\nvar BigIntSupported = typeof BigInt !== 'undefined';\nvar SymbolSupported = typeof Symbol !== 'undefined';\n\nvar ObjectToString = uncurryThis(Object.prototype.toString);\n\nvar numberValue = uncurryThis(Number.prototype.valueOf);\nvar stringValue = uncurryThis(String.prototype.valueOf);\nvar booleanValue = uncurryThis(Boolean.prototype.valueOf);\n\nif (BigIntSupported) {\n var bigIntValue = uncurryThis(BigInt.prototype.valueOf);\n}\n\nif (SymbolSupported) {\n var symbolValue = uncurryThis(Symbol.prototype.valueOf);\n}\n\nfunction checkBoxedPrimitive(value, prototypeValueOf) {\n if (typeof value !== 'object') {\n return false;\n }\n try {\n prototypeValueOf(value);\n return true;\n } catch(e) {\n return false;\n }\n}\n\nexports.isArgumentsObject = isArgumentsObject;\nexports.isGeneratorFunction = isGeneratorFunction;\nexports.isTypedArray = isTypedArray;\n\n// Taken from here and modified for better browser support\n// https://github.com/sindresorhus/p-is-promise/blob/cda35a513bda03f977ad5cde3a079d237e82d7ef/index.js\nfunction isPromise(input) {\n\treturn (\n\t\t(\n\t\t\ttypeof Promise !== 'undefined' &&\n\t\t\tinput instanceof Promise\n\t\t) ||\n\t\t(\n\t\t\tinput !== null &&\n\t\t\ttypeof input === 'object' &&\n\t\t\ttypeof input.then === 'function' &&\n\t\t\ttypeof input.catch === 'function'\n\t\t)\n\t);\n}\nexports.isPromise = isPromise;\n\nfunction isArrayBufferView(value) {\n if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n return ArrayBuffer.isView(value);\n }\n\n return (\n isTypedArray(value) ||\n isDataView(value)\n );\n}\nexports.isArrayBufferView = isArrayBufferView;\n\n\nfunction isUint8Array(value) {\n return whichTypedArray(value) === 'Uint8Array';\n}\nexports.isUint8Array = isUint8Array;\n\nfunction isUint8ClampedArray(value) {\n return whichTypedArray(value) === 'Uint8ClampedArray';\n}\nexports.isUint8ClampedArray = isUint8ClampedArray;\n\nfunction isUint16Array(value) {\n return whichTypedArray(value) === 'Uint16Array';\n}\nexports.isUint16Array = isUint16Array;\n\nfunction isUint32Array(value) {\n return whichTypedArray(value) === 'Uint32Array';\n}\nexports.isUint32Array = isUint32Array;\n\nfunction isInt8Array(value) {\n return whichTypedArray(value) === 'Int8Array';\n}\nexports.isInt8Array = isInt8Array;\n\nfunction isInt16Array(value) {\n return whichTypedArray(value) === 'Int16Array';\n}\nexports.isInt16Array = isInt16Array;\n\nfunction isInt32Array(value) {\n return whichTypedArray(value) === 'Int32Array';\n}\nexports.isInt32Array = isInt32Array;\n\nfunction isFloat32Array(value) {\n return whichTypedArray(value) === 'Float32Array';\n}\nexports.isFloat32Array = isFloat32Array;\n\nfunction isFloat64Array(value) {\n return whichTypedArray(value) === 'Float64Array';\n}\nexports.isFloat64Array = isFloat64Array;\n\nfunction isBigInt64Array(value) {\n return whichTypedArray(value) === 'BigInt64Array';\n}\nexports.isBigInt64Array = isBigInt64Array;\n\nfunction isBigUint64Array(value) {\n return whichTypedArray(value) === 'BigUint64Array';\n}\nexports.isBigUint64Array = isBigUint64Array;\n\nfunction isMapToString(value) {\n return ObjectToString(value) === '[object Map]';\n}\nisMapToString.working = (\n typeof Map !== 'undefined' &&\n isMapToString(new Map())\n);\n\nfunction isMap(value) {\n if (typeof Map === 'undefined') {\n return false;\n }\n\n return isMapToString.working\n ? isMapToString(value)\n : value instanceof Map;\n}\nexports.isMap = isMap;\n\nfunction isSetToString(value) {\n return ObjectToString(value) === '[object Set]';\n}\nisSetToString.working = (\n typeof Set !== 'undefined' &&\n isSetToString(new Set())\n);\nfunction isSet(value) {\n if (typeof Set === 'undefined') {\n return false;\n }\n\n return isSetToString.working\n ? isSetToString(value)\n : value instanceof Set;\n}\nexports.isSet = isSet;\n\nfunction isWeakMapToString(value) {\n return ObjectToString(value) === '[object WeakMap]';\n}\nisWeakMapToString.working = (\n typeof WeakMap !== 'undefined' &&\n isWeakMapToString(new WeakMap())\n);\nfunction isWeakMap(value) {\n if (typeof WeakMap === 'undefined') {\n return false;\n }\n\n return isWeakMapToString.working\n ? isWeakMapToString(value)\n : value instanceof WeakMap;\n}\nexports.isWeakMap = isWeakMap;\n\nfunction isWeakSetToString(value) {\n return ObjectToString(value) === '[object WeakSet]';\n}\nisWeakSetToString.working = (\n typeof WeakSet !== 'undefined' &&\n isWeakSetToString(new WeakSet())\n);\nfunction isWeakSet(value) {\n return isWeakSetToString(value);\n}\nexports.isWeakSet = isWeakSet;\n\nfunction isArrayBufferToString(value) {\n return ObjectToString(value) === '[object ArrayBuffer]';\n}\nisArrayBufferToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n isArrayBufferToString(new ArrayBuffer())\n);\nfunction isArrayBuffer(value) {\n if (typeof ArrayBuffer === 'undefined') {\n return false;\n }\n\n return isArrayBufferToString.working\n ? isArrayBufferToString(value)\n : value instanceof ArrayBuffer;\n}\nexports.isArrayBuffer = isArrayBuffer;\n\nfunction isDataViewToString(value) {\n return ObjectToString(value) === '[object DataView]';\n}\nisDataViewToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n typeof DataView !== 'undefined' &&\n isDataViewToString(new DataView(new ArrayBuffer(1), 0, 1))\n);\nfunction isDataView(value) {\n if (typeof DataView === 'undefined') {\n return false;\n }\n\n return isDataViewToString.working\n ? isDataViewToString(value)\n : value instanceof DataView;\n}\nexports.isDataView = isDataView;\n\n// Store a copy of SharedArrayBuffer in case it's deleted elsewhere\nvar SharedArrayBufferCopy = typeof SharedArrayBuffer !== 'undefined' ? SharedArrayBuffer : undefined;\nfunction isSharedArrayBufferToString(value) {\n return ObjectToString(value) === '[object SharedArrayBuffer]';\n}\nfunction isSharedArrayBuffer(value) {\n if (typeof SharedArrayBufferCopy === 'undefined') {\n return false;\n }\n\n if (typeof isSharedArrayBufferToString.working === 'undefined') {\n isSharedArrayBufferToString.working = isSharedArrayBufferToString(new SharedArrayBufferCopy());\n }\n\n return isSharedArrayBufferToString.working\n ? isSharedArrayBufferToString(value)\n : value instanceof SharedArrayBufferCopy;\n}\nexports.isSharedArrayBuffer = isSharedArrayBuffer;\n\nfunction isAsyncFunction(value) {\n return ObjectToString(value) === '[object AsyncFunction]';\n}\nexports.isAsyncFunction = isAsyncFunction;\n\nfunction isMapIterator(value) {\n return ObjectToString(value) === '[object Map Iterator]';\n}\nexports.isMapIterator = isMapIterator;\n\nfunction isSetIterator(value) {\n return ObjectToString(value) === '[object Set Iterator]';\n}\nexports.isSetIterator = isSetIterator;\n\nfunction isGeneratorObject(value) {\n return ObjectToString(value) === '[object Generator]';\n}\nexports.isGeneratorObject = isGeneratorObject;\n\nfunction isWebAssemblyCompiledModule(value) {\n return ObjectToString(value) === '[object WebAssembly.Module]';\n}\nexports.isWebAssemblyCompiledModule = isWebAssemblyCompiledModule;\n\nfunction isNumberObject(value) {\n return checkBoxedPrimitive(value, numberValue);\n}\nexports.isNumberObject = isNumberObject;\n\nfunction isStringObject(value) {\n return checkBoxedPrimitive(value, stringValue);\n}\nexports.isStringObject = isStringObject;\n\nfunction isBooleanObject(value) {\n return checkBoxedPrimitive(value, booleanValue);\n}\nexports.isBooleanObject = isBooleanObject;\n\nfunction isBigIntObject(value) {\n return BigIntSupported && checkBoxedPrimitive(value, bigIntValue);\n}\nexports.isBigIntObject = isBigIntObject;\n\nfunction isSymbolObject(value) {\n return SymbolSupported && checkBoxedPrimitive(value, symbolValue);\n}\nexports.isSymbolObject = isSymbolObject;\n\nfunction isBoxedPrimitive(value) {\n return (\n isNumberObject(value) ||\n isStringObject(value) ||\n isBooleanObject(value) ||\n isBigIntObject(value) ||\n isSymbolObject(value)\n );\n}\nexports.isBoxedPrimitive = isBoxedPrimitive;\n\nfunction isAnyArrayBuffer(value) {\n return typeof Uint8Array !== 'undefined' && (\n isArrayBuffer(value) ||\n isSharedArrayBuffer(value)\n );\n}\nexports.isAnyArrayBuffer = isAnyArrayBuffer;\n\n['isProxy', 'isExternal', 'isModuleNamespaceObject'].forEach(function(method) {\n Object.defineProperty(exports, method, {\n enumerable: false,\n value: function() {\n throw new Error(method + ' is not supported in userland');\n }\n });\n});\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n }\n\n // Allow for deprecating things in the process of starting up.\n if (typeof process === 'undefined') {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnvRegex = /^$/;\n\nif (process.env.NODE_DEBUG) {\n var debugEnv = process.env.NODE_DEBUG;\n debugEnv = debugEnv.replace(/[|\\\\{}()[\\]^$+?.]/g, '\\\\$&')\n .replace(/\\*/g, '.*')\n .replace(/,/g, '$|^')\n .toUpperCase();\n debugEnvRegex = new RegExp('^' + debugEnv + '$', 'i');\n}\nexports.debuglog = function(set) {\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (debugEnvRegex.test(set)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').slice(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.slice(1, -1);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nexports.types = require('./support/types');\n\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\nexports.types.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\nexports.types.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\nexports.types.isNativeError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function')\n throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function() {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args)\n .then(function(ret) { process.nextTick(cb.bind(null, null, ret)) },\n function(rej) { process.nextTick(callbackifyOnRejected.bind(null, rej, cb)) });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified,\n getOwnPropertyDescriptors(original));\n return callbackified;\n}\nexports.callbackify = callbackify;\n","'use strict';\n\nvar forEach = require('for-each');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBound = require('call-bind/callBound');\nvar gOPD = require('gopd');\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $slice = callBound('String.prototype.slice');\nvar toStrTags = {};\nvar getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');\nif (hasToStringTag && gOPD && getPrototypeOf) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tif (typeof g[typedArray] === 'function') {\n\t\t\tvar arr = new g[typedArray]();\n\t\t\tif (Symbol.toStringTag in arr) {\n\t\t\t\tvar proto = getPrototypeOf(arr);\n\t\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\t\tif (!descriptor) {\n\t\t\t\t\tvar superProto = getPrototypeOf(proto);\n\t\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t\t}\n\t\t\t\ttoStrTags[typedArray] = descriptor.get;\n\t\t\t}\n\t\t}\n\t});\n}\n\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\tvar foundName = false;\n\tforEach(toStrTags, function (getter, typedArray) {\n\t\tif (!foundName) {\n\t\t\ttry {\n\t\t\t\tvar name = getter.call(value);\n\t\t\t\tif (name === typedArray) {\n\t\t\t\t\tfoundName = name;\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\t\t}\n\t});\n\treturn foundName;\n};\n\nvar isTypedArray = require('is-typed-array');\n\nmodule.exports = function whichTypedArray(value) {\n\tif (!isTypedArray(value)) { return false; }\n\tif (!hasToStringTag || !(Symbol.toStringTag in value)) { return $slice($toString(value), 8, -1); }\n\treturn tryTypedArrays(value);\n};\n","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n","const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\") ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const destroy = () => listeners.clear();\n const api = { setState, getState, subscribe, destroy };\n state = createState(\n setState,\n getState,\n api\n );\n return api;\n};\nconst createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl;\n\nexport { createStore as default };\n","import createStore__default from 'zustand/vanilla';\nexport * from 'zustand/vanilla';\nexport { default as createStore } from 'zustand/vanilla';\nimport { useDebugValue } from 'react';\nimport useSyncExternalStoreExports from 'use-sync-external-store/shim/with-selector.js';\n\nconst { useSyncExternalStoreWithSelector } = useSyncExternalStoreExports;\nfunction useStore(api, selector = api.getState, equalityFn) {\n const slice = useSyncExternalStoreWithSelector(\n api.subscribe,\n api.getState,\n api.getServerState || api.getState,\n selector,\n equalityFn\n );\n useDebugValue(slice);\n return slice;\n}\nconst createImpl = (createState) => {\n const api = typeof createState === \"function\" ? createStore__default(createState) : createState;\n const useBoundStore = (selector, equalityFn) => useStore(api, selector, equalityFn);\n Object.assign(useBoundStore, api);\n return useBoundStore;\n};\nconst create = (createState) => createState ? createImpl(createState) : createImpl;\n\nexport { create as default, useStore };\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\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};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CoinbaseWallet = void 0;\nconst types_1 = require(\"@web3-react/types\");\nfunction parseChainId(chainId) {\n return typeof chainId === 'number' ? chainId : Number.parseInt(chainId, chainId.startsWith('0x') ? 16 : 10);\n}\nclass CoinbaseWallet extends types_1.Connector {\n constructor({ actions, options, onError }) {\n super(actions, onError);\n this.options = options;\n }\n // the `connected` property, is bugged, but this works as a hack to check connection status\n get connected() {\n var _a;\n return !!((_a = this.provider) === null || _a === void 0 ? void 0 : _a.selectedAddress);\n }\n isomorphicInitialize() {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.eagerConnection)\n return;\n yield (this.eagerConnection = Promise.resolve().then(() => __importStar(require('@coinbase/wallet-sdk'))).then((m) => {\n const _a = this.options, { url } = _a, options = __rest(_a, [\"url\"]);\n this.coinbaseWallet = new m.default(options);\n this.provider = this.coinbaseWallet.makeWeb3Provider(url);\n this.provider.on('connect', ({ chainId }) => {\n this.actions.update({ chainId: parseChainId(chainId) });\n });\n this.provider.on('disconnect', (error) => {\n var _a;\n this.actions.resetState();\n (_a = this.onError) === null || _a === void 0 ? void 0 : _a.call(this, error);\n });\n this.provider.on('chainChanged', (chainId) => {\n this.actions.update({ chainId: parseChainId(chainId) });\n });\n this.provider.on('accountsChanged', (accounts) => {\n if (accounts.length === 0) {\n // handle this edge case by disconnecting\n this.actions.resetState();\n }\n else {\n this.actions.update({ accounts });\n }\n });\n }));\n });\n }\n /** {@inheritdoc Connector.connectEagerly} */\n connectEagerly() {\n return __awaiter(this, void 0, void 0, function* () {\n const cancelActivation = this.actions.startActivation();\n try {\n yield this.isomorphicInitialize();\n if (!this.connected)\n throw new Error('No existing connection');\n return Promise.all([\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.provider.request({ method: 'eth_chainId' }),\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.provider.request({ method: 'eth_accounts' }),\n ]).then(([chainId, accounts]) => {\n if (!accounts.length)\n throw new Error('No accounts returned');\n this.actions.update({ chainId: parseChainId(chainId), accounts });\n });\n }\n catch (error) {\n cancelActivation();\n throw error;\n }\n });\n }\n /**\n * Initiates a connection.\n *\n * @param desiredChainIdOrChainParameters - If defined, indicates the desired chain to connect to. If the user is\n * already connected to this chain, no additional steps will be taken. Otherwise, the user will be prompted to switch\n * to the chain, if one of two conditions is met: either they already have it added, or the argument is of type\n * AddEthereumChainParameter, in which case the user will be prompted to add the chain with the specified parameters\n * first, before being prompted to switch.\n */\n activate(desiredChainIdOrChainParameters) {\n return __awaiter(this, void 0, void 0, function* () {\n const desiredChainId = typeof desiredChainIdOrChainParameters === 'number'\n ? desiredChainIdOrChainParameters\n : desiredChainIdOrChainParameters === null || desiredChainIdOrChainParameters === void 0 ? void 0 : desiredChainIdOrChainParameters.chainId;\n if (this.connected) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n if (!desiredChainId || desiredChainId === parseChainId(this.provider.chainId))\n return;\n const desiredChainIdHex = `0x${desiredChainId.toString(16)}`;\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this.provider.request({\n method: 'wallet_switchEthereumChain',\n params: [{ chainId: desiredChainIdHex }],\n }).catch((error) => __awaiter(this, void 0, void 0, function* () {\n if (error.code === 4902 && typeof desiredChainIdOrChainParameters !== 'number') {\n // if we're here, we can try to add a new network\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this.provider.request({\n method: 'wallet_addEthereumChain',\n params: [Object.assign(Object.assign({}, desiredChainIdOrChainParameters), { chainId: desiredChainIdHex })],\n });\n }\n throw error;\n }));\n }\n const cancelActivation = this.actions.startActivation();\n try {\n yield this.isomorphicInitialize();\n return Promise.all([\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.provider.request({ method: 'eth_chainId' }),\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.provider.request({ method: 'eth_requestAccounts' }),\n ]).then(([chainId, accounts]) => {\n var _a;\n const receivedChainId = parseChainId(chainId);\n if (!desiredChainId || desiredChainId === receivedChainId)\n return this.actions.update({ chainId: receivedChainId, accounts });\n // if we're here, we can try to switch networks\n const desiredChainIdHex = `0x${desiredChainId.toString(16)}`;\n return (_a = this.provider) === null || _a === void 0 ? void 0 : _a.request({\n method: 'wallet_switchEthereumChain',\n params: [{ chainId: desiredChainIdHex }],\n }).catch((error) => __awaiter(this, void 0, void 0, function* () {\n if (error.code === 4902 && typeof desiredChainIdOrChainParameters !== 'number') {\n // if we're here, we can try to add a new network\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this.provider.request({\n method: 'wallet_addEthereumChain',\n params: [Object.assign(Object.assign({}, desiredChainIdOrChainParameters), { chainId: desiredChainIdHex })],\n });\n }\n throw error;\n }));\n });\n }\n catch (error) {\n cancelActivation();\n throw error;\n }\n });\n }\n /** {@inheritdoc Connector.deactivate} */\n deactivate() {\n var _a;\n (_a = this.coinbaseWallet) === null || _a === void 0 ? void 0 : _a.disconnect();\n }\n watchAsset({ address, symbol, decimals, image, }) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.provider)\n throw new Error('No provider');\n return this.provider\n .request({\n method: 'wallet_watchAsset',\n params: {\n type: 'ERC20',\n options: {\n address,\n symbol,\n decimals,\n image, // A string url of the token logo\n },\n },\n })\n .then((success) => {\n if (!success)\n throw new Error('Rejected');\n return true;\n });\n });\n }\n}\nexports.CoinbaseWallet = CoinbaseWallet;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getPriorityConnector = exports.getSelectedConnector = exports.initializeConnector = void 0;\nconst store_1 = require(\"@web3-react/store\");\nconst react_1 = require(\"react\");\nconst zustand_1 = __importDefault(require(\"zustand\"));\nlet DynamicProvider;\nfunction importProvider() {\n return __awaiter(this, void 0, void 0, function* () {\n if (DynamicProvider === undefined) {\n try {\n const { Web3Provider } = yield Promise.resolve().then(() => __importStar(require('@ethersproject/providers')));\n DynamicProvider = Web3Provider;\n }\n catch (_a) {\n console.debug('@ethersproject/providers not available');\n DynamicProvider = null;\n }\n }\n });\n}\n/**\n * Wraps the initialization of a `connector`. Creates a zustand `store` with `actions` bound to it, and then passes\n * these to the connector as specified in `f`. Also creates a variety of `hooks` bound to this `store`.\n *\n * @typeParam T - The type of the `connector` returned from `f`.\n * @param f - A function which is called with `actions` bound to the returned `store`.\n * @returns [connector, hooks, store] - The initialized connector, a variety of hooks, and a zustand store.\n */\nfunction initializeConnector(f) {\n const [store, actions] = (0, store_1.createWeb3ReactStoreAndActions)();\n const connector = f(actions);\n const useConnector = (0, zustand_1.default)(store);\n const stateHooks = getStateHooks(useConnector);\n const derivedHooks = getDerivedHooks(stateHooks);\n const augmentedHooks = getAugmentedHooks(connector, stateHooks, derivedHooks);\n return [connector, Object.assign(Object.assign(Object.assign({}, stateHooks), derivedHooks), augmentedHooks), store];\n}\nexports.initializeConnector = initializeConnector;\nfunction computeIsActive({ chainId, accounts, activating }) {\n return Boolean(chainId && accounts && !activating);\n}\n/**\n * Creates a variety of convenience `hooks` that return data associated with a particular passed connector.\n *\n * @param initializedConnectors - Two or more [connector, hooks(, store)] arrays, as returned from initializeConnector.\n * @returns hooks - A variety of convenience hooks that wrap the hooks returned from initializeConnector.\n */\nfunction getSelectedConnector(...initializedConnectors) {\n function getIndex(connector) {\n const index = initializedConnectors.findIndex(([initializedConnector]) => connector === initializedConnector);\n if (index === -1)\n throw new Error('Connector not found');\n return index;\n }\n function useSelectedStore(connector) {\n const store = initializedConnectors[getIndex(connector)][2];\n if (!store)\n throw new Error('Stores not passed');\n return store;\n }\n // the following code calls hooks in a map a lot, which violates the eslint rule.\n // this is ok, though, because initializedConnectors never changes, so the same hooks are called each time\n function useSelectedChainId(connector) {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const values = initializedConnectors.map(([, { useChainId }]) => useChainId());\n return values[getIndex(connector)];\n }\n function useSelectedAccounts(connector) {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const values = initializedConnectors.map(([, { useAccounts }]) => useAccounts());\n return values[getIndex(connector)];\n }\n function useSelectedIsActivating(connector) {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const values = initializedConnectors.map(([, { useIsActivating }]) => useIsActivating());\n return values[getIndex(connector)];\n }\n function useSelectedAccount(connector) {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const values = initializedConnectors.map(([, { useAccount }]) => useAccount());\n return values[getIndex(connector)];\n }\n function useSelectedIsActive(connector) {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const values = initializedConnectors.map(([, { useIsActive }]) => useIsActive());\n return values[getIndex(connector)];\n }\n /**\n * @typeParam T - A type argument must only be provided if one or more of the connectors passed to\n * getSelectedConnector is using `connector.customProvider`, in which case it must match every possible type of this\n * property, over all connectors.\n */\n function useSelectedProvider(connector, network) {\n const index = getIndex(connector);\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const values = initializedConnectors.map(([, { useProvider }], i) => useProvider(network, i === index));\n return values[index];\n }\n function useSelectedENSNames(connector, provider) {\n const index = getIndex(connector);\n const values = initializedConnectors.map(([, { useENSNames }], i) => \n // eslint-disable-next-line react-hooks/rules-of-hooks\n useENSNames(i === index ? provider : undefined));\n return values[index];\n }\n function useSelectedENSName(connector, provider) {\n const index = getIndex(connector);\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const values = initializedConnectors.map(([, { useENSName }], i) => useENSName(i === index ? provider : undefined));\n return values[index];\n }\n return {\n useSelectedStore,\n useSelectedChainId,\n useSelectedAccounts,\n useSelectedIsActivating,\n useSelectedAccount,\n useSelectedIsActive,\n useSelectedProvider,\n useSelectedENSNames,\n useSelectedENSName,\n };\n}\nexports.getSelectedConnector = getSelectedConnector;\n/**\n * Creates a variety of convenience `hooks` that return data associated with the first of the `initializedConnectors`\n * that is active.\n *\n * @param initializedConnectors - Two or more [connector, hooks(, store)] arrays, as returned from initializeConnector.\n * @returns hooks - A variety of convenience hooks that wrap the hooks returned from initializeConnector.\n */\nfunction getPriorityConnector(...initializedConnectors) {\n const { useSelectedStore, useSelectedChainId, useSelectedAccounts, useSelectedIsActivating, useSelectedAccount, useSelectedIsActive, useSelectedProvider, useSelectedENSNames, useSelectedENSName, } = getSelectedConnector(...initializedConnectors);\n function usePriorityConnector() {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const values = initializedConnectors.map(([, { useIsActive }]) => useIsActive());\n const index = values.findIndex((isActive) => isActive);\n return initializedConnectors[index === -1 ? 0 : index][0];\n }\n function usePriorityStore() {\n return useSelectedStore(usePriorityConnector());\n }\n function usePriorityChainId() {\n return useSelectedChainId(usePriorityConnector());\n }\n function usePriorityAccounts() {\n return useSelectedAccounts(usePriorityConnector());\n }\n function usePriorityIsActivating() {\n return useSelectedIsActivating(usePriorityConnector());\n }\n function usePriorityAccount() {\n return useSelectedAccount(usePriorityConnector());\n }\n function usePriorityIsActive() {\n return useSelectedIsActive(usePriorityConnector());\n }\n /**\n * @typeParam T - A type argument must only be provided if one or more of the connectors passed to\n * getPriorityConnector is using `connector.customProvider`, in which case it must match every possible type of this\n * property, over all connectors.\n */\n function usePriorityProvider(network) {\n return useSelectedProvider(usePriorityConnector(), network);\n }\n function usePriorityENSNames(provider) {\n return useSelectedENSNames(usePriorityConnector(), provider);\n }\n function usePriorityENSName(provider) {\n return useSelectedENSName(usePriorityConnector(), provider);\n }\n return {\n useSelectedStore,\n useSelectedChainId,\n useSelectedAccounts,\n useSelectedIsActivating,\n useSelectedAccount,\n useSelectedIsActive,\n useSelectedProvider,\n useSelectedENSNames,\n useSelectedENSName,\n usePriorityConnector,\n usePriorityStore,\n usePriorityChainId,\n usePriorityAccounts,\n usePriorityIsActivating,\n usePriorityAccount,\n usePriorityIsActive,\n usePriorityProvider,\n usePriorityENSNames,\n usePriorityENSName,\n };\n}\nexports.getPriorityConnector = getPriorityConnector;\nconst CHAIN_ID = ({ chainId }) => chainId;\nconst ACCOUNTS = ({ accounts }) => accounts;\nconst ACCOUNTS_EQUALITY_CHECKER = (oldAccounts, newAccounts) => (oldAccounts === undefined && newAccounts === undefined) ||\n (oldAccounts !== undefined &&\n oldAccounts.length === (newAccounts === null || newAccounts === void 0 ? void 0 : newAccounts.length) &&\n oldAccounts.every((oldAccount, i) => oldAccount === newAccounts[i]));\nconst ACTIVATING = ({ activating }) => activating;\nfunction getStateHooks(useConnector) {\n function useChainId() {\n return useConnector(CHAIN_ID);\n }\n function useAccounts() {\n return useConnector(ACCOUNTS, ACCOUNTS_EQUALITY_CHECKER);\n }\n function useIsActivating() {\n return useConnector(ACTIVATING);\n }\n return { useChainId, useAccounts, useIsActivating };\n}\nfunction getDerivedHooks({ useChainId, useAccounts, useIsActivating }) {\n function useAccount() {\n var _a;\n return (_a = useAccounts()) === null || _a === void 0 ? void 0 : _a[0];\n }\n function useIsActive() {\n const chainId = useChainId();\n const accounts = useAccounts();\n const activating = useIsActivating();\n return computeIsActive({\n chainId,\n accounts,\n activating,\n });\n }\n return { useAccount, useIsActive };\n}\n/**\n * @returns ENSNames - An array of length `accounts.length` which contains entries which are either all `undefined`,\n * indicated that names cannot be fetched because there's no provider, or they're in the process of being fetched,\n * or `string | null`, depending on whether an ENS name has been set for the account in question or not.\n */\nfunction useENS(provider, accounts = []) {\n const [ENSNames, setENSNames] = (0, react_1.useState)();\n (0, react_1.useEffect)(() => {\n if (provider && accounts.length) {\n let stale = false;\n Promise.all(accounts.map((account) => provider.lookupAddress(account)))\n .then((ENSNames) => {\n if (stale)\n return;\n setENSNames(ENSNames);\n })\n .catch((error) => {\n if (stale)\n return;\n console.debug('Could not fetch ENS names', error);\n setENSNames(new Array(accounts.length).fill(null));\n });\n return () => {\n stale = true;\n setENSNames(undefined);\n };\n }\n }, [provider, accounts]);\n return ENSNames !== null && ENSNames !== void 0 ? ENSNames : new Array(accounts.length).fill(undefined);\n}\nfunction getAugmentedHooks(connector, { useAccounts, useChainId }, { useAccount, useIsActive }) {\n /**\n * Avoid type erasure by returning the most qualified type if not otherwise set.\n * Note that this function's return type is `T | undefined`, but there is a code path\n * that returns a Web3Provider, which could conflict with a user-provided T. So,\n * it's important that users only provide an override for T if they know that\n * `connector.customProvider` is going to be defined and of type T.\n *\n * @typeParam T - A type argument must only be provided if using `connector.customProvider`, in which case it\n * must match the type of this property.\n */\n function useProvider(network, enabled = true) {\n const isActive = useIsActive();\n const chainId = useChainId();\n // ensure that Provider is going to be available when loaded if @ethersproject/providers is installed\n const [loaded, setLoaded] = (0, react_1.useState)(DynamicProvider !== undefined);\n (0, react_1.useEffect)(() => {\n if (loaded)\n return;\n let stale = false;\n void importProvider().then(() => {\n if (stale)\n return;\n setLoaded(true);\n });\n return () => {\n stale = true;\n };\n }, [loaded]);\n return (0, react_1.useMemo)(() => {\n // to ensure connectors remain fresh, we condition re-renders on loaded, isActive and chainId\n void loaded && isActive && chainId;\n if (enabled) {\n if (connector.customProvider)\n return connector.customProvider;\n // see tsdoc note above for return type explanation.\n else if (DynamicProvider && connector.provider)\n return new DynamicProvider(connector.provider, network);\n }\n }, [loaded, enabled, isActive, chainId, network]);\n }\n function useENSNames(provider) {\n const accounts = useAccounts();\n return useENS(provider, accounts);\n }\n function useENSName(provider) {\n var _a;\n const account = useAccount();\n const accounts = (0, react_1.useMemo)(() => (account === undefined ? undefined : [account]), [account]);\n return (_a = useENS(provider, accounts)) === null || _a === void 0 ? void 0 : _a[0];\n }\n return { useProvider, useENSNames, useENSName };\n}\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./hooks\"), exports);\n__exportStar(require(\"./provider\"), exports);\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.useWeb3React = exports.Web3ReactProvider = void 0;\nconst react_1 = __importStar(require(\"react\"));\nconst hooks_1 = require(\"./hooks\");\nconst Web3Context = (0, react_1.createContext)(undefined);\nfunction Web3ReactProvider({ children, connectors, connectorOverride, network, lookupENS = true, }) {\n const cachedConnectors = (0, react_1.useRef)(connectors);\n // because we're calling `getPriorityConnector` with these connectors, we need to ensure that they're not changing in place\n if (connectors.length != cachedConnectors.current.length ||\n connectors.some((connector, i) => {\n const cachedConnector = cachedConnectors.current[i];\n // because a \"connector\" is actually an array, we want to be sure to only perform an equality check on the actual Connector\n // class instance, to see if they're the same object\n return connector[0] !== cachedConnector[0];\n }))\n throw new Error('The connectors prop passed to Web3ReactProvider must be referentially static. If connectors is changing, try providing a key prop to Web3ReactProvider that changes every time connectors changes.');\n const hooks = (0, hooks_1.getPriorityConnector)(...connectors);\n const { usePriorityConnector, useSelectedChainId, useSelectedAccounts, useSelectedIsActivating, useSelectedAccount, useSelectedIsActive, useSelectedProvider, useSelectedENSNames, useSelectedENSName, } = hooks;\n const priorityConnector = usePriorityConnector();\n const connector = connectorOverride !== null && connectorOverride !== void 0 ? connectorOverride : priorityConnector;\n const chainId = useSelectedChainId(connector);\n const accounts = useSelectedAccounts(connector);\n const isActivating = useSelectedIsActivating(connector);\n const account = useSelectedAccount(connector);\n const isActive = useSelectedIsActive(connector);\n // note that we've omitted a generic type\n // in Web3ReactProvider, and thus can't pass T through to useSelectedProvider below.\n // this is because if we did so, the type of provider would include T, but that would\n // conflict because Web3Context can't take a generic. however, this isn't particularly\n // important, because useWeb3React (below) is manually typed\n const provider = useSelectedProvider(connector, network);\n const ENSNames = useSelectedENSNames(connector, lookupENS ? provider : undefined);\n const ENSName = useSelectedENSName(connector, lookupENS ? provider : undefined);\n return (react_1.default.createElement(Web3Context.Provider, { value: {\n connector,\n chainId,\n accounts,\n isActivating,\n account,\n isActive,\n provider,\n ENSNames,\n ENSName,\n hooks,\n } }, children));\n}\nexports.Web3ReactProvider = Web3ReactProvider;\nfunction useWeb3React() {\n const context = (0, react_1.useContext)(Web3Context);\n if (!context)\n throw Error('useWeb3React can only be used within the Web3ReactProvider component');\n return context;\n}\nexports.useWeb3React = useWeb3React;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MetaMask = exports.NoMetaMaskError = void 0;\nconst types_1 = require(\"@web3-react/types\");\nclass NoMetaMaskError extends Error {\n constructor() {\n super('MetaMask not installed');\n this.name = NoMetaMaskError.name;\n Object.setPrototypeOf(this, NoMetaMaskError.prototype);\n }\n}\nexports.NoMetaMaskError = NoMetaMaskError;\nfunction parseChainId(chainId) {\n return Number.parseInt(chainId, 16);\n}\nclass MetaMask extends types_1.Connector {\n constructor({ actions, options, onError }) {\n super(actions, onError);\n this.options = options;\n }\n isomorphicInitialize() {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.eagerConnection)\n return;\n return (this.eagerConnection = Promise.resolve().then(() => __importStar(require('@metamask/detect-provider'))).then((m) => __awaiter(this, void 0, void 0, function* () {\n var _a, _b;\n const provider = yield m.default(this.options);\n if (provider) {\n this.provider = provider;\n // handle the case when e.g. metamask and coinbase wallet are both installed\n if ((_a = this.provider.providers) === null || _a === void 0 ? void 0 : _a.length) {\n this.provider = (_b = this.provider.providers.find((p) => p.isMetaMask)) !== null && _b !== void 0 ? _b : this.provider.providers[0];\n }\n this.provider.on('connect', ({ chainId }) => {\n this.actions.update({ chainId: parseChainId(chainId) });\n });\n this.provider.on('disconnect', (error) => {\n var _a;\n this.actions.resetState();\n (_a = this.onError) === null || _a === void 0 ? void 0 : _a.call(this, error);\n });\n this.provider.on('chainChanged', (chainId) => {\n this.actions.update({ chainId: parseChainId(chainId) });\n });\n this.provider.on('accountsChanged', (accounts) => {\n if (accounts.length === 0) {\n // handle this edge case by disconnecting\n this.actions.resetState();\n }\n else {\n this.actions.update({ accounts });\n }\n });\n }\n })));\n });\n }\n /** {@inheritdoc Connector.connectEagerly} */\n connectEagerly() {\n return __awaiter(this, void 0, void 0, function* () {\n const cancelActivation = this.actions.startActivation();\n yield this.isomorphicInitialize();\n if (!this.provider)\n return cancelActivation();\n return Promise.all([\n this.provider.request({ method: 'eth_chainId' }),\n this.provider.request({ method: 'eth_accounts' }),\n ])\n .then(([chainId, accounts]) => {\n if (accounts.length) {\n this.actions.update({ chainId: parseChainId(chainId), accounts });\n }\n else {\n throw new Error('No accounts returned');\n }\n })\n .catch((error) => {\n console.debug('Could not connect eagerly', error);\n // we should be able to use `cancelActivation` here, but on mobile, metamask emits a 'connect'\n // event, meaning that chainId is updated, and cancelActivation doesn't work because an intermediary\n // update has occurred, so we reset state instead\n this.actions.resetState();\n });\n });\n }\n /**\n * Initiates a connection.\n *\n * @param desiredChainIdOrChainParameters - If defined, indicates the desired chain to connect to. If the user is\n * already connected to this chain, no additional steps will be taken. Otherwise, the user will be prompted to switch\n * to the chain, if one of two conditions is met: either they already have it added in their extension, or the\n * argument is of type AddEthereumChainParameter, in which case the user will be prompted to add the chain with the\n * specified parameters first, before being prompted to switch.\n */\n activate(desiredChainIdOrChainParameters) {\n var _a, _b;\n return __awaiter(this, void 0, void 0, function* () {\n let cancelActivation;\n if (!((_b = (_a = this.provider) === null || _a === void 0 ? void 0 : _a.isConnected) === null || _b === void 0 ? void 0 : _b.call(_a)))\n cancelActivation = this.actions.startActivation();\n return this.isomorphicInitialize()\n .then(() => __awaiter(this, void 0, void 0, function* () {\n if (!this.provider)\n throw new NoMetaMaskError();\n return Promise.all([\n this.provider.request({ method: 'eth_chainId' }),\n this.provider.request({ method: 'eth_requestAccounts' }),\n ]).then(([chainId, accounts]) => {\n const receivedChainId = parseChainId(chainId);\n const desiredChainId = typeof desiredChainIdOrChainParameters === 'number'\n ? desiredChainIdOrChainParameters\n : desiredChainIdOrChainParameters === null || desiredChainIdOrChainParameters === void 0 ? void 0 : desiredChainIdOrChainParameters.chainId;\n // if there's no desired chain, or it's equal to the received, update\n if (!desiredChainId || receivedChainId === desiredChainId)\n return this.actions.update({ chainId: receivedChainId, accounts });\n const desiredChainIdHex = `0x${desiredChainId.toString(16)}`;\n // if we're here, we can try to switch networks\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this.provider.request({\n method: 'wallet_switchEthereumChain',\n params: [{ chainId: desiredChainIdHex }],\n })\n .catch((error) => {\n if (error.code === 4902 && typeof desiredChainIdOrChainParameters !== 'number') {\n // if we're here, we can try to add a new network\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this.provider.request({\n method: 'wallet_addEthereumChain',\n params: [Object.assign(Object.assign({}, desiredChainIdOrChainParameters), { chainId: desiredChainIdHex })],\n });\n }\n throw error;\n })\n .then(() => this.activate(desiredChainId));\n });\n }))\n .catch((error) => {\n cancelActivation === null || cancelActivation === void 0 ? void 0 : cancelActivation();\n throw error;\n });\n });\n }\n watchAsset({ address, symbol, decimals, image }) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.provider)\n throw new Error('No provider');\n return this.provider\n .request({\n method: 'wallet_watchAsset',\n params: {\n type: 'ERC20',\n options: {\n address,\n symbol,\n decimals,\n image, // A string url of the token logo\n },\n },\n })\n .then((success) => {\n if (!success)\n throw new Error('Rejected');\n return true;\n });\n });\n }\n}\nexports.MetaMask = MetaMask;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Network = void 0;\nconst types_1 = require(\"@web3-react/types\");\nconst utils_1 = require(\"./utils\");\nfunction isUrl(url) {\n return typeof url === 'string' || ('url' in url && !('connection' in url));\n}\nclass Network extends types_1.Connector {\n constructor({ actions, urlMap, defaultChainId = Number(Object.keys(urlMap)[0]), timeout = 5000, }) {\n super(actions);\n this.providerCache = {};\n this.urlMap = Object.keys(urlMap).reduce((accumulator, chainId) => {\n const urls = urlMap[Number(chainId)];\n if (Array.isArray(urls)) {\n accumulator[Number(chainId)] = urls;\n }\n else {\n // thie ternary just makes typescript happy, since it can't infer that the array has elements of the same type\n accumulator[Number(chainId)] = isUrl(urls) ? [urls] : [urls];\n }\n return accumulator;\n }, {});\n this.defaultChainId = defaultChainId;\n this.timeout = timeout;\n }\n isomorphicInitialize(chainId) {\n return __awaiter(this, void 0, void 0, function* () {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n if (this.providerCache[chainId])\n return this.providerCache[chainId];\n const urls = this.urlMap[chainId];\n // early return if we have a single jsonrpc provider already\n if (urls.length === 1 && !isUrl(urls[0])) {\n return (this.providerCache[chainId] = Promise.resolve(urls[0]));\n }\n return (this.providerCache[chainId] = Promise.resolve().then(() => __importStar(require('@ethersproject/providers'))).then(({ JsonRpcProvider }) => {\n const providers = urls.map((url) => (isUrl(url) ? new JsonRpcProvider(url, chainId) : url));\n return (0, utils_1.getBestProvider)(providers, this.timeout);\n }));\n });\n }\n /**\n * Initiates a connection.\n *\n * @param desiredChainId - The desired chain to connect to.\n */\n activate(desiredChainId = this.defaultChainId) {\n return __awaiter(this, void 0, void 0, function* () {\n let cancelActivation;\n if (!this.providerCache[desiredChainId]) {\n cancelActivation = this.actions.startActivation();\n }\n return this.isomorphicInitialize(desiredChainId)\n .then((customProvider) => __awaiter(this, void 0, void 0, function* () {\n this.customProvider = customProvider;\n const { chainId } = yield this.customProvider.getNetwork();\n this.actions.update({ chainId, accounts: [] });\n }))\n .catch((error) => {\n cancelActivation === null || cancelActivation === void 0 ? void 0 : cancelActivation();\n throw error;\n });\n });\n }\n}\nexports.Network = Network;\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getBestProvider = void 0;\n/**\n * @param providers - An array of providers to try to connect to.\n * @param timeout - How long to wait before a call is considered failed, in ms.\n */\nfunction getBestProvider(providers, timeout = 5000) {\n return __awaiter(this, void 0, void 0, function* () {\n // if we only have 1 provider, it's the best!\n if (providers.length === 1)\n return providers[0];\n // the below returns the first provider for which there's been a successful call, prioritized by index\n return new Promise((resolve) => {\n let resolved = false;\n const successes = {};\n providers.forEach((provider, i) => {\n // create a promise that resolves on a successful call, and rejects on a failed call or after timeout milliseconds\n const promise = new Promise((resolve, reject) => {\n provider\n .getNetwork()\n .then(() => resolve())\n .catch(() => reject());\n // set a timeout to reject\n setTimeout(() => {\n reject();\n }, timeout);\n });\n void promise\n .then(() => true)\n .catch(() => false)\n .then((success) => {\n // if we already resolved, return\n if (resolved)\n return;\n // store the result of the call\n successes[i] = success;\n // if this is the last call and we haven't resolved yet - do so\n if (Object.keys(successes).length === providers.length) {\n const index = Object.keys(successes).findIndex((j) => successes[Number(j)]);\n // no need to set resolved to true, as this is the last promise\n return resolve(providers[index === -1 ? 0 : index]);\n }\n // otherwise, for each prospective index, check if we can resolve\n new Array(providers.length).fill(0).forEach((_, prospectiveIndex) => {\n // to resolve, we need to:\n // a) have successfully made a call\n // b) not be waiting on any other higher-index calls\n if (successes[prospectiveIndex] &&\n new Array(prospectiveIndex).fill(0).every((_, j) => successes[j] === false)) {\n resolved = true;\n resolve(providers[prospectiveIndex]);\n }\n });\n });\n });\n });\n });\n}\nexports.getBestProvider = getBestProvider;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createWeb3ReactStoreAndActions = exports.MAX_SAFE_CHAIN_ID = void 0;\nconst address_1 = require(\"@ethersproject/address\");\nconst zustand_1 = require(\"zustand\");\n/**\n * MAX_SAFE_CHAIN_ID is the upper bound limit on what will be accepted for `chainId`\n * `MAX_SAFE_CHAIN_ID = floor( ( 2**53 - 39 ) / 2 ) = 4503599627370476`\n *\n * @see {@link https://github.com/MetaMask/metamask-extension/blob/b6673731e2367e119a5fee9a454dd40bd4968948/shared/constants/network.js#L31}\n */\nexports.MAX_SAFE_CHAIN_ID = 4503599627370476;\nfunction validateChainId(chainId) {\n if (!Number.isInteger(chainId) || chainId <= 0 || chainId > exports.MAX_SAFE_CHAIN_ID) {\n throw new Error(`Invalid chainId ${chainId}`);\n }\n}\nfunction validateAccount(account) {\n return (0, address_1.getAddress)(account);\n}\nconst DEFAULT_STATE = {\n chainId: undefined,\n accounts: undefined,\n activating: false,\n};\nfunction createWeb3ReactStoreAndActions() {\n const store = (0, zustand_1.createStore)()(() => DEFAULT_STATE);\n // flag for tracking updates so we don't clobber data when cancelling activation\n let nullifier = 0;\n /**\n * Sets activating to true, indicating that an update is in progress.\n *\n * @returns cancelActivation - A function that cancels the activation by setting activating to false,\n * as long as there haven't been any intervening updates.\n */\n function startActivation() {\n const nullifierCached = ++nullifier;\n store.setState(Object.assign(Object.assign({}, DEFAULT_STATE), { activating: true }));\n // return a function that cancels the activation iff nothing else has happened\n return () => {\n if (nullifier === nullifierCached)\n store.setState({ activating: false });\n };\n }\n /**\n * Used to report a `stateUpdate` which is merged with existing state. The first `stateUpdate` that results in chainId\n * and accounts being set will also set activating to false, indicating a successful connection.\n *\n * @param stateUpdate - The state update to report.\n */\n function update(stateUpdate) {\n // validate chainId statically, independent of existing state\n if (stateUpdate.chainId !== undefined) {\n validateChainId(stateUpdate.chainId);\n }\n // validate accounts statically, independent of existing state\n if (stateUpdate.accounts !== undefined) {\n for (let i = 0; i < stateUpdate.accounts.length; i++) {\n stateUpdate.accounts[i] = validateAccount(stateUpdate.accounts[i]);\n }\n }\n nullifier++;\n store.setState((existingState) => {\n var _a, _b;\n // determine the next chainId and accounts\n const chainId = (_a = stateUpdate.chainId) !== null && _a !== void 0 ? _a : existingState.chainId;\n const accounts = (_b = stateUpdate.accounts) !== null && _b !== void 0 ? _b : existingState.accounts;\n // ensure that the activating flag is cleared when appropriate\n let activating = existingState.activating;\n if (activating && chainId && accounts) {\n activating = false;\n }\n return { chainId, accounts, activating };\n });\n }\n /**\n * Resets connector state back to the default state.\n */\n function resetState() {\n nullifier++;\n store.setState(DEFAULT_STATE);\n }\n return [store, { startActivation, update, resetState }];\n}\nexports.createWeb3ReactStoreAndActions = createWeb3ReactStoreAndActions;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Connector = void 0;\nclass Connector {\n /**\n * @param actions - Methods bound to a zustand store that tracks the state of the connector.\n * @param onError - An optional handler which will report errors thrown from event listeners.\n * Actions are used by the connector to report changes in connection status.\n */\n constructor(actions, onError) {\n this.actions = actions;\n this.onError = onError;\n }\n /**\n * Reset the state of the connector without otherwise interacting with the connection.\n */\n resetState() {\n this.actions.resetState();\n }\n}\nexports.Connector = Connector;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\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};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WalletConnect = exports.URI_AVAILABLE = void 0;\nconst types_1 = require(\"@web3-react/types\");\nconst eventemitter3_1 = __importDefault(require(\"eventemitter3\"));\nconst utils_1 = require(\"./utils\");\nexports.URI_AVAILABLE = 'URI_AVAILABLE';\nfunction parseChainId(chainId) {\n return typeof chainId === 'string' ? Number.parseInt(chainId) : chainId;\n}\nclass WalletConnect extends types_1.Connector {\n constructor({ actions, options, defaultChainId, timeout = 5000, onError }) {\n super(actions, onError);\n this.events = new eventemitter3_1.default();\n this.disconnectListener = (error) => {\n var _a;\n this.actions.resetState();\n if (error)\n (_a = this.onError) === null || _a === void 0 ? void 0 : _a.call(this, error);\n };\n this.chainChangedListener = (chainId) => {\n this.actions.update({ chainId: parseChainId(chainId) });\n };\n this.accountsChangedListener = (accounts) => {\n this.actions.update({ accounts });\n };\n this.URIListener = (_, payload) => {\n this.events.emit(exports.URI_AVAILABLE, payload.params[0]);\n };\n const { rpc } = options, rest = __rest(options, [\"rpc\"]);\n this.options = rest;\n this.rpc = Object.keys(rpc).reduce((accumulator, chainId) => {\n const value = rpc[Number(chainId)];\n accumulator[Number(chainId)] = Array.isArray(value) ? value : [value];\n return accumulator;\n }, {});\n this.defaultChainId = defaultChainId !== null && defaultChainId !== void 0 ? defaultChainId : Number(Object.keys(this.rpc)[0]);\n this.timeout = timeout;\n }\n isomorphicInitialize(chainId = this.defaultChainId) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.eagerConnection)\n return;\n // because we can only use 1 url per chainId, we need to decide between multiple, where necessary\n const rpc = Promise.all(Object.keys(this.rpc).map((chainId) => __awaiter(this, void 0, void 0, function* () {\n return [\n Number(chainId),\n yield (0, utils_1.getBestUrl)(this.rpc[Number(chainId)], this.timeout),\n ];\n }))).then((results) => results.reduce((accumulator, [chainId, url]) => {\n accumulator[chainId] = url;\n return accumulator;\n }, {}));\n return (this.eagerConnection = Promise.resolve().then(() => __importStar(require('@walletconnect/ethereum-provider'))).then((m) => __awaiter(this, void 0, void 0, function* () {\n this.provider = new m.default(Object.assign(Object.assign({}, this.options), { chainId, rpc: yield rpc }));\n this.provider.on('disconnect', this.disconnectListener);\n this.provider.on('chainChanged', this.chainChangedListener);\n this.provider.on('accountsChanged', this.accountsChangedListener);\n this.provider.connector.on('display_uri', this.URIListener);\n })));\n });\n }\n /** {@inheritdoc Connector.connectEagerly} */\n connectEagerly() {\n var _a, _b;\n return __awaiter(this, void 0, void 0, function* () {\n const cancelActivation = this.actions.startActivation();\n try {\n yield this.isomorphicInitialize();\n if (!((_a = this.provider) === null || _a === void 0 ? void 0 : _a.connected))\n throw Error('No existing connection');\n // for walletconnect, we always use sequential instead of parallel fetches because otherwise\n // chainId defaults to 1 even if the connecting wallet isn't on mainnet\n const accounts = yield ((_b = this.provider) === null || _b === void 0 ? void 0 : _b.request({ method: 'eth_accounts' }));\n if (!accounts.length)\n throw new Error('No accounts returned');\n const chainId = yield this.provider\n .request({ method: 'eth_chainId' })\n .then((chainId) => parseChainId(chainId));\n this.actions.update({ chainId, accounts });\n }\n catch (error) {\n cancelActivation();\n throw error;\n }\n });\n }\n /**\n * @param desiredChainId - The desired chainId to connect to.\n */\n activate(desiredChainId) {\n var _a, _b, _c;\n return __awaiter(this, void 0, void 0, function* () {\n // this early return clause catches some common cases if activate is called after connection has been established\n if ((_a = this.provider) === null || _a === void 0 ? void 0 : _a.connected) {\n if (!desiredChainId || desiredChainId === this.provider.chainId)\n return;\n // beacuse the provider is already connected, we can ignore the suppressUserPrompts\n return this.provider.request({\n method: 'wallet_switchEthereumChain',\n params: [{ chainId: `0x${desiredChainId.toString(16)}` }],\n });\n }\n const cancelActivation = this.actions.startActivation();\n // if we're trying to connect to a specific chain that we're not already initialized for, we have to re-initialize\n if (desiredChainId && desiredChainId !== ((_b = this.provider) === null || _b === void 0 ? void 0 : _b.chainId))\n yield this.deactivate();\n try {\n yield this.isomorphicInitialize(desiredChainId);\n const accounts = yield ((_c = this.provider) === null || _c === void 0 ? void 0 : _c.request({ method: 'eth_requestAccounts' }).catch((error) => __awaiter(this, void 0, void 0, function* () {\n if ((error === null || error === void 0 ? void 0 : error.message) === 'User closed modal')\n yield this.deactivate();\n throw error;\n })));\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const chainId = yield this.provider.request({ method: 'eth_chainId' }).then((chainId) => parseChainId(chainId));\n this.actions.update({ chainId, accounts });\n }\n catch (error) {\n cancelActivation();\n throw error;\n }\n });\n }\n /** {@inheritdoc Connector.deactivate} */\n deactivate() {\n var _a, _b, _c, _d;\n return __awaiter(this, void 0, void 0, function* () {\n (_a = this.provider) === null || _a === void 0 ? void 0 : _a.off('disconnect', this.disconnectListener);\n (_b = this.provider) === null || _b === void 0 ? void 0 : _b.off('chainChanged', this.chainChangedListener);\n (_c = this.provider) === null || _c === void 0 ? void 0 : _c.off('accountsChanged', this.accountsChangedListener);\n // we don't unregister the display_uri handler because the walletconnect types/inheritances are really broken.\n // it doesn't matter, anyway, as the connector object is destroyed\n yield ((_d = this.provider) === null || _d === void 0 ? void 0 : _d.disconnect());\n this.provider = undefined;\n this.eagerConnection = undefined;\n this.actions.resetState();\n });\n }\n}\nexports.WalletConnect = WalletConnect;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getBestUrl = void 0;\n/**\n * @param urls - An array of URLs to try to connect to.\n * @param timeout - How long to wait before a call is considered failed, in ms.\n */\nfunction getBestUrl(urls, timeout) {\n return __awaiter(this, void 0, void 0, function* () {\n // if we only have 1 url, it's the best!\n if (urls.length === 1)\n return urls[0];\n const [HttpConnection, JsonRpcProvider] = yield Promise.all([\n Promise.resolve().then(() => __importStar(require('@walletconnect/jsonrpc-http-connection'))).then(({ HttpConnection }) => HttpConnection),\n Promise.resolve().then(() => __importStar(require('@walletconnect/jsonrpc-provider'))).then(({ JsonRpcProvider }) => JsonRpcProvider),\n ]);\n // the below returns the first url for which there's been a successful call, prioritized by index\n return new Promise((resolve) => {\n let resolved = false;\n const successes = {};\n urls.forEach((url, i) => {\n const http = new JsonRpcProvider(new HttpConnection(url));\n // create a promise that resolves on a successful call, and rejects on a failed call or after timeout milliseconds\n const promise = new Promise((resolve, reject) => {\n http\n .request({ method: 'eth_chainId' })\n .then(() => resolve())\n .catch(() => reject());\n // set a timeout to reject\n setTimeout(() => {\n reject();\n }, timeout);\n });\n void promise\n .then(() => true)\n .catch(() => false)\n .then((success) => {\n // if we already resolved, return\n if (resolved)\n return;\n // store the result of the call\n successes[i] = success;\n // if this is the last call and we haven't resolved yet - do so\n if (Object.keys(successes).length === urls.length) {\n const index = Object.keys(successes).findIndex((j) => successes[Number(j)]);\n // no need to set resolved to true, as this is the last promise\n return resolve(urls[index === -1 ? 0 : index]);\n }\n // otherwise, for each prospective index, check if we can resolve\n new Array(urls.length).fill(0).forEach((_, prospectiveIndex) => {\n // to resolve, we need to:\n // a) have successfully made a call\n // b) not be waiting on any other higher-index calls\n if (successes[prospectiveIndex] &&\n new Array(prospectiveIndex).fill(0).every((_, j) => successes[j] === false)) {\n resolved = true;\n resolve(urls[prospectiveIndex]);\n }\n });\n });\n });\n });\n });\n}\nexports.getBestUrl = getBestUrl;\n","'use strict';\n\nvar possibleNames = [\n\t'BigInt64Array',\n\t'BigUint64Array',\n\t'Float32Array',\n\t'Float64Array',\n\t'Int16Array',\n\t'Int32Array',\n\t'Int8Array',\n\t'Uint16Array',\n\t'Uint32Array',\n\t'Uint8Array',\n\t'Uint8ClampedArray'\n];\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\n\nmodule.exports = function availableTypedArrays() {\n\tvar out = [];\n\tfor (var i = 0; i < possibleNames.length; i++) {\n\t\tif (typeof g[possibleNames[i]] === 'function') {\n\t\t\tout[out.length] = possibleNames[i];\n\t\t}\n\t}\n\treturn out;\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/\";","////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Actions represent the type of change to a location value.\n */\nexport enum Action {\n /**\n * A POP indicates a change to an arbitrary index in the history stack, such\n * as a back or forward navigation. It does not describe the direction of the\n * navigation, only that the current index changed.\n *\n * Note: This is the default action for newly created history objects.\n */\n Pop = \"POP\",\n\n /**\n * A PUSH indicates a new entry being added to the history stack, such as when\n * a link is clicked and a new page loads. When this happens, all subsequent\n * entries in the stack are lost.\n */\n Push = \"PUSH\",\n\n /**\n * A REPLACE indicates the entry at the current index in the history stack\n * being replaced by a new one.\n */\n Replace = \"REPLACE\",\n}\n\n/**\n * The pathname, search, and hash values of a URL.\n */\nexport interface Path {\n /**\n * A URL pathname, beginning with a /.\n */\n pathname: string;\n\n /**\n * A URL search string, beginning with a ?.\n */\n search: string;\n\n /**\n * A URL fragment identifier, beginning with a #.\n */\n hash: string;\n}\n\n/**\n * An entry in a history stack. A location contains information about the\n * URL path, as well as possibly some arbitrary state and a key.\n */\nexport interface Location extends Path {\n /**\n * A value of arbitrary data associated with this location.\n */\n state: any;\n\n /**\n * A unique string associated with this location. May be used to safely store\n * and retrieve data in some other storage API, like `localStorage`.\n *\n * Note: This value is always \"default\" on the initial location.\n */\n key: string;\n}\n\n/**\n * A change to the current location.\n */\nexport interface Update {\n /**\n * The action that triggered the change.\n */\n action: Action;\n\n /**\n * The new location.\n */\n location: Location;\n}\n\n/**\n * A function that receives notifications about location changes.\n */\nexport interface Listener {\n (update: Update): void;\n}\n\n/**\n * Describes a location that is the destination of some navigation, either via\n * `history.push` or `history.replace`. May be either a URL or the pieces of a\n * URL path.\n */\nexport type To = string | Partial;\n\n/**\n * A history is an interface to the navigation stack. The history serves as the\n * source of truth for the current location, as well as provides a set of\n * methods that may be used to change it.\n *\n * It is similar to the DOM's `window.history` object, but with a smaller, more\n * focused API.\n */\nexport interface History {\n /**\n * The last action that modified the current location. This will always be\n * Action.Pop when a history instance is first created. This value is mutable.\n */\n readonly action: Action;\n\n /**\n * The current location. This value is mutable.\n */\n readonly location: Location;\n\n /**\n * Returns a valid href for the given `to` value that may be used as\n * the value of an attribute.\n *\n * @param to - The destination URL\n */\n createHref(to: To): string;\n\n /**\n * Encode a location the same way window.history would do (no-op for memory\n * history) so we ensure our PUSH/REPLACE navigations for data routers\n * behave the same as POP\n *\n * @param to Unencoded path\n */\n encodeLocation(to: To): Path;\n\n /**\n * Pushes a new location onto the history stack, increasing its length by one.\n * If there were any entries in the stack after the current one, they are\n * lost.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n push(to: To, state?: any): void;\n\n /**\n * Replaces the current location in the history stack with a new one. The\n * location that was replaced will no longer be available.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n replace(to: To, state?: any): void;\n\n /**\n * Navigates `n` entries backward/forward in the history stack relative to the\n * current index. For example, a \"back\" navigation would use go(-1).\n *\n * @param delta - The delta in the stack index\n */\n go(delta: number): void;\n\n /**\n * Sets up a listener that will be called whenever the current location\n * changes.\n *\n * @param listener - A function that will be called when the location changes\n * @returns unlisten - A function that may be used to stop listening\n */\n listen(listener: Listener): () => void;\n}\n\ntype HistoryState = {\n usr: any;\n key?: string;\n};\n\nconst PopStateEventType = \"popstate\";\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Memory History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A user-supplied object that describes a location. Used when providing\n * entries to `createMemoryHistory` via its `initialEntries` option.\n */\nexport type InitialEntry = string | Partial;\n\nexport type MemoryHistoryOptions = {\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n v5Compat?: boolean;\n};\n\n/**\n * A memory history stores locations in memory. This is useful in stateful\n * environments where there is no web browser, such as node tests or React\n * Native.\n */\nexport interface MemoryHistory extends History {\n /**\n * The current index in the history stack.\n */\n readonly index: number;\n}\n\n/**\n * Memory history stores the current location in memory. It is designed for use\n * in stateful non-browser environments like tests and React Native.\n */\nexport function createMemoryHistory(\n options: MemoryHistoryOptions = {}\n): MemoryHistory {\n let { initialEntries = [\"/\"], initialIndex, v5Compat = false } = options;\n let entries: Location[]; // Declare so we can access from createMemoryLocation\n entries = initialEntries.map((entry, index) =>\n createMemoryLocation(\n entry,\n typeof entry === \"string\" ? null : entry.state,\n index === 0 ? \"default\" : undefined\n )\n );\n let index = clampIndex(\n initialIndex == null ? entries.length - 1 : initialIndex\n );\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n function clampIndex(n: number): number {\n return Math.min(Math.max(n, 0), entries.length - 1);\n }\n function getCurrentLocation(): Location {\n return entries[index];\n }\n function createMemoryLocation(\n to: To,\n state: any = null,\n key?: string\n ): Location {\n let location = createLocation(\n entries ? getCurrentLocation().pathname : \"/\",\n to,\n state,\n key\n );\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in memory history: ${JSON.stringify(\n to\n )}`\n );\n return location;\n }\n\n let history: MemoryHistory = {\n get index() {\n return index;\n },\n get action() {\n return action;\n },\n get location() {\n return getCurrentLocation();\n },\n createHref(to) {\n return typeof to === \"string\" ? to : createPath(to);\n },\n encodeLocation(to: To) {\n let path = typeof to === \"string\" ? parsePath(to) : to;\n return {\n pathname: path.pathname || \"\",\n search: path.search || \"\",\n hash: path.hash || \"\",\n };\n },\n push(to, state) {\n action = Action.Push;\n let nextLocation = createMemoryLocation(to, state);\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n if (v5Compat && listener) {\n listener({ action, location: nextLocation });\n }\n },\n replace(to, state) {\n action = Action.Replace;\n let nextLocation = createMemoryLocation(to, state);\n entries[index] = nextLocation;\n if (v5Compat && listener) {\n listener({ action, location: nextLocation });\n }\n },\n go(delta) {\n action = Action.Pop;\n index = clampIndex(index + delta);\n if (listener) {\n listener({ action, location: getCurrentLocation() });\n }\n },\n listen(fn: Listener) {\n listener = fn;\n return () => {\n listener = null;\n };\n },\n };\n\n return history;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Browser History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A browser history stores the current location in regular URLs in a web\n * browser environment. This is the standard for most web apps and provides the\n * cleanest URLs the browser's address bar.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#browserhistory\n */\nexport interface BrowserHistory extends UrlHistory {}\n\nexport type BrowserHistoryOptions = UrlHistoryOptions;\n\n/**\n * Browser history stores the location in regular URLs. This is the standard for\n * most web apps, but it requires some configuration on the server to ensure you\n * serve the same app at multiple URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\n */\nexport function createBrowserHistory(\n options: BrowserHistoryOptions = {}\n): BrowserHistory {\n function createBrowserLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let { pathname, search, hash } = window.location;\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createBrowserHref(window: Window, to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n return getUrlBasedHistory(\n createBrowserLocation,\n createBrowserHref,\n null,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Hash History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A hash history stores the current location in the fragment identifier portion\n * of the URL in a web browser environment.\n *\n * This is ideal for apps that do not control the server for some reason\n * (because the fragment identifier is never sent to the server), including some\n * shared hosting environments that do not provide fine-grained controls over\n * which pages are served at which URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#hashhistory\n */\nexport interface HashHistory extends UrlHistory {}\n\nexport type HashHistoryOptions = UrlHistoryOptions;\n\n/**\n * Hash history stores the location in window.location.hash. This makes it ideal\n * for situations where you don't want to send the location to the server for\n * some reason, either because you do cannot configure it or the URL space is\n * reserved for something else.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\n */\nexport function createHashHistory(\n options: HashHistoryOptions = {}\n): HashHistory {\n function createHashLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n } = parsePath(window.location.hash.substr(1));\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createHashHref(window: Window, to: To) {\n let base = window.document.querySelector(\"base\");\n let href = \"\";\n\n if (base && base.getAttribute(\"href\")) {\n let url = window.location.href;\n let hashIndex = url.indexOf(\"#\");\n href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n }\n\n return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n }\n\n function validateHashLocation(location: Location, to: To) {\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in hash history.push(${JSON.stringify(\n to\n )})`\n );\n }\n\n return getUrlBasedHistory(\n createHashLocation,\n createHashHref,\n validateHashLocation,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region UTILS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * @private\n */\nexport function invariant(value: boolean, message?: string): asserts value;\nexport function invariant(\n value: T | null | undefined,\n message?: string\n): asserts value is T;\nexport function invariant(value: any, message?: string) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\n\nfunction warning(cond: any, message: string) {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging history!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nfunction createKey() {\n return Math.random().toString(36).substr(2, 8);\n}\n\n/**\n * For browser-based histories, we combine the state and key into an object\n */\nfunction getHistoryState(location: Location): HistoryState {\n return {\n usr: location.state,\n key: location.key,\n };\n}\n\n/**\n * Creates a Location object with a unique key from the given Path\n */\nexport function createLocation(\n current: string | Location,\n to: To,\n state: any = null,\n key?: string\n): Readonly {\n let location: Readonly = {\n pathname: typeof current === \"string\" ? current : current.pathname,\n search: \"\",\n hash: \"\",\n ...(typeof to === \"string\" ? parsePath(to) : to),\n state,\n // TODO: This could be cleaned up. push/replace should probably just take\n // full Locations now and avoid the need to run through this flow at all\n // But that's a pretty big refactor to the current test suite so going to\n // keep as is for the time being and just let any incoming keys take precedence\n key: (to && (to as Location).key) || key || createKey(),\n };\n return location;\n}\n\n/**\n * Creates a string URL path from the given pathname, search, and hash components.\n */\nexport function createPath({\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n}: Partial) {\n if (search && search !== \"?\")\n pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n if (hash && hash !== \"#\")\n pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n return pathname;\n}\n\n/**\n * Parses a string URL path into its separate pathname, search, and hash components.\n */\nexport function parsePath(path: string): Partial {\n let parsedPath: Partial = {};\n\n if (path) {\n let hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n parsedPath.hash = path.substr(hashIndex);\n path = path.substr(0, hashIndex);\n }\n\n let searchIndex = path.indexOf(\"?\");\n if (searchIndex >= 0) {\n parsedPath.search = path.substr(searchIndex);\n path = path.substr(0, searchIndex);\n }\n\n if (path) {\n parsedPath.pathname = path;\n }\n }\n\n return parsedPath;\n}\n\nexport function createClientSideURL(location: Location | string): URL {\n // window.location.origin is \"null\" (the literal string value) in Firefox\n // under certain conditions, notably when serving from a local HTML file\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n let base =\n typeof window !== \"undefined\" &&\n typeof window.location !== \"undefined\" &&\n window.location.origin !== \"null\"\n ? window.location.origin\n : window.location.href;\n let href = typeof location === \"string\" ? location : createPath(location);\n invariant(\n base,\n `No window.location.(origin|href) available to create URL for href: ${href}`\n );\n return new URL(href, base);\n}\n\nexport interface UrlHistory extends History {}\n\nexport type UrlHistoryOptions = {\n window?: Window;\n v5Compat?: boolean;\n};\n\nfunction getUrlBasedHistory(\n getLocation: (window: Window, globalHistory: Window[\"history\"]) => Location,\n createHref: (window: Window, to: To) => string,\n validateLocation: ((location: Location, to: To) => void) | null,\n options: UrlHistoryOptions = {}\n): UrlHistory {\n let { window = document.defaultView!, v5Compat = false } = options;\n let globalHistory = window.history;\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n function handlePop() {\n action = Action.Pop;\n if (listener) {\n listener({ action, location: history.location });\n }\n }\n\n function push(to: To, state?: any) {\n action = Action.Push;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n let historyState = getHistoryState(location);\n let url = history.createHref(location);\n\n // try...catch because iOS limits us to 100 pushState calls :/\n try {\n globalHistory.pushState(historyState, \"\", url);\n } catch (error) {\n // They are going to lose state here, but there is no real\n // way to warn them about it since the page will refresh...\n window.location.assign(url);\n }\n\n if (v5Compat && listener) {\n listener({ action, location: history.location });\n }\n }\n\n function replace(to: To, state?: any) {\n action = Action.Replace;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n let historyState = getHistoryState(location);\n let url = history.createHref(location);\n globalHistory.replaceState(historyState, \"\", url);\n\n if (v5Compat && listener) {\n listener({ action, location: history.location });\n }\n }\n\n let history: History = {\n get action() {\n return action;\n },\n get location() {\n return getLocation(window, globalHistory);\n },\n listen(fn: Listener) {\n if (listener) {\n throw new Error(\"A history only accepts one active listener\");\n }\n window.addEventListener(PopStateEventType, handlePop);\n listener = fn;\n\n return () => {\n window.removeEventListener(PopStateEventType, handlePop);\n listener = null;\n };\n },\n createHref(to) {\n return createHref(window, to);\n },\n encodeLocation(to) {\n // Encode a Location the same way window.location would\n let url = createClientSideURL(\n typeof to === \"string\" ? to : createPath(to)\n );\n return {\n pathname: url.pathname,\n search: url.search,\n hash: url.hash,\n };\n },\n push,\n replace,\n go(n) {\n return globalHistory.go(n);\n },\n };\n\n return history;\n}\n\n//#endregion\n","import type { Location, Path, To } from \"./history\";\nimport { invariant, parsePath } from \"./history\";\n\n/**\n * Map of routeId -> data returned from a loader/action/error\n */\nexport interface RouteData {\n [routeId: string]: any;\n}\n\nexport enum ResultType {\n data = \"data\",\n deferred = \"deferred\",\n redirect = \"redirect\",\n error = \"error\",\n}\n\n/**\n * Successful result from a loader or action\n */\nexport interface SuccessResult {\n type: ResultType.data;\n data: any;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Successful defer() result from a loader or action\n */\nexport interface DeferredResult {\n type: ResultType.deferred;\n deferredData: DeferredData;\n}\n\n/**\n * Redirect result from a loader or action\n */\nexport interface RedirectResult {\n type: ResultType.redirect;\n status: number;\n location: string;\n revalidate: boolean;\n}\n\n/**\n * Unsuccessful result from a loader or action\n */\nexport interface ErrorResult {\n type: ResultType.error;\n error: any;\n headers?: Headers;\n}\n\n/**\n * Result from a loader or action - potentially successful or unsuccessful\n */\nexport type DataResult =\n | SuccessResult\n | DeferredResult\n | RedirectResult\n | ErrorResult;\n\nexport type MutationFormMethod = \"post\" | \"put\" | \"patch\" | \"delete\";\nexport type FormMethod = \"get\" | MutationFormMethod;\n\nexport type FormEncType =\n | \"application/x-www-form-urlencoded\"\n | \"multipart/form-data\";\n\n/**\n * @private\n * Internal interface to pass around for action submissions, not intended for\n * external consumption\n */\nexport interface Submission {\n formMethod: FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n}\n\n/**\n * @private\n * Arguments passed to route loader/action functions. Same for now but we keep\n * this as a private implementation detail in case they diverge in the future.\n */\ninterface DataFunctionArgs {\n request: Request;\n params: Params;\n context?: any;\n}\n\n/**\n * Arguments passed to loader functions\n */\nexport interface LoaderFunctionArgs extends DataFunctionArgs {}\n\n/**\n * Arguments passed to action functions\n */\nexport interface ActionFunctionArgs extends DataFunctionArgs {}\n\n/**\n * Route loader function signature\n */\nexport interface LoaderFunction {\n (args: LoaderFunctionArgs): Promise | Response | Promise | any;\n}\n\n/**\n * Route action function signature\n */\nexport interface ActionFunction {\n (args: ActionFunctionArgs): Promise | Response | Promise | any;\n}\n\n/**\n * Route shouldRevalidate function signature. This runs after any submission\n * (navigation or fetcher), so we flatten the navigation/fetcher submission\n * onto the arguments. It shouldn't matter whether it came from a navigation\n * or a fetcher, what really matters is the URLs and the formData since loaders\n * have to re-run based on the data models that were potentially mutated.\n */\nexport interface ShouldRevalidateFunction {\n (args: {\n currentUrl: URL;\n currentParams: AgnosticDataRouteMatch[\"params\"];\n nextUrl: URL;\n nextParams: AgnosticDataRouteMatch[\"params\"];\n formMethod?: Submission[\"formMethod\"];\n formAction?: Submission[\"formAction\"];\n formEncType?: Submission[\"formEncType\"];\n formData?: Submission[\"formData\"];\n actionResult?: DataResult;\n defaultShouldRevalidate: boolean;\n }): boolean;\n}\n\n/**\n * Base RouteObject with common props shared by all types of routes\n */\ntype AgnosticBaseRouteObject = {\n caseSensitive?: boolean;\n path?: string;\n id?: string;\n loader?: LoaderFunction;\n action?: ActionFunction;\n hasErrorBoundary?: boolean;\n shouldRevalidate?: ShouldRevalidateFunction;\n handle?: any;\n};\n\n/**\n * Index routes must not have children\n */\nexport type AgnosticIndexRouteObject = AgnosticBaseRouteObject & {\n children?: undefined;\n index: true;\n};\n\n/**\n * Non-index routes may have children, but cannot have index\n */\nexport type AgnosticNonIndexRouteObject = AgnosticBaseRouteObject & {\n children?: AgnosticRouteObject[];\n index?: false;\n};\n\n/**\n * A route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport type AgnosticRouteObject =\n | AgnosticIndexRouteObject\n | AgnosticNonIndexRouteObject;\n\nexport type AgnosticDataIndexRouteObject = AgnosticIndexRouteObject & {\n id: string;\n};\n\nexport type AgnosticDataNonIndexRouteObject = AgnosticNonIndexRouteObject & {\n children?: AgnosticDataRouteObject[];\n id: string;\n};\n\n/**\n * A data route object, which is just a RouteObject with a required unique ID\n */\nexport type AgnosticDataRouteObject =\n | AgnosticDataIndexRouteObject\n | AgnosticDataNonIndexRouteObject;\n\n// Recursive helper for finding path parameters in the absence of wildcards\ntype _PathParam =\n // split path into individual path segments\n Path extends `${infer L}/${infer R}`\n ? _PathParam | _PathParam\n : // find params after `:`\n Path extends `:${infer Param}`\n ? Param\n : // otherwise, there aren't any params present\n never;\n\n/**\n * Examples:\n * \"/a/b/*\" -> \"*\"\n * \":a\" -> \"a\"\n * \"/a/:b\" -> \"b\"\n * \"/a/blahblahblah:b\" -> \"b\"\n * \"/:a/:b\" -> \"a\" | \"b\"\n * \"/:a/b/:c/*\" -> \"a\" | \"c\" | \"*\"\n */\ntype PathParam =\n // check if path is just a wildcard\n Path extends \"*\"\n ? \"*\"\n : // look for wildcard at the end of the path\n Path extends `${infer Rest}/*`\n ? \"*\" | _PathParam\n : // look for params in the absence of wildcards\n _PathParam;\n\n// Attempt to parse the given string segment. If it fails, then just return the\n// plain string type as a default fallback. Otherwise return the union of the\n// parsed string literals that were referenced as dynamic segments in the route.\nexport type ParamParseKey =\n // if could not find path params, fallback to `string`\n [PathParam] extends [never] ? string : PathParam;\n\n/**\n * The parameters that were parsed from the URL path.\n */\nexport type Params = {\n readonly [key in Key]: string | undefined;\n};\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface AgnosticRouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The route object that was used to match.\n */\n route: RouteObjectType;\n}\n\nexport interface AgnosticDataRouteMatch\n extends AgnosticRouteMatch {}\n\nfunction isIndexRoute(\n route: AgnosticRouteObject\n): route is AgnosticIndexRouteObject {\n return route.index === true;\n}\n\n// Walk the route tree generating unique IDs where necessary so we are working\n// solely with AgnosticDataRouteObject's within the Router\nexport function convertRoutesToDataRoutes(\n routes: AgnosticRouteObject[],\n parentPath: number[] = [],\n allIds: Set = new Set()\n): AgnosticDataRouteObject[] {\n return routes.map((route, index) => {\n let treePath = [...parentPath, index];\n let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n invariant(\n route.index !== true || !route.children,\n `Cannot specify children on an index route`\n );\n invariant(\n !allIds.has(id),\n `Found a route id collision on id \"${id}\". Route ` +\n \"id's must be globally unique within Data Router usages\"\n );\n allIds.add(id);\n\n if (isIndexRoute(route)) {\n let indexRoute: AgnosticDataIndexRouteObject = { ...route, id };\n return indexRoute;\n } else {\n let pathOrLayoutRoute: AgnosticDataNonIndexRouteObject = {\n ...route,\n id,\n children: route.children\n ? convertRoutesToDataRoutes(route.children, treePath, allIds)\n : undefined,\n };\n return pathOrLayoutRoute;\n }\n });\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/utils/match-routes\n */\nexport function matchRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial | string,\n basename = \"/\"\n): AgnosticRouteMatch[] | null {\n let location =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n let pathname = stripBasename(location.pathname || \"/\", basename);\n\n if (pathname == null) {\n return null;\n }\n\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n matches = matchRouteBranch(\n branches[i],\n // Incoming pathnames are generally encoded from either window.location\n // or from router.navigate, but we want to match against the unencoded\n // paths in the route definitions. Memory router locations won't be\n // encoded here but there also shouldn't be anything to decode so this\n // should be a safe operation. This avoids needing matchRoutes to be\n // history-aware.\n safelyDecodeURI(pathname)\n );\n }\n\n return matches;\n}\n\ninterface RouteMeta<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n relativePath: string;\n caseSensitive: boolean;\n childrenIndex: number;\n route: RouteObjectType;\n}\n\ninterface RouteBranch<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n path: string;\n score: number;\n routesMeta: RouteMeta[];\n}\n\nfunction flattenRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n branches: RouteBranch[] = [],\n parentsMeta: RouteMeta[] = [],\n parentPath = \"\"\n): RouteBranch[] {\n let flattenRoute = (\n route: RouteObjectType,\n index: number,\n relativePath?: string\n ) => {\n let meta: RouteMeta = {\n relativePath:\n relativePath === undefined ? route.path || \"\" : relativePath,\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route,\n };\n\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(\n meta.relativePath.startsWith(parentPath),\n `Absolute route path \"${meta.relativePath}\" nested under path ` +\n `\"${parentPath}\" is not valid. An absolute child route path ` +\n `must start with the combined path of all its parent routes.`\n );\n\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n\n // Add the children before adding this route to the array so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n // Our types know better, but runtime JS may not!\n // @ts-expect-error\n route.index !== true,\n `Index routes must not have child routes. Please remove ` +\n `all child routes from route path \"${path}\".`\n );\n\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n\n branches.push({\n path,\n score: computeScore(path, route.index),\n routesMeta,\n });\n };\n routes.forEach((route, index) => {\n // coarse-grain check for optional params\n if (route.path === \"\" || !route.path?.includes(\"?\")) {\n flattenRoute(route, index);\n } else {\n for (let exploded of explodeOptionalSegments(route.path)) {\n flattenRoute(route, index, exploded);\n }\n }\n });\n\n return branches;\n}\n\n/**\n * Computes all combinations of optional path segments for a given path,\n * excluding combinations that are ambiguous and of lower priority.\n *\n * For example, `/one/:two?/three/:four?/:five?` explodes to:\n * - `/one/three`\n * - `/one/:two/three`\n * - `/one/three/:four`\n * - `/one/three/:five`\n * - `/one/:two/three/:four`\n * - `/one/:two/three/:five`\n * - `/one/three/:four/:five`\n * - `/one/:two/three/:four/:five`\n */\nfunction explodeOptionalSegments(path: string): string[] {\n let segments = path.split(\"/\");\n if (segments.length === 0) return [];\n\n let [first, ...rest] = segments;\n\n // Optional path segments are denoted by a trailing `?`\n let isOptional = first.endsWith(\"?\");\n // Compute the corresponding required segment: `foo?` -> `foo`\n let required = first.replace(/\\?$/, \"\");\n\n if (rest.length === 0) {\n // Intepret empty string as omitting an optional segment\n // `[\"one\", \"\", \"three\"]` corresponds to omitting `:two` from `/one/:two?/three` -> `/one/three`\n return isOptional ? [required, \"\"] : [required];\n }\n\n let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n\n let result: string[] = [];\n\n // All child paths with the prefix. Do this for all children before the\n // optional version for all children so we get consistent ordering where the\n // parent optional aspect is preferred as required. Otherwise, we can get\n // child sections interspersed where deeper optional segments are higher than\n // parent optional segments, where for example, /:two would explodes _earlier_\n // then /:one. By always including the parent as required _for all children_\n // first, we avoid this issue\n result.push(\n ...restExploded.map((subpath) =>\n subpath === \"\" ? required : [required, subpath].join(\"/\")\n )\n );\n\n // Then if this is an optional value, add all child versions without\n if (isOptional) {\n result.push(...restExploded);\n }\n\n // for absolute paths, ensure `/` instead of empty segment\n return result.map((exploded) =>\n path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded\n );\n}\n\nfunction rankRouteBranches(branches: RouteBranch[]): void {\n branches.sort((a, b) =>\n a.score !== b.score\n ? b.score - a.score // Higher score first\n : compareIndexes(\n a.routesMeta.map((meta) => meta.childrenIndex),\n b.routesMeta.map((meta) => meta.childrenIndex)\n )\n );\n}\n\nconst paramRe = /^:\\w+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s: string) => s === \"*\";\n\nfunction computeScore(path: string, index: boolean | undefined): number {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n\n if (index) {\n initialScore += indexRouteValue;\n }\n\n return segments\n .filter((s) => !isSplat(s))\n .reduce(\n (score, segment) =>\n score +\n (paramRe.test(segment)\n ? dynamicSegmentValue\n : segment === \"\"\n ? emptySegmentValue\n : staticSegmentValue),\n initialScore\n );\n}\n\nfunction compareIndexes(a: number[], b: number[]): number {\n let siblings =\n a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n\n return siblings\n ? // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1]\n : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\n\nfunction matchRouteBranch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n branch: RouteBranch,\n pathname: string\n): AgnosticRouteMatch[] | null {\n let { routesMeta } = branch;\n\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches: AgnosticRouteMatch[] = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname =\n matchedPathname === \"/\"\n ? pathname\n : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath(\n { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n remainingPathname\n );\n\n if (!match) return null;\n\n Object.assign(matchedParams, match.params);\n\n let route = meta.route;\n\n matches.push({\n // TODO: Can this as be avoided?\n params: matchedParams as Params,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(\n joinPaths([matchedPathname, match.pathnameBase])\n ),\n route,\n });\n\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n\n return matches;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/utils/generate-path\n */\nexport function generatePath(\n originalPath: Path,\n params: {\n [key in PathParam]: string;\n } = {} as any\n): string {\n let path = originalPath;\n if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n warning(\n false,\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n path = path.replace(/\\*$/, \"/*\") as Path;\n }\n\n return path\n .replace(/^:(\\w+)/g, (_, key: PathParam) => {\n invariant(params[key] != null, `Missing \":${key}\" param`);\n return params[key]!;\n })\n .replace(/\\/:(\\w+)/g, (_, key: PathParam) => {\n invariant(params[key] != null, `Missing \":${key}\" param`);\n return `/${params[key]!}`;\n })\n .replace(/(\\/?)\\*/, (_, prefix, __, str) => {\n const star = \"*\" as PathParam;\n\n if (params[star] == null) {\n // If no splat was provided, trim the trailing slash _unless_ it's\n // the entire path\n return str === \"/*\" ? \"/\" : \"\";\n }\n\n // Apply the splat\n return `${prefix}${params[star]}`;\n });\n}\n\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\nexport interface PathPattern {\n /**\n * A string to match against a URL pathname. May contain `:id`-style segments\n * to indicate placeholders for dynamic parameters. May also end with `/*` to\n * indicate matching the rest of the URL pathname.\n */\n path: Path;\n /**\n * Should be `true` if the static portions of the `path` should be matched in\n * the same case.\n */\n caseSensitive?: boolean;\n /**\n * Should be `true` if this pattern should match the entire URL pathname.\n */\n end?: boolean;\n}\n\n/**\n * A PathMatch contains info about how a PathPattern matched on a URL pathname.\n */\nexport interface PathMatch {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The pattern that was used to match.\n */\n pattern: PathPattern;\n}\n\ntype Mutable = {\n -readonly [P in keyof T]: T[P];\n};\n\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/utils/match-path\n */\nexport function matchPath<\n ParamKey extends ParamParseKey,\n Path extends string\n>(\n pattern: PathPattern | Path,\n pathname: string\n): PathMatch | null {\n if (typeof pattern === \"string\") {\n pattern = { path: pattern, caseSensitive: false, end: true };\n }\n\n let [matcher, paramNames] = compilePath(\n pattern.path,\n pattern.caseSensitive,\n pattern.end\n );\n\n let match = pathname.match(matcher);\n if (!match) return null;\n\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params: Params = paramNames.reduce>(\n (memo, paramName, index) => {\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname\n .slice(0, matchedPathname.length - splatValue.length)\n .replace(/(.)\\/+$/, \"$1\");\n }\n\n memo[paramName] = safelyDecodeURIComponent(\n captureGroups[index] || \"\",\n paramName\n );\n return memo;\n },\n {}\n );\n\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern,\n };\n}\n\nfunction compilePath(\n path: string,\n caseSensitive = false,\n end = true\n): [RegExp, string[]] {\n warning(\n path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n\n let paramNames: string[] = [];\n let regexpSource =\n \"^\" +\n path\n .replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^$?{}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(/\\/:(\\w+)/g, (_: string, paramName: string) => {\n paramNames.push(paramName);\n return \"/([^\\\\/]+)\";\n });\n\n if (path.endsWith(\"*\")) {\n paramNames.push(\"*\");\n regexpSource +=\n path === \"*\" || path === \"/*\"\n ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else if (end) {\n // When matching to the end, ignore trailing slashes\n regexpSource += \"\\\\/*$\";\n } else if (path !== \"\" && path !== \"/\") {\n // If our path is non-empty and contains anything beyond an initial slash,\n // then we have _some_ form of path in our regex so we should expect to\n // match only if we find the end of this path segment. Look for an optional\n // non-captured trailing slash (to match a portion of the URL) or the end\n // of the path (if we've matched to the end). We used to do this with a\n // word boundary but that gives false positives on routes like\n // /user-preferences since `-` counts as a word boundary.\n regexpSource += \"(?:(?=\\\\/|$))\";\n } else {\n // Nothing to match for \"\" or \"/\"\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n return [matcher, paramNames];\n}\n\nfunction safelyDecodeURI(value: string) {\n try {\n return decodeURI(value);\n } catch (error) {\n warning(\n false,\n `The URL path \"${value}\" could not be decoded because it is is a ` +\n `malformed URL segment. This is probably due to a bad percent ` +\n `encoding (${error}).`\n );\n\n return value;\n }\n}\n\nfunction safelyDecodeURIComponent(value: string, paramName: string) {\n try {\n return decodeURIComponent(value);\n } catch (error) {\n warning(\n false,\n `The value for the URL param \"${paramName}\" will not be decoded because` +\n ` the string \"${value}\" is a malformed URL segment. This is probably` +\n ` due to a bad percent encoding (${error}).`\n );\n\n return value;\n }\n}\n\n/**\n * @private\n */\nexport function stripBasename(\n pathname: string,\n basename: string\n): string | null {\n if (basename === \"/\") return pathname;\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n\n // We want to leave trailing slash behavior in the user's control, so if they\n // specify a basename with a trailing slash, we should support it\n let startIndex = basename.endsWith(\"/\")\n ? basename.length - 1\n : basename.length;\n let nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(startIndex) || \"/\";\n}\n\n/**\n * @private\n */\nexport function warning(cond: any, message: string): void {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging React Router!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/utils/resolve-path\n */\nexport function resolvePath(to: To, fromPathname = \"/\"): Path {\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\",\n } = typeof to === \"string\" ? parsePath(to) : to;\n\n let pathname = toPathname\n ? toPathname.startsWith(\"/\")\n ? toPathname\n : resolvePathname(toPathname, fromPathname)\n : fromPathname;\n\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash),\n };\n}\n\nfunction resolvePathname(relativePath: string, fromPathname: string): string {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n\n relativeSegments.forEach((segment) => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nfunction getInvalidPathError(\n char: string,\n field: string,\n dest: string,\n path: Partial\n) {\n return (\n `Cannot include a '${char}' character in a manually specified ` +\n `\\`to.${field}\\` field [${JSON.stringify(\n path\n )}]. Please separate it out to the ` +\n `\\`to.${dest}\\` field. Alternatively you may provide the full path as ` +\n `a string in and the router will parse it for you.`\n );\n}\n\n/**\n * @private\n *\n * When processing relative navigation we want to ignore ancestor routes that\n * do not contribute to the path, such that index/pathless layout routes don't\n * interfere.\n *\n * For example, when moving a route element into an index route and/or a\n * pathless layout route, relative link behavior contained within should stay\n * the same. Both of the following examples should link back to the root:\n *\n * \n * \n * \n *\n * \n * \n * }> // <-- Does not contribute\n * // <-- Does not contribute\n * \n * \n */\nexport function getPathContributingMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[]) {\n return matches.filter(\n (match, index) =>\n index === 0 || (match.route.path && match.route.path.length > 0)\n );\n}\n\n/**\n * @private\n */\nexport function resolveTo(\n toArg: To,\n routePathnames: string[],\n locationPathname: string,\n isPathRelative = false\n): Path {\n let to: Partial;\n if (typeof toArg === \"string\") {\n to = parsePath(toArg);\n } else {\n to = { ...toArg };\n\n invariant(\n !to.pathname || !to.pathname.includes(\"?\"),\n getInvalidPathError(\"?\", \"pathname\", \"search\", to)\n );\n invariant(\n !to.pathname || !to.pathname.includes(\"#\"),\n getInvalidPathError(\"#\", \"pathname\", \"hash\", to)\n );\n invariant(\n !to.search || !to.search.includes(\"#\"),\n getInvalidPathError(\"#\", \"search\", \"hash\", to)\n );\n }\n\n let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n let toPathname = isEmptyPath ? \"/\" : to.pathname;\n\n let from: string;\n\n // Routing is relative to the current pathname if explicitly requested.\n //\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n if (isPathRelative || toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n if (toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n\n // Each leading .. segment means \"go up one route\" instead of \"go up one\n // URL segment\". This is a key difference from how works and a\n // major reason we call this a \"to\" value instead of a \"href\".\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n }\n\n // If there are more \"..\" segments than parent routes, resolve relative to\n // the root / URL.\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n\n let path = resolvePath(to, from);\n\n // Ensure the pathname has a trailing slash if the original \"to\" had one\n let hasExplicitTrailingSlash =\n toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n // Or if this was a link to the current path which has a trailing slash\n let hasCurrentTrailingSlash =\n (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n if (\n !path.pathname.endsWith(\"/\") &&\n (hasExplicitTrailingSlash || hasCurrentTrailingSlash)\n ) {\n path.pathname += \"/\";\n }\n\n return path;\n}\n\n/**\n * @private\n */\nexport function getToPathname(to: To): string | undefined {\n // Empty strings should be treated the same as / paths\n return to === \"\" || (to as Path).pathname === \"\"\n ? \"/\"\n : typeof to === \"string\"\n ? parsePath(to).pathname\n : to.pathname;\n}\n\n/**\n * @private\n */\nexport const joinPaths = (paths: string[]): string =>\n paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\n/**\n * @private\n */\nexport const normalizePathname = (pathname: string): string =>\n pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\n/**\n * @private\n */\nexport const normalizeSearch = (search: string): string =>\n !search || search === \"?\"\n ? \"\"\n : search.startsWith(\"?\")\n ? search\n : \"?\" + search;\n\n/**\n * @private\n */\nexport const normalizeHash = (hash: string): string =>\n !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n\nexport type JsonFunction = (\n data: Data,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n */\nexport const json: JsonFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n let headers = new Headers(responseInit.headers);\n if (!headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n }\n\n return new Response(JSON.stringify(data), {\n ...responseInit,\n headers,\n });\n};\n\nexport interface TrackedPromise extends Promise {\n _tracked?: boolean;\n _data?: any;\n _error?: any;\n}\n\nexport class AbortedDeferredError extends Error {}\n\nexport class DeferredData {\n private pendingKeys: Set = new Set();\n private controller: AbortController;\n private abortPromise: Promise;\n private unlistenAbortSignal: () => void;\n private subscriber?: (aborted: boolean) => void = undefined;\n data: Record;\n\n constructor(data: Record) {\n invariant(\n data && typeof data === \"object\" && !Array.isArray(data),\n \"defer() only accepts plain objects\"\n );\n\n // Set up an AbortController + Promise we can race against to exit early\n // cancellation\n let reject: (e: AbortedDeferredError) => void;\n this.abortPromise = new Promise((_, r) => (reject = r));\n this.controller = new AbortController();\n let onAbort = () =>\n reject(new AbortedDeferredError(\"Deferred data aborted\"));\n this.unlistenAbortSignal = () =>\n this.controller.signal.removeEventListener(\"abort\", onAbort);\n this.controller.signal.addEventListener(\"abort\", onAbort);\n\n this.data = Object.entries(data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: this.trackPromise(key, value),\n }),\n {}\n );\n }\n\n private trackPromise(\n key: string | number,\n value: Promise | unknown\n ): TrackedPromise | unknown {\n if (!(value instanceof Promise)) {\n return value;\n }\n\n this.pendingKeys.add(key);\n\n // We store a little wrapper promise that will be extended with\n // _data/_error props upon resolve/reject\n let promise: TrackedPromise = Promise.race([value, this.abortPromise]).then(\n (data) => this.onSettle(promise, key, null, data as unknown),\n (error) => this.onSettle(promise, key, error as unknown)\n );\n\n // Register rejection listeners to avoid uncaught promise rejections on\n // errors or aborted deferred values\n promise.catch(() => {});\n\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n return promise;\n }\n\n private onSettle(\n promise: TrackedPromise,\n key: string | number,\n error: unknown,\n data?: unknown\n ): unknown {\n if (\n this.controller.signal.aborted &&\n error instanceof AbortedDeferredError\n ) {\n this.unlistenAbortSignal();\n Object.defineProperty(promise, \"_error\", { get: () => error });\n return Promise.reject(error);\n }\n\n this.pendingKeys.delete(key);\n\n if (this.done) {\n // Nothing left to abort!\n this.unlistenAbortSignal();\n }\n\n const subscriber = this.subscriber;\n if (error) {\n Object.defineProperty(promise, \"_error\", { get: () => error });\n subscriber && subscriber(false);\n return Promise.reject(error);\n }\n\n Object.defineProperty(promise, \"_data\", { get: () => data });\n subscriber && subscriber(false);\n return data;\n }\n\n subscribe(fn: (aborted: boolean) => void) {\n this.subscriber = fn;\n }\n\n cancel() {\n this.controller.abort();\n this.pendingKeys.forEach((v, k) => this.pendingKeys.delete(k));\n let subscriber = this.subscriber;\n subscriber && subscriber(true);\n }\n\n async resolveData(signal: AbortSignal) {\n let aborted = false;\n if (!this.done) {\n let onAbort = () => this.cancel();\n signal.addEventListener(\"abort\", onAbort);\n aborted = await new Promise((resolve) => {\n this.subscribe((aborted) => {\n signal.removeEventListener(\"abort\", onAbort);\n if (aborted || this.done) {\n resolve(aborted);\n }\n });\n });\n }\n return aborted;\n }\n\n get done() {\n return this.pendingKeys.size === 0;\n }\n\n get unwrappedData() {\n invariant(\n this.data !== null && this.done,\n \"Can only unwrap data on initialized and settled deferreds\"\n );\n\n return Object.entries(this.data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: unwrapTrackedPromise(value),\n }),\n {}\n );\n }\n}\n\nfunction isTrackedPromise(value: any): value is TrackedPromise {\n return (\n value instanceof Promise && (value as TrackedPromise)._tracked === true\n );\n}\n\nfunction unwrapTrackedPromise(value: any) {\n if (!isTrackedPromise(value)) {\n return value;\n }\n\n if (value._error) {\n throw value._error;\n }\n return value._data;\n}\n\nexport function defer(data: Record) {\n return new DeferredData(data);\n}\n\nexport type RedirectFunction = (\n url: string,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirect: RedirectFunction = (url, init = 302) => {\n let responseInit = init;\n if (typeof responseInit === \"number\") {\n responseInit = { status: responseInit };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n\n let headers = new Headers(responseInit.headers);\n headers.set(\"Location\", url);\n\n return new Response(null, {\n ...responseInit,\n headers,\n });\n};\n\n/**\n * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n */\nexport class ErrorResponse {\n status: number;\n statusText: string;\n data: any;\n error?: Error;\n internal: boolean;\n\n constructor(\n status: number,\n statusText: string | undefined,\n data: any,\n internal = false\n ) {\n this.status = status;\n this.statusText = statusText || \"\";\n this.internal = internal;\n if (data instanceof Error) {\n this.data = data.toString();\n this.error = data;\n } else {\n this.data = data;\n }\n }\n}\n\n/**\n * Check if the given error is an ErrorResponse generated from a 4xx/5xx\n * Response throw from an action/loader\n */\nexport function isRouteErrorResponse(e: any): e is ErrorResponse {\n return e instanceof ErrorResponse;\n}\n","import type { History, Location, Path, To } from \"./history\";\nimport {\n Action as HistoryAction,\n createLocation,\n createPath,\n createClientSideURL,\n invariant,\n parsePath,\n} from \"./history\";\nimport type {\n DataResult,\n AgnosticDataRouteMatch,\n AgnosticDataRouteObject,\n DeferredResult,\n ErrorResult,\n FormEncType,\n FormMethod,\n RedirectResult,\n RouteData,\n AgnosticRouteObject,\n Submission,\n SuccessResult,\n AgnosticRouteMatch,\n MutationFormMethod,\n} from \"./utils\";\nimport {\n DeferredData,\n ErrorResponse,\n ResultType,\n convertRoutesToDataRoutes,\n getPathContributingMatches,\n isRouteErrorResponse,\n joinPaths,\n matchRoutes,\n resolveTo,\n} from \"./utils\";\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A Router instance manages all navigation and data loading/mutations\n */\nexport interface Router {\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the basename for the router\n */\n get basename(): RouterInit[\"basename\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the current state of the router\n */\n get state(): RouterState;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the routes for this router instance\n */\n get routes(): AgnosticDataRouteObject[];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Initialize the router, including adding history listeners and kicking off\n * initial data fetches. Returns a function to cleanup listeners and abort\n * any in-progress loads\n */\n initialize(): Router;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Subscribe to router.state updates\n *\n * @param fn function to call with the new state\n */\n subscribe(fn: RouterSubscriber): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Enable scroll restoration behavior in the router\n *\n * @param savedScrollPositions Object that will manage positions, in case\n * it's being restored from sessionStorage\n * @param getScrollPosition Function to get the active Y scroll position\n * @param getKey Function to get the key to use for restoration\n */\n enableScrollRestoration(\n savedScrollPositions: Record,\n getScrollPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Navigate forward/backward in the history stack\n * @param to Delta to move in the history stack\n */\n navigate(to: number): void;\n\n /**\n * Navigate to the given path\n * @param to Path to navigate to\n * @param opts Navigation options (method, submission, etc.)\n */\n navigate(to: To, opts?: RouterNavigateOptions): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a fetcher load/submission\n *\n * @param key Fetcher key\n * @param routeId Route that owns the fetcher\n * @param href href to fetch\n * @param opts Fetcher options, (method, submission, etc.)\n */\n fetch(\n key: string,\n routeId: string,\n href: string,\n opts?: RouterNavigateOptions\n ): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a revalidation of all current route loaders and fetcher loads\n */\n revalidate(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to create an href for the given location\n * @param location\n */\n createHref(location: Location | URL): string;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to URL encode a destination path according to the internal\n * history implementation\n * @param to\n */\n encodeLocation(to: To): Path;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get/create a fetcher for the given key\n * @param key\n */\n getFetcher(key?: string): Fetcher;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete the fetcher for a given key\n * @param key\n */\n deleteFetcher(key?: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Cleanup listeners and abort any in-progress loads\n */\n dispose(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal fetch AbortControllers accessed by unit tests\n */\n _internalFetchControllers: Map;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal pending DeferredData instances accessed by unit tests\n */\n _internalActiveDeferreds: Map;\n}\n\n/**\n * State maintained internally by the router. During a navigation, all states\n * reflect the the \"old\" location unless otherwise noted.\n */\nexport interface RouterState {\n /**\n * The action of the most recent navigation\n */\n historyAction: HistoryAction;\n\n /**\n * The current location reflected by the router\n */\n location: Location;\n\n /**\n * The current set of route matches\n */\n matches: AgnosticDataRouteMatch[];\n\n /**\n * Tracks whether we've completed our initial data load\n */\n initialized: boolean;\n\n /**\n * Current scroll position we should start at for a new view\n * - number -> scroll position to restore to\n * - false -> do not restore scroll at all (used during submissions)\n * - null -> don't have a saved position, scroll to hash or top of page\n */\n restoreScrollPosition: number | false | null;\n\n /**\n * Indicate whether this navigation should skip resetting the scroll position\n * if we are unable to restore the scroll position\n */\n preventScrollReset: boolean;\n\n /**\n * Tracks the state of the current navigation\n */\n navigation: Navigation;\n\n /**\n * Tracks any in-progress revalidations\n */\n revalidation: RevalidationState;\n\n /**\n * Data from the loaders for the current matches\n */\n loaderData: RouteData;\n\n /**\n * Data from the action for the current matches\n */\n actionData: RouteData | null;\n\n /**\n * Errors caught from loaders for the current matches\n */\n errors: RouteData | null;\n\n /**\n * Map of current fetchers\n */\n fetchers: Map;\n}\n\n/**\n * Data that can be passed into hydrate a Router from SSR\n */\nexport type HydrationState = Partial<\n Pick\n>;\n\n/**\n * Initialization options for createRouter\n */\nexport interface RouterInit {\n basename?: string;\n routes: AgnosticRouteObject[];\n history: History;\n hydrationData?: HydrationState;\n}\n\n/**\n * State returned from a server-side query() call\n */\nexport interface StaticHandlerContext {\n basename: Router[\"basename\"];\n location: RouterState[\"location\"];\n matches: RouterState[\"matches\"];\n loaderData: RouterState[\"loaderData\"];\n actionData: RouterState[\"actionData\"];\n errors: RouterState[\"errors\"];\n statusCode: number;\n loaderHeaders: Record;\n actionHeaders: Record;\n _deepestRenderedBoundaryId?: string | null;\n}\n\n/**\n * A StaticHandler instance manages a singular SSR navigation/fetch event\n */\nexport interface StaticHandler {\n dataRoutes: AgnosticDataRouteObject[];\n query(\n request: Request,\n opts?: { requestContext?: unknown }\n ): Promise;\n queryRoute(\n request: Request,\n opts?: { routeId?: string; requestContext?: unknown }\n ): Promise;\n}\n\n/**\n * Subscriber function signature for changes to router state\n */\nexport interface RouterSubscriber {\n (state: RouterState): void;\n}\n\ninterface UseMatchesMatch {\n id: string;\n pathname: string;\n params: AgnosticRouteMatch[\"params\"];\n data: unknown;\n handle: unknown;\n}\n\n/**\n * Function signature for determining the key to be used in scroll restoration\n * for a given location\n */\nexport interface GetScrollRestorationKeyFunction {\n (location: Location, matches: UseMatchesMatch[]): string | null;\n}\n\n/**\n * Function signature for determining the current scroll position\n */\nexport interface GetScrollPositionFunction {\n (): number;\n}\n\n/**\n * Options for a navigate() call for a Link navigation\n */\ntype LinkNavigateOptions = {\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n};\n\n/**\n * Options for a navigate() call for a Form navigation\n */\ntype SubmissionNavigateOptions = {\n replace?: boolean;\n state?: any;\n formMethod?: FormMethod;\n formEncType?: FormEncType;\n formData: FormData;\n};\n\n/**\n * Options to pass to navigate() for either a Link or Form navigation\n */\nexport type RouterNavigateOptions =\n | LinkNavigateOptions\n | SubmissionNavigateOptions;\n\n/**\n * Options to pass to fetch()\n */\nexport type RouterFetchOptions =\n | Omit\n | Omit;\n\n/**\n * Potential states for state.navigation\n */\nexport type NavigationStates = {\n Idle: {\n state: \"idle\";\n location: undefined;\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n formData: undefined;\n };\n Loading: {\n state: \"loading\";\n location: Location;\n formMethod: FormMethod | undefined;\n formAction: string | undefined;\n formEncType: FormEncType | undefined;\n formData: FormData | undefined;\n };\n Submitting: {\n state: \"submitting\";\n location: Location;\n formMethod: FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n };\n};\n\nexport type Navigation = NavigationStates[keyof NavigationStates];\n\nexport type RevalidationState = \"idle\" | \"loading\";\n\n/**\n * Potential states for fetchers\n */\ntype FetcherStates = {\n Idle: {\n state: \"idle\";\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n formData: undefined;\n data: TData | undefined;\n \" _hasFetcherDoneAnything \"?: boolean;\n };\n Loading: {\n state: \"loading\";\n formMethod: FormMethod | undefined;\n formAction: string | undefined;\n formEncType: FormEncType | undefined;\n formData: FormData | undefined;\n data: TData | undefined;\n \" _hasFetcherDoneAnything \"?: boolean;\n };\n Submitting: {\n state: \"submitting\";\n formMethod: FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n data: TData | undefined;\n \" _hasFetcherDoneAnything \"?: boolean;\n };\n};\n\nexport type Fetcher =\n FetcherStates[keyof FetcherStates];\n\ninterface ShortCircuitable {\n /**\n * startNavigation does not need to complete the navigation because we\n * redirected or got interrupted\n */\n shortCircuited?: boolean;\n}\n\ninterface HandleActionResult extends ShortCircuitable {\n /**\n * Error thrown from the current action, keyed by the route containing the\n * error boundary to render the error. To be committed to the state after\n * loaders have completed\n */\n pendingActionError?: RouteData;\n /**\n * Data returned from the current action, keyed by the route owning the action.\n * To be committed to the state after loaders have completed\n */\n pendingActionData?: RouteData;\n}\n\ninterface HandleLoadersResult extends ShortCircuitable {\n /**\n * loaderData returned from the current set of loaders\n */\n loaderData?: RouterState[\"loaderData\"];\n /**\n * errors thrown from the current set of loaders\n */\n errors?: RouterState[\"errors\"];\n}\n\n/**\n * Tuple of [key, href, DataRouteMatch, DataRouteMatch[]] for a revalidating\n * fetcher.load()\n */\ntype RevalidatingFetcher = [\n string,\n string,\n AgnosticDataRouteMatch,\n AgnosticDataRouteMatch[]\n];\n\n/**\n * Tuple of [href, DataRouteMatch, DataRouteMatch[]] for an active\n * fetcher.load()\n */\ntype FetchLoadMatch = [\n string,\n AgnosticDataRouteMatch,\n AgnosticDataRouteMatch[]\n];\n\n/**\n * Wrapper object to allow us to throw any response out from callLoaderOrAction\n * for queryRouter while preserving whether or not it was thrown or returned\n * from the loader/action\n */\ninterface QueryRouteResponse {\n type: ResultType.data | ResultType.error;\n response: Response;\n}\n\nconst validMutationMethodsArr: MutationFormMethod[] = [\n \"post\",\n \"put\",\n \"patch\",\n \"delete\",\n];\nconst validMutationMethods = new Set(\n validMutationMethodsArr\n);\n\nconst validRequestMethodsArr: FormMethod[] = [\n \"get\",\n ...validMutationMethodsArr,\n];\nconst validRequestMethods = new Set(validRequestMethodsArr);\n\nconst redirectStatusCodes = new Set([301, 302, 303, 307, 308]);\nconst redirectPreserveMethodStatusCodes = new Set([307, 308]);\n\nexport const IDLE_NAVIGATION: NavigationStates[\"Idle\"] = {\n state: \"idle\",\n location: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n};\n\nexport const IDLE_FETCHER: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n};\n\nconst isBrowser =\n typeof window !== \"undefined\" &&\n typeof window.document !== \"undefined\" &&\n typeof window.document.createElement !== \"undefined\";\nconst isServer = !isBrowser;\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createRouter\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Create a router and listen to history POP navigations\n */\nexport function createRouter(init: RouterInit): Router {\n invariant(\n init.routes.length > 0,\n \"You must provide a non-empty routes array to createRouter\"\n );\n\n let dataRoutes = convertRoutesToDataRoutes(init.routes);\n // Cleanup function for history\n let unlistenHistory: (() => void) | null = null;\n // Externally-provided functions to call on all state changes\n let subscribers = new Set();\n // Externally-provided object to hold scroll restoration locations during routing\n let savedScrollPositions: Record | null = null;\n // Externally-provided function to get scroll restoration keys\n let getScrollRestorationKey: GetScrollRestorationKeyFunction | null = null;\n // Externally-provided function to get current scroll position\n let getScrollPosition: GetScrollPositionFunction | null = null;\n // One-time flag to control the initial hydration scroll restoration. Because\n // we don't get the saved positions from until _after_\n // the initial render, we need to manually trigger a separate updateState to\n // send along the restoreScrollPosition\n // Set to true if we have `hydrationData` since we assume we were SSR'd and that\n // SSR did the initial scroll restoration.\n let initialScrollRestored = init.hydrationData != null;\n\n let initialMatches = matchRoutes(\n dataRoutes,\n init.history.location,\n init.basename\n );\n let initialErrors: RouteData | null = null;\n\n if (initialMatches == null) {\n // If we do not match a user-provided-route, fall back to the root\n // to allow the error boundary to take over\n let error = getInternalRouterError(404, {\n pathname: init.history.location.pathname,\n });\n let { matches, route } = getShortCircuitMatches(dataRoutes);\n initialMatches = matches;\n initialErrors = { [route.id]: error };\n }\n\n let initialized =\n !initialMatches.some((m) => m.route.loader) || init.hydrationData != null;\n\n let router: Router;\n let state: RouterState = {\n historyAction: init.history.action,\n location: init.history.location,\n matches: initialMatches,\n initialized,\n navigation: IDLE_NAVIGATION,\n // Don't restore on initial updateState() if we were SSR'd\n restoreScrollPosition: init.hydrationData != null ? false : null,\n preventScrollReset: false,\n revalidation: \"idle\",\n loaderData: (init.hydrationData && init.hydrationData.loaderData) || {},\n actionData: (init.hydrationData && init.hydrationData.actionData) || null,\n errors: (init.hydrationData && init.hydrationData.errors) || initialErrors,\n fetchers: new Map(),\n };\n\n // -- Stateful internal variables to manage navigations --\n // Current navigation in progress (to be committed in completeNavigation)\n let pendingAction: HistoryAction = HistoryAction.Pop;\n // Should the current navigation prevent the scroll reset if scroll cannot\n // be restored?\n let pendingPreventScrollReset = false;\n // AbortController for the active navigation\n let pendingNavigationController: AbortController | null;\n // We use this to avoid touching history in completeNavigation if a\n // revalidation is entirely uninterrupted\n let isUninterruptedRevalidation = false;\n // Use this internal flag to force revalidation of all loaders:\n // - submissions (completed or interrupted)\n // - useRevalidate()\n // - X-Remix-Revalidate (from redirect)\n let isRevalidationRequired = false;\n // Use this internal array to capture routes that require revalidation due\n // to a cancelled deferred on action submission\n let cancelledDeferredRoutes: string[] = [];\n // Use this internal array to capture fetcher loads that were cancelled by an\n // action navigation and require revalidation\n let cancelledFetcherLoads: string[] = [];\n // AbortControllers for any in-flight fetchers\n let fetchControllers = new Map();\n // Track loads based on the order in which they started\n let incrementingLoadId = 0;\n // Track the outstanding pending navigation data load to be compared against\n // the globally incrementing load when a fetcher load lands after a completed\n // navigation\n let pendingNavigationLoadId = -1;\n // Fetchers that triggered data reloads as a result of their actions\n let fetchReloadIds = new Map();\n // Fetchers that triggered redirect navigations from their actions\n let fetchRedirectIds = new Set();\n // Most recent href/match for fetcher.load calls for fetchers\n let fetchLoadMatches = new Map();\n // Store DeferredData instances for active route matches. When a\n // route loader returns defer() we stick one in here. Then, when a nested\n // promise resolves we update loaderData. If a new navigation starts we\n // cancel active deferreds for eliminated routes.\n let activeDeferreds = new Map();\n\n // Initialize the router, all side effects should be kicked off from here.\n // Implemented as a Fluent API for ease of:\n // let router = createRouter(init).initialize();\n function initialize() {\n // If history informs us of a POP navigation, start the navigation but do not update\n // state. We'll update our own state once the navigation completes\n unlistenHistory = init.history.listen(\n ({ action: historyAction, location }) =>\n startNavigation(historyAction, location)\n );\n\n // Kick off initial data load if needed. Use Pop to avoid modifying history\n if (!state.initialized) {\n startNavigation(HistoryAction.Pop, state.location);\n }\n\n return router;\n }\n\n // Clean up a router and it's side effects\n function dispose() {\n if (unlistenHistory) {\n unlistenHistory();\n }\n subscribers.clear();\n pendingNavigationController && pendingNavigationController.abort();\n state.fetchers.forEach((_, key) => deleteFetcher(key));\n }\n\n // Subscribe to state updates for the router\n function subscribe(fn: RouterSubscriber) {\n subscribers.add(fn);\n return () => subscribers.delete(fn);\n }\n\n // Update our state and notify the calling context of the change\n function updateState(newState: Partial): void {\n state = {\n ...state,\n ...newState,\n };\n subscribers.forEach((subscriber) => subscriber(state));\n }\n\n // Complete a navigation returning the state.navigation back to the IDLE_NAVIGATION\n // and setting state.[historyAction/location/matches] to the new route.\n // - Location is a required param\n // - Navigation will always be set to IDLE_NAVIGATION\n // - Can pass any other state in newState\n function completeNavigation(\n location: Location,\n newState: Partial>\n ): void {\n // Deduce if we're in a loading/actionReload state:\n // - We have committed actionData in the store\n // - The current navigation was a mutation submission\n // - We're past the submitting state and into the loading state\n // - The location being loaded is not the result of a redirect\n let isActionReload =\n state.actionData != null &&\n state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n state.navigation.state === \"loading\" &&\n location.state?._isRedirect !== true;\n\n let actionData: RouteData | null;\n if (newState.actionData) {\n if (Object.keys(newState.actionData).length > 0) {\n actionData = newState.actionData;\n } else {\n // Empty actionData -> clear prior actionData due to an action error\n actionData = null;\n }\n } else if (isActionReload) {\n // Keep the current data if we're wrapping up the action reload\n actionData = state.actionData;\n } else {\n // Clear actionData on any other completed navigations\n actionData = null;\n }\n\n // Always preserve any existing loaderData from re-used routes\n let loaderData = newState.loaderData\n ? mergeLoaderData(\n state.loaderData,\n newState.loaderData,\n newState.matches || [],\n newState.errors\n )\n : state.loaderData;\n\n updateState({\n ...newState, // matches, errors, fetchers go through as-is\n actionData,\n loaderData,\n historyAction: pendingAction,\n location,\n initialized: true,\n navigation: IDLE_NAVIGATION,\n revalidation: \"idle\",\n // Don't restore on submission navigations\n restoreScrollPosition: state.navigation.formData\n ? false\n : getSavedScrollPosition(location, newState.matches || state.matches),\n preventScrollReset: pendingPreventScrollReset,\n });\n\n if (isUninterruptedRevalidation) {\n // If this was an uninterrupted revalidation then do not touch history\n } else if (pendingAction === HistoryAction.Pop) {\n // Do nothing for POP - URL has already been updated\n } else if (pendingAction === HistoryAction.Push) {\n init.history.push(location, location.state);\n } else if (pendingAction === HistoryAction.Replace) {\n init.history.replace(location, location.state);\n }\n\n // Reset stateful navigation vars\n pendingAction = HistoryAction.Pop;\n pendingPreventScrollReset = false;\n isUninterruptedRevalidation = false;\n isRevalidationRequired = false;\n cancelledDeferredRoutes = [];\n cancelledFetcherLoads = [];\n }\n\n // Trigger a navigation event, which can either be a numerical POP or a PUSH\n // replace with an optional submission\n async function navigate(\n to: number | To,\n opts?: RouterNavigateOptions\n ): Promise {\n if (typeof to === \"number\") {\n init.history.go(to);\n return;\n }\n\n let { path, submission, error } = normalizeNavigateOptions(to, opts);\n\n let location = createLocation(state.location, path, opts && opts.state);\n\n // When using navigate as a PUSH/REPLACE we aren't reading an already-encoded\n // URL from window.location, so we need to encode it here so the behavior\n // remains the same as POP and non-data-router usages. new URL() does all\n // the same encoding we'd get from a history.pushState/window.location read\n // without having to touch history\n location = {\n ...location,\n ...init.history.encodeLocation(location),\n };\n\n let userReplace = opts && opts.replace != null ? opts.replace : undefined;\n\n let historyAction = HistoryAction.Push;\n\n if (userReplace === true) {\n historyAction = HistoryAction.Replace;\n } else if (userReplace === false) {\n // no-op\n } else if (\n submission != null &&\n isMutationMethod(submission.formMethod) &&\n submission.formAction === state.location.pathname + state.location.search\n ) {\n // By default on submissions to the current location we REPLACE so that\n // users don't have to double-click the back button to get to the prior\n // location. If the user redirects to a different location from the\n // action/loader this will be ignored and the redirect will be a PUSH\n historyAction = HistoryAction.Replace;\n }\n\n let preventScrollReset =\n opts && \"preventScrollReset\" in opts\n ? opts.preventScrollReset === true\n : undefined;\n\n return await startNavigation(historyAction, location, {\n submission,\n // Send through the formData serialization error if we have one so we can\n // render at the right error boundary after we match routes\n pendingError: error,\n preventScrollReset,\n replace: opts && opts.replace,\n });\n }\n\n // Revalidate all current loaders. If a navigation is in progress or if this\n // is interrupted by a navigation, allow this to \"succeed\" by calling all\n // loaders during the next loader round\n function revalidate() {\n interruptActiveLoads();\n updateState({ revalidation: \"loading\" });\n\n // If we're currently submitting an action, we don't need to start a new\n // navigation, we'll just let the follow up loader execution call all loaders\n if (state.navigation.state === \"submitting\") {\n return;\n }\n\n // If we're currently in an idle state, start a new navigation for the current\n // action/location and mark it as uninterrupted, which will skip the history\n // update in completeNavigation\n if (state.navigation.state === \"idle\") {\n startNavigation(state.historyAction, state.location, {\n startUninterruptedRevalidation: true,\n });\n return;\n }\n\n // Otherwise, if we're currently in a loading state, just start a new\n // navigation to the navigation.location but do not trigger an uninterrupted\n // revalidation so that history correctly updates once the navigation completes\n startNavigation(\n pendingAction || state.historyAction,\n state.navigation.location,\n { overrideNavigation: state.navigation }\n );\n }\n\n // Start a navigation to the given action/location. Can optionally provide a\n // overrideNavigation which will override the normalLoad in the case of a redirect\n // navigation\n async function startNavigation(\n historyAction: HistoryAction,\n location: Location,\n opts?: {\n submission?: Submission;\n overrideNavigation?: Navigation;\n pendingError?: ErrorResponse;\n startUninterruptedRevalidation?: boolean;\n preventScrollReset?: boolean;\n replace?: boolean;\n }\n ): Promise {\n // Abort any in-progress navigations and start a new one. Unset any ongoing\n // uninterrupted revalidations unless told otherwise, since we want this\n // new navigation to update history normally\n pendingNavigationController && pendingNavigationController.abort();\n pendingNavigationController = null;\n pendingAction = historyAction;\n isUninterruptedRevalidation =\n (opts && opts.startUninterruptedRevalidation) === true;\n\n // Save the current scroll position every time we start a new navigation,\n // and track whether we should reset scroll on completion\n saveScrollPosition(state.location, state.matches);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n let loadingNavigation = opts && opts.overrideNavigation;\n let matches = matchRoutes(dataRoutes, location, init.basename);\n\n // Short circuit with a 404 on the root error boundary if we match nothing\n if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(dataRoutes);\n // Cancel all pending deferred on 404s since we don't keep any routes\n cancelActiveDeferreds();\n completeNavigation(location, {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n });\n return;\n }\n\n // Short circuit if it's only a hash change\n if (isHashChangeOnly(state.location, location)) {\n completeNavigation(location, { matches });\n return;\n }\n\n // Create a controller/Request for this navigation\n pendingNavigationController = new AbortController();\n let request = createClientSideRequest(\n location,\n pendingNavigationController.signal,\n opts && opts.submission\n );\n let pendingActionData: RouteData | undefined;\n let pendingError: RouteData | undefined;\n\n if (opts && opts.pendingError) {\n // If we have a pendingError, it means the user attempted a GET submission\n // with binary FormData so assign here and skip to handleLoaders. That\n // way we handle calling loaders above the boundary etc. It's not really\n // different from an actionError in that sense.\n pendingError = {\n [findNearestBoundary(matches).route.id]: opts.pendingError,\n };\n } else if (\n opts &&\n opts.submission &&\n isMutationMethod(opts.submission.formMethod)\n ) {\n // Call action if we received an action submission\n let actionOutput = await handleAction(\n request,\n location,\n opts.submission,\n matches,\n { replace: opts.replace }\n );\n\n if (actionOutput.shortCircuited) {\n return;\n }\n\n pendingActionData = actionOutput.pendingActionData;\n pendingError = actionOutput.pendingActionError;\n\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n ...opts.submission,\n };\n loadingNavigation = navigation;\n\n // Create a GET request for the loaders\n request = new Request(request.url, { signal: request.signal });\n }\n\n // Call loaders\n let { shortCircuited, loaderData, errors } = await handleLoaders(\n request,\n location,\n matches,\n loadingNavigation,\n opts && opts.submission,\n opts && opts.replace,\n pendingActionData,\n pendingError\n );\n\n if (shortCircuited) {\n return;\n }\n\n // Clean up now that the action/loaders have completed. Don't clean up if\n // we short circuited because pendingNavigationController will have already\n // been assigned to a new controller for the next navigation\n pendingNavigationController = null;\n\n completeNavigation(location, {\n matches,\n ...(pendingActionData ? { actionData: pendingActionData } : {}),\n loaderData,\n errors,\n });\n }\n\n // Call the action matched by the leaf route for this navigation and handle\n // redirects/errors\n async function handleAction(\n request: Request,\n location: Location,\n submission: Submission,\n matches: AgnosticDataRouteMatch[],\n opts?: { replace?: boolean }\n ): Promise {\n interruptActiveLoads();\n\n // Put us in a submitting state\n let navigation: NavigationStates[\"Submitting\"] = {\n state: \"submitting\",\n location,\n ...submission,\n };\n updateState({ navigation });\n\n // Call our action and get the result\n let result: DataResult;\n let actionMatch = getTargetMatch(matches, location);\n\n if (!actionMatch.route.action) {\n result = {\n type: ResultType.error,\n error: getInternalRouterError(405, {\n method: request.method,\n pathname: location.pathname,\n routeId: actionMatch.route.id,\n }),\n };\n } else {\n result = await callLoaderOrAction(\n \"action\",\n request,\n actionMatch,\n matches,\n router.basename\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n }\n\n if (isRedirectResult(result)) {\n let replace: boolean;\n if (opts && opts.replace != null) {\n replace = opts.replace;\n } else {\n // If the user didn't explicity indicate replace behavior, replace if\n // we redirected to the exact same location we're currently at to avoid\n // double back-buttons\n replace =\n result.location === state.location.pathname + state.location.search;\n }\n await startRedirectNavigation(state, result, { submission, replace });\n return { shortCircuited: true };\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n\n // By default, all submissions are REPLACE navigations, but if the\n // action threw an error that'll be rendered in an errorElement, we fall\n // back to PUSH so that the user can use the back button to get back to\n // the pre-submission form location to try again\n if ((opts && opts.replace) !== true) {\n pendingAction = HistoryAction.Push;\n }\n\n return {\n // Send back an empty object we can use to clear out any prior actionData\n pendingActionData: {},\n pendingActionError: { [boundaryMatch.route.id]: result.error },\n };\n }\n\n if (isDeferredResult(result)) {\n throw new Error(\"defer() is not supported in actions\");\n }\n\n return {\n pendingActionData: { [actionMatch.route.id]: result.data },\n };\n }\n\n // Call all applicable loaders for the given matches, handling redirects,\n // errors, etc.\n async function handleLoaders(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n overrideNavigation?: Navigation,\n submission?: Submission,\n replace?: boolean,\n pendingActionData?: RouteData,\n pendingError?: RouteData\n ): Promise {\n // Figure out the right navigation we want to use for data loading\n let loadingNavigation = overrideNavigation;\n if (!loadingNavigation) {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n ...submission,\n };\n loadingNavigation = navigation;\n }\n\n // If this was a redirect from an action we don't have a \"submission\" but\n // we have it on the loading navigation so use that if available\n let activeSubmission = submission\n ? submission\n : loadingNavigation.formMethod &&\n loadingNavigation.formAction &&\n loadingNavigation.formData &&\n loadingNavigation.formEncType\n ? {\n formMethod: loadingNavigation.formMethod,\n formAction: loadingNavigation.formAction,\n formData: loadingNavigation.formData,\n formEncType: loadingNavigation.formEncType,\n }\n : undefined;\n\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n state,\n matches,\n activeSubmission,\n location,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n pendingActionData,\n pendingError,\n fetchLoadMatches\n );\n\n // Cancel pending deferreds for no-longer-matched routes or routes we're\n // about to reload. Note that if this is an action reload we would have\n // already cancelled all pending deferreds so this would be a no-op\n cancelActiveDeferreds(\n (routeId) =>\n !(matches && matches.some((m) => m.route.id === routeId)) ||\n (matchesToLoad && matchesToLoad.some((m) => m.route.id === routeId))\n );\n\n // Short circuit if we have no loaders to run\n if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n completeNavigation(location, {\n matches,\n loaderData: {},\n // Commit pending error if we're short circuiting\n errors: pendingError || null,\n ...(pendingActionData ? { actionData: pendingActionData } : {}),\n });\n return { shortCircuited: true };\n }\n\n // If this is an uninterrupted revalidation, we remain in our current idle\n // state. If not, we need to switch to our loading state and load data,\n // preserving any new action data or existing action data (in the case of\n // a revalidation interrupting an actionReload)\n if (!isUninterruptedRevalidation) {\n revalidatingFetchers.forEach(([key]) => {\n let fetcher = state.fetchers.get(key);\n let revalidatingFetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n data: fetcher && fetcher.data,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, revalidatingFetcher);\n });\n let actionData = pendingActionData || state.actionData;\n updateState({\n navigation: loadingNavigation,\n ...(actionData\n ? Object.keys(actionData).length === 0\n ? { actionData: null }\n : { actionData }\n : {}),\n ...(revalidatingFetchers.length > 0\n ? { fetchers: new Map(state.fetchers) }\n : {}),\n });\n }\n\n pendingNavigationLoadId = ++incrementingLoadId;\n revalidatingFetchers.forEach(([key]) =>\n fetchControllers.set(key, pendingNavigationController!)\n );\n\n let { results, loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n request\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n\n // Clean up _after_ loaders have completed. Don't clean up if we short\n // circuited because fetchControllers would have been aborted and\n // reassigned to new controllers for the next navigation\n revalidatingFetchers.forEach(([key]) => fetchControllers.delete(key));\n\n // If any loaders returned a redirect Response, start a new REPLACE navigation\n let redirect = findRedirect(results);\n if (redirect) {\n await startRedirectNavigation(state, redirect, { replace });\n return { shortCircuited: true };\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n matches,\n matchesToLoad,\n loaderResults,\n pendingError,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Wire up subscribers to update loaderData as promises settle\n activeDeferreds.forEach((deferredData, routeId) => {\n deferredData.subscribe((aborted) => {\n // Note: No need to updateState here since the TrackedPromise on\n // loaderData is stable across resolve/reject\n // Remove this instance if we were aborted or if promises have settled\n if (aborted || deferredData.done) {\n activeDeferreds.delete(routeId);\n }\n });\n });\n\n markFetchRedirectsDone();\n let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n\n return {\n loaderData,\n errors,\n ...(didAbortFetchLoads || revalidatingFetchers.length > 0\n ? { fetchers: new Map(state.fetchers) }\n : {}),\n };\n }\n\n function getFetcher(key: string): Fetcher {\n return state.fetchers.get(key) || IDLE_FETCHER;\n }\n\n // Trigger a fetcher load/submit for the given fetcher key\n function fetch(\n key: string,\n routeId: string,\n href: string,\n opts?: RouterFetchOptions\n ) {\n if (isServer) {\n throw new Error(\n \"router.fetch() was called during the server render, but it shouldn't be. \" +\n \"You are likely calling a useFetcher() method in the body of your component. \" +\n \"Try moving it to a useEffect or a callback.\"\n );\n }\n\n if (fetchControllers.has(key)) abortFetcher(key);\n\n let matches = matchRoutes(dataRoutes, href, init.basename);\n if (!matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: href })\n );\n return;\n }\n\n let { path, submission } = normalizeNavigateOptions(href, opts, true);\n let match = getTargetMatch(matches, path);\n\n if (submission && isMutationMethod(submission.formMethod)) {\n handleFetcherAction(key, routeId, path, match, matches, submission);\n return;\n }\n\n // Store off the match so we can call it's shouldRevalidate on subsequent\n // revalidations\n fetchLoadMatches.set(key, [path, match, matches]);\n handleFetcherLoader(key, routeId, path, match, matches, submission);\n }\n\n // Call the action for the matched fetcher.submit(), and then handle redirects,\n // errors, and revalidation\n async function handleFetcherAction(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n requestMatches: AgnosticDataRouteMatch[],\n submission: Submission\n ) {\n interruptActiveLoads();\n fetchLoadMatches.delete(key);\n\n if (!match.route.action) {\n let error = getInternalRouterError(405, {\n method: submission.formMethod,\n pathname: path,\n routeId: routeId,\n });\n setFetcherError(key, routeId, error);\n return;\n }\n\n // Put this fetcher into it's submitting state\n let existingFetcher = state.fetchers.get(key);\n let fetcher: FetcherStates[\"Submitting\"] = {\n state: \"submitting\",\n ...submission,\n data: existingFetcher && existingFetcher.data,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, fetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n\n // Call the action for the fetcher\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n path,\n abortController.signal,\n submission\n );\n fetchControllers.set(key, abortController);\n\n let actionResult = await callLoaderOrAction(\n \"action\",\n fetchRequest,\n match,\n requestMatches,\n router.basename\n );\n\n if (fetchRequest.signal.aborted) {\n // We can delete this so long as we weren't aborted by ou our own fetcher\n // re-submit which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n return;\n }\n\n if (isRedirectResult(actionResult)) {\n fetchControllers.delete(key);\n fetchRedirectIds.add(key);\n let loadingFetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n ...submission,\n data: undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, loadingFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n\n return startRedirectNavigation(state, actionResult, {\n isFetchActionRedirect: true,\n });\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(actionResult)) {\n setFetcherError(key, routeId, actionResult.error);\n return;\n }\n\n if (isDeferredResult(actionResult)) {\n invariant(false, \"defer() is not supported in actions\");\n }\n\n // Start the data load for current matches, or the next location if we're\n // in the middle of a navigation\n let nextLocation = state.navigation.location || state.location;\n let revalidationRequest = createClientSideRequest(\n nextLocation,\n abortController.signal\n );\n let matches =\n state.navigation.state !== \"idle\"\n ? matchRoutes(dataRoutes, state.navigation.location, init.basename)\n : state.matches;\n\n invariant(matches, \"Didn't find any matches after fetcher action\");\n\n let loadId = ++incrementingLoadId;\n fetchReloadIds.set(key, loadId);\n\n let loadFetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n data: actionResult.data,\n ...submission,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, loadFetcher);\n\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n state,\n matches,\n submission,\n nextLocation,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n { [match.route.id]: actionResult.data },\n undefined, // No need to send through errors since we short circuit above\n fetchLoadMatches\n );\n\n // Put all revalidating fetchers into the loading state, except for the\n // current fetcher which we want to keep in it's current loading state which\n // contains it's action submission info + action data\n revalidatingFetchers\n .filter(([staleKey]) => staleKey !== key)\n .forEach(([staleKey]) => {\n let existingFetcher = state.fetchers.get(staleKey);\n let revalidatingFetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n data: existingFetcher && existingFetcher.data,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(staleKey, revalidatingFetcher);\n fetchControllers.set(staleKey, abortController);\n });\n\n updateState({ fetchers: new Map(state.fetchers) });\n\n let { results, loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n revalidationRequest\n );\n\n if (abortController.signal.aborted) {\n return;\n }\n\n fetchReloadIds.delete(key);\n fetchControllers.delete(key);\n revalidatingFetchers.forEach(([staleKey]) =>\n fetchControllers.delete(staleKey)\n );\n\n let redirect = findRedirect(results);\n if (redirect) {\n return startRedirectNavigation(state, redirect);\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n state.matches,\n matchesToLoad,\n loaderResults,\n undefined,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n let doneFetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: actionResult.data,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, doneFetcher);\n\n let didAbortFetchLoads = abortStaleFetchLoads(loadId);\n\n // If we are currently in a navigation loading state and this fetcher is\n // more recent than the navigation, we want the newer data so abort the\n // navigation and complete it with the fetcher data\n if (\n state.navigation.state === \"loading\" &&\n loadId > pendingNavigationLoadId\n ) {\n invariant(pendingAction, \"Expected pending action\");\n pendingNavigationController && pendingNavigationController.abort();\n\n completeNavigation(state.navigation.location, {\n matches,\n loaderData,\n errors,\n fetchers: new Map(state.fetchers),\n });\n } else {\n // otherwise just update with the fetcher data, preserving any existing\n // loaderData for loaders that did not need to reload. We have to\n // manually merge here since we aren't going through completeNavigation\n updateState({\n errors,\n loaderData: mergeLoaderData(\n state.loaderData,\n loaderData,\n matches,\n errors\n ),\n ...(didAbortFetchLoads ? { fetchers: new Map(state.fetchers) } : {}),\n });\n isRevalidationRequired = false;\n }\n }\n\n // Call the matched loader for fetcher.load(), handling redirects, errors, etc.\n async function handleFetcherLoader(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n submission?: Submission\n ) {\n let existingFetcher = state.fetchers.get(key);\n // Put this fetcher into it's loading state\n let loadingFetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n ...submission,\n data: existingFetcher && existingFetcher.data,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, loadingFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n\n // Call the loader for this fetcher route match\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(path, abortController.signal);\n fetchControllers.set(key, abortController);\n let result: DataResult = await callLoaderOrAction(\n \"loader\",\n fetchRequest,\n match,\n matches,\n router.basename\n );\n\n // Deferred isn't supported or fetcher loads, await everything and treat it\n // as a normal load. resolveDeferredData will return undefined if this\n // fetcher gets aborted, so we just leave result untouched and short circuit\n // below if that happens\n if (isDeferredResult(result)) {\n result =\n (await resolveDeferredData(result, fetchRequest.signal, true)) ||\n result;\n }\n\n // We can delete this so long as we weren't aborted by ou our own fetcher\n // re-load which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n\n if (fetchRequest.signal.aborted) {\n return;\n }\n\n // If the loader threw a redirect Response, start a new REPLACE navigation\n if (isRedirectResult(result)) {\n await startRedirectNavigation(state, result);\n return;\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n state.fetchers.delete(key);\n // TODO: In remix, this would reset to IDLE_NAVIGATION if it was a catch -\n // do we need to behave any differently with our non-redirect errors?\n // What if it was a non-redirect Response?\n updateState({\n fetchers: new Map(state.fetchers),\n errors: {\n [boundaryMatch.route.id]: result.error,\n },\n });\n return;\n }\n\n invariant(!isDeferredResult(result), \"Unhandled fetcher deferred data\");\n\n // Put the fetcher back into an idle state\n let doneFetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: result.data,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, doneFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n }\n\n /**\n * Utility function to handle redirects returned from an action or loader.\n * Normally, a redirect \"replaces\" the navigation that triggered it. So, for\n * example:\n *\n * - user is on /a\n * - user clicks a link to /b\n * - loader for /b redirects to /c\n *\n * In a non-JS app the browser would track the in-flight navigation to /b and\n * then replace it with /c when it encountered the redirect response. In\n * the end it would only ever update the URL bar with /c.\n *\n * In client-side routing using pushState/replaceState, we aim to emulate\n * this behavior and we also do not update history until the end of the\n * navigation (including processed redirects). This means that we never\n * actually touch history until we've processed redirects, so we just use\n * the history action from the original navigation (PUSH or REPLACE).\n */\n async function startRedirectNavigation(\n state: RouterState,\n redirect: RedirectResult,\n {\n submission,\n replace,\n isFetchActionRedirect,\n }: {\n submission?: Submission;\n replace?: boolean;\n isFetchActionRedirect?: boolean;\n } = {}\n ) {\n if (redirect.revalidate) {\n isRevalidationRequired = true;\n }\n\n let redirectLocation = createLocation(\n state.location,\n redirect.location,\n // TODO: This can be removed once we get rid of useTransition in Remix v2\n {\n _isRedirect: true,\n ...(isFetchActionRedirect ? { _isFetchActionRedirect: true } : {}),\n }\n );\n invariant(\n redirectLocation,\n \"Expected a location on the redirect navigation\"\n );\n\n // Check if this an external redirect that goes to a new origin\n if (typeof window?.location !== \"undefined\") {\n let newOrigin = createClientSideURL(redirect.location).origin;\n if (window.location.origin !== newOrigin) {\n if (replace) {\n window.location.replace(redirect.location);\n } else {\n window.location.assign(redirect.location);\n }\n return;\n }\n }\n\n // There's no need to abort on redirects, since we don't detect the\n // redirect until the action/loaders have settled\n pendingNavigationController = null;\n\n let redirectHistoryAction =\n replace === true ? HistoryAction.Replace : HistoryAction.Push;\n\n // Use the incoming submission if provided, fallback on the active one in\n // state.navigation\n let { formMethod, formAction, formEncType, formData } = state.navigation;\n if (!submission && formMethod && formAction && formData && formEncType) {\n submission = {\n formMethod,\n formAction,\n formEncType,\n formData,\n };\n }\n\n // If this was a 307/308 submission we want to preserve the HTTP method and\n // re-submit the GET/POST/PUT/PATCH/DELETE as a submission navigation to the\n // redirected location\n if (\n redirectPreserveMethodStatusCodes.has(redirect.status) &&\n submission &&\n isMutationMethod(submission.formMethod)\n ) {\n await startNavigation(redirectHistoryAction, redirectLocation, {\n submission: {\n ...submission,\n formAction: redirect.location,\n },\n });\n } else {\n // Otherwise, we kick off a new loading navigation, preserving the\n // submission info for the duration of this navigation\n await startNavigation(redirectHistoryAction, redirectLocation, {\n overrideNavigation: {\n state: \"loading\",\n location: redirectLocation,\n formMethod: submission ? submission.formMethod : undefined,\n formAction: submission ? submission.formAction : undefined,\n formEncType: submission ? submission.formEncType : undefined,\n formData: submission ? submission.formData : undefined,\n },\n });\n }\n }\n\n async function callLoadersAndMaybeResolveData(\n currentMatches: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n fetchersToLoad: RevalidatingFetcher[],\n request: Request\n ) {\n // Call all navigation loaders and revalidating fetcher loaders in parallel,\n // then slice off the results into separate arrays so we can handle them\n // accordingly\n let results = await Promise.all([\n ...matchesToLoad.map((match) =>\n callLoaderOrAction(\"loader\", request, match, matches, router.basename)\n ),\n ...fetchersToLoad.map(([, href, match, fetchMatches]) =>\n callLoaderOrAction(\n \"loader\",\n createClientSideRequest(href, request.signal),\n match,\n fetchMatches,\n router.basename\n )\n ),\n ]);\n let loaderResults = results.slice(0, matchesToLoad.length);\n let fetcherResults = results.slice(matchesToLoad.length);\n\n await Promise.all([\n resolveDeferredResults(\n currentMatches,\n matchesToLoad,\n loaderResults,\n request.signal,\n false,\n state.loaderData\n ),\n resolveDeferredResults(\n currentMatches,\n fetchersToLoad.map(([, , match]) => match),\n fetcherResults,\n request.signal,\n true\n ),\n ]);\n\n return { results, loaderResults, fetcherResults };\n }\n\n function interruptActiveLoads() {\n // Every interruption triggers a revalidation\n isRevalidationRequired = true;\n\n // Cancel pending route-level deferreds and mark cancelled routes for\n // revalidation\n cancelledDeferredRoutes.push(...cancelActiveDeferreds());\n\n // Abort in-flight fetcher loads\n fetchLoadMatches.forEach((_, key) => {\n if (fetchControllers.has(key)) {\n cancelledFetcherLoads.push(key);\n abortFetcher(key);\n }\n });\n }\n\n function setFetcherError(key: string, routeId: string, error: any) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n deleteFetcher(key);\n updateState({\n errors: {\n [boundaryMatch.route.id]: error,\n },\n fetchers: new Map(state.fetchers),\n });\n }\n\n function deleteFetcher(key: string): void {\n if (fetchControllers.has(key)) abortFetcher(key);\n fetchLoadMatches.delete(key);\n fetchReloadIds.delete(key);\n fetchRedirectIds.delete(key);\n state.fetchers.delete(key);\n }\n\n function abortFetcher(key: string) {\n let controller = fetchControllers.get(key);\n invariant(controller, `Expected fetch controller: ${key}`);\n controller.abort();\n fetchControllers.delete(key);\n }\n\n function markFetchersDone(keys: string[]) {\n for (let key of keys) {\n let fetcher = getFetcher(key);\n let doneFetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: fetcher.data,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n function markFetchRedirectsDone(): void {\n let doneKeys = [];\n for (let key of fetchRedirectIds) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n fetchRedirectIds.delete(key);\n doneKeys.push(key);\n }\n }\n markFetchersDone(doneKeys);\n }\n\n function abortStaleFetchLoads(landedId: number): boolean {\n let yeetedKeys = [];\n for (let [key, id] of fetchReloadIds) {\n if (id < landedId) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n abortFetcher(key);\n fetchReloadIds.delete(key);\n yeetedKeys.push(key);\n }\n }\n }\n markFetchersDone(yeetedKeys);\n return yeetedKeys.length > 0;\n }\n\n function cancelActiveDeferreds(\n predicate?: (routeId: string) => boolean\n ): string[] {\n let cancelledRouteIds: string[] = [];\n activeDeferreds.forEach((dfd, routeId) => {\n if (!predicate || predicate(routeId)) {\n // Cancel the deferred - but do not remove from activeDeferreds here -\n // we rely on the subscribers to do that so our tests can assert proper\n // cleanup via _internalActiveDeferreds\n dfd.cancel();\n cancelledRouteIds.push(routeId);\n activeDeferreds.delete(routeId);\n }\n });\n return cancelledRouteIds;\n }\n\n // Opt in to capturing and reporting scroll positions during navigations,\n // used by the component\n function enableScrollRestoration(\n positions: Record,\n getPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ) {\n savedScrollPositions = positions;\n getScrollPosition = getPosition;\n getScrollRestorationKey = getKey || ((location) => location.key);\n\n // Perform initial hydration scroll restoration, since we miss the boat on\n // the initial updateState() because we've not yet rendered \n // and therefore have no savedScrollPositions available\n if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n initialScrollRestored = true;\n let y = getSavedScrollPosition(state.location, state.matches);\n if (y != null) {\n updateState({ restoreScrollPosition: y });\n }\n }\n\n return () => {\n savedScrollPositions = null;\n getScrollPosition = null;\n getScrollRestorationKey = null;\n };\n }\n\n function saveScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): void {\n if (savedScrollPositions && getScrollRestorationKey && getScrollPosition) {\n let userMatches = matches.map((m) =>\n createUseMatchesMatch(m, state.loaderData)\n );\n let key = getScrollRestorationKey(location, userMatches) || location.key;\n savedScrollPositions[key] = getScrollPosition();\n }\n }\n\n function getSavedScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): number | null {\n if (savedScrollPositions && getScrollRestorationKey && getScrollPosition) {\n let userMatches = matches.map((m) =>\n createUseMatchesMatch(m, state.loaderData)\n );\n let key = getScrollRestorationKey(location, userMatches) || location.key;\n let y = savedScrollPositions[key];\n if (typeof y === \"number\") {\n return y;\n }\n }\n return null;\n }\n\n router = {\n get basename() {\n return init.basename;\n },\n get state() {\n return state;\n },\n get routes() {\n return dataRoutes;\n },\n initialize,\n subscribe,\n enableScrollRestoration,\n navigate,\n fetch,\n revalidate,\n // Passthrough to history-aware createHref used by useHref so we get proper\n // hash-aware URLs in DOM paths\n createHref: (to: To) => init.history.createHref(to),\n encodeLocation: (to: To) => init.history.encodeLocation(to),\n getFetcher,\n deleteFetcher,\n dispose,\n _internalFetchControllers: fetchControllers,\n _internalActiveDeferreds: activeDeferreds,\n };\n\n return router;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createStaticHandler\n////////////////////////////////////////////////////////////////////////////////\n\nexport function createStaticHandler(\n routes: AgnosticRouteObject[],\n opts?: {\n basename?: string;\n }\n): StaticHandler {\n invariant(\n routes.length > 0,\n \"You must provide a non-empty routes array to createStaticHandler\"\n );\n\n let dataRoutes = convertRoutesToDataRoutes(routes);\n let basename = (opts ? opts.basename : null) || \"/\";\n\n /**\n * The query() method is intended for document requests, in which we want to\n * call an optional action and potentially multiple loaders for all nested\n * routes. It returns a StaticHandlerContext object, which is very similar\n * to the router state (location, loaderData, actionData, errors, etc.) and\n * also adds SSR-specific information such as the statusCode and headers\n * from action/loaders Responses.\n *\n * It _should_ never throw and should report all errors through the\n * returned context.errors object, properly associating errors to their error\n * boundary. Additionally, it tracks _deepestRenderedBoundaryId which can be\n * used to emulate React error boundaries during SSr by performing a second\n * pass only down to the boundaryId.\n *\n * The one exception where we do not return a StaticHandlerContext is when a\n * redirect response is returned or thrown from any action/loader. We\n * propagate that out and return the raw Response so the HTTP server can\n * return it directly.\n */\n async function query(\n request: Request,\n { requestContext }: { requestContext?: unknown } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method.toLowerCase();\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"head\") {\n let error = getInternalRouterError(405, { method });\n let { matches: methodNotAllowedMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: methodNotAllowedMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n };\n } else if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: notFoundMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n };\n }\n\n let result = await queryImpl(request, location, matches, requestContext);\n if (isResponse(result)) {\n return result;\n }\n\n // When returning StaticHandlerContext, we patch back in the location here\n // since we need it for React Context. But this helps keep our submit and\n // loadRouteData operating on a Request instead of a Location\n return { location, basename, ...result };\n }\n\n /**\n * The queryRoute() method is intended for targeted route requests, either\n * for fetch ?_data requests or resource route requests. In this case, we\n * are only ever calling a single action or loader, and we are returning the\n * returned value directly. In most cases, this will be a Response returned\n * from the action/loader, but it may be a primitive or other value as well -\n * and in such cases the calling context should handle that accordingly.\n *\n * We do respect the throw/return differentiation, so if an action/loader\n * throws, then this method will throw the value. This is important so we\n * can do proper boundary identification in Remix where a thrown Response\n * must go to the Catch Boundary but a returned Response is happy-path.\n *\n * One thing to note is that any Router-initiated Errors that make sense\n * to associate with a status code will be thrown as an ErrorResponse\n * instance which include the raw Error, such that the calling context can\n * serialize the error as they see fit while including the proper response\n * code. Examples here are 404 and 405 errors that occur prior to reaching\n * any user-defined loaders.\n */\n async function queryRoute(\n request: Request,\n {\n routeId,\n requestContext,\n }: { requestContext?: unknown; routeId?: string } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method.toLowerCase();\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"head\") {\n throw getInternalRouterError(405, { method });\n } else if (!matches) {\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let match = routeId\n ? matches.find((m) => m.route.id === routeId)\n : getTargetMatch(matches, location);\n\n if (routeId && !match) {\n throw getInternalRouterError(403, {\n pathname: location.pathname,\n routeId,\n });\n } else if (!match) {\n // This should never hit I don't think?\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n match\n );\n if (isResponse(result)) {\n return result;\n }\n\n let error = result.errors ? Object.values(result.errors)[0] : undefined;\n if (error !== undefined) {\n // If we got back result.errors, that means the loader/action threw\n // _something_ that wasn't a Response, but it's not guaranteed/required\n // to be an `instanceof Error` either, so we have to use throw here to\n // preserve the \"error\" state outside of queryImpl.\n throw error;\n }\n\n // Pick off the right state value to return\n let routeData = [result.actionData, result.loaderData].find((v) => v);\n return Object.values(routeData || {})[0];\n }\n\n async function queryImpl(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n routeMatch?: AgnosticDataRouteMatch\n ): Promise | Response> {\n invariant(\n request.signal,\n \"query()/queryRoute() requests must contain an AbortController signal\"\n );\n\n try {\n if (isMutationMethod(request.method.toLowerCase())) {\n let result = await submit(\n request,\n matches,\n routeMatch || getTargetMatch(matches, location),\n requestContext,\n routeMatch != null\n );\n return result;\n }\n\n let result = await loadRouteData(\n request,\n matches,\n requestContext,\n routeMatch\n );\n return isResponse(result)\n ? result\n : {\n ...result,\n actionData: null,\n actionHeaders: {},\n };\n } catch (e) {\n // If the user threw/returned a Response in callLoaderOrAction, we throw\n // it to bail out and then return or throw here based on whether the user\n // returned or threw\n if (isQueryRouteResponse(e)) {\n if (e.type === ResultType.error && !isRedirectResponse(e.response)) {\n throw e.response;\n }\n return e.response;\n }\n // Redirects are always returned since they don't propagate to catch\n // boundaries\n if (isRedirectResponse(e)) {\n return e;\n }\n throw e;\n }\n }\n\n async function submit(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n actionMatch: AgnosticDataRouteMatch,\n requestContext: unknown,\n isRouteRequest: boolean\n ): Promise | Response> {\n let result: DataResult;\n\n if (!actionMatch.route.action) {\n let error = getInternalRouterError(405, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: actionMatch.route.id,\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n } else {\n result = await callLoaderOrAction(\n \"action\",\n request,\n actionMatch,\n matches,\n basename,\n true,\n isRouteRequest,\n requestContext\n );\n\n if (request.signal.aborted) {\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(`${method}() call aborted`);\n }\n }\n\n if (isRedirectResult(result)) {\n // Uhhhh - this should never happen, we should always throw these from\n // callLoaderOrAction, but the type narrowing here keeps TS happy and we\n // can get back on the \"throw all redirect responses\" train here should\n // this ever happen :/\n throw new Response(null, {\n status: result.status,\n headers: {\n Location: result.location,\n },\n });\n }\n\n if (isDeferredResult(result)) {\n throw new Error(\"defer() is not supported in actions\");\n }\n\n if (isRouteRequest) {\n // Note: This should only be non-Response values if we get here, since\n // isRouteRequest should throw any Response received in callLoaderOrAction\n if (isErrorResult(result)) {\n throw result.error;\n }\n\n return {\n matches: [actionMatch],\n loaderData: {},\n actionData: { [actionMatch.route.id]: result.data },\n errors: null,\n // Note: statusCode + headers are unused here since queryRoute will\n // return the raw Response or value\n statusCode: 200,\n loaderHeaders: {},\n actionHeaders: {},\n };\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n let context = await loadRouteData(\n request,\n matches,\n requestContext,\n undefined,\n {\n [boundaryMatch.route.id]: result.error,\n }\n );\n\n // action status codes take precedence over loader status codes\n return {\n ...context,\n statusCode: isRouteErrorResponse(result.error)\n ? result.error.status\n : 500,\n actionData: null,\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n // Create a GET request for the loaders\n let loaderRequest = new Request(request.url, {\n headers: request.headers,\n redirect: request.redirect,\n signal: request.signal,\n });\n let context = await loadRouteData(loaderRequest, matches, requestContext);\n\n return {\n ...context,\n // action status codes take precedence over loader status codes\n ...(result.statusCode ? { statusCode: result.statusCode } : {}),\n actionData: {\n [actionMatch.route.id]: result.data,\n },\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n async function loadRouteData(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n routeMatch?: AgnosticDataRouteMatch,\n pendingActionError?: RouteData\n ): Promise<\n | Omit<\n StaticHandlerContext,\n \"location\" | \"basename\" | \"actionData\" | \"actionHeaders\"\n >\n | Response\n > {\n let isRouteRequest = routeMatch != null;\n\n // Short circuit if we have no loaders to run (queryRoute())\n if (isRouteRequest && !routeMatch?.route.loader) {\n throw getInternalRouterError(400, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: routeMatch?.route.id,\n });\n }\n\n let requestMatches = routeMatch\n ? [routeMatch]\n : getLoaderMatchesUntilBoundary(\n matches,\n Object.keys(pendingActionError || {})[0]\n );\n let matchesToLoad = requestMatches.filter((m) => m.route.loader);\n\n // Short circuit if we have no loaders to run (query())\n if (matchesToLoad.length === 0) {\n return {\n matches,\n // Add a null for all matched routes for proper revalidation on the client\n loaderData: matches.reduce(\n (acc, m) => Object.assign(acc, { [m.route.id]: null }),\n {}\n ),\n errors: pendingActionError || null,\n statusCode: 200,\n loaderHeaders: {},\n };\n }\n\n let results = await Promise.all([\n ...matchesToLoad.map((match) =>\n callLoaderOrAction(\n \"loader\",\n request,\n match,\n matches,\n basename,\n true,\n isRouteRequest,\n requestContext\n )\n ),\n ]);\n\n if (request.signal.aborted) {\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(`${method}() call aborted`);\n }\n\n let executedLoaders = new Set();\n results.forEach((result, i) => {\n executedLoaders.add(matchesToLoad[i].route.id);\n // Can't do anything with these without the Remix side of things, so just\n // cancel them for now\n if (isDeferredResult(result)) {\n result.deferredData.cancel();\n }\n });\n\n // Process and commit output from loaders\n let context = processRouteLoaderData(\n matches,\n matchesToLoad,\n results,\n pendingActionError\n );\n\n // Add a null for any non-loader matches for proper revalidation on the client\n matches.forEach((match) => {\n if (!executedLoaders.has(match.route.id)) {\n context.loaderData[match.route.id] = null;\n }\n });\n\n return {\n ...context,\n matches,\n };\n }\n\n return {\n dataRoutes,\n query,\n queryRoute,\n };\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Helpers\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Given an existing StaticHandlerContext and an error thrown at render time,\n * provide an updated StaticHandlerContext suitable for a second SSR render\n */\nexport function getStaticContextFromError(\n routes: AgnosticDataRouteObject[],\n context: StaticHandlerContext,\n error: any\n) {\n let newContext: StaticHandlerContext = {\n ...context,\n statusCode: 500,\n errors: {\n [context._deepestRenderedBoundaryId || routes[0].id]: error,\n },\n };\n return newContext;\n}\n\nfunction isSubmissionNavigation(\n opts: RouterNavigateOptions\n): opts is SubmissionNavigateOptions {\n return opts != null && \"formData\" in opts;\n}\n\n// Normalize navigation options by converting formMethod=GET formData objects to\n// URLSearchParams so they behave identically to links with query params\nfunction normalizeNavigateOptions(\n to: To,\n opts?: RouterNavigateOptions,\n isFetcher = false\n): {\n path: string;\n submission?: Submission;\n error?: ErrorResponse;\n} {\n let path = typeof to === \"string\" ? to : createPath(to);\n\n // Return location verbatim on non-submission navigations\n if (!opts || !isSubmissionNavigation(opts)) {\n return { path };\n }\n\n if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n return {\n path,\n error: getInternalRouterError(405, { method: opts.formMethod }),\n };\n }\n\n // Create a Submission on non-GET navigations\n let submission: Submission | undefined;\n if (opts.formData) {\n submission = {\n formMethod: opts.formMethod || \"get\",\n formAction: stripHashFromPath(path),\n formEncType:\n (opts && opts.formEncType) || \"application/x-www-form-urlencoded\",\n formData: opts.formData,\n };\n\n if (isMutationMethod(submission.formMethod)) {\n return { path, submission };\n }\n }\n\n // Flatten submission onto URLSearchParams for GET submissions\n let parsedPath = parsePath(path);\n try {\n let searchParams = convertFormDataToSearchParams(opts.formData);\n // Since fetcher GET submissions only run a single loader (as opposed to\n // navigation GET submissions which run all loaders), we need to preserve\n // any incoming ?index params\n if (\n isFetcher &&\n parsedPath.search &&\n hasNakedIndexQuery(parsedPath.search)\n ) {\n searchParams.append(\"index\", \"\");\n }\n parsedPath.search = `?${searchParams}`;\n } catch (e) {\n return {\n path,\n error: getInternalRouterError(400),\n };\n }\n\n return { path: createPath(parsedPath), submission };\n}\n\n// Filter out all routes below any caught error as they aren't going to\n// render so we don't need to load them\nfunction getLoaderMatchesUntilBoundary(\n matches: AgnosticDataRouteMatch[],\n boundaryId?: string\n) {\n let boundaryMatches = matches;\n if (boundaryId) {\n let index = matches.findIndex((m) => m.route.id === boundaryId);\n if (index >= 0) {\n boundaryMatches = matches.slice(0, index);\n }\n }\n return boundaryMatches;\n}\n\nfunction getMatchesToLoad(\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n submission: Submission | undefined,\n location: Location,\n isRevalidationRequired: boolean,\n cancelledDeferredRoutes: string[],\n cancelledFetcherLoads: string[],\n pendingActionData?: RouteData,\n pendingError?: RouteData,\n fetchLoadMatches?: Map\n): [AgnosticDataRouteMatch[], RevalidatingFetcher[]] {\n let actionResult = pendingError\n ? Object.values(pendingError)[0]\n : pendingActionData\n ? Object.values(pendingActionData)[0]\n : undefined;\n\n // Pick navigation matches that are net-new or qualify for revalidation\n let boundaryId = pendingError ? Object.keys(pendingError)[0] : undefined;\n let boundaryMatches = getLoaderMatchesUntilBoundary(matches, boundaryId);\n let navigationMatches = boundaryMatches.filter(\n (match, index) =>\n match.route.loader != null &&\n (isNewLoader(state.loaderData, state.matches[index], match) ||\n // If this route had a pending deferred cancelled it must be revalidated\n cancelledDeferredRoutes.some((id) => id === match.route.id) ||\n shouldRevalidateLoader(\n state.location,\n state.matches[index],\n submission,\n location,\n match,\n isRevalidationRequired,\n actionResult\n ))\n );\n\n // Pick fetcher.loads that need to be revalidated\n let revalidatingFetchers: RevalidatingFetcher[] = [];\n fetchLoadMatches &&\n fetchLoadMatches.forEach(([href, match, fetchMatches], key) => {\n // This fetcher was cancelled from a prior action submission - force reload\n if (cancelledFetcherLoads.includes(key)) {\n revalidatingFetchers.push([key, href, match, fetchMatches]);\n } else if (isRevalidationRequired) {\n let shouldRevalidate = shouldRevalidateLoader(\n href,\n match,\n submission,\n href,\n match,\n isRevalidationRequired,\n actionResult\n );\n if (shouldRevalidate) {\n revalidatingFetchers.push([key, href, match, fetchMatches]);\n }\n }\n });\n\n return [navigationMatches, revalidatingFetchers];\n}\n\nfunction isNewLoader(\n currentLoaderData: RouteData,\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let isNew =\n // [a] -> [a, b]\n !currentMatch ||\n // [a, b] -> [a, c]\n match.route.id !== currentMatch.route.id;\n\n // Handle the case that we don't have data for a re-used route, potentially\n // from a prior error or from a cancelled pending deferred\n let isMissingData = currentLoaderData[match.route.id] === undefined;\n\n // Always load if this is a net-new route or we don't yet have data\n return isNew || isMissingData;\n}\n\nfunction isNewRouteInstance(\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let currentPath = currentMatch.route.path;\n return (\n // param change for this match, /users/123 -> /users/456\n currentMatch.pathname !== match.pathname ||\n // splat param changed, which is not present in match.path\n // e.g. /files/images/avatar.jpg -> files/finances.xls\n (currentPath &&\n currentPath.endsWith(\"*\") &&\n currentMatch.params[\"*\"] !== match.params[\"*\"])\n );\n}\n\nfunction shouldRevalidateLoader(\n currentLocation: string | Location,\n currentMatch: AgnosticDataRouteMatch,\n submission: Submission | undefined,\n location: string | Location,\n match: AgnosticDataRouteMatch,\n isRevalidationRequired: boolean,\n actionResult: DataResult | undefined\n) {\n let currentUrl = createClientSideURL(currentLocation);\n let currentParams = currentMatch.params;\n let nextUrl = createClientSideURL(location);\n let nextParams = match.params;\n\n // This is the default implementation as to when we revalidate. If the route\n // provides it's own implementation, then we give them full control but\n // provide this value so they can leverage it if needed after they check\n // their own specific use cases\n // Note that fetchers always provide the same current/next locations so the\n // URL-based checks here don't apply to fetcher shouldRevalidate calls\n let defaultShouldRevalidate =\n isNewRouteInstance(currentMatch, match) ||\n // Clicked the same link, resubmitted a GET form\n currentUrl.toString() === nextUrl.toString() ||\n // Search params affect all loaders\n currentUrl.search !== nextUrl.search ||\n // Forced revalidation due to submission, useRevalidate, or X-Remix-Revalidate\n isRevalidationRequired;\n\n if (match.route.shouldRevalidate) {\n let routeChoice = match.route.shouldRevalidate({\n currentUrl,\n currentParams,\n nextUrl,\n nextParams,\n ...submission,\n actionResult,\n defaultShouldRevalidate,\n });\n if (typeof routeChoice === \"boolean\") {\n return routeChoice;\n }\n }\n\n return defaultShouldRevalidate;\n}\n\nasync function callLoaderOrAction(\n type: \"loader\" | \"action\",\n request: Request,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n basename = \"/\",\n isStaticRequest: boolean = false,\n isRouteRequest: boolean = false,\n requestContext?: unknown\n): Promise {\n let resultType;\n let result;\n\n // Setup a promise we can race against so that abort signals short circuit\n let reject: () => void;\n let abortPromise = new Promise((_, r) => (reject = r));\n let onReject = () => reject();\n request.signal.addEventListener(\"abort\", onReject);\n\n try {\n let handler = match.route[type];\n invariant(\n handler,\n `Could not find the ${type} to run on the \"${match.route.id}\" route`\n );\n\n result = await Promise.race([\n handler({ request, params: match.params, context: requestContext }),\n abortPromise,\n ]);\n\n invariant(\n result !== undefined,\n `You defined ${type === \"action\" ? \"an action\" : \"a loader\"} for route ` +\n `\"${match.route.id}\" but didn't return anything from your \\`${type}\\` ` +\n `function. Please return a value or \\`null\\`.`\n );\n } catch (e) {\n resultType = ResultType.error;\n result = e;\n } finally {\n request.signal.removeEventListener(\"abort\", onReject);\n }\n\n if (isResponse(result)) {\n let status = result.status;\n\n // Process redirects\n if (redirectStatusCodes.has(status)) {\n let location = result.headers.get(\"Location\");\n invariant(\n location,\n \"Redirects returned/thrown from loaders/actions must have a Location header\"\n );\n\n let isAbsolute =\n /^[a-z+]+:\\/\\//i.test(location) || location.startsWith(\"//\");\n\n // Support relative routing in internal redirects\n if (!isAbsolute) {\n let activeMatches = matches.slice(0, matches.indexOf(match) + 1);\n let routePathnames = getPathContributingMatches(activeMatches).map(\n (match) => match.pathnameBase\n );\n let resolvedLocation = resolveTo(\n location,\n routePathnames,\n new URL(request.url).pathname\n );\n invariant(\n createPath(resolvedLocation),\n `Unable to resolve redirect location: ${location}`\n );\n\n // Prepend the basename to the redirect location if we have one\n if (basename) {\n let path = resolvedLocation.pathname;\n resolvedLocation.pathname =\n path === \"/\" ? basename : joinPaths([basename, path]);\n }\n\n location = createPath(resolvedLocation);\n }\n\n // Don't process redirects in the router during static requests requests.\n // Instead, throw the Response and let the server handle it with an HTTP\n // redirect. We also update the Location header in place in this flow so\n // basename and relative routing is taken into account\n if (isStaticRequest) {\n result.headers.set(\"Location\", location);\n throw result;\n }\n\n return {\n type: ResultType.redirect,\n status,\n location,\n revalidate: result.headers.get(\"X-Remix-Revalidate\") !== null,\n };\n }\n\n // For SSR single-route requests, we want to hand Responses back directly\n // without unwrapping. We do this with the QueryRouteResponse wrapper\n // interface so we can know whether it was returned or thrown\n if (isRouteRequest) {\n // eslint-disable-next-line no-throw-literal\n throw {\n type: resultType || ResultType.data,\n response: result,\n };\n }\n\n let data: any;\n let contentType = result.headers.get(\"Content-Type\");\n // Check between word boundaries instead of startsWith() due to the last\n // paragraph of https://httpwg.org/specs/rfc9110.html#field.content-type\n if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n data = await result.json();\n } else {\n data = await result.text();\n }\n\n if (resultType === ResultType.error) {\n return {\n type: resultType,\n error: new ErrorResponse(status, result.statusText, data),\n headers: result.headers,\n };\n }\n\n return {\n type: ResultType.data,\n data,\n statusCode: result.status,\n headers: result.headers,\n };\n }\n\n if (resultType === ResultType.error) {\n return { type: resultType, error: result };\n }\n\n if (result instanceof DeferredData) {\n return { type: ResultType.deferred, deferredData: result };\n }\n\n return { type: ResultType.data, data: result };\n}\n\n// Utility method for creating the Request instances for loaders/actions during\n// client-side navigations and fetches. During SSR we will always have a\n// Request instance from the static handler (query/queryRoute)\nfunction createClientSideRequest(\n location: string | Location,\n signal: AbortSignal,\n submission?: Submission\n): Request {\n let url = createClientSideURL(stripHashFromPath(location)).toString();\n let init: RequestInit = { signal };\n\n if (submission && isMutationMethod(submission.formMethod)) {\n let { formMethod, formEncType, formData } = submission;\n init.method = formMethod.toUpperCase();\n init.body =\n formEncType === \"application/x-www-form-urlencoded\"\n ? convertFormDataToSearchParams(formData)\n : formData;\n }\n\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n return new Request(url, init);\n}\n\nfunction convertFormDataToSearchParams(formData: FormData): URLSearchParams {\n let searchParams = new URLSearchParams();\n\n for (let [key, value] of formData.entries()) {\n invariant(\n typeof value === \"string\",\n 'File inputs are not supported with encType \"application/x-www-form-urlencoded\", ' +\n 'please use \"multipart/form-data\" instead.'\n );\n searchParams.append(key, value);\n }\n\n return searchParams;\n}\n\nfunction processRouteLoaderData(\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingError: RouteData | undefined,\n activeDeferreds?: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors: RouterState[\"errors\"] | null;\n statusCode: number;\n loaderHeaders: Record;\n} {\n // Fill in loaderData/errors from our loaders\n let loaderData: RouterState[\"loaderData\"] = {};\n let errors: RouterState[\"errors\"] | null = null;\n let statusCode: number | undefined;\n let foundError = false;\n let loaderHeaders: Record = {};\n\n // Process loader results into state.loaderData/state.errors\n results.forEach((result, index) => {\n let id = matchesToLoad[index].route.id;\n invariant(\n !isRedirectResult(result),\n \"Cannot handle redirect results in processLoaderData\"\n );\n if (isErrorResult(result)) {\n // Look upwards from the matched route for the closest ancestor\n // error boundary, defaulting to the root match\n let boundaryMatch = findNearestBoundary(matches, id);\n let error = result.error;\n // If we have a pending action error, we report it at the highest-route\n // that throws a loader error, and then clear it out to indicate that\n // it was consumed\n if (pendingError) {\n error = Object.values(pendingError)[0];\n pendingError = undefined;\n }\n\n errors = errors || {};\n\n // Prefer higher error values if lower errors bubble to the same boundary\n if (errors[boundaryMatch.route.id] == null) {\n errors[boundaryMatch.route.id] = error;\n }\n\n // Clear our any prior loaderData for the throwing route\n loaderData[id] = undefined;\n\n // Once we find our first (highest) error, we set the status code and\n // prevent deeper status codes from overriding\n if (!foundError) {\n foundError = true;\n statusCode = isRouteErrorResponse(result.error)\n ? result.error.status\n : 500;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else if (isDeferredResult(result)) {\n activeDeferreds && activeDeferreds.set(id, result.deferredData);\n loaderData[id] = result.deferredData.data;\n // TODO: Add statusCode/headers once we wire up streaming in Remix\n } else {\n loaderData[id] = result.data;\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (\n result.statusCode != null &&\n result.statusCode !== 200 &&\n !foundError\n ) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n }\n });\n\n // If we didn't consume the pending action error (i.e., all loaders\n // resolved), then consume it here. Also clear out any loaderData for the\n // throwing route\n if (pendingError) {\n errors = pendingError;\n loaderData[Object.keys(pendingError)[0]] = undefined;\n }\n\n return {\n loaderData,\n errors,\n statusCode: statusCode || 200,\n loaderHeaders,\n };\n}\n\nfunction processLoaderData(\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingError: RouteData | undefined,\n revalidatingFetchers: RevalidatingFetcher[],\n fetcherResults: DataResult[],\n activeDeferreds: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors?: RouterState[\"errors\"];\n} {\n let { loaderData, errors } = processRouteLoaderData(\n matches,\n matchesToLoad,\n results,\n pendingError,\n activeDeferreds\n );\n\n // Process results from our revalidating fetchers\n for (let index = 0; index < revalidatingFetchers.length; index++) {\n let [key, , match] = revalidatingFetchers[index];\n invariant(\n fetcherResults !== undefined && fetcherResults[index] !== undefined,\n \"Did not find corresponding fetcher result\"\n );\n let result = fetcherResults[index];\n\n // Process fetcher non-redirect errors\n if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, match.route.id);\n if (!(errors && errors[boundaryMatch.route.id])) {\n errors = {\n ...errors,\n [boundaryMatch.route.id]: result.error,\n };\n }\n state.fetchers.delete(key);\n } else if (isRedirectResult(result)) {\n // Should never get here, redirects should get processed above, but we\n // keep this to type narrow to a success result in the else\n throw new Error(\"Unhandled fetcher revalidation redirect\");\n } else if (isDeferredResult(result)) {\n // Should never get here, deferred data should be awaited for fetchers\n // in resolveDeferredResults\n throw new Error(\"Unhandled fetcher deferred data\");\n } else {\n let doneFetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: result.data,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n return { loaderData, errors };\n}\n\nfunction mergeLoaderData(\n loaderData: RouteData,\n newLoaderData: RouteData,\n matches: AgnosticDataRouteMatch[],\n errors: RouteData | null | undefined\n): RouteData {\n let mergedLoaderData = { ...newLoaderData };\n for (let match of matches) {\n let id = match.route.id;\n if (newLoaderData.hasOwnProperty(id)) {\n if (newLoaderData[id] !== undefined) {\n mergedLoaderData[id] = newLoaderData[id];\n } else {\n // No-op - this is so we ignore existing data if we have a key in the\n // incoming object with an undefined value, which is how we unset a prior\n // loaderData if we encounter a loader error\n }\n } else if (loaderData[id] !== undefined) {\n mergedLoaderData[id] = loaderData[id];\n }\n\n if (errors && errors.hasOwnProperty(id)) {\n // Don't keep any loader data below the boundary\n break;\n }\n }\n return mergedLoaderData;\n}\n\n// Find the nearest error boundary, looking upwards from the leaf route (or the\n// route specified by routeId) for the closest ancestor error boundary,\n// defaulting to the root match\nfunction findNearestBoundary(\n matches: AgnosticDataRouteMatch[],\n routeId?: string\n): AgnosticDataRouteMatch {\n let eligibleMatches = routeId\n ? matches.slice(0, matches.findIndex((m) => m.route.id === routeId) + 1)\n : [...matches];\n return (\n eligibleMatches.reverse().find((m) => m.route.hasErrorBoundary === true) ||\n matches[0]\n );\n}\n\nfunction getShortCircuitMatches(routes: AgnosticDataRouteObject[]): {\n matches: AgnosticDataRouteMatch[];\n route: AgnosticDataRouteObject;\n} {\n // Prefer a root layout route if present, otherwise shim in a route object\n let route = routes.find((r) => r.index || !r.path || r.path === \"/\") || {\n id: `__shim-error-route__`,\n };\n\n return {\n matches: [\n {\n params: {},\n pathname: \"\",\n pathnameBase: \"\",\n route,\n },\n ],\n route,\n };\n}\n\nfunction getInternalRouterError(\n status: number,\n {\n pathname,\n routeId,\n method,\n }: {\n pathname?: string;\n routeId?: string;\n method?: string;\n } = {}\n) {\n let statusText = \"Unknown Server Error\";\n let errorMessage = \"Unknown @remix-run/router error\";\n\n if (status === 400) {\n statusText = \"Bad Request\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method} request to \"${pathname}\" but ` +\n `did not provide a \\`loader\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else {\n errorMessage = \"Cannot submit binary form data using GET\";\n }\n } else if (status === 403) {\n statusText = \"Forbidden\";\n errorMessage = `Route \"${routeId}\" does not match URL \"${pathname}\"`;\n } else if (status === 404) {\n statusText = \"Not Found\";\n errorMessage = `No route matches URL \"${pathname}\"`;\n } else if (status === 405) {\n statusText = \"Method Not Allowed\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method.toUpperCase()} request to \"${pathname}\" but ` +\n `did not provide an \\`action\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (method) {\n errorMessage = `Invalid request method \"${method.toUpperCase()}\"`;\n }\n }\n\n return new ErrorResponse(\n status || 500,\n statusText,\n new Error(errorMessage),\n true\n );\n}\n\n// Find any returned redirect errors, starting from the lowest match\nfunction findRedirect(results: DataResult[]): RedirectResult | undefined {\n for (let i = results.length - 1; i >= 0; i--) {\n let result = results[i];\n if (isRedirectResult(result)) {\n return result;\n }\n }\n}\n\nfunction stripHashFromPath(path: To) {\n let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n return createPath({ ...parsedPath, hash: \"\" });\n}\n\nfunction isHashChangeOnly(a: Location, b: Location): boolean {\n return (\n a.pathname === b.pathname && a.search === b.search && a.hash !== b.hash\n );\n}\n\nfunction isDeferredResult(result: DataResult): result is DeferredResult {\n return result.type === ResultType.deferred;\n}\n\nfunction isErrorResult(result: DataResult): result is ErrorResult {\n return result.type === ResultType.error;\n}\n\nfunction isRedirectResult(result?: DataResult): result is RedirectResult {\n return (result && result.type) === ResultType.redirect;\n}\n\nfunction isResponse(value: any): value is Response {\n return (\n value != null &&\n typeof value.status === \"number\" &&\n typeof value.statusText === \"string\" &&\n typeof value.headers === \"object\" &&\n typeof value.body !== \"undefined\"\n );\n}\n\nfunction isRedirectResponse(result: any): result is Response {\n if (!isResponse(result)) {\n return false;\n }\n\n let status = result.status;\n let location = result.headers.get(\"Location\");\n return status >= 300 && status <= 399 && location != null;\n}\n\nfunction isQueryRouteResponse(obj: any): obj is QueryRouteResponse {\n return (\n obj &&\n isResponse(obj.response) &&\n (obj.type === ResultType.data || ResultType.error)\n );\n}\n\nfunction isValidMethod(method: string): method is FormMethod {\n return validRequestMethods.has(method as FormMethod);\n}\n\nfunction isMutationMethod(method?: string): method is MutationFormMethod {\n return validMutationMethods.has(method as MutationFormMethod);\n}\n\nasync function resolveDeferredResults(\n currentMatches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n signal: AbortSignal,\n isFetcher: boolean,\n currentLoaderData?: RouteData\n) {\n for (let index = 0; index < results.length; index++) {\n let result = results[index];\n let match = matchesToLoad[index];\n let currentMatch = currentMatches.find(\n (m) => m.route.id === match.route.id\n );\n let isRevalidatingLoader =\n currentMatch != null &&\n !isNewRouteInstance(currentMatch, match) &&\n (currentLoaderData && currentLoaderData[match.route.id]) !== undefined;\n\n if (isDeferredResult(result) && (isFetcher || isRevalidatingLoader)) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n await resolveDeferredData(result, signal, isFetcher).then((result) => {\n if (result) {\n results[index] = result || results[index];\n }\n });\n }\n }\n}\n\nasync function resolveDeferredData(\n result: DeferredResult,\n signal: AbortSignal,\n unwrap = false\n): Promise {\n let aborted = await result.deferredData.resolveData(signal);\n if (aborted) {\n return;\n }\n\n if (unwrap) {\n try {\n return {\n type: ResultType.data,\n data: result.deferredData.unwrappedData,\n };\n } catch (e) {\n // Handle any TrackedPromise._error values encountered while unwrapping\n return {\n type: ResultType.error,\n error: e,\n };\n }\n }\n\n return {\n type: ResultType.data,\n data: result.deferredData.data,\n };\n}\n\nfunction hasNakedIndexQuery(search: string): boolean {\n return new URLSearchParams(search).getAll(\"index\").some((v) => v === \"\");\n}\n\n// Note: This should match the format exported by useMatches, so if you change\n// this please also change that :) Eventually we'll DRY this up\nfunction createUseMatchesMatch(\n match: AgnosticDataRouteMatch,\n loaderData: RouteData\n): UseMatchesMatch {\n let { route, pathname, params } = match;\n return {\n id: route.id,\n pathname,\n params,\n data: loaderData[route.id] as unknown,\n handle: route.handle as unknown,\n };\n}\n\nfunction getTargetMatch(\n matches: AgnosticDataRouteMatch[],\n location: Location | string\n) {\n let search =\n typeof location === \"string\" ? parsePath(location).search : location.search;\n if (\n matches[matches.length - 1].route.index &&\n hasNakedIndexQuery(search || \"\")\n ) {\n // Return the leaf index route when index is present\n return matches[matches.length - 1];\n }\n // Otherwise grab the deepest \"path contributing\" match (ignoring index and\n // pathless layout routes)\n let pathMatches = getPathContributingMatches(matches);\n return pathMatches[pathMatches.length - 1];\n}\n//#endregion\n","/**\n * Copyright (c) Facebook, Inc. and its 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\nimport * as React from \"react\";\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction isPolyfill(x: any, y: any) {\n return (\n (x === y && (x !== 0 || 1 / x === 1 / y)) || (x !== x && y !== y) // eslint-disable-line no-self-compare\n );\n}\n\nconst is: (x: any, y: any) => boolean =\n typeof Object.is === \"function\" ? Object.is : isPolyfill;\n\n// Intentionally not using named imports because Rollup uses dynamic\n// dispatch for CommonJS interop named imports.\nconst { useState, useEffect, useLayoutEffect, useDebugValue } = React;\n\nlet didWarnOld18Alpha = false;\nlet didWarnUncachedGetSnapshot = false;\n\n// Disclaimer: This shim breaks many of the rules of React, and only works\n// because of a very particular set of implementation details and assumptions\n// -- change any one of them and it will break. The most important assumption\n// is that updates are always synchronous, because concurrent rendering is\n// only available in versions of React that also have a built-in\n// useSyncExternalStore API. And we only use this shim when the built-in API\n// does not exist.\n//\n// Do not assume that the clever hacks used by this hook also work in general.\n// The point of this shim is to replace the need for hacks by other libraries.\nexport function useSyncExternalStore(\n subscribe: (fn: () => void) => () => void,\n getSnapshot: () => T,\n // Note: The shim does not use getServerSnapshot, because pre-18 versions of\n // React do not expose a way to check if we're hydrating. So users of the shim\n // will need to track that themselves and return the correct value\n // from `getSnapshot`.\n getServerSnapshot?: () => T\n): T {\n if (__DEV__) {\n if (!didWarnOld18Alpha) {\n if (\"startTransition\" in React) {\n didWarnOld18Alpha = true;\n console.error(\n \"You are using an outdated, pre-release alpha of React 18 that \" +\n \"does not support useSyncExternalStore. The \" +\n \"use-sync-external-store shim will not work correctly. Upgrade \" +\n \"to a newer pre-release.\"\n );\n }\n }\n }\n\n // Read the current snapshot from the store on every render. Again, this\n // breaks the rules of React, and only works here because of specific\n // implementation details, most importantly that updates are\n // always synchronous.\n const value = getSnapshot();\n if (__DEV__) {\n if (!didWarnUncachedGetSnapshot) {\n const cachedValue = getSnapshot();\n if (!is(value, cachedValue)) {\n console.error(\n \"The result of getSnapshot should be cached to avoid an infinite loop\"\n );\n didWarnUncachedGetSnapshot = true;\n }\n }\n }\n\n // Because updates are synchronous, we don't queue them. Instead we force a\n // re-render whenever the subscribed state changes by updating an some\n // arbitrary useState hook. Then, during render, we call getSnapshot to read\n // the current value.\n //\n // Because we don't actually use the state returned by the useState hook, we\n // can save a bit of memory by storing other stuff in that slot.\n //\n // To implement the early bailout, we need to track some things on a mutable\n // object. Usually, we would put that in a useRef hook, but we can stash it in\n // our useState hook instead.\n //\n // To force a re-render, we call forceUpdate({inst}). That works because the\n // new object always fails an equality check.\n const [{ inst }, forceUpdate] = useState({ inst: { value, getSnapshot } });\n\n // Track the latest getSnapshot function with a ref. This needs to be updated\n // in the layout phase so we can access it during the tearing check that\n // happens on subscribe.\n useLayoutEffect(() => {\n inst.value = value;\n inst.getSnapshot = getSnapshot;\n\n // Whenever getSnapshot or subscribe changes, we need to check in the\n // commit phase if there was an interleaved mutation. In concurrent mode\n // this can happen all the time, but even in synchronous mode, an earlier\n // effect may have mutated the store.\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({ inst });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [subscribe, value, getSnapshot]);\n\n useEffect(() => {\n // Check for changes right before subscribing. Subsequent changes will be\n // detected in the subscription handler.\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({ inst });\n }\n const handleStoreChange = () => {\n // TODO: Because there is no cross-renderer API for batching updates, it's\n // up to the consumer of this library to wrap their subscription event\n // with unstable_batchedUpdates. Should we try to detect when this isn't\n // the case and print a warning in development?\n\n // The store changed. Check if the snapshot changed since the last time we\n // read from the store.\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({ inst });\n }\n };\n // Subscribe to the store and return a clean-up function.\n return subscribe(handleStoreChange);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [subscribe]);\n\n useDebugValue(value);\n return value;\n}\n\nfunction checkIfSnapshotChanged(inst: any) {\n const latestGetSnapshot = inst.getSnapshot;\n const prevValue = inst.value;\n try {\n const nextValue = latestGetSnapshot();\n return !is(prevValue, nextValue);\n } catch (error) {\n return true;\n }\n}\n","/**\n * Inlined into the react-router repo since use-sync-external-store does not\n * provide a UMD-compatible package, so we need this to be able to distribute\n * UMD react-router bundles\n */\n\n/**\n * Copyright (c) Facebook, Inc. and its 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 * @flow\n */\n\nimport * as React from \"react\";\n\nimport { useSyncExternalStore as client } from \"./useSyncExternalStoreShimClient\";\nimport { useSyncExternalStore as server } from \"./useSyncExternalStoreShimServer\";\n\nconst canUseDOM: boolean = !!(\n typeof window !== \"undefined\" &&\n typeof window.document !== \"undefined\" &&\n typeof window.document.createElement !== \"undefined\"\n);\nconst isServerEnvironment = !canUseDOM;\nconst shim = isServerEnvironment ? server : client;\n\nexport const useSyncExternalStore =\n \"useSyncExternalStore\" in React\n ? ((module) => module.useSyncExternalStore)(React)\n : shim;\n","import * as React from \"react\";\nimport type {\n AgnosticRouteMatch,\n AgnosticIndexRouteObject,\n AgnosticNonIndexRouteObject,\n History,\n Location,\n Router,\n StaticHandlerContext,\n To,\n TrackedPromise,\n} from \"@remix-run/router\";\nimport type { Action as NavigationType } from \"@remix-run/router\";\n\n// Create react-specific types from the agnostic types in @remix-run/router to\n// export from react-router\nexport interface IndexRouteObject {\n caseSensitive?: AgnosticIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticIndexRouteObject[\"path\"];\n id?: AgnosticIndexRouteObject[\"id\"];\n loader?: AgnosticIndexRouteObject[\"loader\"];\n action?: AgnosticIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticIndexRouteObject[\"handle\"];\n index: true;\n children?: undefined;\n element?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n}\n\nexport interface NonIndexRouteObject {\n caseSensitive?: AgnosticNonIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticNonIndexRouteObject[\"path\"];\n id?: AgnosticNonIndexRouteObject[\"id\"];\n loader?: AgnosticNonIndexRouteObject[\"loader\"];\n action?: AgnosticNonIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticNonIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticNonIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticNonIndexRouteObject[\"handle\"];\n index?: false;\n children?: RouteObject[];\n element?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n}\n\nexport type RouteObject = IndexRouteObject | NonIndexRouteObject;\n\nexport type DataRouteObject = RouteObject & {\n children?: DataRouteObject[];\n id: string;\n};\n\nexport interface RouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends RouteObject = RouteObject\n> extends AgnosticRouteMatch {}\n\nexport interface DataRouteMatch extends RouteMatch {}\n\n// Contexts for data routers\nexport const DataStaticRouterContext =\n React.createContext(null);\nif (__DEV__) {\n DataStaticRouterContext.displayName = \"DataStaticRouterContext\";\n}\n\nexport interface DataRouterContextObject extends NavigationContextObject {\n router: Router;\n}\n\nexport const DataRouterContext =\n React.createContext(null);\nif (__DEV__) {\n DataRouterContext.displayName = \"DataRouter\";\n}\n\nexport const DataRouterStateContext = React.createContext<\n Router[\"state\"] | null\n>(null);\nif (__DEV__) {\n DataRouterStateContext.displayName = \"DataRouterState\";\n}\n\nexport const AwaitContext = React.createContext(null);\nif (__DEV__) {\n AwaitContext.displayName = \"Await\";\n}\n\nexport type RelativeRoutingType = \"route\" | \"path\";\n\nexport interface NavigateOptions {\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n}\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport interface Navigator {\n createHref: History[\"createHref\"];\n // Optional for backwards-compat with Router/HistoryRouter usage (edge case)\n encodeLocation?: History[\"encodeLocation\"];\n go: History[\"go\"];\n push(to: To, state?: any, opts?: NavigateOptions): void;\n replace(to: To, state?: any, opts?: NavigateOptions): void;\n}\n\ninterface NavigationContextObject {\n basename: string;\n navigator: Navigator;\n static: boolean;\n}\n\nexport const NavigationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n location: Location;\n navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n LocationContext.displayName = \"Location\";\n}\n\nexport interface RouteContextObject {\n outlet: React.ReactElement | null;\n matches: RouteMatch[];\n}\n\nexport const RouteContext = React.createContext({\n outlet: null,\n matches: [],\n});\n\nif (__DEV__) {\n RouteContext.displayName = \"Route\";\n}\n\nexport const RouteErrorContext = React.createContext(null);\n\nif (__DEV__) {\n RouteErrorContext.displayName = \"RouteError\";\n}\n","import * as React from \"react\";\nimport type {\n Location,\n ParamParseKey,\n Params,\n Path,\n PathMatch,\n PathPattern,\n Router as RemixRouter,\n To,\n} from \"@remix-run/router\";\nimport {\n Action as NavigationType,\n invariant,\n isRouteErrorResponse,\n joinPaths,\n matchPath,\n matchRoutes,\n parsePath,\n resolveTo,\n warning,\n UNSAFE_getPathContributingMatches as getPathContributingMatches,\n} from \"@remix-run/router\";\n\nimport type {\n NavigateOptions,\n RouteContextObject,\n RouteMatch,\n RouteObject,\n DataRouteMatch,\n RelativeRoutingType,\n} from \"./context\";\nimport {\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n RouteErrorContext,\n AwaitContext,\n DataStaticRouterContext,\n} from \"./context\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/hooks/use-href\n */\nexport function useHref(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): string {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useHref() may be used only in the context of a component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { hash, pathname, search } = useResolvedPath(to, { relative });\n\n let joinedPathname = pathname;\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to creating the href. If this is a root navigation, then just use the raw\n // basename which allows the basename to have full control over the presence\n // of a trailing slash on root links\n if (basename !== \"/\") {\n joinedPathname =\n pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n }\n\n return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a .\n *\n * @see https://reactrouter.com/hooks/use-in-router-context\n */\nexport function useInRouterContext(): boolean {\n return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/hooks/use-location\n */\nexport function useLocation(): Location {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useLocation() may be used only in the context of a component.`\n );\n\n return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/hooks/use-navigation-type\n */\nexport function useNavigationType(): NavigationType {\n return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns a PathMatch object if the given pattern matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * .\n *\n * @see https://reactrouter.com/hooks/use-match\n */\nexport function useMatch<\n ParamKey extends ParamParseKey,\n Path extends string\n>(pattern: PathPattern | Path): PathMatch | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useMatch() may be used only in the context of a component.`\n );\n\n let { pathname } = useLocation();\n return React.useMemo(\n () => matchPath(pattern, pathname),\n [pathname, pattern]\n );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n (to: To, options?: NavigateOptions): void;\n (delta: number): void;\n}\n\n/**\n * Returns an imperative method for changing the location. Used by s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/hooks/use-navigate\n */\nexport function useNavigate(): NavigateFunction {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useNavigate() may be used only in the context of a component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n getPathContributingMatches(matches).map((match) => match.pathnameBase)\n );\n\n let activeRef = React.useRef(false);\n React.useEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(\n activeRef.current,\n `You should call navigate() in a React.useEffect(), not when ` +\n `your component is first rendered.`\n );\n\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n navigator.go(to);\n return;\n }\n\n let path = resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n options.relative === \"path\"\n );\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to handing off to history. If this is a root navigation, then we\n // navigate to the raw basename which allows the basename to have full\n // control over the presence of a trailing slash on root links\n if (basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\"\n ? basename\n : joinPaths([basename, path.pathname]);\n }\n\n (!!options.replace ? navigator.replace : navigator.push)(\n path,\n options.state,\n options\n );\n },\n [basename, navigator, routePathnamesJson, locationPathname]\n );\n\n return navigate;\n}\n\nconst OutletContext = React.createContext(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/hooks/use-outlet-context\n */\nexport function useOutletContext(): Context {\n return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by to render child routes.\n *\n * @see https://reactrouter.com/hooks/use-outlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n let outlet = React.useContext(RouteContext).outlet;\n if (outlet) {\n return (\n {outlet}\n );\n }\n return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/hooks/use-params\n */\nexport function useParams<\n ParamsOrKey extends string | Record = string\n>(): Readonly<\n [ParamsOrKey] extends [string] ? Params : Partial\n> {\n let { matches } = React.useContext(RouteContext);\n let routeMatch = matches[matches.length - 1];\n return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/hooks/use-resolved-path\n */\nexport function useResolvedPath(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): Path {\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n getPathContributingMatches(matches).map((match) => match.pathnameBase)\n );\n\n return React.useMemo(\n () =>\n resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n relative === \"path\"\n ),\n [to, routePathnamesJson, locationPathname, relative]\n );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an to render their child route's\n * element.\n *\n * @see https://reactrouter.com/hooks/use-routes\n */\nexport function useRoutes(\n routes: RouteObject[],\n locationArg?: Partial | string\n): React.ReactElement | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useRoutes() may be used only in the context of a component.`\n );\n\n let { navigator } = React.useContext(NavigationContext);\n let dataRouterStateContext = React.useContext(DataRouterStateContext);\n let { matches: parentMatches } = React.useContext(RouteContext);\n let routeMatch = parentMatches[parentMatches.length - 1];\n let parentParams = routeMatch ? routeMatch.params : {};\n let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n let parentRoute = routeMatch && routeMatch.route;\n\n if (__DEV__) {\n // You won't get a warning about 2 different under a \n // without a trailing *, but this is a best-effort warning anyway since we\n // cannot even give the warning unless they land at the parent route.\n //\n // Example:\n //\n // \n // {/* This route path MUST end with /* because otherwise\n // it will never match /blog/post/123 */}\n // } />\n // } />\n // \n //\n // function Blog() {\n // return (\n // \n // } />\n // \n // );\n // }\n let parentPath = (parentRoute && parentRoute.path) || \"\";\n warningOnce(\n parentPathname,\n !parentRoute || parentPath.endsWith(\"*\"),\n `You rendered descendant (or called \\`useRoutes()\\`) at ` +\n `\"${parentPathname}\" (under ) but the ` +\n `parent route path has no trailing \"*\". This means if you navigate ` +\n `deeper, the parent won't match anymore and therefore the child ` +\n `routes will never render.\\n\\n` +\n `Please change the parent to .`\n );\n }\n\n let locationFromContext = useLocation();\n\n let location;\n if (locationArg) {\n let parsedLocationArg =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n invariant(\n parentPathnameBase === \"/\" ||\n parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n `When overriding the location using \\`\\` or \\`useRoutes(routes, location)\\`, ` +\n `the location pathname must begin with the portion of the URL pathname that was ` +\n `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n );\n\n location = parsedLocationArg;\n } else {\n location = locationFromContext;\n }\n\n let pathname = location.pathname || \"/\";\n let remainingPathname =\n parentPathnameBase === \"/\"\n ? pathname\n : pathname.slice(parentPathnameBase.length) || \"/\";\n\n let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n if (__DEV__) {\n warning(\n parentRoute || matches != null,\n `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n );\n\n warning(\n matches == null ||\n matches[matches.length - 1].route.element !== undefined,\n `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" does not have an element. ` +\n `This means it will render an with a null value by default resulting in an \"empty\" page.`\n );\n }\n\n let renderedMatches = _renderMatches(\n matches &&\n matches.map((match) =>\n Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathname).pathname\n : match.pathname,\n ]),\n pathnameBase:\n match.pathnameBase === \"/\"\n ? parentPathnameBase\n : joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathnameBase).pathname\n : match.pathnameBase,\n ]),\n })\n ),\n parentMatches,\n dataRouterStateContext || undefined\n );\n\n // When a user passes in a `locationArg`, the associated routes need to\n // be wrapped in a new `LocationContext.Provider` in order for `useLocation`\n // to use the scoped location instead of the global location.\n if (locationArg && renderedMatches) {\n return (\n \n {renderedMatches}\n \n );\n }\n\n return renderedMatches;\n}\n\nfunction DefaultErrorElement() {\n let error = useRouteError();\n let message = isRouteErrorResponse(error)\n ? `${error.status} ${error.statusText}`\n : error instanceof Error\n ? error.message\n : JSON.stringify(error);\n let stack = error instanceof Error ? error.stack : null;\n let lightgrey = \"rgba(200,200,200, 0.5)\";\n let preStyles = { padding: \"0.5rem\", backgroundColor: lightgrey };\n let codeStyles = { padding: \"2px 4px\", backgroundColor: lightgrey };\n return (\n <>\n

Unhandled Thrown Error!

\n

{message}

\n {stack ?
{stack}
: null}\n

💿 Hey developer 👋

\n

\n You can provide a way better UX than this when your app throws errors by\n providing your own \n errorElement props on \n <Route>\n

\n \n );\n}\n\ntype RenderErrorBoundaryProps = React.PropsWithChildren<{\n location: Location;\n error: any;\n component: React.ReactNode;\n routeContext: RouteContextObject;\n}>;\n\ntype RenderErrorBoundaryState = {\n location: Location;\n error: any;\n};\n\nexport class RenderErrorBoundary extends React.Component<\n RenderErrorBoundaryProps,\n RenderErrorBoundaryState\n> {\n constructor(props: RenderErrorBoundaryProps) {\n super(props);\n this.state = {\n location: props.location,\n error: props.error,\n };\n }\n\n static getDerivedStateFromError(error: any) {\n return { error: error };\n }\n\n static getDerivedStateFromProps(\n props: RenderErrorBoundaryProps,\n state: RenderErrorBoundaryState\n ) {\n // When we get into an error state, the user will likely click \"back\" to the\n // previous page that didn't have an error. Because this wraps the entire\n // application, that will have no effect--the error page continues to display.\n // This gives us a mechanism to recover from the error when the location changes.\n //\n // Whether we're in an error state or not, we update the location in state\n // so that when we are in an error state, it gets reset when a new location\n // comes in and the user recovers from the error.\n if (state.location !== props.location) {\n return {\n error: props.error,\n location: props.location,\n };\n }\n\n // If we're not changing locations, preserve the location but still surface\n // any new errors that may come through. We retain the existing error, we do\n // this because the error provided from the app state may be cleared without\n // the location changing.\n return {\n error: props.error || state.error,\n location: state.location,\n };\n }\n\n componentDidCatch(error: any, errorInfo: any) {\n console.error(\n \"React Router caught the following error during render\",\n error,\n errorInfo\n );\n }\n\n render() {\n return this.state.error ? (\n \n \n \n ) : (\n this.props.children\n );\n }\n}\n\ninterface RenderedRouteProps {\n routeContext: RouteContextObject;\n match: RouteMatch;\n children: React.ReactNode | null;\n}\n\nfunction RenderedRoute({ routeContext, match, children }: RenderedRouteProps) {\n let dataStaticRouterContext = React.useContext(DataStaticRouterContext);\n\n // Track how deep we got in our render pass to emulate SSR componentDidCatch\n // in a DataStaticRouter\n if (dataStaticRouterContext && match.route.errorElement) {\n dataStaticRouterContext._deepestRenderedBoundaryId = match.route.id;\n }\n\n return (\n \n {children}\n \n );\n}\n\nexport function _renderMatches(\n matches: RouteMatch[] | null,\n parentMatches: RouteMatch[] = [],\n dataRouterState?: RemixRouter[\"state\"]\n): React.ReactElement | null {\n if (matches == null) {\n if (dataRouterState?.errors) {\n // Don't bail if we have data router errors so we can render them in the\n // boundary. Use the pre-matched (or shimmed) matches\n matches = dataRouterState.matches as DataRouteMatch[];\n } else {\n return null;\n }\n }\n\n let renderedMatches = matches;\n\n // If we have data errors, trim matches to the highest error boundary\n let errors = dataRouterState?.errors;\n if (errors != null) {\n let errorIndex = renderedMatches.findIndex(\n (m) => m.route.id && errors?.[m.route.id]\n );\n invariant(\n errorIndex >= 0,\n `Could not find a matching route for the current errors: ${errors}`\n );\n renderedMatches = renderedMatches.slice(\n 0,\n Math.min(renderedMatches.length, errorIndex + 1)\n );\n }\n\n return renderedMatches.reduceRight((outlet, match, index) => {\n let error = match.route.id ? errors?.[match.route.id] : null;\n // Only data routers handle errors\n let errorElement = dataRouterState\n ? match.route.errorElement || \n : null;\n let matches = parentMatches.concat(renderedMatches.slice(0, index + 1));\n let getChildren = () => (\n \n {error\n ? errorElement\n : match.route.element !== undefined\n ? match.route.element\n : outlet}\n \n );\n // Only wrap in an error boundary within data router usages when we have an\n // errorElement on this route. Otherwise let it bubble up to an ancestor\n // errorElement\n return dataRouterState && (match.route.errorElement || index === 0) ? (\n \n ) : (\n getChildren()\n );\n }, null as React.ReactElement | null);\n}\n\nenum DataRouterHook {\n UseRevalidator = \"useRevalidator\",\n}\n\nenum DataRouterStateHook {\n UseLoaderData = \"useLoaderData\",\n UseActionData = \"useActionData\",\n UseRouteError = \"useRouteError\",\n UseNavigation = \"useNavigation\",\n UseRouteLoaderData = \"useRouteLoaderData\",\n UseMatches = \"useMatches\",\n UseRevalidator = \"useRevalidator\",\n}\n\nfunction getDataRouterConsoleError(\n hookName: DataRouterHook | DataRouterStateHook\n) {\n return `${hookName} must be used within a data router. See https://reactrouter.com/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n let ctx = React.useContext(DataRouterContext);\n invariant(ctx, getDataRouterConsoleError(hookName));\n return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n let state = React.useContext(DataRouterStateContext);\n invariant(state, getDataRouterConsoleError(hookName));\n return state;\n}\n\nfunction useRouteContext(hookName: DataRouterStateHook) {\n let route = React.useContext(RouteContext);\n invariant(route, getDataRouterConsoleError(hookName));\n return route;\n}\n\nfunction useCurrentRouteId(hookName: DataRouterStateHook) {\n let route = useRouteContext(hookName);\n let thisRoute = route.matches[route.matches.length - 1];\n invariant(\n thisRoute.route.id,\n `${hookName} can only be used on routes that contain a unique \"id\"`\n );\n return thisRoute.route.id;\n}\n\n/**\n * Returns the current navigation, defaulting to an \"idle\" navigation when\n * no navigation is in progress\n */\nexport function useNavigation() {\n let state = useDataRouterState(DataRouterStateHook.UseNavigation);\n return state.navigation;\n}\n\n/**\n * Returns a revalidate function for manually triggering revalidation, as well\n * as the current state of any manual revalidations\n */\nexport function useRevalidator() {\n let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);\n let state = useDataRouterState(DataRouterStateHook.UseRevalidator);\n return {\n revalidate: dataRouterContext.router.revalidate,\n state: state.revalidation,\n };\n}\n\n/**\n * Returns the active route matches, useful for accessing loaderData for\n * parent/child routes or the route \"handle\" property\n */\nexport function useMatches() {\n let { matches, loaderData } = useDataRouterState(\n DataRouterStateHook.UseMatches\n );\n return React.useMemo(\n () =>\n matches.map((match) => {\n let { pathname, params } = match;\n // Note: This structure matches that created by createUseMatchesMatch\n // in the @remix-run/router , so if you change this please also change\n // that :) Eventually we'll DRY this up\n return {\n id: match.route.id,\n pathname,\n params,\n data: loaderData[match.route.id] as unknown,\n handle: match.route.handle as unknown,\n };\n }),\n [matches, loaderData]\n );\n}\n\n/**\n * Returns the loader data for the nearest ancestor Route loader\n */\nexport function useLoaderData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseLoaderData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n\n if (state.errors && state.errors[routeId] != null) {\n console.error(\n `You cannot \\`useLoaderData\\` in an errorElement (routeId: ${routeId})`\n );\n return undefined;\n }\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the loaderData for the given routeId\n */\nexport function useRouteLoaderData(routeId: string): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the action data for the nearest ancestor Route action\n */\nexport function useActionData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseActionData);\n\n let route = React.useContext(RouteContext);\n invariant(route, `useActionData must be used inside a RouteContext`);\n\n return Object.values(state?.actionData || {})[0];\n}\n\n/**\n * Returns the nearest ancestor Route error, which could be a loader/action\n * error or a render error. This is intended to be called from your\n * errorElement to display a proper error message.\n */\nexport function useRouteError(): unknown {\n let error = React.useContext(RouteErrorContext);\n let state = useDataRouterState(DataRouterStateHook.UseRouteError);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseRouteError);\n\n // If this was a render error, we put it in a RouteError context inside\n // of RenderErrorBoundary\n if (error) {\n return error;\n }\n\n // Otherwise look for errors from our data router state\n return state.errors?.[routeId];\n}\n\n/**\n * Returns the happy-path data from the nearest ancestor value\n */\nexport function useAsyncValue(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._data;\n}\n\n/**\n * Returns the error from the nearest ancestor value\n */\nexport function useAsyncError(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._error;\n}\n\nconst alreadyWarned: Record = {};\n\nfunction warningOnce(key: string, cond: boolean, message: string) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n warning(false, message);\n }\n}\n","import * as React from \"react\";\nimport type {\n TrackedPromise,\n InitialEntry,\n Location,\n MemoryHistory,\n Router as RemixRouter,\n RouterState,\n To,\n} from \"@remix-run/router\";\nimport {\n Action as NavigationType,\n AbortedDeferredError,\n createMemoryHistory,\n invariant,\n parsePath,\n stripBasename,\n warning,\n} from \"@remix-run/router\";\nimport { useSyncExternalStore as useSyncExternalStoreShim } from \"./use-sync-external-store-shim\";\n\nimport type {\n DataRouteObject,\n IndexRouteObject,\n RouteMatch,\n RouteObject,\n Navigator,\n NonIndexRouteObject,\n RelativeRoutingType,\n} from \"./context\";\nimport {\n LocationContext,\n NavigationContext,\n DataRouterContext,\n DataRouterStateContext,\n AwaitContext,\n} from \"./context\";\nimport {\n useAsyncValue,\n useInRouterContext,\n useNavigate,\n useOutlet,\n useRoutes,\n _renderMatches,\n} from \"./hooks\";\n\nexport interface RouterProviderProps {\n fallbackElement?: React.ReactNode;\n router: RemixRouter;\n}\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nexport function RouterProvider({\n fallbackElement,\n router,\n}: RouterProviderProps): React.ReactElement {\n // Sync router state to our component state to force re-renders\n let state: RouterState = useSyncExternalStoreShim(\n router.subscribe,\n () => router.state,\n // We have to provide this so React@18 doesn't complain during hydration,\n // but we pass our serialized hydration data into the router so state here\n // is already synced with what the server saw\n () => router.state\n );\n\n let navigator = React.useMemo((): Navigator => {\n return {\n createHref: router.createHref,\n encodeLocation: router.encodeLocation,\n go: (n) => router.navigate(n),\n push: (to, state, opts) =>\n router.navigate(to, {\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n replace: (to, state, opts) =>\n router.navigate(to, {\n replace: true,\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n };\n }, [router]);\n\n let basename = router.basename || \"/\";\n\n return (\n \n \n \n {router.state.initialized ? : fallbackElement}\n
\n \n \n );\n}\n\nexport interface MemoryRouterProps {\n basename?: string;\n children?: React.ReactNode;\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n}\n\n/**\n * A that stores all entries in memory.\n *\n * @see https://reactrouter.com/router-components/memory-router\n */\nexport function MemoryRouter({\n basename,\n children,\n initialEntries,\n initialIndex,\n}: MemoryRouterProps): React.ReactElement {\n let historyRef = React.useRef();\n if (historyRef.current == null) {\n historyRef.current = createMemoryHistory({\n initialEntries,\n initialIndex,\n v5Compat: true,\n });\n }\n\n let history = historyRef.current;\n let [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n \n );\n}\n\nexport interface NavigateProps {\n to: To;\n replace?: boolean;\n state?: any;\n relative?: RelativeRoutingType;\n}\n\n/**\n * Changes the current location.\n *\n * Note: This API is mostly useful in React.Component subclasses that are not\n * able to use hooks. In functional components, we recommend you use the\n * `useNavigate` hook instead.\n *\n * @see https://reactrouter.com/components/navigate\n */\nexport function Navigate({\n to,\n replace,\n state,\n relative,\n}: NavigateProps): null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of\n // the router loaded. We can help them understand how to avoid that.\n ` may be used only in the context of a component.`\n );\n\n warning(\n !React.useContext(NavigationContext).static,\n ` must not be used on the initial render in a . ` +\n `This is a no-op, but you should modify your code so the is ` +\n `only ever rendered in response to some user interaction or state change.`\n );\n\n let dataRouterState = React.useContext(DataRouterStateContext);\n let navigate = useNavigate();\n\n React.useEffect(() => {\n // Avoid kicking off multiple navigations if we're in the middle of a\n // data-router navigation, since components get re-rendered when we enter\n // a submitting/loading state\n if (dataRouterState && dataRouterState.navigation.state !== \"idle\") {\n return;\n }\n navigate(to, { replace, state, relative });\n });\n\n return null;\n}\n\nexport interface OutletProps {\n context?: unknown;\n}\n\n/**\n * Renders the child route's element, if there is one.\n *\n * @see https://reactrouter.com/components/outlet\n */\nexport function Outlet(props: OutletProps): React.ReactElement | null {\n return useOutlet(props.context);\n}\n\nexport interface PathRouteProps {\n caseSensitive?: NonIndexRouteObject[\"caseSensitive\"];\n path?: NonIndexRouteObject[\"path\"];\n id?: NonIndexRouteObject[\"id\"];\n loader?: NonIndexRouteObject[\"loader\"];\n action?: NonIndexRouteObject[\"action\"];\n hasErrorBoundary?: NonIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: NonIndexRouteObject[\"shouldRevalidate\"];\n handle?: NonIndexRouteObject[\"handle\"];\n index?: false;\n children?: React.ReactNode;\n element?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n}\n\nexport interface LayoutRouteProps extends PathRouteProps {}\n\nexport interface IndexRouteProps {\n caseSensitive?: IndexRouteObject[\"caseSensitive\"];\n path?: IndexRouteObject[\"path\"];\n id?: IndexRouteObject[\"id\"];\n loader?: IndexRouteObject[\"loader\"];\n action?: IndexRouteObject[\"action\"];\n hasErrorBoundary?: IndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: IndexRouteObject[\"shouldRevalidate\"];\n handle?: IndexRouteObject[\"handle\"];\n index: true;\n children?: undefined;\n element?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n}\n\nexport type RouteProps = PathRouteProps | LayoutRouteProps | IndexRouteProps;\n\n/**\n * Declares an element that should be rendered at a certain URL path.\n *\n * @see https://reactrouter.com/components/route\n */\nexport function Route(_props: RouteProps): React.ReactElement | null {\n invariant(\n false,\n `A is only ever to be used as the child of element, ` +\n `never rendered directly. Please wrap your in a .`\n );\n}\n\nexport interface RouterProps {\n basename?: string;\n children?: React.ReactNode;\n location: Partial | string;\n navigationType?: NavigationType;\n navigator: Navigator;\n static?: boolean;\n}\n\n/**\n * Provides location context for the rest of the app.\n *\n * Note: You usually won't render a directly. Instead, you'll render a\n * router that is more specific to your environment such as a \n * in web browsers or a for server rendering.\n *\n * @see https://reactrouter.com/router-components/router\n */\nexport function Router({\n basename: basenameProp = \"/\",\n children = null,\n location: locationProp,\n navigationType = NavigationType.Pop,\n navigator,\n static: staticProp = false,\n}: RouterProps): React.ReactElement | null {\n invariant(\n !useInRouterContext(),\n `You cannot render a inside another .` +\n ` You should never have more than one in your app.`\n );\n\n // Preserve trailing slashes on basename, so we can let the user control\n // the enforcement of trailing slashes throughout the app\n let basename = basenameProp.replace(/^\\/*/, \"/\");\n let navigationContext = React.useMemo(\n () => ({ basename, navigator, static: staticProp }),\n [basename, navigator, staticProp]\n );\n\n if (typeof locationProp === \"string\") {\n locationProp = parsePath(locationProp);\n }\n\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n state = null,\n key = \"default\",\n } = locationProp;\n\n let location = React.useMemo(() => {\n let trailingPathname = stripBasename(pathname, basename);\n\n if (trailingPathname == null) {\n return null;\n }\n\n return {\n pathname: trailingPathname,\n search,\n hash,\n state,\n key,\n };\n }, [basename, pathname, search, hash, state, key]);\n\n warning(\n location != null,\n ` is not able to match the URL ` +\n `\"${pathname}${search}${hash}\" because it does not start with the ` +\n `basename, so the won't render anything.`\n );\n\n if (location == null) {\n return null;\n }\n\n return (\n \n \n \n );\n}\n\nexport interface RoutesProps {\n children?: React.ReactNode;\n location?: Partial | string;\n}\n\n/**\n * A container for a nested tree of elements that renders the branch\n * that best matches the current location.\n *\n * @see https://reactrouter.com/components/routes\n */\nexport function Routes({\n children,\n location,\n}: RoutesProps): React.ReactElement | null {\n let dataRouterContext = React.useContext(DataRouterContext);\n // When in a DataRouterContext _without_ children, we use the router routes\n // directly. If we have children, then we're in a descendant tree and we\n // need to use child routes.\n let routes =\n dataRouterContext && !children\n ? (dataRouterContext.router.routes as DataRouteObject[])\n : createRoutesFromChildren(children);\n return useRoutes(routes, location);\n}\n\nexport interface AwaitResolveRenderFunction {\n (data: Awaited): React.ReactElement;\n}\n\nexport interface AwaitProps {\n children: React.ReactNode | AwaitResolveRenderFunction;\n errorElement?: React.ReactNode;\n resolve: TrackedPromise | any;\n}\n\n/**\n * Component to use for rendering lazily loaded data from returning defer()\n * in a loader function\n */\nexport function Await({ children, errorElement, resolve }: AwaitProps) {\n return (\n \n {children}\n \n );\n}\n\ntype AwaitErrorBoundaryProps = React.PropsWithChildren<{\n errorElement?: React.ReactNode;\n resolve: TrackedPromise | any;\n}>;\n\ntype AwaitErrorBoundaryState = {\n error: any;\n};\n\nenum AwaitRenderStatus {\n pending,\n success,\n error,\n}\n\nconst neverSettledPromise = new Promise(() => {});\n\nclass AwaitErrorBoundary extends React.Component<\n AwaitErrorBoundaryProps,\n AwaitErrorBoundaryState\n> {\n constructor(props: AwaitErrorBoundaryProps) {\n super(props);\n this.state = { error: null };\n }\n\n static getDerivedStateFromError(error: any) {\n return { error };\n }\n\n componentDidCatch(error: any, errorInfo: any) {\n console.error(\n \" caught the following error during render\",\n error,\n errorInfo\n );\n }\n\n render() {\n let { children, errorElement, resolve } = this.props;\n\n let promise: TrackedPromise | null = null;\n let status: AwaitRenderStatus = AwaitRenderStatus.pending;\n\n if (!(resolve instanceof Promise)) {\n // Didn't get a promise - provide as a resolved promise\n status = AwaitRenderStatus.success;\n promise = Promise.resolve();\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n Object.defineProperty(promise, \"_data\", { get: () => resolve });\n } else if (this.state.error) {\n // Caught a render error, provide it as a rejected promise\n status = AwaitRenderStatus.error;\n let renderError = this.state.error;\n promise = Promise.reject().catch(() => {}); // Avoid unhandled rejection warnings\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n Object.defineProperty(promise, \"_error\", { get: () => renderError });\n } else if ((resolve as TrackedPromise)._tracked) {\n // Already tracked promise - check contents\n promise = resolve;\n status =\n promise._error !== undefined\n ? AwaitRenderStatus.error\n : promise._data !== undefined\n ? AwaitRenderStatus.success\n : AwaitRenderStatus.pending;\n } else {\n // Raw (untracked) promise - track it\n status = AwaitRenderStatus.pending;\n Object.defineProperty(resolve, \"_tracked\", { get: () => true });\n promise = resolve.then(\n (data: any) =>\n Object.defineProperty(resolve, \"_data\", { get: () => data }),\n (error: any) =>\n Object.defineProperty(resolve, \"_error\", { get: () => error })\n );\n }\n\n if (\n status === AwaitRenderStatus.error &&\n promise._error instanceof AbortedDeferredError\n ) {\n // Freeze the UI by throwing a never resolved promise\n throw neverSettledPromise;\n }\n\n if (status === AwaitRenderStatus.error && !errorElement) {\n // No errorElement, throw to the nearest route-level error boundary\n throw promise._error;\n }\n\n if (status === AwaitRenderStatus.error) {\n // Render via our errorElement\n return ;\n }\n\n if (status === AwaitRenderStatus.success) {\n // Render children with resolved value\n return ;\n }\n\n // Throw to the suspense boundary\n throw promise;\n }\n}\n\n/**\n * @private\n * Indirection to leverage useAsyncValue for a render-prop API on \n */\nfunction ResolveAwait({\n children,\n}: {\n children: React.ReactNode | AwaitResolveRenderFunction;\n}) {\n let data = useAsyncValue();\n if (typeof children === \"function\") {\n return children(data);\n }\n return <>{children};\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// UTILS\n///////////////////////////////////////////////////////////////////////////////\n\n/**\n * Creates a route config from a React \"children\" object, which is usually\n * either a `` element or an array of them. Used internally by\n * `` to create a route config from its children.\n *\n * @see https://reactrouter.com/utils/create-routes-from-children\n */\nexport function createRoutesFromChildren(\n children: React.ReactNode,\n parentPath: number[] = []\n): RouteObject[] {\n let routes: RouteObject[] = [];\n\n React.Children.forEach(children, (element, index) => {\n if (!React.isValidElement(element)) {\n // Ignore non-elements. This allows people to more easily inline\n // conditionals in their route config.\n return;\n }\n\n if (element.type === React.Fragment) {\n // Transparently support React.Fragment and its children.\n routes.push.apply(\n routes,\n createRoutesFromChildren(element.props.children, parentPath)\n );\n return;\n }\n\n invariant(\n element.type === Route,\n `[${\n typeof element.type === \"string\" ? element.type : element.type.name\n }] is not a component. All component children of must be a or `\n );\n\n invariant(\n !element.props.index || !element.props.children,\n \"An index route cannot have child routes.\"\n );\n\n let treePath = [...parentPath, index];\n let route: RouteObject = {\n id: element.props.id || treePath.join(\"-\"),\n caseSensitive: element.props.caseSensitive,\n element: element.props.element,\n index: element.props.index,\n path: element.props.path,\n loader: element.props.loader,\n action: element.props.action,\n errorElement: element.props.errorElement,\n hasErrorBoundary: element.props.errorElement != null,\n shouldRevalidate: element.props.shouldRevalidate,\n handle: element.props.handle,\n };\n\n if (element.props.children) {\n route.children = createRoutesFromChildren(\n element.props.children,\n treePath\n );\n }\n\n routes.push(route);\n });\n\n return routes;\n}\n\n/**\n * Renders the result of `matchRoutes()` into a React element.\n */\nexport function renderMatches(\n matches: RouteMatch[] | null\n): React.ReactElement | null {\n return _renderMatches(matches);\n}\n\n/**\n * @private\n * Walk the route tree and add hasErrorBoundary if it's not provided, so that\n * users providing manual route arrays can just specify errorElement\n */\nexport function enhanceManualRouteObjects(\n routes: RouteObject[]\n): RouteObject[] {\n return routes.map((route) => {\n let routeClone = { ...route };\n if (routeClone.hasErrorBoundary == null) {\n routeClone.hasErrorBoundary = routeClone.errorElement != null;\n }\n if (routeClone.children) {\n routeClone.children = enhanceManualRouteObjects(routeClone.children);\n }\n return routeClone;\n });\n}\n","/**\n * NOTE: If you refactor this to split up the modules into separate files,\n * you'll need to update the rollup config for react-router-dom-v5-compat.\n */\nimport * as React from \"react\";\nimport type {\n NavigateOptions,\n RelativeRoutingType,\n RouteObject,\n To,\n} from \"react-router\";\nimport {\n Router,\n createPath,\n useHref,\n useLocation,\n useMatches,\n useNavigate,\n useNavigation,\n useResolvedPath,\n UNSAFE_DataRouterContext as DataRouterContext,\n UNSAFE_DataRouterStateContext as DataRouterStateContext,\n UNSAFE_NavigationContext as NavigationContext,\n UNSAFE_RouteContext as RouteContext,\n UNSAFE_enhanceManualRouteObjects as enhanceManualRouteObjects,\n} from \"react-router\";\nimport type {\n BrowserHistory,\n Fetcher,\n FormEncType,\n FormMethod,\n GetScrollRestorationKeyFunction,\n HashHistory,\n History,\n HydrationState,\n Router as RemixRouter,\n} from \"@remix-run/router\";\nimport {\n createRouter,\n createBrowserHistory,\n createHashHistory,\n invariant,\n joinPaths,\n ErrorResponse,\n} from \"@remix-run/router\";\n\nimport type {\n SubmitOptions,\n ParamKeyValuePair,\n URLSearchParamsInit,\n} from \"./dom\";\nimport {\n createSearchParams,\n defaultMethod,\n getFormSubmissionInfo,\n getSearchParamsForLocation,\n shouldProcessLinkClick,\n} from \"./dom\";\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Re-exports\n////////////////////////////////////////////////////////////////////////////////\n\nexport type {\n FormEncType,\n FormMethod,\n GetScrollRestorationKeyFunction,\n ParamKeyValuePair,\n SubmitOptions,\n URLSearchParamsInit,\n};\nexport { createSearchParams };\n\n// Note: Keep in sync with react-router exports!\nexport type {\n ActionFunction,\n ActionFunctionArgs,\n AwaitProps,\n DataRouteMatch,\n DataRouteObject,\n Fetcher,\n Hash,\n IndexRouteObject,\n IndexRouteProps,\n JsonFunction,\n LayoutRouteProps,\n LoaderFunction,\n LoaderFunctionArgs,\n Location,\n MemoryRouterProps,\n NavigateFunction,\n NavigateOptions,\n NavigateProps,\n Navigation,\n Navigator,\n NonIndexRouteObject,\n OutletProps,\n Params,\n ParamParseKey,\n Path,\n PathMatch,\n Pathname,\n PathPattern,\n PathRouteProps,\n RedirectFunction,\n RelativeRoutingType,\n RouteMatch,\n RouteObject,\n RouteProps,\n RouterProps,\n RouterProviderProps,\n RoutesProps,\n Search,\n ShouldRevalidateFunction,\n To,\n} from \"react-router\";\nexport {\n AbortedDeferredError,\n Await,\n MemoryRouter,\n Navigate,\n NavigationType,\n Outlet,\n Route,\n Router,\n RouterProvider,\n Routes,\n createMemoryRouter,\n createPath,\n createRoutesFromChildren,\n createRoutesFromElements,\n defer,\n isRouteErrorResponse,\n generatePath,\n json,\n matchPath,\n matchRoutes,\n parsePath,\n redirect,\n renderMatches,\n resolvePath,\n useActionData,\n useAsyncError,\n useAsyncValue,\n useHref,\n useInRouterContext,\n useLoaderData,\n useLocation,\n useMatch,\n useMatches,\n useNavigate,\n useNavigation,\n useNavigationType,\n useOutlet,\n useOutletContext,\n useParams,\n useResolvedPath,\n useRevalidator,\n useRouteError,\n useRouteLoaderData,\n useRoutes,\n} from \"react-router\";\n\n///////////////////////////////////////////////////////////////////////////////\n// DANGER! PLEASE READ ME!\n// We provide these exports as an escape hatch in the event that you need any\n// routing data that we don't provide an explicit API for. With that said, we\n// want to cover your use case if we can, so if you feel the need to use these\n// we want to hear from you. Let us know what you're building and we'll do our\n// best to make sure we can support you!\n//\n// We consider these exports an implementation detail and do not guarantee\n// against any breaking changes, regardless of the semver release. Use with\n// extreme caution and only if you understand the consequences. Godspeed.\n///////////////////////////////////////////////////////////////////////////////\n\n/** @internal */\nexport {\n UNSAFE_DataRouterContext,\n UNSAFE_DataRouterStateContext,\n UNSAFE_DataStaticRouterContext,\n UNSAFE_NavigationContext,\n UNSAFE_LocationContext,\n UNSAFE_RouteContext,\n UNSAFE_enhanceManualRouteObjects,\n} from \"react-router\";\n//#endregion\n\ndeclare global {\n var __staticRouterHydrationData: HydrationState | undefined;\n}\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Routers\n////////////////////////////////////////////////////////////////////////////////\n\nexport function createBrowserRouter(\n routes: RouteObject[],\n opts?: {\n basename?: string;\n hydrationData?: HydrationState;\n window?: Window;\n }\n): RemixRouter {\n return createRouter({\n basename: opts?.basename,\n history: createBrowserHistory({ window: opts?.window }),\n hydrationData: opts?.hydrationData || parseHydrationData(),\n routes: enhanceManualRouteObjects(routes),\n }).initialize();\n}\n\nexport function createHashRouter(\n routes: RouteObject[],\n opts?: {\n basename?: string;\n hydrationData?: HydrationState;\n window?: Window;\n }\n): RemixRouter {\n return createRouter({\n basename: opts?.basename,\n history: createHashHistory({ window: opts?.window }),\n hydrationData: opts?.hydrationData || parseHydrationData(),\n routes: enhanceManualRouteObjects(routes),\n }).initialize();\n}\n\nfunction parseHydrationData(): HydrationState | undefined {\n let state = window?.__staticRouterHydrationData;\n if (state && state.errors) {\n state = {\n ...state,\n errors: deserializeErrors(state.errors),\n };\n }\n return state;\n}\n\nfunction deserializeErrors(\n errors: RemixRouter[\"state\"][\"errors\"]\n): RemixRouter[\"state\"][\"errors\"] {\n if (!errors) return null;\n let entries = Object.entries(errors);\n let serialized: RemixRouter[\"state\"][\"errors\"] = {};\n for (let [key, val] of entries) {\n // Hey you! If you change this, please change the corresponding logic in\n // serializeErrors in react-router-dom/server.tsx :)\n if (val && val.__type === \"RouteErrorResponse\") {\n serialized[key] = new ErrorResponse(\n val.status,\n val.statusText,\n val.data,\n val.internal === true\n );\n } else if (val && val.__type === \"Error\") {\n let error = new Error(val.message);\n // Wipe away the client-side stack trace. Nothing to fill it in with\n // because we don't serialize SSR stack traces for security reasons\n error.stack = \"\";\n serialized[key] = error;\n } else {\n serialized[key] = val;\n }\n }\n return serialized;\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Components\n////////////////////////////////////////////////////////////////////////////////\n\nexport interface BrowserRouterProps {\n basename?: string;\n children?: React.ReactNode;\n window?: Window;\n}\n\n/**\n * A `` for use in web browsers. Provides the cleanest URLs.\n */\nexport function BrowserRouter({\n basename,\n children,\n window,\n}: BrowserRouterProps) {\n let historyRef = React.useRef();\n if (historyRef.current == null) {\n historyRef.current = createBrowserHistory({ window, v5Compat: true });\n }\n\n let history = historyRef.current;\n let [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n \n );\n}\n\nexport interface HashRouterProps {\n basename?: string;\n children?: React.ReactNode;\n window?: Window;\n}\n\n/**\n * A `` for use in web browsers. Stores the location in the hash\n * portion of the URL so it is not sent to the server.\n */\nexport function HashRouter({ basename, children, window }: HashRouterProps) {\n let historyRef = React.useRef();\n if (historyRef.current == null) {\n historyRef.current = createHashHistory({ window, v5Compat: true });\n }\n\n let history = historyRef.current;\n let [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n \n );\n}\n\nexport interface HistoryRouterProps {\n basename?: string;\n children?: React.ReactNode;\n history: History;\n}\n\n/**\n * A `` that accepts a pre-instantiated history object. It's important\n * to note that using your own history object is highly discouraged and may add\n * two versions of the history library to your bundles unless you use the same\n * version of the history library that React Router uses internally.\n */\nfunction HistoryRouter({ basename, children, history }: HistoryRouterProps) {\n const [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n \n );\n}\n\nif (__DEV__) {\n HistoryRouter.displayName = \"unstable_HistoryRouter\";\n}\n\nexport { HistoryRouter as unstable_HistoryRouter };\n\nexport interface LinkProps\n extends Omit, \"href\"> {\n reloadDocument?: boolean;\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n to: To;\n}\n\n/**\n * The public API for rendering a history-aware
.\n */\nexport const Link = React.forwardRef(\n function LinkWithRef(\n {\n onClick,\n relative,\n reloadDocument,\n replace,\n state,\n target,\n to,\n preventScrollReset,\n ...rest\n },\n ref\n ) {\n let href = useHref(to, { relative });\n let internalOnClick = useLinkClickHandler(to, {\n replace,\n state,\n target,\n preventScrollReset,\n relative,\n });\n function handleClick(\n event: React.MouseEvent\n ) {\n if (onClick) onClick(event);\n if (!event.defaultPrevented) {\n internalOnClick(event);\n }\n }\n\n return (\n // eslint-disable-next-line jsx-a11y/anchor-has-content\n \n );\n }\n);\n\nif (__DEV__) {\n Link.displayName = \"Link\";\n}\n\nexport interface NavLinkProps\n extends Omit {\n children?:\n | React.ReactNode\n | ((props: { isActive: boolean; isPending: boolean }) => React.ReactNode);\n caseSensitive?: boolean;\n className?:\n | string\n | ((props: {\n isActive: boolean;\n isPending: boolean;\n }) => string | undefined);\n end?: boolean;\n style?:\n | React.CSSProperties\n | ((props: {\n isActive: boolean;\n isPending: boolean;\n }) => React.CSSProperties | undefined);\n}\n\n/**\n * A wrapper that knows if it's \"active\" or not.\n */\nexport const NavLink = React.forwardRef(\n function NavLinkWithRef(\n {\n \"aria-current\": ariaCurrentProp = \"page\",\n caseSensitive = false,\n className: classNameProp = \"\",\n end = false,\n style: styleProp,\n to,\n children,\n ...rest\n },\n ref\n ) {\n let path = useResolvedPath(to, { relative: rest.relative });\n let location = useLocation();\n let routerState = React.useContext(DataRouterStateContext);\n let { navigator } = React.useContext(NavigationContext);\n\n let toPathname = navigator.encodeLocation\n ? navigator.encodeLocation(path).pathname\n : path.pathname;\n let locationPathname = location.pathname;\n let nextLocationPathname =\n routerState && routerState.navigation && routerState.navigation.location\n ? routerState.navigation.location.pathname\n : null;\n\n if (!caseSensitive) {\n locationPathname = locationPathname.toLowerCase();\n nextLocationPathname = nextLocationPathname\n ? nextLocationPathname.toLowerCase()\n : null;\n toPathname = toPathname.toLowerCase();\n }\n\n let isActive =\n locationPathname === toPathname ||\n (!end &&\n locationPathname.startsWith(toPathname) &&\n locationPathname.charAt(toPathname.length) === \"/\");\n\n let isPending =\n nextLocationPathname != null &&\n (nextLocationPathname === toPathname ||\n (!end &&\n nextLocationPathname.startsWith(toPathname) &&\n nextLocationPathname.charAt(toPathname.length) === \"/\"));\n\n let ariaCurrent = isActive ? ariaCurrentProp : undefined;\n\n let className: string | undefined;\n if (typeof classNameProp === \"function\") {\n className = classNameProp({ isActive, isPending });\n } else {\n // If the className prop is not a function, we use a default `active`\n // class for s that are active. In v5 `active` was the default\n // value for `activeClassName`, but we are removing that API and can still\n // use the old default behavior for a cleaner upgrade path and keep the\n // simple styling rules working as they currently do.\n className = [\n classNameProp,\n isActive ? \"active\" : null,\n isPending ? \"pending\" : null,\n ]\n .filter(Boolean)\n .join(\" \");\n }\n\n let style =\n typeof styleProp === \"function\"\n ? styleProp({ isActive, isPending })\n : styleProp;\n\n return (\n \n {typeof children === \"function\"\n ? children({ isActive, isPending })\n : children}\n \n );\n }\n);\n\nif (__DEV__) {\n NavLink.displayName = \"NavLink\";\n}\n\nexport interface FormProps extends React.FormHTMLAttributes {\n /**\n * The HTTP verb to use when the form is submit. Supports \"get\", \"post\",\n * \"put\", \"delete\", \"patch\".\n */\n method?: FormMethod;\n\n /**\n * Normal `
` but supports React Router's relative paths.\n */\n action?: string;\n\n /**\n * Forces a full document navigation instead of a fetch.\n */\n reloadDocument?: boolean;\n\n /**\n * Replaces the current entry in the browser history stack when the form\n * navigates. Use this if you don't want the user to be able to click \"back\"\n * to the page with the form on it.\n */\n replace?: boolean;\n\n /**\n * Determines whether the form action is relative to the route hierarchy or\n * the pathname. Use this if you want to opt out of navigating the route\n * hierarchy and want to instead route based on /-delimited URL segments\n */\n relative?: RelativeRoutingType;\n\n /**\n * A function to call when the form is submitted. If you call\n * `event.preventDefault()` then this form will not do anything.\n */\n onSubmit?: React.FormEventHandler;\n}\n\n/**\n * A `@remix-run/router`-aware ``. It behaves like a normal form except\n * that the interaction with the server is with `fetch` instead of new document\n * requests, allowing components to add nicer UX to the page as the form is\n * submitted and returns with data.\n */\nexport const Form = React.forwardRef(\n (props, ref) => {\n return ;\n }\n);\n\nif (__DEV__) {\n Form.displayName = \"Form\";\n}\n\ntype HTMLSubmitEvent = React.BaseSyntheticEvent<\n SubmitEvent,\n Event,\n HTMLFormElement\n>;\n\ntype HTMLFormSubmitter = HTMLButtonElement | HTMLInputElement;\n\ninterface FormImplProps extends FormProps {\n fetcherKey?: string;\n routeId?: string;\n}\n\nconst FormImpl = React.forwardRef(\n (\n {\n reloadDocument,\n replace,\n method = defaultMethod,\n action,\n onSubmit,\n fetcherKey,\n routeId,\n relative,\n ...props\n },\n forwardedRef\n ) => {\n let submit = useSubmitImpl(fetcherKey, routeId);\n let formMethod: FormMethod =\n method.toLowerCase() === \"get\" ? \"get\" : \"post\";\n let formAction = useFormAction(action, { relative });\n let submitHandler: React.FormEventHandler = (event) => {\n onSubmit && onSubmit(event);\n if (event.defaultPrevented) return;\n event.preventDefault();\n\n let submitter = (event as unknown as HTMLSubmitEvent).nativeEvent\n .submitter as HTMLFormSubmitter | null;\n\n let submitMethod =\n (submitter?.getAttribute(\"formmethod\") as FormMethod | undefined) ||\n method;\n\n submit(submitter || event.currentTarget, {\n method: submitMethod,\n replace,\n relative,\n });\n };\n\n return (\n \n );\n }\n);\n\nif (__DEV__) {\n FormImpl.displayName = \"FormImpl\";\n}\n\nexport interface ScrollRestorationProps {\n getKey?: GetScrollRestorationKeyFunction;\n storageKey?: string;\n}\n\n/**\n * This component will emulate the browser's scroll restoration on location\n * changes.\n */\nexport function ScrollRestoration({\n getKey,\n storageKey,\n}: ScrollRestorationProps) {\n useScrollRestoration({ getKey, storageKey });\n return null;\n}\n\nif (__DEV__) {\n ScrollRestoration.displayName = \"ScrollRestoration\";\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Hooks\n////////////////////////////////////////////////////////////////////////////////\n\nenum DataRouterHook {\n UseScrollRestoration = \"useScrollRestoration\",\n UseSubmitImpl = \"useSubmitImpl\",\n UseFetcher = \"useFetcher\",\n}\n\nenum DataRouterStateHook {\n UseFetchers = \"useFetchers\",\n UseScrollRestoration = \"useScrollRestoration\",\n}\n\nfunction getDataRouterConsoleError(\n hookName: DataRouterHook | DataRouterStateHook\n) {\n return `${hookName} must be used within a data router. See https://reactrouter.com/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n let ctx = React.useContext(DataRouterContext);\n invariant(ctx, getDataRouterConsoleError(hookName));\n return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n let state = React.useContext(DataRouterStateContext);\n invariant(state, getDataRouterConsoleError(hookName));\n return state;\n}\n\n/**\n * Handles the click behavior for router `` components. This is useful if\n * you need to create custom `` components with the same click behavior we\n * use in our exported ``.\n */\nexport function useLinkClickHandler(\n to: To,\n {\n target,\n replace: replaceProp,\n state,\n preventScrollReset,\n relative,\n }: {\n target?: React.HTMLAttributeAnchorTarget;\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n } = {}\n): (event: React.MouseEvent) => void {\n let navigate = useNavigate();\n let location = useLocation();\n let path = useResolvedPath(to, { relative });\n\n return React.useCallback(\n (event: React.MouseEvent) => {\n if (shouldProcessLinkClick(event, target)) {\n event.preventDefault();\n\n // If the URL hasn't changed, a regular will do a replace instead of\n // a push, so do the same here unless the replace prop is explicitly set\n let replace =\n replaceProp !== undefined\n ? replaceProp\n : createPath(location) === createPath(path);\n\n navigate(to, { replace, state, preventScrollReset, relative });\n }\n },\n [\n location,\n navigate,\n path,\n replaceProp,\n state,\n target,\n to,\n preventScrollReset,\n relative,\n ]\n );\n}\n\n/**\n * A convenient wrapper for reading and writing search parameters via the\n * URLSearchParams interface.\n */\nexport function useSearchParams(\n defaultInit?: URLSearchParamsInit\n): [URLSearchParams, SetURLSearchParams] {\n warning(\n typeof URLSearchParams !== \"undefined\",\n `You cannot use the \\`useSearchParams\\` hook in a browser that does not ` +\n `support the URLSearchParams API. If you need to support Internet ` +\n `Explorer 11, we recommend you load a polyfill such as ` +\n `https://github.com/ungap/url-search-params\\n\\n` +\n `If you're unsure how to load polyfills, we recommend you check out ` +\n `https://polyfill.io/v3/ which provides some recommendations about how ` +\n `to load polyfills only for users that need them, instead of for every ` +\n `user.`\n );\n\n let defaultSearchParamsRef = React.useRef(createSearchParams(defaultInit));\n\n let location = useLocation();\n let searchParams = React.useMemo(\n () =>\n getSearchParamsForLocation(\n location.search,\n defaultSearchParamsRef.current\n ),\n [location.search]\n );\n\n let navigate = useNavigate();\n let setSearchParams = React.useCallback(\n (nextInit, navigateOptions) => {\n const newSearchParams = createSearchParams(\n typeof nextInit === \"function\" ? nextInit(searchParams) : nextInit\n );\n navigate(\"?\" + newSearchParams, navigateOptions);\n },\n [navigate, searchParams]\n );\n\n return [searchParams, setSearchParams];\n}\n\ntype SetURLSearchParams = (\n nextInit?:\n | URLSearchParamsInit\n | ((prev: URLSearchParams) => URLSearchParamsInit),\n navigateOpts?: NavigateOptions\n) => void;\n\ntype SubmitTarget =\n | HTMLFormElement\n | HTMLButtonElement\n | HTMLInputElement\n | FormData\n | URLSearchParams\n | { [name: string]: string }\n | null;\n\n/**\n * Submits a HTML `` to the server without reloading the page.\n */\nexport interface SubmitFunction {\n (\n /**\n * Specifies the `` to be submitted to the server, a specific\n * `\n : <>\n \n \n \n }\n \n \n \n \n \n \n\n\n \n );\n};\n\nexport default TransferEth;\n","import { useWeb3React } from \"@web3-react/core\";\n//import { Divider } from \"antd\";\n\n//import { useWindowWidthAndHeight } from \"../../hooks/useWindowWidthAndHeight\";\nimport { TransferEth } from \"./components\";\n \n\nconst DisplayPane: React.FC = () => {\n const { isActive } = useWeb3React();\n //const [width] = useWindowWidthAndHeight();\n // const isMobile = width <= 768;\n\n return (\n
\n \n \n
\n \n \n\n {isActive && (\n <>\n \n \n \n \n \n \n )}\n
\n
\n );\n};\n\nexport default DisplayPane;\n","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nexport default function omit(obj, fields) {\n var clone = _objectSpread({}, obj);\n if (Array.isArray(fields)) {\n fields.forEach(function (key) {\n delete clone[key];\n });\n }\n return clone;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") 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])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport toArray from \"rc-util/es/Children/toArray\";\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport useStyle from './style';\nexport var SpaceCompactItemContext = /*#__PURE__*/React.createContext(null);\nexport var useCompactItemContext = function useCompactItemContext(prefixCls, direction) {\n var compactItemContext = React.useContext(SpaceCompactItemContext);\n var compactItemClassnames = React.useMemo(function () {\n var _classNames;\n if (!compactItemContext) return '';\n var compactDirection = compactItemContext.compactDirection,\n isFirstItem = compactItemContext.isFirstItem,\n isLastItem = compactItemContext.isLastItem;\n var separator = compactDirection === 'vertical' ? '-vertical-' : '-';\n return classNames((_classNames = {}, _defineProperty(_classNames, prefixCls + \"-compact\" + separator + \"item\", true), _defineProperty(_classNames, prefixCls + \"-compact\" + separator + \"first-item\", isFirstItem), _defineProperty(_classNames, prefixCls + \"-compact\" + separator + \"last-item\", isLastItem), _defineProperty(_classNames, prefixCls + \"-compact\" + separator + \"item-rtl\", direction === 'rtl'), _classNames));\n }, [prefixCls, direction, compactItemContext]);\n return {\n compactSize: compactItemContext === null || compactItemContext === void 0 ? void 0 : compactItemContext.compactSize,\n compactDirection: compactItemContext === null || compactItemContext === void 0 ? void 0 : compactItemContext.compactDirection,\n compactItemClassnames: compactItemClassnames\n };\n};\nexport var NoCompactStyle = function NoCompactStyle(_ref) {\n var children = _ref.children;\n return /*#__PURE__*/React.createElement(SpaceCompactItemContext.Provider, {\n value: null\n }, children);\n};\nvar CompactItem = function CompactItem(_a) {\n var children = _a.children,\n otherProps = __rest(_a, [\"children\"]);\n return /*#__PURE__*/React.createElement(SpaceCompactItemContext.Provider, {\n value: otherProps\n }, children);\n};\nvar Compact = function Compact(props) {\n var _classNames2;\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n directionConfig = _React$useContext.direction;\n var _props$size = props.size,\n size = _props$size === void 0 ? 'middle' : _props$size,\n direction = props.direction,\n block = props.block,\n customizePrefixCls = props.prefixCls,\n className = props.className,\n children = props.children,\n restProps = __rest(props, [\"size\", \"direction\", \"block\", \"prefixCls\", \"className\", \"children\"]);\n var prefixCls = getPrefixCls('space-compact', customizePrefixCls);\n var _useStyle = useStyle(prefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n wrapSSR = _useStyle2[0],\n hashId = _useStyle2[1];\n var clx = classNames(prefixCls, hashId, (_classNames2 = {}, _defineProperty(_classNames2, prefixCls + \"-rtl\", directionConfig === 'rtl'), _defineProperty(_classNames2, prefixCls + \"-block\", block), _defineProperty(_classNames2, prefixCls + \"-vertical\", direction === 'vertical'), _classNames2), className);\n var compactItemContext = React.useContext(SpaceCompactItemContext);\n var childNodes = toArray(children);\n var nodes = React.useMemo(function () {\n return childNodes.map(function (child, i) {\n var key = child && child.key || prefixCls + \"-item-\" + i;\n return /*#__PURE__*/React.createElement(CompactItem, {\n key: key,\n compactSize: size,\n compactDirection: direction,\n isFirstItem: i === 0 && (!compactItemContext || (compactItemContext === null || compactItemContext === void 0 ? void 0 : compactItemContext.isFirstItem)),\n isLastItem: i === childNodes.length - 1 && (!compactItemContext || (compactItemContext === null || compactItemContext === void 0 ? void 0 : compactItemContext.isLastItem))\n }, child);\n });\n }, [size, childNodes, compactItemContext]);\n // =========================== Render ===========================\n if (childNodes.length === 0) {\n return null;\n }\n return wrapSSR( /*#__PURE__*/React.createElement(\"div\", _extends({\n className: clx\n }, restProps), nodes));\n};\nexport default Compact;","import * as React from 'react';\nvar isValidElement = React.isValidElement;\nexport { isValidElement };\nexport function isFragment(child) {\n return child && isValidElement(child) && child.type === React.Fragment;\n}\nexport function replaceElement(element, replacement, props) {\n if (!isValidElement(element)) {\n return replacement;\n }\n return /*#__PURE__*/React.cloneElement(element, typeof props === 'function' ? props(element.props || {}) : props);\n}\nexport function cloneElement(element, props) {\n return replaceElement(element, element, props);\n}","// https://stackoverflow.com/questions/46176165/ways-to-get-string-literal-type-of-array-values-without-enum-overhead\nexport var tuple = function tuple() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return args;\n};\nexport var tupleNum = function tupleNum() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return args;\n};","import raf from \"rc-util/es/raf\";\nvar id = 0;\nvar ids = {};\n// Support call raf with delay specified frame\nexport default function wrapperRaf(callback) {\n var delayFrames = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var myId = id++;\n var restFrames = delayFrames;\n function internalCallback() {\n restFrames -= 1;\n if (restFrames <= 0) {\n callback();\n delete ids[myId];\n } else {\n ids[myId] = raf(internalCallback);\n }\n }\n ids[myId] = raf(internalCallback);\n return myId;\n}\nwrapperRaf.cancel = function cancel(pid) {\n if (pid === undefined) return;\n raf.cancel(ids[pid]);\n delete ids[pid];\n};\nwrapperRaf.ids = ids; // export this for test usage","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Keyframes, useStyleRegister } from '@ant-design/cssinjs';\nimport { useContext } from 'react';\nimport { ConfigContext } from '../../config-provider';\nimport { useToken } from '../../theme/internal';\nvar genWaveStyle = function genWaveStyle(token) {\n var _ref;\n var waveEffect = new Keyframes('waveEffect', {\n '100%': {\n boxShadow: \"0 0 0 6px var(--antd-wave-shadow-color)\"\n }\n });\n var fadeEffect = new Keyframes('fadeEffect', {\n '100%': {\n opacity: 0\n }\n });\n return [(_ref = {}, _defineProperty(_ref, token.clickAnimatingWithoutExtraNodeTrue + \",\\n \" + token.clickAnimatingTrue, {\n '--antd-wave-shadow-color': token.colorPrimary,\n '--scroll-bar': 0,\n position: 'relative'\n }), _defineProperty(_ref, token.clickAnimatingWithoutExtraNodeTrueAfter + \",\\n & \" + token.clickAnimatingNode, {\n position: 'absolute',\n top: 0,\n insetInlineStart: 0,\n insetInlineEnd: 0,\n bottom: 0,\n display: 'block',\n borderRadius: 'inherit',\n boxShadow: \"0 0 0 0 var(--antd-wave-shadow-color)\",\n opacity: 0.2,\n animation: {\n _skip_check_: true,\n value: fadeEffect.getName(token.hashId) + \" 2s \" + token.motionEaseOutCirc + \", \" + waveEffect.getName(token.hashId) + \" 0.4s \" + token.motionEaseOutCirc\n },\n animationFillMode: 'forwards',\n content: '\"\"',\n pointerEvents: 'none'\n }), _ref), {}, waveEffect, fadeEffect];\n};\nexport default (function () {\n var _useToken = useToken(),\n _useToken2 = _slicedToArray(_useToken, 3),\n theme = _useToken2[0],\n token = _useToken2[1],\n hashId = _useToken2[2];\n var _useContext = useContext(ConfigContext),\n getPrefixCls = _useContext.getPrefixCls;\n var rootPrefixCls = getPrefixCls();\n var clickAnimatingTrue = \"[\" + rootPrefixCls + \"-click-animating='true']\";\n var clickAnimatingWithoutExtraNodeTrue = \"[\" + rootPrefixCls + \"-click-animating-without-extra-node='true']\";\n var clickAnimatingNode = \".\" + rootPrefixCls + \"-click-animating-node\";\n var waveToken = _extends(_extends({}, token), {\n hashId: hashId,\n clickAnimatingNode: clickAnimatingNode,\n clickAnimatingTrue: clickAnimatingTrue,\n clickAnimatingWithoutExtraNodeTrue: clickAnimatingWithoutExtraNodeTrue,\n clickAnimatingWithoutExtraNodeTrueAfter: clickAnimatingWithoutExtraNodeTrue + \"::after\"\n });\n return [useStyleRegister({\n theme: theme,\n token: token,\n hashId: hashId,\n path: ['wave']\n }, function () {\n return [genWaveStyle(waveToken)];\n }), hashId];\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport { updateCSS } from \"rc-util/es/Dom/dynamicCSS\";\nimport { composeRef, supportRef } from \"rc-util/es/ref\";\nimport * as React from 'react';\nimport { forwardRef } from 'react';\nimport { ConfigConsumer, ConfigContext } from '../../config-provider';\nimport raf from '../raf';\nimport { cloneElement } from '../reactNode';\nimport useStyle from './style';\nvar styleForPseudo;\n// Where el is the DOM element you'd like to test for visibility\nfunction isHidden(element) {\n if (process.env.NODE_ENV === 'test') {\n return false;\n }\n return !element || element.offsetParent === null || element.hidden;\n}\nfunction getValidateContainer(nodeRoot) {\n if (nodeRoot instanceof Document) {\n return nodeRoot.body;\n }\n return Array.from(nodeRoot.childNodes).find(function (ele) {\n return (ele === null || ele === void 0 ? void 0 : ele.nodeType) === Node.ELEMENT_NODE;\n });\n}\nfunction isNotGrey(color) {\n // eslint-disable-next-line no-useless-escape\n var match = (color || '').match(/rgba?\\((\\d*), (\\d*), (\\d*)(, [\\d.]*)?\\)/);\n if (match && match[1] && match[2] && match[3]) {\n return !(match[1] === match[2] && match[2] === match[3]);\n }\n return true;\n}\nfunction isValidWaveColor(color) {\n return color && color !== '#fff' && color !== '#ffffff' && color !== 'rgb(255, 255, 255)' && color !== 'rgba(255, 255, 255, 1)' && isNotGrey(color) && !/rgba\\((?:\\d*, ){3}0\\)/.test(color) &&\n // any transparent rgba color\n color !== 'transparent';\n}\nfunction getTargetWaveColor(node) {\n var computedStyle = getComputedStyle(node);\n var borderTopColor = computedStyle.getPropertyValue('border-top-color');\n var borderColor = computedStyle.getPropertyValue('border-color');\n var backgroundColor = computedStyle.getPropertyValue('background-color');\n if (isValidWaveColor(borderTopColor)) {\n return borderTopColor;\n }\n if (isValidWaveColor(borderColor)) {\n return borderColor;\n }\n return backgroundColor;\n}\nexport var InternalWave = /*#__PURE__*/function (_React$Component) {\n _inherits(InternalWave, _React$Component);\n var _super = _createSuper(InternalWave);\n function InternalWave() {\n var _this;\n _classCallCheck(this, InternalWave);\n _this = _super.apply(this, arguments);\n _this.containerRef = /*#__PURE__*/React.createRef();\n _this.animationStart = false;\n _this.destroyed = false;\n _this.onClick = function (node, waveColor) {\n var _a, _b;\n var _this$props = _this.props,\n insertExtraNode = _this$props.insertExtraNode,\n disabled = _this$props.disabled;\n if (disabled || !node || isHidden(node) || node.className.includes('-leave')) {\n return;\n }\n _this.extraNode = document.createElement('div');\n var _assertThisInitialize = _assertThisInitialized(_this),\n extraNode = _assertThisInitialize.extraNode;\n var getPrefixCls = _this.context.getPrefixCls;\n extraNode.className = getPrefixCls('') + \"-click-animating-node\";\n var attributeName = _this.getAttributeName();\n node.setAttribute(attributeName, 'true');\n // Not white or transparent or grey\n if (isValidWaveColor(waveColor)) {\n extraNode.style.borderColor = waveColor;\n var nodeRoot = ((_a = node.getRootNode) === null || _a === void 0 ? void 0 : _a.call(node)) || node.ownerDocument;\n var nodeBody = (_b = getValidateContainer(nodeRoot)) !== null && _b !== void 0 ? _b : nodeRoot;\n styleForPseudo = updateCSS(\"\\n [\" + getPrefixCls('') + \"-click-animating-without-extra-node='true']::after, .\" + getPrefixCls('') + \"-click-animating-node {\\n --antd-wave-shadow-color: \" + waveColor + \";\\n }\", 'antd-wave', {\n csp: _this.csp,\n attachTo: nodeBody\n });\n }\n if (insertExtraNode) {\n node.appendChild(extraNode);\n }\n ['transition', 'animation'].forEach(function (name) {\n node.addEventListener(name + \"start\", _this.onTransitionStart);\n node.addEventListener(name + \"end\", _this.onTransitionEnd);\n });\n };\n _this.onTransitionStart = function (e) {\n if (_this.destroyed) {\n return;\n }\n var node = _this.containerRef.current;\n if (!e || e.target !== node || _this.animationStart) {\n return;\n }\n _this.resetEffect(node);\n };\n _this.onTransitionEnd = function (e) {\n if (!e || e.animationName !== 'fadeEffect') {\n return;\n }\n _this.resetEffect(e.target);\n };\n _this.bindAnimationEvent = function (node) {\n if (!node || !node.getAttribute || node.getAttribute('disabled') || node.className.includes('disabled')) {\n return;\n }\n var onClick = function onClick(e) {\n // Fix radio button click twice\n if (e.target.tagName === 'INPUT' || isHidden(e.target)) {\n return;\n }\n _this.resetEffect(node);\n // Get wave color from target\n var waveColor = getTargetWaveColor(node);\n _this.clickWaveTimeoutId = window.setTimeout(function () {\n return _this.onClick(node, waveColor);\n }, 0);\n raf.cancel(_this.animationStartId);\n _this.animationStart = true;\n // Render to trigger transition event cost 3 frames. Let's delay 10 frames to reset this.\n _this.animationStartId = raf(function () {\n _this.animationStart = false;\n }, 10);\n };\n node.addEventListener('click', onClick, true);\n return {\n cancel: function cancel() {\n node.removeEventListener('click', onClick, true);\n }\n };\n };\n _this.renderWave = function (_ref) {\n var csp = _ref.csp;\n var children = _this.props.children;\n _this.csp = csp;\n if (! /*#__PURE__*/React.isValidElement(children)) return children;\n var ref = _this.containerRef;\n if (supportRef(children)) {\n ref = composeRef(children.ref, _this.containerRef);\n }\n return cloneElement(children, {\n ref: ref\n });\n };\n return _this;\n }\n _createClass(InternalWave, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.destroyed = false;\n var node = this.containerRef.current;\n if (!node || node.nodeType !== 1) {\n return;\n }\n this.instance = this.bindAnimationEvent(node);\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this.instance) {\n this.instance.cancel();\n }\n if (this.clickWaveTimeoutId) {\n clearTimeout(this.clickWaveTimeoutId);\n }\n this.destroyed = true;\n }\n }, {\n key: \"getAttributeName\",\n value: function getAttributeName() {\n var getPrefixCls = this.context.getPrefixCls;\n var insertExtraNode = this.props.insertExtraNode;\n return insertExtraNode ? getPrefixCls('') + \"-click-animating\" : getPrefixCls('') + \"-click-animating-without-extra-node\";\n }\n }, {\n key: \"resetEffect\",\n value: function resetEffect(node) {\n var _this2 = this;\n if (!node || node === this.extraNode || !(node instanceof Element)) {\n return;\n }\n var insertExtraNode = this.props.insertExtraNode;\n var attributeName = this.getAttributeName();\n node.setAttribute(attributeName, 'false'); // edge has bug on `removeAttribute` #14466\n if (styleForPseudo) {\n styleForPseudo.innerHTML = '';\n }\n if (insertExtraNode && this.extraNode && node.contains(this.extraNode)) {\n node.removeChild(this.extraNode);\n }\n ['transition', 'animation'].forEach(function (name) {\n node.removeEventListener(name + \"start\", _this2.onTransitionStart);\n node.removeEventListener(name + \"end\", _this2.onTransitionEnd);\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/React.createElement(ConfigConsumer, null, this.renderWave);\n }\n }]);\n return InternalWave;\n}(React.Component);\nInternalWave.contextType = ConfigContext;\nvar Wave = /*#__PURE__*/forwardRef(function (props, ref) {\n useStyle();\n return /*#__PURE__*/React.createElement(InternalWave, _extends({\n ref: ref\n }, props));\n});\nexport default Wave;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") 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])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport { useToken } from '../theme/internal';\nimport warning from '../_util/warning';\nexport var GroupSizeContext = /*#__PURE__*/React.createContext(undefined);\nvar ButtonGroup = function ButtonGroup(props) {\n var _classNames;\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction;\n var customizePrefixCls = props.prefixCls,\n size = props.size,\n className = props.className,\n others = __rest(props, [\"prefixCls\", \"size\", \"className\"]);\n var prefixCls = getPrefixCls('btn-group', customizePrefixCls);\n // Here we only need hashId\n var _useToken = useToken(),\n _useToken2 = _slicedToArray(_useToken, 3),\n hashId = _useToken2[2];\n // large => lg\n // small => sm\n var sizeCls = '';\n switch (size) {\n case 'large':\n sizeCls = 'lg';\n break;\n case 'small':\n sizeCls = 'sm';\n break;\n case 'middle':\n case undefined:\n break;\n default:\n process.env.NODE_ENV !== \"production\" ? warning(!size, 'Button.Group', 'Invalid prop `size`.') : void 0;\n }\n var classes = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, prefixCls + \"-\" + sizeCls, sizeCls), _defineProperty(_classNames, prefixCls + \"-rtl\", direction === 'rtl'), _classNames), className, hashId);\n return /*#__PURE__*/React.createElement(GroupSizeContext.Provider, {\n value: size\n }, /*#__PURE__*/React.createElement(\"div\", _extends({}, others, {\n className: classes\n })));\n};\nexport default ButtonGroup;","import LoadingOutlined from \"@ant-design/icons/es/icons/LoadingOutlined\";\nimport CSSMotion from 'rc-motion';\nimport React from 'react';\nvar getCollapsedWidth = function getCollapsedWidth() {\n return {\n width: 0,\n opacity: 0,\n transform: 'scale(0)'\n };\n};\nvar getRealWidth = function getRealWidth(node) {\n return {\n width: node.scrollWidth,\n opacity: 1,\n transform: 'scale(1)'\n };\n};\nvar LoadingIcon = function LoadingIcon(_ref) {\n var prefixCls = _ref.prefixCls,\n loading = _ref.loading,\n existIcon = _ref.existIcon;\n var visible = !!loading;\n if (existIcon) {\n return /*#__PURE__*/React.createElement(\"span\", {\n className: prefixCls + \"-loading-icon\"\n }, /*#__PURE__*/React.createElement(LoadingOutlined, null));\n }\n return /*#__PURE__*/React.createElement(CSSMotion, {\n visible: visible,\n // We do not really use this motionName\n motionName: prefixCls + \"-loading-icon-motion\",\n removeOnLeave: true,\n onAppearStart: getCollapsedWidth,\n onAppearActive: getRealWidth,\n onEnterStart: getCollapsedWidth,\n onEnterActive: getRealWidth,\n onLeaveStart: getRealWidth,\n onLeaveActive: getCollapsedWidth\n }, function (_ref2, ref) {\n var className = _ref2.className,\n style = _ref2.style;\n return /*#__PURE__*/React.createElement(\"span\", {\n className: prefixCls + \"-loading-icon\",\n style: style,\n ref: ref\n }, /*#__PURE__*/React.createElement(LoadingOutlined, {\n className: className\n }));\n });\n};\nexport default LoadingIcon;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar genButtonBorderStyle = function genButtonBorderStyle(buttonTypeCls, borderColor) {\n return _defineProperty({}, \"> span, > \" + buttonTypeCls, {\n '&:not(:last-child)': _defineProperty({}, \"&, & > \" + buttonTypeCls, {\n '&:not(:disabled)': {\n borderInlineEndColor: borderColor\n }\n }),\n '&:not(:first-child)': _defineProperty({}, \"&, & > \" + buttonTypeCls, {\n '&:not(:disabled)': {\n borderInlineStartColor: borderColor\n }\n })\n });\n};\nvar genGroupStyle = function genGroupStyle(token) {\n var _componentCls, _ref2;\n var componentCls = token.componentCls,\n fontSize = token.fontSize,\n lineWidth = token.lineWidth,\n colorPrimaryHover = token.colorPrimaryHover,\n colorErrorHover = token.colorErrorHover;\n return _defineProperty({}, componentCls + \"-group\", [(_ref2 = {\n position: 'relative',\n display: 'inline-flex'\n }, _defineProperty(_ref2, \"> span, > \" + componentCls, {\n '&:not(:last-child)': _defineProperty({}, \"&, & > \" + componentCls, {\n borderStartEndRadius: 0,\n borderEndEndRadius: 0\n }),\n '&:not(:first-child)': _defineProperty({\n marginInlineStart: -lineWidth\n }, \"&, & > \" + componentCls, {\n borderStartStartRadius: 0,\n borderEndStartRadius: 0\n })\n }), _defineProperty(_ref2, componentCls, (_componentCls = {\n position: 'relative',\n zIndex: 1\n }, _defineProperty(_componentCls, \"&:hover,\\n &:focus,\\n &:active\", {\n zIndex: 2\n }), _defineProperty(_componentCls, '&[disabled]', {\n zIndex: 0\n }), _componentCls)), _defineProperty(_ref2, componentCls + \"-icon-only\", {\n fontSize: fontSize\n }), _ref2),\n // Border Color\n genButtonBorderStyle(componentCls + \"-primary\", colorPrimaryHover), genButtonBorderStyle(componentCls + \"-danger\", colorErrorHover)]);\n};\nexport default genGroupStyle;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\n// handle border collapse\nfunction compactItemBorder(token, borderedItemCls, popoverFocusedCls) {\n var childCombinator = borderedItemCls ? '> *' : '';\n return {\n '&-item:not(&-last-item)': {\n marginInlineEnd: -token.lineWidth\n },\n '&-item': _extends(_extends(_defineProperty({}, \"&:hover \" + childCombinator + \", &:focus \" + childCombinator + \", &:active \" + childCombinator, {\n zIndex: 2\n }), popoverFocusedCls ? _defineProperty({}, \"&\" + popoverFocusedCls, {\n zIndex: 2\n }) : {}), _defineProperty({}, \"&[disabled] \" + childCombinator, {\n zIndex: 0\n }))\n };\n}\n// handle border-radius\nfunction compactItemBorderRadius(prefixCls, borderedElementCls) {\n var _ref2;\n var childCombinator = borderedElementCls ? \"> \" + borderedElementCls : '';\n return _ref2 = {}, _defineProperty(_ref2, \"&-item:not(&-first-item):not(&-last-item) \" + childCombinator, {\n borderRadius: 0\n }), _defineProperty(_ref2, '&-item:not(&-last-item)&-first-item', _defineProperty({}, \"& \" + childCombinator + \", &\" + prefixCls + \"-sm \" + childCombinator + \", &\" + prefixCls + \"-lg \" + childCombinator, {\n borderStartEndRadius: 0,\n borderEndEndRadius: 0\n })), _defineProperty(_ref2, '&-item:not(&-first-item)&-last-item', _defineProperty({}, \"& \" + childCombinator + \", &\" + prefixCls + \"-sm \" + childCombinator + \", &\" + prefixCls + \"-lg \" + childCombinator, {\n borderStartStartRadius: 0,\n borderEndStartRadius: 0\n })), _ref2;\n}\nexport function genCompactItemStyle(token, prefixCls, /** Some component borders are implemented on child elements like `Select` */\nborderedElementCls,\n/**\n * Some components have special `focus` className especially with popovers like `Select` and\n * `DatePicker`\n */\npopoverFocusedCls) {\n return {\n '&-compact': _extends(_extends({}, compactItemBorder(token, borderedElementCls, popoverFocusedCls)), compactItemBorderRadius(prefixCls, borderedElementCls))\n };\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nfunction compactItemVerticalBorder(token) {\n return {\n // border collapse\n '&-item:not(&-last-item)': {\n marginBottom: -token.lineWidth\n },\n '&-item': {\n '&:hover,&:focus,&:active': {\n zIndex: 2\n },\n '&[disabled]': {\n zIndex: 0\n }\n }\n };\n}\nfunction compactItemBorderVerticalRadius(prefixCls) {\n return {\n '&-item:not(&-first-item):not(&-last-item)': {\n borderRadius: 0\n },\n '&-item&-first-item:not(&-last-item)': _defineProperty({}, \"&, &\" + prefixCls + \"-sm, &\" + prefixCls + \"-lg\", {\n borderEndEndRadius: 0,\n borderEndStartRadius: 0\n }),\n '&-item&-last-item:not(&-first-item)': _defineProperty({}, \"&, &\" + prefixCls + \"-sm, &\" + prefixCls + \"-lg\", {\n borderStartStartRadius: 0,\n borderStartEndRadius: 0\n })\n };\n}\nexport function genCompactItemVerticalStyle(token, prefixCls) {\n return {\n '&-compact-vertical': _extends(_extends({}, compactItemVerticalBorder(token)), compactItemBorderVerticalRadius(prefixCls))\n };\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport genGroupStyle from './group';\nimport { genFocusStyle } from '../../style';\nimport { genCompactItemStyle } from '../../style/compact-item';\nimport { genCompactItemVerticalStyle } from '../../style/compact-item-vertical';\n// ============================== Shared ==============================\nvar genSharedButtonStyle = function genSharedButtonStyle(token) {\n var _extends2, _extends3;\n var componentCls = token.componentCls,\n iconCls = token.iconCls;\n return _defineProperty({}, componentCls, _extends(_extends(_extends((_extends2 = {\n outline: 'none',\n position: 'relative',\n display: 'inline-block',\n fontWeight: 400,\n whiteSpace: 'nowrap',\n textAlign: 'center',\n backgroundImage: 'none',\n backgroundColor: 'transparent',\n border: token.lineWidth + \"px \" + token.lineType + \" transparent\",\n cursor: 'pointer',\n transition: \"all \" + token.motionDurationMid + \" \" + token.motionEaseInOut,\n userSelect: 'none',\n touchAction: 'manipulation',\n lineHeight: token.lineHeight,\n color: token.colorText,\n '> span': {\n display: 'inline-block'\n }\n }, _defineProperty(_extends2, \"> \" + iconCls + \" + span, > span + \" + iconCls, {\n marginInlineStart: token.marginXS\n }), _defineProperty(_extends2, '&:not(:disabled)', _extends({}, genFocusStyle(token))), _extends2), genCompactItemStyle(token, componentCls)), genCompactItemVerticalStyle(token, componentCls)), (_extends3 = {\n // make `btn-icon-only` not too narrow\n '&-icon-only&-compact-item': {\n flex: 'none'\n }\n }, _defineProperty(_extends3, \"&-compact-item\" + componentCls + \"-primary\", {\n '&:not([disabled]) + &:not([disabled])': {\n position: 'relative',\n '&:after': {\n position: 'absolute',\n top: -token.lineWidth,\n insetInlineStart: -token.lineWidth,\n display: 'inline-block',\n width: token.lineWidth,\n height: \"calc(100% + \" + token.lineWidth * 2 + \"px)\",\n backgroundColor: token.colorPrimaryBorder,\n content: '\"\"'\n }\n }\n }), _defineProperty(_extends3, '&-compact-vertical-item', _defineProperty({}, \"&\" + componentCls + \"-primary\", {\n '&:not([disabled]) + &:not([disabled])': {\n position: 'relative',\n '&:after': {\n position: 'absolute',\n top: -token.lineWidth,\n insetInlineStart: -token.lineWidth,\n display: 'inline-block',\n width: \"calc(100% + \" + token.lineWidth * 2 + \"px)\",\n height: token.lineWidth,\n backgroundColor: token.colorPrimaryBorder,\n content: '\"\"'\n }\n }\n })), _extends3)));\n};\nvar genHoverActiveButtonStyle = function genHoverActiveButtonStyle(hoverStyle, activeStyle) {\n return {\n '&:not(:disabled)': {\n '&:hover': hoverStyle,\n '&:active': activeStyle\n }\n };\n};\n// ============================== Shape ===============================\nvar genCircleButtonStyle = function genCircleButtonStyle(token) {\n return {\n minWidth: token.controlHeight,\n paddingInlineStart: 0,\n paddingInlineEnd: 0,\n borderRadius: '50%'\n };\n};\nvar genRoundButtonStyle = function genRoundButtonStyle(token) {\n return {\n borderRadius: token.controlHeight,\n paddingInlineStart: token.controlHeight / 2,\n paddingInlineEnd: token.controlHeight / 2,\n width: 'auto'\n };\n};\n// =============================== Type ===============================\nvar genGhostButtonStyle = function genGhostButtonStyle(btnCls, textColor, borderColor, textColorDisabled, borderColorDisabled, hoverStyle, activeStyle) {\n return _defineProperty({}, \"&\" + btnCls + \"-background-ghost\", _extends(_extends({\n color: textColor || undefined,\n backgroundColor: 'transparent',\n borderColor: borderColor || undefined,\n boxShadow: 'none'\n }, genHoverActiveButtonStyle(_extends({\n backgroundColor: 'transparent'\n }, hoverStyle), _extends({\n backgroundColor: 'transparent'\n }, activeStyle))), {\n '&:disabled': {\n cursor: 'not-allowed',\n color: textColorDisabled || undefined,\n borderColor: borderColorDisabled || undefined\n }\n }));\n};\nvar genSolidDisabledButtonStyle = function genSolidDisabledButtonStyle(token) {\n return {\n '&:disabled': {\n cursor: 'not-allowed',\n borderColor: token.colorBorder,\n color: token.colorTextDisabled,\n backgroundColor: token.colorBgContainerDisabled,\n boxShadow: 'none'\n }\n };\n};\nvar genSolidButtonStyle = function genSolidButtonStyle(token) {\n return _extends({}, genSolidDisabledButtonStyle(token));\n};\nvar genPureDisabledButtonStyle = function genPureDisabledButtonStyle(token) {\n return {\n '&:disabled': {\n cursor: 'not-allowed',\n color: token.colorTextDisabled\n }\n };\n};\n// Type: Default\nvar genDefaultButtonStyle = function genDefaultButtonStyle(token) {\n return _extends(_extends(_extends(_extends(_extends({}, genSolidButtonStyle(token)), {\n backgroundColor: token.colorBgContainer,\n borderColor: token.colorBorder,\n boxShadow: \"0 \" + token.controlOutlineWidth + \"px 0 \" + token.controlTmpOutline\n }), genHoverActiveButtonStyle({\n color: token.colorPrimaryHover,\n borderColor: token.colorPrimaryHover\n }, {\n color: token.colorPrimaryActive,\n borderColor: token.colorPrimaryActive\n })), genGhostButtonStyle(token.componentCls, token.colorBgContainer, token.colorBgContainer, token.colorTextDisabled, token.colorBorder)), _defineProperty({}, \"&\" + token.componentCls + \"-dangerous\", _extends(_extends(_extends({\n color: token.colorError,\n borderColor: token.colorError\n }, genHoverActiveButtonStyle({\n color: token.colorErrorHover,\n borderColor: token.colorErrorBorderHover\n }, {\n color: token.colorErrorActive,\n borderColor: token.colorErrorActive\n })), genGhostButtonStyle(token.componentCls, token.colorError, token.colorError, token.colorTextDisabled, token.colorBorder)), genSolidDisabledButtonStyle(token))));\n};\n// Type: Primary\nvar genPrimaryButtonStyle = function genPrimaryButtonStyle(token) {\n return _extends(_extends(_extends(_extends(_extends({}, genSolidButtonStyle(token)), {\n color: token.colorTextLightSolid,\n backgroundColor: token.colorPrimary,\n boxShadow: \"0 \" + token.controlOutlineWidth + \"px 0 \" + token.controlOutline\n }), genHoverActiveButtonStyle({\n color: token.colorTextLightSolid,\n backgroundColor: token.colorPrimaryHover\n }, {\n color: token.colorTextLightSolid,\n backgroundColor: token.colorPrimaryActive\n })), genGhostButtonStyle(token.componentCls, token.colorPrimary, token.colorPrimary, token.colorTextDisabled, token.colorBorder, {\n color: token.colorPrimaryHover,\n borderColor: token.colorPrimaryHover\n }, {\n color: token.colorPrimaryActive,\n borderColor: token.colorPrimaryActive\n })), _defineProperty({}, \"&\" + token.componentCls + \"-dangerous\", _extends(_extends(_extends({\n backgroundColor: token.colorError,\n boxShadow: \"0 \" + token.controlOutlineWidth + \"px 0 \" + token.colorErrorOutline\n }, genHoverActiveButtonStyle({\n backgroundColor: token.colorErrorHover\n }, {\n backgroundColor: token.colorErrorActive\n })), genGhostButtonStyle(token.componentCls, token.colorError, token.colorError, token.colorTextDisabled, token.colorBorder, {\n color: token.colorErrorHover,\n borderColor: token.colorErrorHover\n }, {\n color: token.colorErrorActive,\n borderColor: token.colorErrorActive\n })), genSolidDisabledButtonStyle(token))));\n};\n// Type: Dashed\nvar genDashedButtonStyle = function genDashedButtonStyle(token) {\n return _extends(_extends({}, genDefaultButtonStyle(token)), {\n borderStyle: 'dashed'\n });\n};\n// Type: Link\nvar genLinkButtonStyle = function genLinkButtonStyle(token) {\n return _extends(_extends(_extends({\n color: token.colorLink\n }, genHoverActiveButtonStyle({\n color: token.colorLinkHover\n }, {\n color: token.colorLinkActive\n })), genPureDisabledButtonStyle(token)), _defineProperty({}, \"&\" + token.componentCls + \"-dangerous\", _extends(_extends({\n color: token.colorError\n }, genHoverActiveButtonStyle({\n color: token.colorErrorHover\n }, {\n color: token.colorErrorActive\n })), genPureDisabledButtonStyle(token))));\n};\n// Type: Text\nvar genTextButtonStyle = function genTextButtonStyle(token) {\n return _extends(_extends(_extends({}, genHoverActiveButtonStyle({\n color: token.colorText,\n backgroundColor: token.colorBgTextHover\n }, {\n color: token.colorText,\n backgroundColor: token.colorBgTextActive\n })), genPureDisabledButtonStyle(token)), _defineProperty({}, \"&\" + token.componentCls + \"-dangerous\", _extends(_extends({\n color: token.colorError\n }, genPureDisabledButtonStyle(token)), genHoverActiveButtonStyle({\n color: token.colorErrorHover,\n backgroundColor: token.colorErrorBg\n }, {\n color: token.colorErrorHover,\n backgroundColor: token.colorErrorBg\n }))));\n};\nvar genTypeButtonStyle = function genTypeButtonStyle(token) {\n var _ref3;\n var componentCls = token.componentCls;\n return _ref3 = {}, _defineProperty(_ref3, componentCls + \"-default\", genDefaultButtonStyle(token)), _defineProperty(_ref3, componentCls + \"-primary\", genPrimaryButtonStyle(token)), _defineProperty(_ref3, componentCls + \"-dashed\", genDashedButtonStyle(token)), _defineProperty(_ref3, componentCls + \"-link\", genLinkButtonStyle(token)), _defineProperty(_ref3, componentCls + \"-text\", genTextButtonStyle(token)), _ref3;\n};\n// =============================== Size ===============================\nvar genSizeButtonStyle = function genSizeButtonStyle(token) {\n var _ref4;\n var sizePrefixCls = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var componentCls = token.componentCls,\n iconCls = token.iconCls;\n var paddingVertical = Math.max(0, (token.controlHeight - token.fontSize * token.lineHeight) / 2 - token.lineWidth);\n var paddingHorizontal = token.buttonPaddingHorizontal - token.lineWidth;\n var iconOnlyCls = componentCls + \"-icon-only\";\n return [// Size\n _defineProperty({}, \"\" + componentCls + sizePrefixCls, (_ref4 = {\n fontSize: token.fontSize,\n height: token.controlHeight,\n padding: paddingVertical + \"px \" + paddingHorizontal + \"px\",\n borderRadius: token.borderRadius\n }, _defineProperty(_ref4, \"&\" + iconOnlyCls, {\n width: token.controlHeight,\n paddingInlineStart: 0,\n paddingInlineEnd: 0,\n '> span': {\n transform: 'scale(1.143)' // 14px -> 16px\n }\n }), _defineProperty(_ref4, \"&\" + componentCls + \"-loading\", {\n opacity: token.opacityLoading,\n cursor: 'default'\n }), _defineProperty(_ref4, componentCls + \"-loading-icon\", {\n transition: \"width \" + token.motionDurationSlow + \" \" + token.motionEaseInOut + \", opacity \" + token.motionDurationSlow + \" \" + token.motionEaseInOut\n }), _defineProperty(_ref4, \"&:not(\" + iconOnlyCls + \") \" + componentCls + \"-loading-icon > \" + iconCls, {\n marginInlineEnd: token.marginXS\n }), _ref4)), // Shape - patch prefixCls again to override solid border radius style\n _defineProperty({}, \"\" + componentCls + componentCls + \"-circle\" + sizePrefixCls, genCircleButtonStyle(token)), _defineProperty({}, \"\" + componentCls + componentCls + \"-round\" + sizePrefixCls, genRoundButtonStyle(token))];\n};\nvar genSizeBaseButtonStyle = function genSizeBaseButtonStyle(token) {\n return genSizeButtonStyle(token);\n};\nvar genSizeSmallButtonStyle = function genSizeSmallButtonStyle(token) {\n var smallToken = mergeToken(token, {\n controlHeight: token.controlHeightSM,\n padding: token.paddingXS,\n buttonPaddingHorizontal: 8,\n borderRadius: token.borderRadiusSM\n });\n return genSizeButtonStyle(smallToken, token.componentCls + \"-sm\");\n};\nvar genSizeLargeButtonStyle = function genSizeLargeButtonStyle(token) {\n var largeToken = mergeToken(token, {\n controlHeight: token.controlHeightLG,\n fontSize: token.fontSizeLG,\n borderRadius: token.borderRadiusLG\n });\n return genSizeButtonStyle(largeToken, token.componentCls + \"-lg\");\n};\nvar genBlockButtonStyle = function genBlockButtonStyle(token) {\n var componentCls = token.componentCls;\n return _defineProperty({}, componentCls, _defineProperty({}, \"&\" + componentCls + \"-block\", {\n width: '100%'\n }));\n};\n// ============================== Export ==============================\nexport default genComponentStyleHook('Button', function (token) {\n var controlTmpOutline = token.controlTmpOutline,\n paddingContentHorizontal = token.paddingContentHorizontal;\n var buttonToken = mergeToken(token, {\n colorOutlineDefault: controlTmpOutline,\n buttonPaddingHorizontal: paddingContentHorizontal\n });\n return [\n // Shared\n genSharedButtonStyle(buttonToken),\n // Size\n genSizeSmallButtonStyle(buttonToken), genSizeBaseButtonStyle(buttonToken), genSizeLargeButtonStyle(buttonToken),\n // Block\n genBlockButtonStyle(buttonToken),\n // Group (type, ghost, danger, disabled, loading)\n genTypeButtonStyle(buttonToken),\n // Button Group\n genGroupStyle(buttonToken)];\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") 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])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n/* eslint-disable react/button-has-type */\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport DisabledContext from '../config-provider/DisabledContext';\nimport SizeContext from '../config-provider/SizeContext';\nimport { useCompactItemContext } from '../space/Compact';\nimport { cloneElement, isFragment } from '../_util/reactNode';\nimport { tuple } from '../_util/type';\nimport warning from '../_util/warning';\nimport Wave from '../_util/wave';\nimport Group, { GroupSizeContext } from './button-group';\nimport LoadingIcon from './LoadingIcon';\n// CSSINJS\nimport useStyle from './style';\nvar rxTwoCNChar = /^[\\u4e00-\\u9fa5]{2}$/;\nvar isTwoCNChar = rxTwoCNChar.test.bind(rxTwoCNChar);\nfunction isString(str) {\n return typeof str === 'string';\n}\nfunction isUnBorderedButtonType(type) {\n return type === 'text' || type === 'link';\n}\n// Insert one space between two chinese characters automatically.\nfunction insertSpace(child, needInserted) {\n // Check the child if is undefined or null.\n if (child === null || child === undefined) {\n return;\n }\n var SPACE = needInserted ? ' ' : '';\n // strictNullChecks oops.\n if (typeof child !== 'string' && typeof child !== 'number' && isString(child.type) && isTwoCNChar(child.props.children)) {\n return cloneElement(child, {\n children: child.props.children.split('').join(SPACE)\n });\n }\n if (typeof child === 'string') {\n return isTwoCNChar(child) ? /*#__PURE__*/React.createElement(\"span\", null, child.split('').join(SPACE)) : /*#__PURE__*/React.createElement(\"span\", null, child);\n }\n if (isFragment(child)) {\n return /*#__PURE__*/React.createElement(\"span\", null, child);\n }\n return child;\n}\nfunction spaceChildren(children, needInserted) {\n var isPrevChildPure = false;\n var childList = [];\n React.Children.forEach(children, function (child) {\n var type = _typeof(child);\n var isCurrentChildPure = type === 'string' || type === 'number';\n if (isPrevChildPure && isCurrentChildPure) {\n var lastIndex = childList.length - 1;\n var lastChild = childList[lastIndex];\n childList[lastIndex] = \"\" + lastChild + child;\n } else {\n childList.push(child);\n }\n isPrevChildPure = isCurrentChildPure;\n });\n // Pass to React.Children.map to auto fill key\n return React.Children.map(childList, function (child) {\n return insertSpace(child, needInserted);\n });\n}\nvar ButtonTypes = tuple('default', 'primary', 'ghost', 'dashed', 'link', 'text');\nvar ButtonShapes = tuple('default', 'circle', 'round');\nvar ButtonHTMLTypes = tuple('submit', 'button', 'reset');\nexport function convertLegacyProps(type) {\n if (type === 'danger') {\n return {\n danger: true\n };\n }\n return {\n type: type\n };\n}\nvar InternalButton = function InternalButton(props, ref) {\n var _classNames;\n var _props$loading = props.loading,\n loading = _props$loading === void 0 ? false : _props$loading,\n customizePrefixCls = props.prefixCls,\n _props$type = props.type,\n type = _props$type === void 0 ? 'default' : _props$type,\n danger = props.danger,\n _props$shape = props.shape,\n shape = _props$shape === void 0 ? 'default' : _props$shape,\n customizeSize = props.size,\n customDisabled = props.disabled,\n className = props.className,\n children = props.children,\n icon = props.icon,\n _props$ghost = props.ghost,\n ghost = _props$ghost === void 0 ? false : _props$ghost,\n _props$block = props.block,\n block = _props$block === void 0 ? false : _props$block,\n _props$htmlType = props.htmlType,\n htmlType = _props$htmlType === void 0 ? 'button' : _props$htmlType,\n rest = __rest(props, [\"loading\", \"prefixCls\", \"type\", \"danger\", \"shape\", \"size\", \"disabled\", \"className\", \"children\", \"icon\", \"ghost\", \"block\", \"htmlType\"]);\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n autoInsertSpaceInButton = _React$useContext.autoInsertSpaceInButton,\n direction = _React$useContext.direction;\n var prefixCls = getPrefixCls('btn', customizePrefixCls);\n // Style\n var _useStyle = useStyle(prefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n wrapSSR = _useStyle2[0],\n hashId = _useStyle2[1];\n var size = React.useContext(SizeContext);\n // ===================== Disabled =====================\n var disabled = React.useContext(DisabledContext);\n var mergedDisabled = customDisabled !== null && customDisabled !== void 0 ? customDisabled : disabled;\n var groupSize = React.useContext(GroupSizeContext);\n var _React$useState = React.useState(!!loading),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n innerLoading = _React$useState2[0],\n setLoading = _React$useState2[1];\n var _React$useState3 = React.useState(false),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n hasTwoCNChar = _React$useState4[0],\n setHasTwoCNChar = _React$useState4[1];\n var buttonRef = ref || /*#__PURE__*/React.createRef();\n var isNeedInserted = function isNeedInserted() {\n return React.Children.count(children) === 1 && !icon && !isUnBorderedButtonType(type);\n };\n var fixTwoCNChar = function fixTwoCNChar() {\n // Fix for HOC usage like \n if (!buttonRef || !buttonRef.current || autoInsertSpaceInButton === false) {\n return;\n }\n var buttonText = buttonRef.current.textContent;\n if (isNeedInserted() && isTwoCNChar(buttonText)) {\n if (!hasTwoCNChar) {\n setHasTwoCNChar(true);\n }\n } else if (hasTwoCNChar) {\n setHasTwoCNChar(false);\n }\n };\n // =============== Update Loading ===============\n var loadingOrDelay = typeof loading === 'boolean' ? loading : (loading === null || loading === void 0 ? void 0 : loading.delay) || true;\n React.useEffect(function () {\n var delayTimer = null;\n if (typeof loadingOrDelay === 'number') {\n delayTimer = window.setTimeout(function () {\n delayTimer = null;\n setLoading(loadingOrDelay);\n }, loadingOrDelay);\n } else {\n setLoading(loadingOrDelay);\n }\n return function () {\n if (delayTimer) {\n // in order to not perform a React state update on an unmounted component\n // and clear timer after 'loadingOrDelay' updated.\n window.clearTimeout(delayTimer);\n delayTimer = null;\n }\n };\n }, [loadingOrDelay]);\n React.useEffect(fixTwoCNChar, [buttonRef]);\n var handleClick = function handleClick(e) {\n var onClick = props.onClick;\n // https://github.com/ant-design/ant-design/issues/30207\n if (innerLoading || mergedDisabled) {\n e.preventDefault();\n return;\n }\n onClick === null || onClick === void 0 ? void 0 : onClick(e);\n };\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof icon === 'string' && icon.length > 2), 'Button', \"`icon` is using ReactNode instead of string naming in v4. Please check `\" + icon + \"` at https://ant.design/components/icon\") : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!(ghost && isUnBorderedButtonType(type)), 'Button', \"`link` or `text` button can't be a `ghost` button.\") : void 0;\n var autoInsertSpace = autoInsertSpaceInButton !== false;\n var _useCompactItemContex = useCompactItemContext(prefixCls, direction),\n compactSize = _useCompactItemContex.compactSize,\n compactItemClassnames = _useCompactItemContex.compactItemClassnames;\n var sizeClassNameMap = {\n large: 'lg',\n small: 'sm',\n middle: undefined\n };\n var sizeFullname = compactSize || groupSize || customizeSize || size;\n var sizeCls = sizeFullname ? sizeClassNameMap[sizeFullname] || '' : '';\n var iconType = innerLoading ? 'loading' : icon;\n var linkButtonRestProps = omit(rest, ['navigate']);\n var classes = classNames(prefixCls, hashId, (_classNames = {}, _defineProperty(_classNames, prefixCls + \"-\" + shape, shape !== 'default' && shape), _defineProperty(_classNames, prefixCls + \"-\" + type, type), _defineProperty(_classNames, prefixCls + \"-\" + sizeCls, sizeCls), _defineProperty(_classNames, prefixCls + \"-icon-only\", !children && children !== 0 && !!iconType), _defineProperty(_classNames, prefixCls + \"-background-ghost\", ghost && !isUnBorderedButtonType(type)), _defineProperty(_classNames, prefixCls + \"-loading\", innerLoading), _defineProperty(_classNames, prefixCls + \"-two-chinese-chars\", hasTwoCNChar && autoInsertSpace && !innerLoading), _defineProperty(_classNames, prefixCls + \"-block\", block), _defineProperty(_classNames, prefixCls + \"-dangerous\", !!danger), _defineProperty(_classNames, prefixCls + \"-rtl\", direction === 'rtl'), _defineProperty(_classNames, prefixCls + \"-disabled\", linkButtonRestProps.href !== undefined && mergedDisabled), _classNames), compactItemClassnames, className);\n var iconNode = icon && !innerLoading ? icon : /*#__PURE__*/React.createElement(LoadingIcon, {\n existIcon: !!icon,\n prefixCls: prefixCls,\n loading: !!innerLoading\n });\n var kids = children || children === 0 ? spaceChildren(children, isNeedInserted() && autoInsertSpace) : null;\n if (linkButtonRestProps.href !== undefined) {\n return wrapSSR( /*#__PURE__*/React.createElement(\"a\", _extends({}, linkButtonRestProps, {\n className: classes,\n onClick: handleClick,\n ref: buttonRef\n }), iconNode, kids));\n }\n var buttonNode = /*#__PURE__*/React.createElement(\"button\", _extends({}, rest, {\n type: htmlType,\n className: classes,\n onClick: handleClick,\n disabled: mergedDisabled,\n ref: buttonRef\n }), iconNode, kids);\n if (!isUnBorderedButtonType(type)) {\n buttonNode = /*#__PURE__*/React.createElement(Wave, {\n disabled: !!innerLoading\n }, buttonNode);\n }\n return wrapSSR(buttonNode);\n};\nvar Button = /*#__PURE__*/React.forwardRef(InternalButton);\nif (process.env.NODE_ENV !== 'production') {\n Button.displayName = 'Button';\n}\nButton.Group = Group;\nButton.__ANT_BUTTON = true;\nexport default Button;","import Button from './button';\nexport default Button;","import { initializeConnector } from \"@web3-react/core\";\nimport { MetaMask } from \"@web3-react/metamask\";\n\nexport const [metaMask, hooks] = initializeConnector((actions) => new MetaMask({ actions }));\n","import type { AddEthereumChainParameter } from \"@web3-react/types\";\n\nconst infuraKey = process.env.REACT_APP_INFURA_KEY;\nconst alchemyKey = process.env.REACT_APP_INFURA_KEY;\nconst pocketNetwork = process.env.REACT_APP_POCKET_KEY;\n\nconst ETH: AddEthereumChainParameter[\"nativeCurrency\"] = {\n name: \"Ether\",\n symbol: \"ETH\",\n decimals: 18\n};\n\nconst MATIC: AddEthereumChainParameter[\"nativeCurrency\"] = {\n name: \"Matic\",\n symbol: \"MATIC\",\n decimals: 18\n};\n\nconst BSC: AddEthereumChainParameter[\"nativeCurrency\"] = {\n name: \"BNB Chain\",\n symbol: \"BNB\",\n decimals: 18\n};\n\ninterface BasicChainInformation {\n chainId: string;\n urls: string[];\n name: string;\n}\n\ninterface ExtendedChainInformation extends BasicChainInformation {\n nativeCurrency: AddEthereumChainParameter[\"nativeCurrency\"];\n blockExplorerUrls: AddEthereumChainParameter[\"blockExplorerUrls\"];\n}\n\nfunction isExtendedChainInformation(\n chainInformation: BasicChainInformation | ExtendedChainInformation\n): chainInformation is ExtendedChainInformation {\n return !!(chainInformation as ExtendedChainInformation)?.nativeCurrency;\n}\n\nexport function getAddChainParameters(chainId: number): AddEthereumChainParameter | number {\n const chainInformation = CHAINS[chainId];\n if (isExtendedChainInformation(chainInformation)) {\n return {\n chainId,\n chainName: chainInformation.name,\n nativeCurrency: chainInformation.nativeCurrency,\n rpcUrls: chainInformation.urls,\n blockExplorerUrls: chainInformation.blockExplorerUrls\n };\n } else {\n return chainId;\n }\n}\n\nexport const getNativeByChain = (chainId: number): string | undefined => {\n const chainInformation = CHAINS[chainId];\n if (isExtendedChainInformation(chainInformation)) return chainInformation.nativeCurrency.symbol;\n return undefined;\n};\n\nexport const getExplorer = (chainId: number): string[] | undefined => {\n const chainInformation = CHAINS[chainId];\n if (isExtendedChainInformation(chainInformation)) return chainInformation.blockExplorerUrls;\n return undefined;\n};\n\nexport const CHAINS: {\n [chainId: number]: BasicChainInformation | ExtendedChainInformation;\n} = {\n 1: {\n chainId: \"1\",\n urls: [\n infuraKey ? `https://mainnet.infura.io/v3/${infuraKey}` : \"\",\n alchemyKey ? `https://eth-mainnet.g.alchemy.com/v2/${alchemyKey}` : \"\",\n pocketNetwork ? `https://eth-mainnet.gateway.pokt.network/v1/lb/${pocketNetwork}` : \"\",\n \"https://rpc.ankr.com/eth\",\n \"https://cloudflare-eth.com\"\n ].filter((url) => url !== \"\"),\n name: \"Mainnet\",\n nativeCurrency: ETH,\n blockExplorerUrls: [\"https://etherscan.io\"]\n },\n 5: {\n chainId: \"5\",\n urls: [\n infuraKey ? `https://goerli.infura.io/v3/${process.env.REACT_APP_INFURA_KEY}` : \"\",\n alchemyKey ? `https://eth-goerli.g.alchemy.com/v2/${alchemyKey}` : \"\",\n pocketNetwork ? `https://eth-goerli.gateway.pokt.network/v1/lb/${pocketNetwork}` : \"\",\n \"https://goerli.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161\"\n ].filter((url) => url !== \"\"),\n name: \"Görli\",\n nativeCurrency: ETH,\n blockExplorerUrls: [\"https://goerli.etherscan.io/\"]\n },\n // Polygon\n 137: {\n chainId: \"137\",\n urls: [\n infuraKey ? `https://polygon-mainnet.infura.io/v3/${process.env.REACT_APP_INFURA_KEY}` : \"\",\n alchemyKey ? `https://polygon-mainnet.g.alchemy.com/v2/${alchemyKey}` : \"\",\n pocketNetwork ? `https://poly-mainnet.gateway.pokt.network/v1/lb/${pocketNetwork}` : \"\",\n \"https://polygon-rpc.com\"\n ].filter((url) => url !== \"\"),\n name: \"Polygon Mainnet\",\n nativeCurrency: MATIC,\n blockExplorerUrls: [\"https://polygonscan.com\"]\n },\n 80001: {\n chainId: \"80001\",\n urls: [\n infuraKey ? `https://polygon-mumbai.infura.io/v3/${process.env.REACT_APP_INFURA_KEY}` : \"\",\n alchemyKey ? `https://polygon-mumbai.g.alchemy.com/v2/${alchemyKey}` : \"\",\n \"https://rpc-mumbai.maticvigil.com\"\n ].filter((url) => url !== \"\"),\n name: \"Polygon Mumbai\",\n nativeCurrency: MATIC,\n blockExplorerUrls: [\"https://mumbai.polygonscan.com\"]\n },\n // BSC\n 56: {\n chainId: \"56\",\n urls: [\n pocketNetwork ? `https://bsc-mainnet.gateway.pokt.network/v1/lb/${pocketNetwork}` : \"\",\n \"https://bsc-dataseed.binance.org/\",\n \"https://rpc.ankr.com/bsc\"\n ].filter((url) => url !== \"\"),\n name: \"BNB Chain\",\n nativeCurrency: BSC,\n blockExplorerUrls: [\"https://bscscan.com/\"]\n },\n 97: {\n chainId: \"97\",\n urls: [\"https://data-seed-prebsc-1-s1.binance.org:8545/\", \"https://data-seed-prebsc-1-s3.binance.org:8545/\"].filter(\n (url) => url !== \"\"\n ),\n name: \"BNB Testnet\",\n nativeCurrency: BSC,\n blockExplorerUrls: [\"https://testnet.bscscan.com/\"]\n }\n};\n\nexport const URLS: { [chainId: number]: string[] } = Object.keys(CHAINS).reduce<{ [chainId: number]: string[] }>(\n (accumulator, chainId) => {\n const validURLs: string[] = CHAINS[Number(chainId)].urls;\n\n if (validURLs.length) {\n accumulator[Number(chainId)] = validURLs;\n }\n\n return accumulator;\n },\n {}\n);\n\nexport const CHAINIDs: { [chainId: number]: string } = Object.keys(CHAINS).reduce<{ [chainId: number]: string }>(\n (accumulator, chainId) => {\n const validCHAINIDs: string = CHAINS[Number(chainId)].chainId;\n\n if (validCHAINIDs) {\n accumulator[Number(chainId)] = validCHAINIDs;\n }\n\n return accumulator;\n },\n {}\n);\n","import { initializeConnector } from \"@web3-react/core\";\nimport { WalletConnect } from \"@web3-react/walletconnect\";\n\nimport { URLS } from \"../constants/networks\";\n\nexport const [walletConnect, hooks] = initializeConnector(\n (actions) =>\n new WalletConnect({\n actions,\n options: {\n rpc: URLS\n }\n })\n);\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport classNames from 'classnames';\nimport * as React from 'react';\nvar Element = function Element(props) {\n var _classNames, _classNames2;\n var prefixCls = props.prefixCls,\n className = props.className,\n style = props.style,\n size = props.size,\n shape = props.shape;\n var sizeCls = classNames((_classNames = {}, _defineProperty(_classNames, prefixCls + \"-lg\", size === 'large'), _defineProperty(_classNames, prefixCls + \"-sm\", size === 'small'), _classNames));\n var shapeCls = classNames((_classNames2 = {}, _defineProperty(_classNames2, prefixCls + \"-circle\", shape === 'circle'), _defineProperty(_classNames2, prefixCls + \"-square\", shape === 'square'), _defineProperty(_classNames2, prefixCls + \"-round\", shape === 'round'), _classNames2));\n var sizeStyle = React.useMemo(function () {\n return typeof size === 'number' ? {\n width: size,\n height: size,\n lineHeight: size + \"px\"\n } : {};\n }, [size]);\n return /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(prefixCls, sizeCls, shapeCls, className),\n style: _extends(_extends({}, sizeStyle), style)\n });\n};\nexport default Element;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { Keyframes } from '@ant-design/cssinjs';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nvar skeletonClsLoading = new Keyframes(\"ant-skeleton-loading\", {\n '0%': {\n transform: 'translateX(-37.5%)'\n },\n '100%': {\n transform: 'translateX(37.5%)'\n }\n});\nvar genSkeletonElementCommonSize = function genSkeletonElementCommonSize(size) {\n return {\n height: size,\n lineHeight: size + \"px\"\n };\n};\nvar genSkeletonElementAvatarSize = function genSkeletonElementAvatarSize(size) {\n return _extends({\n width: size\n }, genSkeletonElementCommonSize(size));\n};\nvar genSkeletonColor = function genSkeletonColor(token) {\n return {\n position: 'relative',\n // fix https://github.com/ant-design/ant-design/issues/36444\n // https://monshin.github.io/202109/css/safari-border-radius-overflow-hidden/\n /* stylelint-disable-next-line property-no-vendor-prefix,value-no-vendor-prefix */\n zIndex: 0,\n overflow: 'hidden',\n background: 'transparent',\n '&::after': {\n position: 'absolute',\n top: 0,\n insetInlineEnd: '-150%',\n bottom: 0,\n insetInlineStart: '-150%',\n background: token.skeletonLoadingBackground,\n animationName: skeletonClsLoading,\n animationDuration: token.skeletonLoadingMotionDuration,\n animationTimingFunction: 'ease',\n animationIterationCount: 'infinite',\n content: '\"\"'\n }\n };\n};\nvar genSkeletonElementInputSize = function genSkeletonElementInputSize(size) {\n return _extends({\n width: size * 5,\n minWidth: size * 5\n }, genSkeletonElementCommonSize(size));\n};\nvar genSkeletonElementAvatar = function genSkeletonElementAvatar(token) {\n var _ref;\n var skeletonAvatarCls = token.skeletonAvatarCls,\n color = token.color,\n controlHeight = token.controlHeight,\n controlHeightLG = token.controlHeightLG,\n controlHeightSM = token.controlHeightSM;\n return _ref = {}, _defineProperty(_ref, \"\" + skeletonAvatarCls, _extends({\n display: 'inline-block',\n verticalAlign: 'top',\n background: color\n }, genSkeletonElementAvatarSize(controlHeight))), _defineProperty(_ref, \"\" + skeletonAvatarCls + skeletonAvatarCls + \"-circle\", {\n borderRadius: '50%'\n }), _defineProperty(_ref, \"\" + skeletonAvatarCls + skeletonAvatarCls + \"-lg\", _extends({}, genSkeletonElementAvatarSize(controlHeightLG))), _defineProperty(_ref, \"\" + skeletonAvatarCls + skeletonAvatarCls + \"-sm\", _extends({}, genSkeletonElementAvatarSize(controlHeightSM))), _ref;\n};\nvar genSkeletonElementInput = function genSkeletonElementInput(token) {\n var _ref2;\n var controlHeight = token.controlHeight,\n borderRadiusSM = token.borderRadiusSM,\n skeletonInputCls = token.skeletonInputCls,\n controlHeightLG = token.controlHeightLG,\n controlHeightSM = token.controlHeightSM,\n color = token.color;\n return _ref2 = {}, _defineProperty(_ref2, \"\" + skeletonInputCls, _extends({\n display: 'inline-block',\n verticalAlign: 'top',\n background: color,\n borderRadius: borderRadiusSM\n }, genSkeletonElementInputSize(controlHeight))), _defineProperty(_ref2, skeletonInputCls + \"-lg\", _extends({}, genSkeletonElementInputSize(controlHeightLG))), _defineProperty(_ref2, skeletonInputCls + \"-sm\", _extends({}, genSkeletonElementInputSize(controlHeightSM))), _ref2;\n};\nvar genSkeletonElementImageSize = function genSkeletonElementImageSize(size) {\n return _extends({\n width: size\n }, genSkeletonElementCommonSize(size));\n};\nvar genSkeletonElementImage = function genSkeletonElementImage(token) {\n var _extends2, _ref3;\n var skeletonImageCls = token.skeletonImageCls,\n imageSizeBase = token.imageSizeBase,\n color = token.color,\n borderRadiusSM = token.borderRadiusSM;\n return _ref3 = {}, _defineProperty(_ref3, \"\" + skeletonImageCls, _extends(_extends({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n verticalAlign: 'top',\n background: color,\n borderRadius: borderRadiusSM\n }, genSkeletonElementImageSize(imageSizeBase * 2)), (_extends2 = {}, _defineProperty(_extends2, skeletonImageCls + \"-path\", {\n fill: '#bfbfbf'\n }), _defineProperty(_extends2, skeletonImageCls + \"-svg\", _extends(_extends({}, genSkeletonElementImageSize(imageSizeBase)), {\n maxWidth: imageSizeBase * 4,\n maxHeight: imageSizeBase * 4\n })), _defineProperty(_extends2, skeletonImageCls + \"-svg\" + skeletonImageCls + \"-svg-circle\", {\n borderRadius: '50%'\n }), _extends2))), _defineProperty(_ref3, \"\" + skeletonImageCls + skeletonImageCls + \"-circle\", {\n borderRadius: '50%'\n }), _ref3;\n};\nvar genSkeletonElementButtonShape = function genSkeletonElementButtonShape(token, size, buttonCls) {\n var _ref4;\n var skeletonButtonCls = token.skeletonButtonCls;\n return _ref4 = {}, _defineProperty(_ref4, \"\" + buttonCls + skeletonButtonCls + \"-circle\", {\n width: size,\n minWidth: size,\n borderRadius: '50%'\n }), _defineProperty(_ref4, \"\" + buttonCls + skeletonButtonCls + \"-round\", {\n borderRadius: size\n }), _ref4;\n};\nvar genSkeletonElementButtonSize = function genSkeletonElementButtonSize(size) {\n return _extends({\n width: size * 2,\n minWidth: size * 2\n }, genSkeletonElementCommonSize(size));\n};\nvar genSkeletonElementButton = function genSkeletonElementButton(token) {\n var borderRadiusSM = token.borderRadiusSM,\n skeletonButtonCls = token.skeletonButtonCls,\n controlHeight = token.controlHeight,\n controlHeightLG = token.controlHeightLG,\n controlHeightSM = token.controlHeightSM,\n color = token.color;\n return _extends(_extends(_extends(_extends(_extends(_defineProperty({}, \"\" + skeletonButtonCls, _extends({\n display: 'inline-block',\n verticalAlign: 'top',\n background: color,\n borderRadius: borderRadiusSM,\n width: controlHeight * 2,\n minWidth: controlHeight * 2\n }, genSkeletonElementButtonSize(controlHeight))), genSkeletonElementButtonShape(token, controlHeight, skeletonButtonCls)), _defineProperty({}, skeletonButtonCls + \"-lg\", _extends({}, genSkeletonElementButtonSize(controlHeightLG)))), genSkeletonElementButtonShape(token, controlHeightLG, skeletonButtonCls + \"-lg\")), _defineProperty({}, skeletonButtonCls + \"-sm\", _extends({}, genSkeletonElementButtonSize(controlHeightSM)))), genSkeletonElementButtonShape(token, controlHeightSM, skeletonButtonCls + \"-sm\"));\n};\n// =============================== Base ===============================\nvar genBaseStyle = function genBaseStyle(token) {\n var _ref5, _ref7, _ref9, _ref12, _ref14;\n var componentCls = token.componentCls,\n skeletonAvatarCls = token.skeletonAvatarCls,\n skeletonTitleCls = token.skeletonTitleCls,\n skeletonParagraphCls = token.skeletonParagraphCls,\n skeletonButtonCls = token.skeletonButtonCls,\n skeletonInputCls = token.skeletonInputCls,\n skeletonImageCls = token.skeletonImageCls,\n controlHeight = token.controlHeight,\n controlHeightLG = token.controlHeightLG,\n controlHeightSM = token.controlHeightSM,\n color = token.color,\n padding = token.padding,\n marginSM = token.marginSM,\n borderRadius = token.borderRadius,\n skeletonTitleHeight = token.skeletonTitleHeight,\n skeletonBlockRadius = token.skeletonBlockRadius,\n skeletonParagraphLineHeight = token.skeletonParagraphLineHeight,\n controlHeightXS = token.controlHeightXS,\n skeletonParagraphMarginTop = token.skeletonParagraphMarginTop;\n return _ref14 = {}, _defineProperty(_ref14, \"\" + componentCls, (_ref9 = {\n display: 'table',\n width: '100%'\n }, _defineProperty(_ref9, componentCls + \"-header\", (_ref5 = {\n display: 'table-cell',\n paddingInlineEnd: padding,\n verticalAlign: 'top'\n }, _defineProperty(_ref5, \"\" + skeletonAvatarCls, _extends({\n display: 'inline-block',\n verticalAlign: 'top',\n background: color\n }, genSkeletonElementAvatarSize(controlHeight))), _defineProperty(_ref5, skeletonAvatarCls + \"-circle\", {\n borderRadius: '50%'\n }), _defineProperty(_ref5, skeletonAvatarCls + \"-lg\", _extends({}, genSkeletonElementAvatarSize(controlHeightLG))), _defineProperty(_ref5, skeletonAvatarCls + \"-sm\", _extends({}, genSkeletonElementAvatarSize(controlHeightSM))), _ref5)), _defineProperty(_ref9, componentCls + \"-content\", (_ref7 = {\n display: 'table-cell',\n width: '100%',\n verticalAlign: 'top'\n }, _defineProperty(_ref7, \"\" + skeletonTitleCls, _defineProperty({\n width: '100%',\n height: skeletonTitleHeight,\n background: color,\n borderRadius: skeletonBlockRadius\n }, \"+ \" + skeletonParagraphCls, {\n marginBlockStart: controlHeightSM\n })), _defineProperty(_ref7, \"\" + skeletonParagraphCls, {\n padding: 0,\n '> li': {\n width: '100%',\n height: skeletonParagraphLineHeight,\n listStyle: 'none',\n background: color,\n borderRadius: skeletonBlockRadius,\n '+ li': {\n marginBlockStart: controlHeightXS\n }\n }\n }), _defineProperty(_ref7, skeletonParagraphCls + \"> li:last-child:not(:first-child):not(:nth-child(2))\", {\n width: '61%'\n }), _ref7)), _defineProperty(_ref9, \"&-round \" + componentCls + \"-content\", _defineProperty({}, skeletonTitleCls + \", \" + skeletonParagraphCls + \" > li\", {\n borderRadius: borderRadius\n })), _ref9)), _defineProperty(_ref14, componentCls + \"-with-avatar \" + componentCls + \"-content\", _defineProperty({}, \"\" + skeletonTitleCls, _defineProperty({\n marginBlockStart: marginSM\n }, \"+ \" + skeletonParagraphCls, {\n marginBlockStart: skeletonParagraphMarginTop\n }))), _defineProperty(_ref14, \"\" + componentCls + componentCls + \"-element\", _extends(_extends(_extends(_extends({\n display: 'inline-block',\n width: 'auto'\n }, genSkeletonElementButton(token)), genSkeletonElementAvatar(token)), genSkeletonElementInput(token)), genSkeletonElementImage(token))), _defineProperty(_ref14, \"\" + componentCls + componentCls + \"-block\", (_ref12 = {\n width: '100%'\n }, _defineProperty(_ref12, \"\" + skeletonButtonCls, {\n width: '100%'\n }), _defineProperty(_ref12, \"\" + skeletonInputCls, {\n width: '100%'\n }), _ref12)), _defineProperty(_ref14, \"\" + componentCls + componentCls + \"-active\", _defineProperty({}, \"\\n \" + skeletonTitleCls + \",\\n \" + skeletonParagraphCls + \" > li,\\n \" + skeletonAvatarCls + \",\\n \" + skeletonButtonCls + \",\\n \" + skeletonInputCls + \",\\n \" + skeletonImageCls + \"\\n \", _extends({}, genSkeletonColor(token)))), _ref14;\n};\n// ============================== Export ==============================\nexport default genComponentStyleHook('Skeleton', function (token) {\n var componentCls = token.componentCls;\n var skeletonToken = mergeToken(token, {\n skeletonAvatarCls: componentCls + \"-avatar\",\n skeletonTitleCls: componentCls + \"-title\",\n skeletonParagraphCls: componentCls + \"-paragraph\",\n skeletonButtonCls: componentCls + \"-button\",\n skeletonInputCls: componentCls + \"-input\",\n skeletonImageCls: componentCls + \"-image\",\n imageSizeBase: token.controlHeight * 1.5,\n skeletonTitleHeight: token.controlHeight / 2,\n skeletonBlockRadius: token.borderRadiusSM,\n skeletonParagraphLineHeight: token.controlHeight / 2,\n skeletonParagraphMarginTop: token.marginLG + token.marginXXS,\n borderRadius: 100,\n skeletonLoadingBackground: \"linear-gradient(90deg, \" + token.color + \" 25%, \" + token.colorGradientEnd + \" 37%, \" + token.color + \" 63%)\",\n skeletonLoadingMotionDuration: '1.4s'\n });\n return [genBaseStyle(skeletonToken)];\n}, function (token) {\n var colorFillContent = token.colorFillContent,\n colorFill = token.colorFill;\n return {\n color: colorFillContent,\n colorGradientEnd: colorFill\n };\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport Element from './Element';\nimport useStyle from './style';\nvar SkeletonAvatar = function SkeletonAvatar(props) {\n var customizePrefixCls = props.prefixCls,\n className = props.className,\n active = props.active,\n _props$shape = props.shape,\n shape = _props$shape === void 0 ? 'circle' : _props$shape,\n _props$size = props.size,\n size = _props$size === void 0 ? 'default' : _props$size;\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls;\n var prefixCls = getPrefixCls('skeleton', customizePrefixCls);\n var _useStyle = useStyle(prefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n wrapSSR = _useStyle2[0],\n hashId = _useStyle2[1];\n var otherProps = omit(props, ['prefixCls', 'className']);\n var cls = classNames(prefixCls, prefixCls + \"-element\", _defineProperty({}, prefixCls + \"-active\", active), className, hashId);\n return wrapSSR( /*#__PURE__*/React.createElement(\"div\", {\n className: cls\n }, /*#__PURE__*/React.createElement(Element, _extends({\n prefixCls: prefixCls + \"-avatar\",\n shape: shape,\n size: size\n }, otherProps))));\n};\nexport default SkeletonAvatar;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport Element from './Element';\nimport useStyle from './style';\nvar SkeletonButton = function SkeletonButton(props) {\n var _classNames;\n var customizePrefixCls = props.prefixCls,\n className = props.className,\n active = props.active,\n _props$block = props.block,\n block = _props$block === void 0 ? false : _props$block,\n _props$size = props.size,\n size = _props$size === void 0 ? 'default' : _props$size;\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls;\n var prefixCls = getPrefixCls('skeleton', customizePrefixCls);\n var _useStyle = useStyle(prefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n wrapSSR = _useStyle2[0],\n hashId = _useStyle2[1];\n var otherProps = omit(props, ['prefixCls']);\n var cls = classNames(prefixCls, prefixCls + \"-element\", (_classNames = {}, _defineProperty(_classNames, prefixCls + \"-active\", active), _defineProperty(_classNames, prefixCls + \"-block\", block), _classNames), className, hashId);\n return wrapSSR( /*#__PURE__*/React.createElement(\"div\", {\n className: cls\n }, /*#__PURE__*/React.createElement(Element, _extends({\n prefixCls: prefixCls + \"-button\",\n size: size\n }, otherProps))));\n};\nexport default SkeletonButton;","// This icon file is generated automatically.\nvar DotChartOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M888 792H200V168c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h752c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM288 604a64 64 0 10128 0 64 64 0 10-128 0zm118-224a48 48 0 1096 0 48 48 0 10-96 0zm158 228a96 96 0 10192 0 96 96 0 10-192 0zm148-314a56 56 0 10112 0 56 56 0 10-112 0z\" } }] }, \"name\": \"dot-chart\", \"theme\": \"outlined\" };\nexport default DotChartOutlined;\n","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport DotChartOutlinedSvg from \"@ant-design/icons-svg/es/asn/DotChartOutlined\";\nimport AntdIcon from '../components/AntdIcon';\nvar DotChartOutlined = function DotChartOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _objectSpread(_objectSpread({}, props), {}, {\n ref: ref,\n icon: DotChartOutlinedSvg\n }));\n};\nDotChartOutlined.displayName = 'DotChartOutlined';\nexport default /*#__PURE__*/React.forwardRef(DotChartOutlined);","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport DotChartOutlined from \"@ant-design/icons/es/icons/DotChartOutlined\";\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport useStyle from './style';\nimport { ConfigContext } from '../config-provider';\nvar SkeletonNode = function SkeletonNode(props) {\n var customizePrefixCls = props.prefixCls,\n className = props.className,\n style = props.style,\n active = props.active,\n children = props.children;\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls;\n var prefixCls = getPrefixCls('skeleton', customizePrefixCls);\n var _useStyle = useStyle(prefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n wrapSSR = _useStyle2[0],\n hashId = _useStyle2[1];\n var cls = classNames(prefixCls, prefixCls + \"-element\", _defineProperty({}, prefixCls + \"-active\", active), hashId, className);\n var content = children !== null && children !== void 0 ? children : /*#__PURE__*/React.createElement(DotChartOutlined, null);\n return wrapSSR( /*#__PURE__*/React.createElement(\"div\", {\n className: cls\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(prefixCls + \"-image\", className),\n style: style\n }, content)));\n};\nexport default SkeletonNode;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport useStyle from './style';\nvar path = 'M365.714286 329.142857q0 45.714286-32.036571 77.677714t-77.677714 32.036571-77.677714-32.036571-32.036571-77.677714 32.036571-77.677714 77.677714-32.036571 77.677714 32.036571 32.036571 77.677714zM950.857143 548.571429l0 256-804.571429 0 0-109.714286 182.857143-182.857143 91.428571 91.428571 292.571429-292.571429zM1005.714286 146.285714l-914.285714 0q-7.460571 0-12.873143 5.412571t-5.412571 12.873143l0 694.857143q0 7.460571 5.412571 12.873143t12.873143 5.412571l914.285714 0q7.460571 0 12.873143-5.412571t5.412571-12.873143l0-694.857143q0-7.460571-5.412571-12.873143t-12.873143-5.412571zM1097.142857 164.571429l0 694.857143q0 37.741714-26.843429 64.585143t-64.585143 26.843429l-914.285714 0q-37.741714 0-64.585143-26.843429t-26.843429-64.585143l0-694.857143q0-37.741714 26.843429-64.585143t64.585143-26.843429l914.285714 0q37.741714 0 64.585143 26.843429t26.843429 64.585143z';\nvar SkeletonImage = function SkeletonImage(props) {\n var customizePrefixCls = props.prefixCls,\n className = props.className,\n style = props.style,\n active = props.active;\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls;\n var prefixCls = getPrefixCls('skeleton', customizePrefixCls);\n var _useStyle = useStyle(prefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n wrapSSR = _useStyle2[0],\n hashId = _useStyle2[1];\n var cls = classNames(prefixCls, prefixCls + \"-element\", _defineProperty({}, prefixCls + \"-active\", active), className, hashId);\n return wrapSSR( /*#__PURE__*/React.createElement(\"div\", {\n className: cls\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(prefixCls + \"-image\", className),\n style: style\n }, /*#__PURE__*/React.createElement(\"svg\", {\n viewBox: \"0 0 1098 1024\",\n xmlns: \"http://www.w3.org/2000/svg\",\n className: prefixCls + \"-image-svg\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: path,\n className: prefixCls + \"-image-path\"\n })))));\n};\nexport default SkeletonImage;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport Element from './Element';\nimport useStyle from './style';\nvar SkeletonInput = function SkeletonInput(props) {\n var _classNames;\n var customizePrefixCls = props.prefixCls,\n className = props.className,\n active = props.active,\n block = props.block,\n _props$size = props.size,\n size = _props$size === void 0 ? 'default' : _props$size;\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls;\n var prefixCls = getPrefixCls('skeleton', customizePrefixCls);\n var _useStyle = useStyle(prefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n wrapSSR = _useStyle2[0],\n hashId = _useStyle2[1];\n var otherProps = omit(props, ['prefixCls']);\n var cls = classNames(prefixCls, prefixCls + \"-element\", (_classNames = {}, _defineProperty(_classNames, prefixCls + \"-active\", active), _defineProperty(_classNames, prefixCls + \"-block\", block), _classNames), className, hashId);\n return wrapSSR( /*#__PURE__*/React.createElement(\"div\", {\n className: cls\n }, /*#__PURE__*/React.createElement(Element, _extends({\n prefixCls: prefixCls + \"-input\",\n size: size\n }, otherProps))));\n};\nexport default SkeletonInput;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport classNames from 'classnames';\nimport * as React from 'react';\nvar Paragraph = function Paragraph(props) {\n var getWidth = function getWidth(index) {\n var width = props.width,\n _props$rows = props.rows,\n rows = _props$rows === void 0 ? 2 : _props$rows;\n if (Array.isArray(width)) {\n return width[index];\n }\n // last paragraph\n if (rows - 1 === index) {\n return width;\n }\n return undefined;\n };\n var prefixCls = props.prefixCls,\n className = props.className,\n style = props.style,\n rows = props.rows;\n var rowList = _toConsumableArray(Array(rows)).map(function (_, index) {\n return (\n /*#__PURE__*/\n // eslint-disable-next-line react/no-array-index-key\n React.createElement(\"li\", {\n key: index,\n style: {\n width: getWidth(index)\n }\n })\n );\n });\n return /*#__PURE__*/React.createElement(\"ul\", {\n className: classNames(prefixCls, className),\n style: style\n }, rowList);\n};\nexport default Paragraph;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n/* eslint-disable jsx-a11y/heading-has-content */\nimport classNames from 'classnames';\nimport * as React from 'react';\nvar Title = function Title(_ref) {\n var prefixCls = _ref.prefixCls,\n className = _ref.className,\n width = _ref.width,\n style = _ref.style;\n return /*#__PURE__*/React.createElement(\"h3\", {\n className: classNames(prefixCls, className),\n style: _extends({\n width: width\n }, style)\n });\n};\nexport default Title;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport SkeletonAvatar from './Avatar';\nimport SkeletonButton from './Button';\nimport SkeletonNode from './Node';\nimport Element from './Element';\nimport SkeletonImage from './Image';\nimport SkeletonInput from './Input';\nimport Paragraph from './Paragraph';\nimport Title from './Title';\nimport useStyle from './style';\nfunction getComponentProps(prop) {\n if (prop && _typeof(prop) === 'object') {\n return prop;\n }\n return {};\n}\nfunction getAvatarBasicProps(hasTitle, hasParagraph) {\n if (hasTitle && !hasParagraph) {\n // Square avatar\n return {\n size: 'large',\n shape: 'square'\n };\n }\n return {\n size: 'large',\n shape: 'circle'\n };\n}\nfunction getTitleBasicProps(hasAvatar, hasParagraph) {\n if (!hasAvatar && hasParagraph) {\n return {\n width: '38%'\n };\n }\n if (hasAvatar && hasParagraph) {\n return {\n width: '50%'\n };\n }\n return {};\n}\nfunction getParagraphBasicProps(hasAvatar, hasTitle) {\n var basicProps = {};\n // Width\n if (!hasAvatar || !hasTitle) {\n basicProps.width = '61%';\n }\n // Rows\n if (!hasAvatar && hasTitle) {\n basicProps.rows = 3;\n } else {\n basicProps.rows = 2;\n }\n return basicProps;\n}\nvar Skeleton = function Skeleton(props) {\n var customizePrefixCls = props.prefixCls,\n loading = props.loading,\n className = props.className,\n style = props.style,\n children = props.children,\n _props$avatar = props.avatar,\n avatar = _props$avatar === void 0 ? false : _props$avatar,\n _props$title = props.title,\n title = _props$title === void 0 ? true : _props$title,\n _props$paragraph = props.paragraph,\n paragraph = _props$paragraph === void 0 ? true : _props$paragraph,\n active = props.active,\n round = props.round;\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction;\n var prefixCls = getPrefixCls('skeleton', customizePrefixCls);\n var _useStyle = useStyle(prefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n wrapSSR = _useStyle2[0],\n hashId = _useStyle2[1];\n if (loading || !('loading' in props)) {\n var _classNames;\n var hasAvatar = !!avatar;\n var hasTitle = !!title;\n var hasParagraph = !!paragraph;\n // Avatar\n var avatarNode;\n if (hasAvatar) {\n var avatarProps = _extends(_extends({\n prefixCls: prefixCls + \"-avatar\"\n }, getAvatarBasicProps(hasTitle, hasParagraph)), getComponentProps(avatar));\n // We direct use SkeletonElement as avatar in skeleton internal.\n avatarNode = /*#__PURE__*/React.createElement(\"div\", {\n className: prefixCls + \"-header\"\n }, /*#__PURE__*/React.createElement(Element, _extends({}, avatarProps)));\n }\n var contentNode;\n if (hasTitle || hasParagraph) {\n // Title\n var $title;\n if (hasTitle) {\n var titleProps = _extends(_extends({\n prefixCls: prefixCls + \"-title\"\n }, getTitleBasicProps(hasAvatar, hasParagraph)), getComponentProps(title));\n $title = /*#__PURE__*/React.createElement(Title, _extends({}, titleProps));\n }\n // Paragraph\n var paragraphNode;\n if (hasParagraph) {\n var paragraphProps = _extends(_extends({\n prefixCls: prefixCls + \"-paragraph\"\n }, getParagraphBasicProps(hasAvatar, hasTitle)), getComponentProps(paragraph));\n paragraphNode = /*#__PURE__*/React.createElement(Paragraph, _extends({}, paragraphProps));\n }\n contentNode = /*#__PURE__*/React.createElement(\"div\", {\n className: prefixCls + \"-content\"\n }, $title, paragraphNode);\n }\n var cls = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, prefixCls + \"-with-avatar\", hasAvatar), _defineProperty(_classNames, prefixCls + \"-active\", active), _defineProperty(_classNames, prefixCls + \"-rtl\", direction === 'rtl'), _defineProperty(_classNames, prefixCls + \"-round\", round), _classNames), className, hashId);\n return wrapSSR( /*#__PURE__*/React.createElement(\"div\", {\n className: cls,\n style: style\n }, avatarNode, contentNode));\n }\n return typeof children !== 'undefined' ? children : null;\n};\nSkeleton.Button = SkeletonButton;\nSkeleton.Avatar = SkeletonAvatar;\nSkeleton.Input = SkeletonInput;\nSkeleton.Image = SkeletonImage;\nSkeleton.Node = SkeletonNode;\nexport default Skeleton;","import Skeleton from './Skeleton';\nexport default Skeleton;","import { Skeleton } from \"antd\";\nimport Jazzicon, { jsNumberForAddress } from \"react-jazzicon\";\n\n/**\n * Shows a Jazzicon for the provided wallet address\n * @param {*} props\n * @returns JSX Elemenet\n */\n\nconst Jazzicons = ({ seed, size }: { seed: string; size?: number }) => {\n if (!seed) return ;\n\n if (size) return ;\n\n return ;\n};\n\nexport default Jazzicons;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport useState from \"rc-util/es/hooks/useState\";\nimport * as React from 'react';\nimport Button from '../button';\nimport { convertLegacyProps } from '../button/button';\nfunction isThenable(thing) {\n return !!(thing && !!thing.then);\n}\nvar ActionButton = function ActionButton(props) {\n var clickedRef = React.useRef(false);\n var ref = React.useRef(null);\n var _useState = useState(false),\n _useState2 = _slicedToArray(_useState, 2),\n loading = _useState2[0],\n setLoading = _useState2[1];\n var close = props.close;\n var onInternalClose = function onInternalClose() {\n close === null || close === void 0 ? void 0 : close.apply(void 0, arguments);\n };\n React.useEffect(function () {\n var timeoutId = null;\n if (props.autoFocus) {\n timeoutId = setTimeout(function () {\n var _a;\n (_a = ref.current) === null || _a === void 0 ? void 0 : _a.focus();\n });\n }\n return function () {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n };\n }, []);\n var handlePromiseOnOk = function handlePromiseOnOk(returnValueOfOnOk) {\n if (!isThenable(returnValueOfOnOk)) {\n return;\n }\n setLoading(true);\n returnValueOfOnOk.then(function () {\n setLoading(false, true);\n onInternalClose.apply(void 0, arguments);\n clickedRef.current = false;\n }, function (e) {\n // Emit error when catch promise reject\n // eslint-disable-next-line no-console\n console.error(e);\n // See: https://github.com/ant-design/ant-design/issues/6183\n setLoading(false, true);\n clickedRef.current = false;\n });\n };\n var onClick = function onClick(e) {\n var actionFn = props.actionFn;\n if (clickedRef.current) {\n return;\n }\n clickedRef.current = true;\n if (!actionFn) {\n onInternalClose();\n return;\n }\n var returnValueOfOnOk;\n if (props.emitEvent) {\n returnValueOfOnOk = actionFn(e);\n if (props.quitOnNullishReturnValue && !isThenable(returnValueOfOnOk)) {\n clickedRef.current = false;\n onInternalClose(e);\n return;\n }\n } else if (actionFn.length) {\n returnValueOfOnOk = actionFn(close);\n // https://github.com/ant-design/ant-design/issues/23358\n clickedRef.current = false;\n } else {\n returnValueOfOnOk = actionFn();\n if (!returnValueOfOnOk) {\n onInternalClose();\n return;\n }\n }\n handlePromiseOnOk(returnValueOfOnOk);\n };\n var type = props.type,\n children = props.children,\n prefixCls = props.prefixCls,\n buttonProps = props.buttonProps;\n return /*#__PURE__*/React.createElement(Button, _extends({}, convertLegacyProps(type), {\n onClick: onClick,\n loading: loading,\n prefixCls: prefixCls\n }, buttonProps, {\n ref: ref\n }), children);\n};\nexport default ActionButton;","/* eslint-disable no-param-reassign */\nvar cached;\nexport default function getScrollBarSize(fresh) {\n if (typeof document === 'undefined') {\n return 0;\n }\n if (fresh || cached === undefined) {\n var inner = document.createElement('div');\n inner.style.width = '100%';\n inner.style.height = '200px';\n var outer = document.createElement('div');\n var outerStyle = outer.style;\n outerStyle.position = 'absolute';\n outerStyle.top = '0';\n outerStyle.left = '0';\n outerStyle.pointerEvents = 'none';\n outerStyle.visibility = 'hidden';\n outerStyle.width = '200px';\n outerStyle.height = '150px';\n outerStyle.overflow = 'hidden';\n outer.appendChild(inner);\n document.body.appendChild(outer);\n var widthContained = inner.offsetWidth;\n outer.style.overflow = 'scroll';\n var widthScroll = inner.offsetWidth;\n if (widthContained === widthScroll) {\n widthScroll = outer.clientWidth;\n }\n document.body.removeChild(outer);\n cached = widthContained - widthScroll;\n }\n return cached;\n}\nfunction ensureSize(str) {\n var match = str.match(/^(.*)px$/);\n var value = Number(match === null || match === void 0 ? void 0 : match[1]);\n return Number.isNaN(value) ? getScrollBarSize() : value;\n}\nexport function getTargetScrollBarSize(target) {\n if (typeof document === 'undefined' || !target || !(target instanceof Element)) {\n return {\n width: 0,\n height: 0\n };\n }\n var _getComputedStyle = getComputedStyle(target, '::-webkit-scrollbar'),\n width = _getComputedStyle.width,\n height = _getComputedStyle.height;\n return {\n width: ensureSize(width),\n height: ensureSize(height)\n };\n}","import { tuple } from './type';\n// ================== Collapse Motion ==================\nvar getCollapsedHeight = function getCollapsedHeight() {\n return {\n height: 0,\n opacity: 0\n };\n};\nvar getRealHeight = function getRealHeight(node) {\n var scrollHeight = node.scrollHeight;\n return {\n height: scrollHeight,\n opacity: 1\n };\n};\nvar getCurrentHeight = function getCurrentHeight(node) {\n return {\n height: node ? node.offsetHeight : 0\n };\n};\nvar skipOpacityTransition = function skipOpacityTransition(_, event) {\n return (event === null || event === void 0 ? void 0 : event.deadline) === true || event.propertyName === 'height';\n};\nvar initCollapseMotion = function initCollapseMotion() {\n var rootCls = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'ant';\n return {\n motionName: rootCls + \"-motion-collapse\",\n onAppearStart: getCollapsedHeight,\n onEnterStart: getCollapsedHeight,\n onAppearActive: getRealHeight,\n onEnterActive: getRealHeight,\n onLeaveStart: getCurrentHeight,\n onLeaveActive: getCollapsedHeight,\n onAppearEnd: skipOpacityTransition,\n onEnterEnd: skipOpacityTransition,\n onLeaveEnd: skipOpacityTransition,\n motionDeadline: 500\n };\n};\nvar SelectPlacements = tuple('bottomLeft', 'bottomRight', 'topLeft', 'topRight');\nvar getTransitionDirection = function getTransitionDirection(placement) {\n if (placement !== undefined && (placement === 'topLeft' || placement === 'topRight')) {\n return \"slide-down\";\n }\n return \"slide-up\";\n};\nvar getTransitionName = function getTransitionName(rootPrefixCls, motion, transitionName) {\n if (transitionName !== undefined) {\n return transitionName;\n }\n return rootPrefixCls + \"-\" + motion;\n};\nexport { getTransitionName, getTransitionDirection };\nexport default initCollapseMotion;","import * as React from 'react';\nvar OrderContext = /*#__PURE__*/React.createContext(null);\nexport default OrderContext;","import * as React from 'react';\nimport canUseDom from '../Dom/canUseDom';\n/**\n * Wrap `React.useLayoutEffect` which will not throw warning message in test env\n */\nvar useLayoutEffect = process.env.NODE_ENV !== 'test' && canUseDom() ? React.useLayoutEffect : React.useEffect;\nexport default useLayoutEffect;\nexport var useLayoutUpdateEffect = function useLayoutUpdateEffect(callback, deps) {\n var firstMountRef = React.useRef(true);\n useLayoutEffect(function () {\n if (!firstMountRef.current) {\n return callback();\n }\n }, deps);\n // We tell react that first mount has passed\n useLayoutEffect(function () {\n firstMountRef.current = false;\n return function () {\n firstMountRef.current = true;\n };\n }, []);\n};","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport canUseDom from \"rc-util/es/Dom/canUseDom\";\nimport OrderContext from \"./Context\";\nvar EMPTY_LIST = [];\n/**\n * Will add `div` to document. Nest call will keep order\n * @param render Render DOM in document\n */\n\nexport default function useDom(render, debug) {\n var _React$useState = React.useState(function () {\n if (!canUseDom()) {\n return null;\n }\n\n var defaultEle = document.createElement('div');\n\n if (process.env.NODE_ENV !== 'production' && debug) {\n defaultEle.setAttribute('data-debug', debug);\n }\n\n return defaultEle;\n }),\n _React$useState2 = _slicedToArray(_React$useState, 1),\n ele = _React$useState2[0]; // ========================== Order ==========================\n\n\n var queueCreate = React.useContext(OrderContext);\n\n var _React$useState3 = React.useState(EMPTY_LIST),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n queue = _React$useState4[0],\n setQueue = _React$useState4[1];\n\n var mergedQueueCreate = queueCreate || function (appendFn) {\n setQueue(function (origin) {\n var newQueue = [appendFn].concat(_toConsumableArray(origin));\n return newQueue;\n });\n }; // =========================== DOM ===========================\n\n\n function append() {\n if (!ele.parentElement) {\n document.body.appendChild(ele);\n }\n }\n\n function cleanup() {\n var _ele$parentElement;\n\n (_ele$parentElement = ele.parentElement) === null || _ele$parentElement === void 0 ? void 0 : _ele$parentElement.removeChild(ele);\n }\n\n useLayoutEffect(function () {\n if (render) {\n if (queueCreate) {\n queueCreate(append);\n } else {\n append();\n }\n } else {\n cleanup();\n }\n\n return cleanup;\n }, [render]);\n useLayoutEffect(function () {\n if (queue.length) {\n queue.forEach(function (appendFn) {\n return appendFn();\n });\n setQueue(EMPTY_LIST);\n }\n }, [queue]);\n return [ele, mergedQueueCreate];\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { updateCSS, removeCSS } from \"rc-util/es/Dom/dynamicCSS\";\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport getScrollBarSize from \"rc-util/es/getScrollBarSize\";\nimport { isBodyOverflowing } from \"./util\";\nvar UNIQUE_ID = \"rc-util-locker-\".concat(Date.now());\nvar uuid = 0;\nexport default function useScrollLocker(lock) {\n var mergedLock = !!lock;\n\n var _React$useState = React.useState(function () {\n uuid += 1;\n return \"\".concat(UNIQUE_ID, \"_\").concat(uuid);\n }),\n _React$useState2 = _slicedToArray(_React$useState, 1),\n id = _React$useState2[0];\n\n useLayoutEffect(function () {\n if (mergedLock) {\n var scrollbarSize = getScrollBarSize();\n var isOverflow = isBodyOverflowing();\n updateCSS(\"\\nhtml body {\\n overflow-y: hidden;\\n \".concat(isOverflow ? \"width: calc(100% - \".concat(scrollbarSize, \"px);\") : '', \"\\n}\"), id);\n } else {\n removeCSS(id);\n }\n\n return function () {\n removeCSS(id);\n };\n }, [mergedLock, id]);\n}","/**\n * Test usage export. Do not use in your production\n */\nexport function isBodyOverflowing() {\n return document.body.scrollHeight > (window.innerHeight || document.documentElement.clientHeight) && window.innerWidth > document.body.offsetWidth;\n}","export var inline = false;\nexport function inlineMock(nextInline) {\n if (typeof nextInline === 'boolean') {\n inline = nextInline;\n }\n\n return inline;\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { createPortal } from 'react-dom';\nimport canUseDom from \"rc-util/es/Dom/canUseDom\";\nimport { supportRef, useComposeRef } from \"rc-util/es/ref\";\nimport OrderContext from \"./Context\";\nimport useDom from \"./useDom\";\nimport useScrollLocker from \"./useScrollLocker\";\nimport { inlineMock } from \"./mock\";\n\nvar getPortalContainer = function getPortalContainer(getContainer) {\n if (getContainer === false) {\n return false;\n }\n\n if (!canUseDom() || !getContainer) {\n return null;\n }\n\n if (typeof getContainer === 'string') {\n return document.querySelector(getContainer);\n }\n\n if (typeof getContainer === 'function') {\n return getContainer();\n }\n\n return getContainer;\n};\n\nvar Portal = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var open = props.open,\n autoLock = props.autoLock,\n getContainer = props.getContainer,\n debug = props.debug,\n _props$autoDestroy = props.autoDestroy,\n autoDestroy = _props$autoDestroy === void 0 ? true : _props$autoDestroy,\n children = props.children;\n\n var _React$useState = React.useState(open),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n shouldRender = _React$useState2[0],\n setShouldRender = _React$useState2[1];\n\n var mergedRender = shouldRender || open; // ====================== Should Render ======================\n\n React.useEffect(function () {\n if (autoDestroy || open) {\n setShouldRender(open);\n }\n }, [open, autoDestroy]); // ======================== Container ========================\n\n var _React$useState3 = React.useState(function () {\n return getPortalContainer(getContainer);\n }),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n innerContainer = _React$useState4[0],\n setInnerContainer = _React$useState4[1];\n\n React.useEffect(function () {\n var customizeContainer = getPortalContainer(getContainer); // Tell component that we check this in effect which is safe to be `null`\n\n setInnerContainer(customizeContainer !== null && customizeContainer !== void 0 ? customizeContainer : null);\n });\n\n var _useDom = useDom(mergedRender && !innerContainer, debug),\n _useDom2 = _slicedToArray(_useDom, 2),\n defaultContainer = _useDom2[0],\n queueCreate = _useDom2[1];\n\n var mergedContainer = innerContainer !== null && innerContainer !== void 0 ? innerContainer : defaultContainer; // ========================= Locker ==========================\n\n useScrollLocker(autoLock && open && canUseDom() && (mergedContainer === defaultContainer || mergedContainer === document.body)); // =========================== Ref ===========================\n\n var childRef = null;\n\n if (children && supportRef(children) && ref) {\n var _ref = children;\n childRef = _ref.ref;\n }\n\n var mergedRef = useComposeRef(childRef, ref); // ========================= Render ==========================\n // Do not render when nothing need render\n // When innerContainer is `undefined`, it may not ready since user use ref in the same render\n\n if (!mergedRender || !canUseDom() || innerContainer === undefined) {\n return null;\n } // Render inline\n\n\n var renderInline = mergedContainer === false || inlineMock();\n var reffedChildren = children;\n\n if (ref) {\n reffedChildren = /*#__PURE__*/React.cloneElement(children, {\n ref: mergedRef\n });\n }\n\n return /*#__PURE__*/React.createElement(OrderContext.Provider, {\n value: queueCreate\n }, renderInline ? reffedChildren : /*#__PURE__*/createPortal(reffedChildren, mergedContainer));\n});\n\nif (process.env.NODE_ENV !== 'production') {\n Portal.displayName = 'Portal';\n}\n\nexport default Portal;","import Portal from \"./Portal\";\nimport { inlineMock } from \"./mock\";\nexport { inlineMock };\nexport default Portal;","/**\n * @ignore\n * some key-codes definition and utils from closure-library\n * @author yiminghe@gmail.com\n */\nvar KeyCode = {\n /**\n * MAC_ENTER\n */\n MAC_ENTER: 3,\n /**\n * BACKSPACE\n */\n BACKSPACE: 8,\n /**\n * TAB\n */\n TAB: 9,\n /**\n * NUMLOCK on FF/Safari Mac\n */\n NUM_CENTER: 12,\n /**\n * ENTER\n */\n ENTER: 13,\n /**\n * SHIFT\n */\n SHIFT: 16,\n /**\n * CTRL\n */\n CTRL: 17,\n /**\n * ALT\n */\n ALT: 18,\n /**\n * PAUSE\n */\n PAUSE: 19,\n /**\n * CAPS_LOCK\n */\n CAPS_LOCK: 20,\n /**\n * ESC\n */\n ESC: 27,\n /**\n * SPACE\n */\n SPACE: 32,\n /**\n * PAGE_UP\n */\n PAGE_UP: 33,\n /**\n * PAGE_DOWN\n */\n PAGE_DOWN: 34,\n /**\n * END\n */\n END: 35,\n /**\n * HOME\n */\n HOME: 36,\n /**\n * LEFT\n */\n LEFT: 37,\n /**\n * UP\n */\n UP: 38,\n /**\n * RIGHT\n */\n RIGHT: 39,\n /**\n * DOWN\n */\n DOWN: 40,\n /**\n * PRINT_SCREEN\n */\n PRINT_SCREEN: 44,\n /**\n * INSERT\n */\n INSERT: 45,\n /**\n * DELETE\n */\n DELETE: 46,\n /**\n * ZERO\n */\n ZERO: 48,\n /**\n * ONE\n */\n ONE: 49,\n /**\n * TWO\n */\n TWO: 50,\n /**\n * THREE\n */\n THREE: 51,\n /**\n * FOUR\n */\n FOUR: 52,\n /**\n * FIVE\n */\n FIVE: 53,\n /**\n * SIX\n */\n SIX: 54,\n /**\n * SEVEN\n */\n SEVEN: 55,\n /**\n * EIGHT\n */\n EIGHT: 56,\n /**\n * NINE\n */\n NINE: 57,\n /**\n * QUESTION_MARK\n */\n QUESTION_MARK: 63,\n /**\n * A\n */\n A: 65,\n /**\n * B\n */\n B: 66,\n /**\n * C\n */\n C: 67,\n /**\n * D\n */\n D: 68,\n /**\n * E\n */\n E: 69,\n /**\n * F\n */\n F: 70,\n /**\n * G\n */\n G: 71,\n /**\n * H\n */\n H: 72,\n /**\n * I\n */\n I: 73,\n /**\n * J\n */\n J: 74,\n /**\n * K\n */\n K: 75,\n /**\n * L\n */\n L: 76,\n /**\n * M\n */\n M: 77,\n /**\n * N\n */\n N: 78,\n /**\n * O\n */\n O: 79,\n /**\n * P\n */\n P: 80,\n /**\n * Q\n */\n Q: 81,\n /**\n * R\n */\n R: 82,\n /**\n * S\n */\n S: 83,\n /**\n * T\n */\n T: 84,\n /**\n * U\n */\n U: 85,\n /**\n * V\n */\n V: 86,\n /**\n * W\n */\n W: 87,\n /**\n * X\n */\n X: 88,\n /**\n * Y\n */\n Y: 89,\n /**\n * Z\n */\n Z: 90,\n /**\n * META\n */\n META: 91,\n /**\n * WIN_KEY_RIGHT\n */\n WIN_KEY_RIGHT: 92,\n /**\n * CONTEXT_MENU\n */\n CONTEXT_MENU: 93,\n /**\n * NUM_ZERO\n */\n NUM_ZERO: 96,\n /**\n * NUM_ONE\n */\n NUM_ONE: 97,\n /**\n * NUM_TWO\n */\n NUM_TWO: 98,\n /**\n * NUM_THREE\n */\n NUM_THREE: 99,\n /**\n * NUM_FOUR\n */\n NUM_FOUR: 100,\n /**\n * NUM_FIVE\n */\n NUM_FIVE: 101,\n /**\n * NUM_SIX\n */\n NUM_SIX: 102,\n /**\n * NUM_SEVEN\n */\n NUM_SEVEN: 103,\n /**\n * NUM_EIGHT\n */\n NUM_EIGHT: 104,\n /**\n * NUM_NINE\n */\n NUM_NINE: 105,\n /**\n * NUM_MULTIPLY\n */\n NUM_MULTIPLY: 106,\n /**\n * NUM_PLUS\n */\n NUM_PLUS: 107,\n /**\n * NUM_MINUS\n */\n NUM_MINUS: 109,\n /**\n * NUM_PERIOD\n */\n NUM_PERIOD: 110,\n /**\n * NUM_DIVISION\n */\n NUM_DIVISION: 111,\n /**\n * F1\n */\n F1: 112,\n /**\n * F2\n */\n F2: 113,\n /**\n * F3\n */\n F3: 114,\n /**\n * F4\n */\n F4: 115,\n /**\n * F5\n */\n F5: 116,\n /**\n * F6\n */\n F6: 117,\n /**\n * F7\n */\n F7: 118,\n /**\n * F8\n */\n F8: 119,\n /**\n * F9\n */\n F9: 120,\n /**\n * F10\n */\n F10: 121,\n /**\n * F11\n */\n F11: 122,\n /**\n * F12\n */\n F12: 123,\n /**\n * NUMLOCK\n */\n NUMLOCK: 144,\n /**\n * SEMICOLON\n */\n SEMICOLON: 186,\n /**\n * DASH\n */\n DASH: 189,\n /**\n * EQUALS\n */\n EQUALS: 187,\n /**\n * COMMA\n */\n COMMA: 188,\n /**\n * PERIOD\n */\n PERIOD: 190,\n /**\n * SLASH\n */\n SLASH: 191,\n /**\n * APOSTROPHE\n */\n APOSTROPHE: 192,\n /**\n * SINGLE_QUOTE\n */\n SINGLE_QUOTE: 222,\n /**\n * OPEN_SQUARE_BRACKET\n */\n OPEN_SQUARE_BRACKET: 219,\n /**\n * BACKSLASH\n */\n BACKSLASH: 220,\n /**\n * CLOSE_SQUARE_BRACKET\n */\n CLOSE_SQUARE_BRACKET: 221,\n /**\n * WIN_KEY\n */\n WIN_KEY: 224,\n /**\n * MAC_FF_META\n */\n MAC_FF_META: 224,\n /**\n * WIN_IME\n */\n WIN_IME: 229,\n // ======================== Function ========================\n /**\n * whether text and modified key is entered at the same time.\n */\n isTextModifyingKeyEvent: function isTextModifyingKeyEvent(e) {\n var keyCode = e.keyCode;\n if (e.altKey && !e.ctrlKey || e.metaKey ||\n // Function keys don't generate text\n keyCode >= KeyCode.F1 && keyCode <= KeyCode.F12) {\n return false;\n }\n // The following keys are quite harmless, even in combination with\n // CTRL, ALT or SHIFT.\n switch (keyCode) {\n case KeyCode.ALT:\n case KeyCode.CAPS_LOCK:\n case KeyCode.CONTEXT_MENU:\n case KeyCode.CTRL:\n case KeyCode.DOWN:\n case KeyCode.END:\n case KeyCode.ESC:\n case KeyCode.HOME:\n case KeyCode.INSERT:\n case KeyCode.LEFT:\n case KeyCode.MAC_FF_META:\n case KeyCode.META:\n case KeyCode.NUMLOCK:\n case KeyCode.NUM_CENTER:\n case KeyCode.PAGE_DOWN:\n case KeyCode.PAGE_UP:\n case KeyCode.PAUSE:\n case KeyCode.PRINT_SCREEN:\n case KeyCode.RIGHT:\n case KeyCode.SHIFT:\n case KeyCode.UP:\n case KeyCode.WIN_KEY:\n case KeyCode.WIN_KEY_RIGHT:\n return false;\n default:\n return true;\n }\n },\n /**\n * whether character is entered.\n */\n isCharacterKey: function isCharacterKey(keyCode) {\n if (keyCode >= KeyCode.ZERO && keyCode <= KeyCode.NINE) {\n return true;\n }\n if (keyCode >= KeyCode.NUM_ZERO && keyCode <= KeyCode.NUM_MULTIPLY) {\n return true;\n }\n if (keyCode >= KeyCode.A && keyCode <= KeyCode.Z) {\n return true;\n }\n // Safari sends zero key code for non-latin characters.\n if (window.navigator.userAgent.indexOf('WebKit') !== -1 && keyCode === 0) {\n return true;\n }\n switch (keyCode) {\n case KeyCode.SPACE:\n case KeyCode.QUESTION_MARK:\n case KeyCode.NUM_PLUS:\n case KeyCode.NUM_MINUS:\n case KeyCode.NUM_PERIOD:\n case KeyCode.NUM_DIVISION:\n case KeyCode.SEMICOLON:\n case KeyCode.DASH:\n case KeyCode.EQUALS:\n case KeyCode.COMMA:\n case KeyCode.PERIOD:\n case KeyCode.SLASH:\n case KeyCode.APOSTROPHE:\n case KeyCode.SINGLE_QUOTE:\n case KeyCode.OPEN_SQUARE_BRACKET:\n case KeyCode.BACKSLASH:\n case KeyCode.CLOSE_SQUARE_BRACKET:\n return true;\n default:\n return false;\n }\n }\n};\nexport default KeyCode;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nfunction getUseId() {\n // We need fully clone React function here to avoid webpack warning React 17 do not export `useId`\n var fullClone = _objectSpread({}, React);\n return fullClone.useId;\n}\nvar uuid = 0;\n/** @private Note only worked in develop env. Not work in production. */\nexport function resetUuid() {\n if (process.env.NODE_ENV !== 'production') {\n uuid = 0;\n }\n}\nexport default function useId(id) {\n // Inner id for accessibility usage. Only work in client side\n var _React$useState = React.useState('ssr-id'),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n innerId = _React$useState2[0],\n setInnerId = _React$useState2[1];\n var useOriginId = getUseId();\n var reactNativeId = useOriginId === null || useOriginId === void 0 ? void 0 : useOriginId();\n React.useEffect(function () {\n if (!useOriginId) {\n var nextId = uuid;\n uuid += 1;\n setInnerId(\"rc_unique_\".concat(nextId));\n }\n }, []);\n // Developer passed id is single source of truth\n if (id) {\n return id;\n }\n // Test env always return mock id\n if (process.env.NODE_ENV === 'test') {\n return 'test-id';\n }\n // Return react native id or inner id\n return reactNativeId || innerId;\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nvar attributes = \"accept acceptCharset accessKey action allowFullScreen allowTransparency\\n alt async autoComplete autoFocus autoPlay capture cellPadding cellSpacing challenge\\n charSet checked classID className colSpan cols content contentEditable contextMenu\\n controls coords crossOrigin data dateTime default defer dir disabled download draggable\\n encType form formAction formEncType formMethod formNoValidate formTarget frameBorder\\n headers height hidden high href hrefLang htmlFor httpEquiv icon id inputMode integrity\\n is keyParams keyType kind label lang list loop low manifest marginHeight marginWidth max maxLength media\\n mediaGroup method min minLength multiple muted name noValidate nonce open\\n optimum pattern placeholder poster preload radioGroup readOnly rel required\\n reversed role rowSpan rows sandbox scope scoped scrolling seamless selected\\n shape size sizes span spellCheck src srcDoc srcLang srcSet start step style\\n summary tabIndex target title type useMap value width wmode wrap\";\nvar eventsName = \"onCopy onCut onPaste onCompositionEnd onCompositionStart onCompositionUpdate onKeyDown\\n onKeyPress onKeyUp onFocus onBlur onChange onInput onSubmit onClick onContextMenu onDoubleClick\\n onDrag onDragEnd onDragEnter onDragExit onDragLeave onDragOver onDragStart onDrop onMouseDown\\n onMouseEnter onMouseLeave onMouseMove onMouseOut onMouseOver onMouseUp onSelect onTouchCancel\\n onTouchEnd onTouchMove onTouchStart onScroll onWheel onAbort onCanPlay onCanPlayThrough\\n onDurationChange onEmptied onEncrypted onEnded onError onLoadedData onLoadedMetadata\\n onLoadStart onPause onPlay onPlaying onProgress onRateChange onSeeked onSeeking onStalled onSuspend onTimeUpdate onVolumeChange onWaiting onLoad onError\";\nvar propList = \"\".concat(attributes, \" \").concat(eventsName).split(/[\\s\\n]+/);\n/* eslint-enable max-len */\nvar ariaPrefix = 'aria-';\nvar dataPrefix = 'data-';\nfunction match(key, prefix) {\n return key.indexOf(prefix) === 0;\n}\n/**\n * Picker props from exist props with filter\n * @param props Passed props\n * @param ariaOnly boolean | { aria?: boolean; data?: boolean; attr?: boolean; } filter config\n */\nexport default function pickAttrs(props) {\n var ariaOnly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var mergedConfig;\n if (ariaOnly === false) {\n mergedConfig = {\n aria: true,\n data: true,\n attr: true\n };\n } else if (ariaOnly === true) {\n mergedConfig = {\n aria: true\n };\n } else {\n mergedConfig = _objectSpread({}, ariaOnly);\n }\n var attrs = {};\n Object.keys(props).forEach(function (key) {\n if (\n // Aria\n mergedConfig.aria && (key === 'role' || match(key, ariaPrefix)) ||\n // Data\n mergedConfig.data && match(key, dataPrefix) ||\n // Attr\n mergedConfig.attr && propList.includes(key)) {\n attrs[key] = props[key];\n }\n });\n return attrs;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nexport default function Mask(props) {\n var prefixCls = props.prefixCls,\n style = props.style,\n visible = props.visible,\n maskProps = props.maskProps,\n motionName = props.motionName;\n return /*#__PURE__*/React.createElement(CSSMotion, {\n key: \"mask\",\n visible: visible,\n motionName: motionName,\n leavedClassName: \"\".concat(prefixCls, \"-mask-hidden\")\n }, function (_ref, ref) {\n var motionClassName = _ref.className,\n motionStyle = _ref.style;\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: ref,\n style: _objectSpread(_objectSpread({}, motionStyle), style),\n className: classNames(\"\".concat(prefixCls, \"-mask\"), motionClassName)\n }, maskProps));\n });\n}","// =============================== Motion ===============================\nexport function getMotionName(prefixCls, transitionName, animationName) {\n var motionName = transitionName;\n if (!motionName && animationName) {\n motionName = \"\".concat(prefixCls, \"-\").concat(animationName);\n }\n return motionName;\n}\n// =============================== Offset ===============================\nfunction getScroll(w, top) {\n var ret = w[\"page\".concat(top ? 'Y' : 'X', \"Offset\")];\n var method = \"scroll\".concat(top ? 'Top' : 'Left');\n if (typeof ret !== 'number') {\n var d = w.document;\n ret = d.documentElement[method];\n if (typeof ret !== 'number') {\n ret = d.body[method];\n }\n }\n return ret;\n}\nexport function offset(el) {\n var rect = el.getBoundingClientRect();\n var pos = {\n left: rect.left,\n top: rect.top\n };\n var doc = el.ownerDocument;\n var w = doc.defaultView || doc.parentWindow;\n pos.left += getScroll(w);\n pos.top += getScroll(w, true);\n return pos;\n}","import * as React from 'react';\nexport default /*#__PURE__*/React.memo(function (_ref) {\n var children = _ref.children;\n return children;\n}, function (_, _ref2) {\n var shouldUpdate = _ref2.shouldUpdate;\n return !shouldUpdate;\n});","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React, { useRef } from 'react';\nimport classNames from 'classnames';\nimport MemoChildren from './MemoChildren';\nvar sentinelStyle = {\n width: 0,\n height: 0,\n overflow: 'hidden',\n outline: 'none'\n};\nvar Panel = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var prefixCls = props.prefixCls,\n className = props.className,\n style = props.style,\n title = props.title,\n ariaId = props.ariaId,\n footer = props.footer,\n closable = props.closable,\n closeIcon = props.closeIcon,\n onClose = props.onClose,\n children = props.children,\n bodyStyle = props.bodyStyle,\n bodyProps = props.bodyProps,\n modalRender = props.modalRender,\n onMouseDown = props.onMouseDown,\n onMouseUp = props.onMouseUp,\n holderRef = props.holderRef,\n visible = props.visible,\n forceRender = props.forceRender,\n width = props.width,\n height = props.height;\n // ================================= Refs =================================\n var sentinelStartRef = useRef();\n var sentinelEndRef = useRef();\n React.useImperativeHandle(ref, function () {\n return {\n focus: function focus() {\n var _sentinelStartRef$cur;\n (_sentinelStartRef$cur = sentinelStartRef.current) === null || _sentinelStartRef$cur === void 0 ? void 0 : _sentinelStartRef$cur.focus();\n },\n changeActive: function changeActive(next) {\n var _document = document,\n activeElement = _document.activeElement;\n if (next && activeElement === sentinelEndRef.current) {\n sentinelStartRef.current.focus();\n } else if (!next && activeElement === sentinelStartRef.current) {\n sentinelEndRef.current.focus();\n }\n }\n };\n });\n // ================================ Style =================================\n var contentStyle = {};\n if (width !== undefined) {\n contentStyle.width = width;\n }\n if (height !== undefined) {\n contentStyle.height = height;\n }\n // ================================ Render ================================\n var footerNode;\n if (footer) {\n footerNode = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-footer\")\n }, footer);\n }\n var headerNode;\n if (title) {\n headerNode = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-header\")\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-title\"),\n id: ariaId\n }, title));\n }\n var closer;\n if (closable) {\n closer = /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n onClick: onClose,\n \"aria-label\": \"Close\",\n className: \"\".concat(prefixCls, \"-close\")\n }, closeIcon || /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-close-x\")\n }));\n }\n var content = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-content\")\n }, closer, headerNode, /*#__PURE__*/React.createElement(\"div\", _extends({\n className: \"\".concat(prefixCls, \"-body\"),\n style: bodyStyle\n }, bodyProps), children), footerNode);\n return /*#__PURE__*/React.createElement(\"div\", {\n key: \"dialog-element\",\n role: \"dialog\",\n \"aria-labelledby\": title ? ariaId : null,\n \"aria-modal\": \"true\",\n ref: holderRef,\n style: _objectSpread(_objectSpread({}, style), contentStyle),\n className: classNames(prefixCls, className),\n onMouseDown: onMouseDown,\n onMouseUp: onMouseUp\n }, /*#__PURE__*/React.createElement(\"div\", {\n tabIndex: 0,\n ref: sentinelStartRef,\n style: sentinelStyle,\n \"aria-hidden\": \"true\"\n }), /*#__PURE__*/React.createElement(MemoChildren, {\n shouldUpdate: visible || forceRender\n }, modalRender ? modalRender(content) : content), /*#__PURE__*/React.createElement(\"div\", {\n tabIndex: 0,\n ref: sentinelEndRef,\n style: sentinelStyle,\n \"aria-hidden\": \"true\"\n }));\n});\nif (process.env.NODE_ENV !== 'production') {\n Panel.displayName = 'Panel';\n}\nexport default Panel;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { useRef } from 'react';\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nimport { offset } from '../../util';\nimport Panel from './Panel';\nvar Content = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var prefixCls = props.prefixCls,\n title = props.title,\n style = props.style,\n className = props.className,\n visible = props.visible,\n forceRender = props.forceRender,\n destroyOnClose = props.destroyOnClose,\n motionName = props.motionName,\n ariaId = props.ariaId,\n onVisibleChanged = props.onVisibleChanged,\n mousePosition = props.mousePosition;\n var dialogRef = useRef();\n // ============================= Style ==============================\n var _React$useState = React.useState(),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n transformOrigin = _React$useState2[0],\n setTransformOrigin = _React$useState2[1];\n var contentStyle = {};\n if (transformOrigin) {\n contentStyle.transformOrigin = transformOrigin;\n }\n function onPrepare() {\n var elementOffset = offset(dialogRef.current);\n setTransformOrigin(mousePosition ? \"\".concat(mousePosition.x - elementOffset.left, \"px \").concat(mousePosition.y - elementOffset.top, \"px\") : '');\n }\n // ============================= Render =============================\n return /*#__PURE__*/React.createElement(CSSMotion, {\n visible: visible,\n onVisibleChanged: onVisibleChanged,\n onAppearPrepare: onPrepare,\n onEnterPrepare: onPrepare,\n forceRender: forceRender,\n motionName: motionName,\n removeOnLeave: destroyOnClose,\n ref: dialogRef\n }, function (_ref, motionRef) {\n var motionClassName = _ref.className,\n motionStyle = _ref.style;\n return /*#__PURE__*/React.createElement(Panel, _extends({}, props, {\n ref: ref,\n title: title,\n ariaId: ariaId,\n prefixCls: prefixCls,\n holderRef: motionRef,\n style: _objectSpread(_objectSpread(_objectSpread({}, motionStyle), style), contentStyle),\n className: classNames(className, motionClassName)\n }));\n });\n});\nContent.displayName = 'Content';\nexport default Content;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { useRef, useEffect } from 'react';\nimport classNames from 'classnames';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport useId from \"rc-util/es/hooks/useId\";\nimport contains from \"rc-util/es/Dom/contains\";\nimport pickAttrs from \"rc-util/es/pickAttrs\";\nimport Mask from './Mask';\nimport { getMotionName } from '../util';\nimport Content from './Content';\nexport default function Dialog(props) {\n var _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-dialog' : _props$prefixCls,\n zIndex = props.zIndex,\n _props$visible = props.visible,\n visible = _props$visible === void 0 ? false : _props$visible,\n _props$keyboard = props.keyboard,\n keyboard = _props$keyboard === void 0 ? true : _props$keyboard,\n _props$focusTriggerAf = props.focusTriggerAfterClose,\n focusTriggerAfterClose = _props$focusTriggerAf === void 0 ? true : _props$focusTriggerAf,\n wrapStyle = props.wrapStyle,\n wrapClassName = props.wrapClassName,\n wrapProps = props.wrapProps,\n onClose = props.onClose,\n afterClose = props.afterClose,\n transitionName = props.transitionName,\n animation = props.animation,\n _props$closable = props.closable,\n closable = _props$closable === void 0 ? true : _props$closable,\n _props$mask = props.mask,\n mask = _props$mask === void 0 ? true : _props$mask,\n maskTransitionName = props.maskTransitionName,\n maskAnimation = props.maskAnimation,\n _props$maskClosable = props.maskClosable,\n maskClosable = _props$maskClosable === void 0 ? true : _props$maskClosable,\n maskStyle = props.maskStyle,\n maskProps = props.maskProps,\n rootClassName = props.rootClassName;\n var lastOutSideActiveElementRef = useRef();\n var wrapperRef = useRef();\n var contentRef = useRef();\n var _React$useState = React.useState(visible),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n animatedVisible = _React$useState2[0],\n setAnimatedVisible = _React$useState2[1];\n // ========================== Init ==========================\n var ariaId = useId();\n function saveLastOutSideActiveElementRef() {\n if (!contains(wrapperRef.current, document.activeElement)) {\n lastOutSideActiveElementRef.current = document.activeElement;\n }\n }\n function focusDialogContent() {\n if (!contains(wrapperRef.current, document.activeElement)) {\n var _contentRef$current;\n (_contentRef$current = contentRef.current) === null || _contentRef$current === void 0 ? void 0 : _contentRef$current.focus();\n }\n }\n // ========================= Events =========================\n function onDialogVisibleChanged(newVisible) {\n // Try to focus\n if (newVisible) {\n focusDialogContent();\n } else {\n // Clean up scroll bar & focus back\n setAnimatedVisible(false);\n if (mask && lastOutSideActiveElementRef.current && focusTriggerAfterClose) {\n try {\n lastOutSideActiveElementRef.current.focus({\n preventScroll: true\n });\n } catch (e) {\n // Do nothing\n }\n lastOutSideActiveElementRef.current = null;\n }\n // Trigger afterClose only when change visible from true to false\n if (animatedVisible) {\n afterClose === null || afterClose === void 0 ? void 0 : afterClose();\n }\n }\n }\n function onInternalClose(e) {\n onClose === null || onClose === void 0 ? void 0 : onClose(e);\n }\n // >>> Content\n var contentClickRef = useRef(false);\n var contentTimeoutRef = useRef();\n // We need record content click incase content popup out of dialog\n var onContentMouseDown = function onContentMouseDown() {\n clearTimeout(contentTimeoutRef.current);\n contentClickRef.current = true;\n };\n var onContentMouseUp = function onContentMouseUp() {\n contentTimeoutRef.current = setTimeout(function () {\n contentClickRef.current = false;\n });\n };\n // >>> Wrapper\n // Close only when element not on dialog\n var onWrapperClick = null;\n if (maskClosable) {\n onWrapperClick = function onWrapperClick(e) {\n if (contentClickRef.current) {\n contentClickRef.current = false;\n } else if (wrapperRef.current === e.target) {\n onInternalClose(e);\n }\n };\n }\n function onWrapperKeyDown(e) {\n if (keyboard && e.keyCode === KeyCode.ESC) {\n e.stopPropagation();\n onInternalClose(e);\n return;\n }\n // keep focus inside dialog\n if (visible) {\n if (e.keyCode === KeyCode.TAB) {\n contentRef.current.changeActive(!e.shiftKey);\n }\n }\n }\n // ========================= Effect =========================\n useEffect(function () {\n if (visible) {\n setAnimatedVisible(true);\n saveLastOutSideActiveElementRef();\n }\n }, [visible]);\n // Remove direct should also check the scroll bar update\n useEffect(function () {\n return function () {\n clearTimeout(contentTimeoutRef.current);\n };\n }, []);\n // ========================= Render =========================\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n className: classNames(\"\".concat(prefixCls, \"-root\"), rootClassName)\n }, pickAttrs(props, {\n data: true\n })), /*#__PURE__*/React.createElement(Mask, {\n prefixCls: prefixCls,\n visible: mask && visible,\n motionName: getMotionName(prefixCls, maskTransitionName, maskAnimation),\n style: _objectSpread({\n zIndex: zIndex\n }, maskStyle),\n maskProps: maskProps\n }), /*#__PURE__*/React.createElement(\"div\", _extends({\n tabIndex: -1,\n onKeyDown: onWrapperKeyDown,\n className: classNames(\"\".concat(prefixCls, \"-wrap\"), wrapClassName),\n ref: wrapperRef,\n onClick: onWrapperClick,\n style: _objectSpread(_objectSpread({\n zIndex: zIndex\n }, wrapStyle), {}, {\n display: !animatedVisible ? 'none' : null\n })\n }, wrapProps), /*#__PURE__*/React.createElement(Content, _extends({}, props, {\n onMouseDown: onContentMouseDown,\n onMouseUp: onContentMouseUp,\n ref: contentRef,\n closable: closable,\n ariaId: ariaId,\n prefixCls: prefixCls,\n visible: visible && animatedVisible,\n onClose: onInternalClose,\n onVisibleChanged: onDialogVisibleChanged,\n motionName: getMotionName(prefixCls, transitionName, animation)\n }))));\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport Portal from '@rc-component/portal';\nimport Dialog from './Dialog';\n// fix issue #10656\n/*\n * getContainer remarks\n * Custom container should not be return, because in the Portal component, it will remove the\n * return container element here, if the custom container is the only child of it's component,\n * like issue #10656, It will has a conflict with removeChild method in react-dom.\n * So here should add a child (div element) to custom container.\n * */\nvar DialogWrap = function DialogWrap(props) {\n var visible = props.visible,\n getContainer = props.getContainer,\n forceRender = props.forceRender,\n _props$destroyOnClose = props.destroyOnClose,\n destroyOnClose = _props$destroyOnClose === void 0 ? false : _props$destroyOnClose,\n _afterClose = props.afterClose;\n var _React$useState = React.useState(visible),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n animatedVisible = _React$useState2[0],\n setAnimatedVisible = _React$useState2[1];\n React.useEffect(function () {\n if (visible) {\n setAnimatedVisible(true);\n }\n }, [visible]);\n // // 渲染在当前 dom 里;\n // if (getContainer === false) {\n // return (\n // 2} // 不对 body 做任何操作。。\n // />\n // );\n // }\n // Destroy on close will remove wrapped div\n if (!forceRender && destroyOnClose && !animatedVisible) {\n return null;\n }\n return /*#__PURE__*/React.createElement(Portal, {\n open: visible || forceRender || animatedVisible,\n autoDestroy: false,\n getContainer: getContainer,\n autoLock: visible || animatedVisible\n }, /*#__PURE__*/React.createElement(Dialog, _extends({}, props, {\n destroyOnClose: destroyOnClose,\n afterClose: function afterClose() {\n _afterClose === null || _afterClose === void 0 ? void 0 : _afterClose();\n setAnimatedVisible(false);\n }\n })));\n};\nDialogWrap.displayName = 'Dialog';\nexport default DialogWrap;","import DialogWrap from './DialogWrap';\nimport Panel from './Dialog/Content/Panel';\nexport { Panel };\nexport default DialogWrap;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { FormProvider as RcFormProvider } from 'rc-field-form';\nimport omit from \"rc-util/es/omit\";\nimport * as React from 'react';\nimport { useContext, useMemo } from 'react';\nexport var FormContext = /*#__PURE__*/React.createContext({\n labelAlign: 'right',\n vertical: false,\n itemRef: function itemRef() {}\n});\nexport var NoStyleItemContext = /*#__PURE__*/React.createContext(null);\nexport var FormProvider = function FormProvider(props) {\n var providerProps = omit(props, ['prefixCls']);\n return /*#__PURE__*/React.createElement(RcFormProvider, _extends({}, providerProps));\n};\nexport var FormItemPrefixContext = /*#__PURE__*/React.createContext({\n prefixCls: ''\n});\nexport var FormItemInputContext = /*#__PURE__*/React.createContext({});\nexport var NoFormStyle = function NoFormStyle(_ref) {\n var children = _ref.children,\n status = _ref.status,\n override = _ref.override;\n var formItemInputContext = useContext(FormItemInputContext);\n var newFormItemInputContext = useMemo(function () {\n var newContext = _extends({}, formItemInputContext);\n if (override) {\n delete newContext.isFormItemInput;\n }\n if (status) {\n delete newContext.status;\n delete newContext.hasFeedback;\n delete newContext.feedbackIcon;\n }\n return newContext;\n }, [status, override, formItemInputContext]);\n return /*#__PURE__*/React.createElement(FormItemInputContext.Provider, {\n value: newFormItemInputContext\n }, children);\n};","import canUseDom from \"rc-util/es/Dom/canUseDom\";\nimport { isStyleSupport } from \"rc-util/es/Dom/styleChecker\";\nexport var canUseDocElement = function canUseDocElement() {\n return canUseDom() && window.document.documentElement;\n};\nexport { isStyleSupport };\nvar flexGapSupported;\nexport var detectFlexGapSupported = function detectFlexGapSupported() {\n if (!canUseDocElement()) {\n return false;\n }\n if (flexGapSupported !== undefined) {\n return flexGapSupported;\n }\n // create flex container with row-gap set\n var flex = document.createElement('div');\n flex.style.display = 'flex';\n flex.style.flexDirection = 'column';\n flex.style.rowGap = '1px';\n // create two, elements inside it\n flex.appendChild(document.createElement('div'));\n flex.appendChild(document.createElement('div'));\n // append to the DOM (needed to obtain scrollHeight)\n document.body.appendChild(flex);\n flexGapSupported = flex.scrollHeight === 1; // flex container should be 1px high from the row-gap\n document.body.removeChild(flex);\n return flexGapSupported;\n};","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar initMotionCommon = function initMotionCommon(duration) {\n return {\n animationDuration: duration,\n animationFillMode: 'both'\n };\n};\n// FIXME: origin less code seems same as initMotionCommon. Maybe we can safe remove\nvar initMotionCommonLeave = function initMotionCommonLeave(duration) {\n return {\n animationDuration: duration,\n animationFillMode: 'both'\n };\n};\nexport var initMotion = function initMotion(motionCls, inKeyframes, outKeyframes, duration) {\n var _ref;\n var sameLevel = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n var sameLevelPrefix = sameLevel ? '&' : '';\n return _ref = {}, _defineProperty(_ref, \"\\n \" + sameLevelPrefix + motionCls + \"-enter,\\n \" + sameLevelPrefix + motionCls + \"-appear\\n \", _extends(_extends({}, initMotionCommon(duration)), {\n animationPlayState: 'paused'\n })), _defineProperty(_ref, \"\" + sameLevelPrefix + motionCls + \"-leave\", _extends(_extends({}, initMotionCommonLeave(duration)), {\n animationPlayState: 'paused'\n })), _defineProperty(_ref, \"\\n \" + sameLevelPrefix + motionCls + \"-enter\" + motionCls + \"-enter-active,\\n \" + sameLevelPrefix + motionCls + \"-appear\" + motionCls + \"-appear-active\\n \", {\n animationName: inKeyframes,\n animationPlayState: 'running'\n }), _defineProperty(_ref, \"\" + sameLevelPrefix + motionCls + \"-leave\" + motionCls + \"-leave-active\", {\n animationName: outKeyframes,\n animationPlayState: 'running',\n pointerEvents: 'none'\n }), _ref;\n};","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Keyframes } from '@ant-design/cssinjs';\nimport { initMotion } from './motion';\nexport var fadeIn = new Keyframes('antFadeIn', {\n '0%': {\n opacity: 0\n },\n '100%': {\n opacity: 1\n }\n});\nexport var fadeOut = new Keyframes('antFadeOut', {\n '0%': {\n opacity: 1\n },\n '100%': {\n opacity: 0\n }\n});\nexport var initFadeMotion = function initFadeMotion(token) {\n var _ref;\n var sameLevel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var antCls = token.antCls;\n var motionCls = antCls + \"-fade\";\n var sameLevelPrefix = sameLevel ? '&' : '';\n return [initMotion(motionCls, fadeIn, fadeOut, token.motionDurationMid, sameLevel), (_ref = {}, _defineProperty(_ref, \"\\n \" + sameLevelPrefix + motionCls + \"-enter,\\n \" + sameLevelPrefix + motionCls + \"-appear\\n \", {\n opacity: 0,\n animationTimingFunction: 'linear'\n }), _defineProperty(_ref, \"\" + sameLevelPrefix + motionCls + \"-leave\", {\n animationTimingFunction: 'linear'\n }), _ref)];\n};","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Keyframes } from '@ant-design/cssinjs';\nimport { initMotion } from './motion';\nexport var zoomIn = new Keyframes('antZoomIn', {\n '0%': {\n transform: 'scale(0.2)',\n opacity: 0\n },\n '100%': {\n transform: 'scale(1)',\n opacity: 1\n }\n});\nexport var zoomOut = new Keyframes('antZoomOut', {\n '0%': {\n transform: 'scale(1)'\n },\n '100%': {\n transform: 'scale(0.2)',\n opacity: 0\n }\n});\nexport var zoomBigIn = new Keyframes('antZoomBigIn', {\n '0%': {\n transform: 'scale(0.8)',\n opacity: 0\n },\n '100%': {\n transform: 'scale(1)',\n opacity: 1\n }\n});\nexport var zoomBigOut = new Keyframes('antZoomBigOut', {\n '0%': {\n transform: 'scale(1)'\n },\n '100%': {\n transform: 'scale(0.8)',\n opacity: 0\n }\n});\nexport var zoomUpIn = new Keyframes('antZoomUpIn', {\n '0%': {\n transform: 'scale(0.8)',\n transformOrigin: '50% 0%',\n opacity: 0\n },\n '100%': {\n transform: 'scale(1)',\n transformOrigin: '50% 0%'\n }\n});\nexport var zoomUpOut = new Keyframes('antZoomUpOut', {\n '0%': {\n transform: 'scale(1)',\n transformOrigin: '50% 0%'\n },\n '100%': {\n transform: 'scale(0.8)',\n transformOrigin: '50% 0%',\n opacity: 0\n }\n});\nexport var zoomLeftIn = new Keyframes('antZoomLeftIn', {\n '0%': {\n transform: 'scale(0.8)',\n transformOrigin: '0% 50%',\n opacity: 0\n },\n '100%': {\n transform: 'scale(1)',\n transformOrigin: '0% 50%'\n }\n});\nexport var zoomLeftOut = new Keyframes('antZoomLeftOut', {\n '0%': {\n transform: 'scale(1)',\n transformOrigin: '0% 50%'\n },\n '100%': {\n transform: 'scale(0.8)',\n transformOrigin: '0% 50%',\n opacity: 0\n }\n});\nexport var zoomRightIn = new Keyframes('antZoomRightIn', {\n '0%': {\n transform: 'scale(0.8)',\n transformOrigin: '100% 50%',\n opacity: 0\n },\n '100%': {\n transform: 'scale(1)',\n transformOrigin: '100% 50%'\n }\n});\nexport var zoomRightOut = new Keyframes('antZoomRightOut', {\n '0%': {\n transform: 'scale(1)',\n transformOrigin: '100% 50%'\n },\n '100%': {\n transform: 'scale(0.8)',\n transformOrigin: '100% 50%',\n opacity: 0\n }\n});\nexport var zoomDownIn = new Keyframes('antZoomDownIn', {\n '0%': {\n transform: 'scale(0.8)',\n transformOrigin: '50% 100%',\n opacity: 0\n },\n '100%': {\n transform: 'scale(1)',\n transformOrigin: '50% 100%'\n }\n});\nexport var zoomDownOut = new Keyframes('antZoomDownOut', {\n '0%': {\n transform: 'scale(1)',\n transformOrigin: '50% 100%'\n },\n '100%': {\n transform: 'scale(0.8)',\n transformOrigin: '50% 100%',\n opacity: 0\n }\n});\nvar zoomMotion = {\n zoom: {\n inKeyframes: zoomIn,\n outKeyframes: zoomOut\n },\n 'zoom-big': {\n inKeyframes: zoomBigIn,\n outKeyframes: zoomBigOut\n },\n 'zoom-big-fast': {\n inKeyframes: zoomBigIn,\n outKeyframes: zoomBigOut\n },\n 'zoom-left': {\n inKeyframes: zoomLeftIn,\n outKeyframes: zoomLeftOut\n },\n 'zoom-right': {\n inKeyframes: zoomRightIn,\n outKeyframes: zoomRightOut\n },\n 'zoom-up': {\n inKeyframes: zoomUpIn,\n outKeyframes: zoomUpOut\n },\n 'zoom-down': {\n inKeyframes: zoomDownIn,\n outKeyframes: zoomDownOut\n }\n};\nexport var initZoomMotion = function initZoomMotion(token, motionName) {\n var _ref;\n var antCls = token.antCls;\n var motionCls = antCls + \"-\" + motionName;\n var _zoomMotion$motionNam = zoomMotion[motionName],\n inKeyframes = _zoomMotion$motionNam.inKeyframes,\n outKeyframes = _zoomMotion$motionNam.outKeyframes;\n return [initMotion(motionCls, inKeyframes, outKeyframes, motionName === 'zoom-big-fast' ? token.motionDurationMid : token.motionDurationMid), (_ref = {}, _defineProperty(_ref, \"\\n \" + motionCls + \"-enter,\\n \" + motionCls + \"-appear\\n \", {\n transform: 'scale(0)',\n opacity: 0,\n animationTimingFunction: token.motionEaseOutCirc,\n '&-prepare': {\n transform: 'none'\n }\n }), _defineProperty(_ref, motionCls + \"-leave\", {\n animationTimingFunction: token.motionEaseInOutCirc\n }), _ref)];\n};","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { initFadeMotion, initZoomMotion } from '../../style/motion';\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport { clearFix, genFocusStyle, resetComponent } from '../../style';\nfunction box(position) {\n return {\n position: position,\n top: 0,\n insetInlineEnd: 0,\n bottom: 0,\n insetInlineStart: 0\n };\n}\nexport var genModalMaskStyle = function genModalMaskStyle(token) {\n var _ref;\n var componentCls = token.componentCls;\n return [_defineProperty({}, componentCls + \"-root\", (_ref = {}, _defineProperty(_ref, \"\" + componentCls + token.antCls + \"-zoom-enter, \" + componentCls + token.antCls + \"-zoom-appear\", {\n // reset scale avoid mousePosition bug\n transform: 'none',\n opacity: 0,\n animationDuration: token.motionDurationSlow,\n // https://github.com/ant-design/ant-design/issues/11777\n userSelect: 'none'\n }), _defineProperty(_ref, componentCls + \"-mask\", _extends(_extends({}, box('fixed')), _defineProperty({\n zIndex: token.zIndexPopupBase,\n height: '100%',\n backgroundColor: token.colorBgMask\n }, componentCls + \"-hidden\", {\n display: 'none'\n }))), _defineProperty(_ref, componentCls + \"-wrap\", _extends(_extends({}, box('fixed')), {\n overflow: 'auto',\n outline: 0,\n WebkitOverflowScrolling: 'touch'\n })), _ref)), _defineProperty({}, componentCls + \"-root\", initFadeMotion(token))];\n};\nvar genModalStyle = function genModalStyle(token) {\n var _ref6, _ref7, _extends3, _ref11;\n var componentCls = token.componentCls;\n return [// ======================== Root =========================\n _defineProperty({}, componentCls + \"-root\", (_ref7 = {}, _defineProperty(_ref7, componentCls + \"-wrap\", {\n zIndex: token.zIndexPopupBase,\n position: 'fixed',\n inset: 0,\n overflow: 'auto',\n outline: 0,\n WebkitOverflowScrolling: 'touch'\n }), _defineProperty(_ref7, componentCls + \"-wrap-rtl\", {\n direction: 'rtl'\n }), _defineProperty(_ref7, componentCls + \"-centered\", _defineProperty({\n textAlign: 'center',\n '&::before': {\n display: 'inline-block',\n width: 0,\n height: '100%',\n verticalAlign: 'middle',\n content: '\"\"'\n }\n }, componentCls, {\n top: 0,\n display: 'inline-block',\n paddingBottom: 0,\n textAlign: 'start',\n verticalAlign: 'middle'\n })), _defineProperty(_ref7, \"@media (max-width: \" + token.screenSMMax + \")\", (_ref6 = {}, _defineProperty(_ref6, componentCls, {\n maxWidth: 'calc(100vw - 16px)',\n margin: token.marginXS + \" auto\"\n }), _defineProperty(_ref6, componentCls + \"-centered\", _defineProperty({}, componentCls, {\n flex: 1\n })), _ref6)), _ref7)), // ======================== Modal ========================\n _defineProperty({}, componentCls, _extends(_extends({}, resetComponent(token)), (_extends3 = {\n pointerEvents: 'none',\n position: 'relative',\n top: 100,\n width: 'auto',\n maxWidth: \"calc(100vw - \" + token.margin * 2 + \"px)\",\n margin: '0 auto',\n paddingBottom: token.paddingLG\n }, _defineProperty(_extends3, componentCls + \"-title\", {\n margin: 0,\n color: token.modalHeadingColor,\n fontWeight: token.fontWeightStrong,\n fontSize: token.modalHeaderTitleFontSize,\n lineHeight: token.modalHeaderTitleLineHeight,\n wordWrap: 'break-word'\n }), _defineProperty(_extends3, componentCls + \"-content\", {\n position: 'relative',\n backgroundColor: token.modalContentBg,\n backgroundClip: 'padding-box',\n border: 0,\n borderRadius: token.borderRadiusLG,\n boxShadow: token.boxShadowSecondary,\n pointerEvents: 'auto',\n padding: token.paddingMD + \"px \" + token.paddingContentHorizontalLG + \"px\"\n }), _defineProperty(_extends3, componentCls + \"-close\", _extends({\n position: 'absolute',\n top: (token.modalHeaderCloseSize - token.modalCloseBtnSize) / 2,\n insetInlineEnd: (token.modalHeaderCloseSize - token.modalCloseBtnSize) / 2,\n zIndex: token.zIndexPopupBase + 10,\n padding: 0,\n color: token.modalCloseColor,\n fontWeight: token.fontWeightStrong,\n lineHeight: 1,\n textDecoration: 'none',\n background: 'transparent',\n borderRadius: token.borderRadiusSM,\n width: token.modalConfirmIconSize,\n height: token.modalConfirmIconSize,\n border: 0,\n outline: 0,\n cursor: 'pointer',\n transition: \"color \" + token.motionDurationMid + \", background-color \" + token.motionDurationMid,\n '&-x': {\n display: 'block',\n fontSize: token.fontSizeLG,\n fontStyle: 'normal',\n lineHeight: token.modalCloseBtnSize + \"px\",\n textAlign: 'center',\n textTransform: 'none',\n textRendering: 'auto'\n },\n '&:hover': {\n color: token.modalIconHoverColor,\n backgroundColor: token.wireframe ? 'transparent' : token.colorFillContent,\n textDecoration: 'none'\n },\n '&:active': {\n backgroundColor: token.wireframe ? 'transparent' : token.colorFillContentHover\n }\n }, genFocusStyle(token))), _defineProperty(_extends3, componentCls + \"-header\", {\n color: token.colorText,\n background: token.modalHeaderBg,\n borderRadius: token.borderRadiusLG + \"px \" + token.borderRadiusLG + \"px 0 0\",\n marginBottom: token.marginXS\n }), _defineProperty(_extends3, componentCls + \"-body\", {\n fontSize: token.fontSize,\n lineHeight: token.lineHeight,\n wordWrap: 'break-word'\n }), _defineProperty(_extends3, componentCls + \"-footer\", _defineProperty({\n textAlign: 'end',\n background: token.modalFooterBg,\n marginTop: token.marginSM\n }, token.antCls + \"-btn + \" + token.antCls + \"-btn:not(\" + token.antCls + \"-dropdown-trigger)\", {\n marginBottom: 0,\n marginInlineStart: token.marginXS\n })), _defineProperty(_extends3, componentCls + \"-open\", {\n overflow: 'hidden'\n }), _extends3))), // ======================== Pure =========================\n _defineProperty({}, componentCls + \"-pure-panel\", (_ref11 = {\n top: 'auto',\n padding: 0,\n display: 'flex',\n flexDirection: 'column'\n }, _defineProperty(_ref11, componentCls + \"-content,\\n \" + componentCls + \"-body,\\n \" + componentCls + \"-confirm-body-wrapper\", {\n display: 'flex',\n flexDirection: 'column',\n flex: 'auto'\n }), _defineProperty(_ref11, componentCls + \"-confirm-body\", {\n marginBottom: 'auto'\n }), _ref11))];\n};\nvar genModalConfirmStyle = function genModalConfirmStyle(token) {\n var _ref14, _ref15, _confirmComponentCls, _ref17;\n var componentCls = token.componentCls;\n var confirmComponentCls = componentCls + \"-confirm\";\n return _ref17 = {}, _defineProperty(_ref17, confirmComponentCls, (_confirmComponentCls = {\n '&-rtl': {\n direction: 'rtl'\n }\n }, _defineProperty(_confirmComponentCls, token.antCls + \"-modal-header\", {\n display: 'none'\n }), _defineProperty(_confirmComponentCls, confirmComponentCls + \"-body-wrapper\", _extends({}, clearFix())), _defineProperty(_confirmComponentCls, confirmComponentCls + \"-body\", (_ref15 = {\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center'\n }, _defineProperty(_ref15, confirmComponentCls + \"-title\", _defineProperty({\n flex: '0 0 100%',\n display: 'block',\n // create BFC to avoid\n // https://user-images.githubusercontent.com/507615/37702510-ba844e06-2d2d-11e8-9b67-8e19be57f445.png\n overflow: 'hidden',\n color: token.colorTextHeading,\n fontWeight: token.fontWeightStrong,\n fontSize: token.modalHeaderTitleFontSize,\n lineHeight: token.modalHeaderTitleLineHeight\n }, \"+ \" + confirmComponentCls + \"-content\", {\n marginBlockStart: token.marginXS\n })), _defineProperty(_ref15, confirmComponentCls + \"-content\", {\n color: token.colorText,\n fontSize: token.fontSize\n }), _defineProperty(_ref15, \"> \" + token.iconCls, (_ref14 = {\n flex: 'none',\n marginInlineEnd: token.marginSM,\n fontSize: token.modalConfirmIconSize\n }, _defineProperty(_ref14, \"+ \" + confirmComponentCls + \"-title\", {\n flex: 1\n }), _defineProperty(_ref14, \"+ \" + confirmComponentCls + \"-title + \" + confirmComponentCls + \"-content\", {\n marginInlineStart: token.modalConfirmIconSize + token.marginSM,\n flexBasis: '100%'\n }), _ref14)), _ref15)), _defineProperty(_confirmComponentCls, confirmComponentCls + \"-btns\", _defineProperty({\n textAlign: 'end',\n marginTop: token.marginSM\n }, token.antCls + \"-btn + \" + token.antCls + \"-btn\", {\n marginBottom: 0,\n marginInlineStart: token.marginXS\n })), _confirmComponentCls)), _defineProperty(_ref17, confirmComponentCls + \"-error \" + confirmComponentCls + \"-body > \" + token.iconCls, {\n color: token.colorError\n }), _defineProperty(_ref17, confirmComponentCls + \"-warning \" + confirmComponentCls + \"-body > \" + token.iconCls + \",\\n \" + confirmComponentCls + \"-confirm \" + confirmComponentCls + \"-body > \" + token.iconCls, {\n color: token.colorWarning\n }), _defineProperty(_ref17, confirmComponentCls + \"-info \" + confirmComponentCls + \"-body > \" + token.iconCls, {\n color: token.colorInfo\n }), _defineProperty(_ref17, confirmComponentCls + \"-success \" + confirmComponentCls + \"-body > \" + token.iconCls, {\n color: token.colorSuccess\n }), _defineProperty(_ref17, componentCls + \"-zoom-leave \" + componentCls + \"-btns\", {\n pointerEvents: 'none'\n }), _ref17;\n};\nvar genRTLStyle = function genRTLStyle(token) {\n var componentCls = token.componentCls;\n return _defineProperty({}, componentCls + \"-root\", _defineProperty({}, componentCls + \"-wrap-rtl\", _defineProperty({\n direction: 'rtl'\n }, componentCls + \"-confirm-body\", {\n direction: 'rtl'\n })));\n};\nvar genWireframeStyle = function genWireframeStyle(token) {\n var _componentCls, _confirmComponentCls2, _ref23;\n var componentCls = token.componentCls,\n antCls = token.antCls;\n var confirmComponentCls = componentCls + \"-confirm\";\n return _ref23 = {}, _defineProperty(_ref23, componentCls, (_componentCls = {}, _defineProperty(_componentCls, componentCls + \"-content\", {\n padding: 0\n }), _defineProperty(_componentCls, componentCls + \"-header\", {\n padding: token.modalHeaderPadding,\n borderBottom: token.modalHeaderBorderWidth + \"px \" + token.modalHeaderBorderStyle + \" \" + token.modalHeaderBorderColorSplit,\n marginBottom: 0\n }), _defineProperty(_componentCls, componentCls + \"-body\", {\n padding: token.modalBodyPadding\n }), _defineProperty(_componentCls, componentCls + \"-footer\", {\n padding: token.modalFooterPaddingVertical + \"px \" + token.modalFooterPaddingHorizontal + \"px\",\n borderTop: token.modalFooterBorderWidth + \"px \" + token.modalFooterBorderStyle + \" \" + token.modalFooterBorderColorSplit,\n borderRadius: \"0 0 \" + token.borderRadiusLG + \"px \" + token.borderRadiusLG + \"px\",\n marginTop: 0\n }), _componentCls)), _defineProperty(_ref23, confirmComponentCls, (_confirmComponentCls2 = {}, _defineProperty(_confirmComponentCls2, antCls + \"-modal-body\", {\n padding: token.padding * 2 + \"px \" + token.padding * 2 + \"px \" + token.paddingLG + \"px\"\n }), _defineProperty(_confirmComponentCls2, confirmComponentCls + \"-body\", _defineProperty({}, \"> \" + token.iconCls, _defineProperty({\n marginInlineEnd: token.margin\n }, \"+ \" + confirmComponentCls + \"-title + \" + confirmComponentCls + \"-content\", {\n marginInlineStart: token.modalConfirmIconSize + token.margin\n }))), _defineProperty(_confirmComponentCls2, confirmComponentCls + \"-btns\", {\n marginTop: token.marginLG\n }), _confirmComponentCls2)), _ref23;\n};\n// ============================== Export ==============================\nexport default genComponentStyleHook('Modal', function (token) {\n var headerPaddingVertical = token.padding;\n var headerFontSize = token.fontSizeHeading5;\n var headerLineHeight = token.lineHeightHeading5;\n var modalToken = mergeToken(token, {\n modalBodyPadding: token.paddingLG,\n modalHeaderBg: token.colorBgElevated,\n modalHeaderPadding: headerPaddingVertical + \"px \" + token.paddingLG + \"px\",\n modalHeaderBorderWidth: token.lineWidth,\n modalHeaderBorderStyle: token.lineType,\n modalHeaderTitleLineHeight: headerLineHeight,\n modalHeaderTitleFontSize: headerFontSize,\n modalHeaderBorderColorSplit: token.colorSplit,\n modalHeaderCloseSize: headerLineHeight * headerFontSize + headerPaddingVertical * 2,\n modalContentBg: token.colorBgElevated,\n modalHeadingColor: token.colorTextHeading,\n modalCloseColor: token.colorTextDescription,\n modalFooterBg: 'transparent',\n modalFooterBorderColorSplit: token.colorSplit,\n modalFooterBorderStyle: token.lineType,\n modalFooterPaddingVertical: token.paddingXS,\n modalFooterPaddingHorizontal: token.padding,\n modalFooterBorderWidth: token.lineWidth,\n modalConfirmTitleFontSize: token.fontSizeLG,\n modalIconHoverColor: token.colorIconHover,\n modalConfirmIconSize: token.fontSize * token.lineHeight,\n modalCloseBtnSize: token.controlHeightLG * 0.55\n });\n return [genModalStyle(modalToken), genModalConfirmStyle(modalToken), genRTLStyle(modalToken), genModalMaskStyle(modalToken), token.wireframe && genWireframeStyle(modalToken), initZoomMotion(modalToken, 'zoom')];\n});","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") 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])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport CloseOutlined from \"@ant-design/icons/es/icons/CloseOutlined\";\nimport classNames from 'classnames';\nimport { Panel } from 'rc-dialog';\nimport * as React from 'react';\nimport Button from '../button';\nimport { convertLegacyProps } from '../button/button';\nimport { ConfigContext } from '../config-provider';\nimport LocaleReceiver from '../locale-provider/LocaleReceiver';\nimport { ConfirmContent } from './ConfirmDialog';\nimport { getConfirmLocale } from './locale';\nimport useStyle from './style';\nexport function renderCloseIcon(prefixCls, closeIcon) {\n return /*#__PURE__*/React.createElement(\"span\", {\n className: prefixCls + \"-close-x\"\n }, closeIcon || /*#__PURE__*/React.createElement(CloseOutlined, {\n className: prefixCls + \"-close-icon\"\n }));\n}\nexport function renderFooter(props) {\n var okText = props.okText,\n _props$okType = props.okType,\n okType = _props$okType === void 0 ? 'primary' : _props$okType,\n cancelText = props.cancelText,\n confirmLoading = props.confirmLoading,\n onOk = props.onOk,\n onCancel = props.onCancel,\n okButtonProps = props.okButtonProps,\n cancelButtonProps = props.cancelButtonProps,\n footer = props.footer;\n return footer === undefined ? /*#__PURE__*/React.createElement(LocaleReceiver, {\n componentName: \"Modal\",\n defaultLocale: getConfirmLocale()\n }, function (locale) {\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Button, _extends({\n onClick: onCancel\n }, cancelButtonProps), cancelText || locale.cancelText), /*#__PURE__*/React.createElement(Button, _extends({}, convertLegacyProps(okType), {\n loading: confirmLoading,\n onClick: onOk\n }, okButtonProps), okText || locale.okText));\n }) : footer;\n}\nexport default function PurePanel(props) {\n var customizePrefixCls = props.prefixCls,\n className = props.className,\n closeIcon = props.closeIcon,\n closable = props.closable,\n type = props.type,\n title = props.title,\n children = props.children,\n restProps = __rest(props, [\"prefixCls\", \"className\", \"closeIcon\", \"closable\", \"type\", \"title\", \"children\"]);\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls;\n var rootPrefixCls = getPrefixCls();\n var prefixCls = customizePrefixCls || getPrefixCls('modal');\n var _useStyle = useStyle(prefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n hashId = _useStyle2[1];\n var confirmPrefixCls = prefixCls + \"-confirm\";\n // Choose target props by confirm mark\n var additionalProps = {};\n if (type) {\n additionalProps = {\n closable: closable !== null && closable !== void 0 ? closable : false,\n title: '',\n footer: '',\n children: /*#__PURE__*/React.createElement(ConfirmContent, _extends({}, props, {\n confirmPrefixCls: confirmPrefixCls,\n rootPrefixCls: rootPrefixCls,\n content: children\n }))\n };\n } else {\n additionalProps = {\n closable: closable !== null && closable !== void 0 ? closable : true,\n title: title,\n footer: renderFooter(props),\n children: children\n };\n }\n return /*#__PURE__*/React.createElement(Panel, _extends({\n prefixCls: prefixCls,\n className: classNames(hashId, prefixCls + \"-pure-panel\", type && confirmPrefixCls, type && confirmPrefixCls + \"-\" + type, className)\n }, restProps, {\n closeIcon: renderCloseIcon(prefixCls, closeIcon),\n closable: closable\n }, additionalProps));\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") 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])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport Dialog from 'rc-dialog';\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport { NoFormStyle } from '../form/context';\nimport { NoCompactStyle } from '../space/Compact';\nimport { getTransitionName } from '../_util/motion';\nimport { canUseDocElement } from '../_util/styleChecker';\nimport warning from '../_util/warning';\nimport { renderCloseIcon, renderFooter } from './PurePanel';\nimport useStyle from './style';\nvar mousePosition;\n// ref: https://github.com/ant-design/ant-design/issues/15795\nvar getClickPosition = function getClickPosition(e) {\n mousePosition = {\n x: e.pageX,\n y: e.pageY\n };\n // 100ms 内发生过点击事件,则从点击位置动画展示\n // 否则直接 zoom 展示\n // 这样可以兼容非点击方式展开\n setTimeout(function () {\n mousePosition = null;\n }, 100);\n};\n// 只有点击事件支持从鼠标位置动画展开\nif (canUseDocElement()) {\n document.documentElement.addEventListener('click', getClickPosition, true);\n}\nvar Modal = function Modal(props) {\n var _classNames;\n var _a;\n var _React$useContext = React.useContext(ConfigContext),\n getContextPopupContainer = _React$useContext.getPopupContainer,\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction;\n var handleCancel = function handleCancel(e) {\n var onCancel = props.onCancel;\n onCancel === null || onCancel === void 0 ? void 0 : onCancel(e);\n };\n var handleOk = function handleOk(e) {\n var onOk = props.onOk;\n onOk === null || onOk === void 0 ? void 0 : onOk(e);\n };\n process.env.NODE_ENV !== \"production\" ? warning(!('visible' in props), 'Modal', \"`visible` will be removed in next major version, please use `open` instead.\") : void 0;\n var customizePrefixCls = props.prefixCls,\n className = props.className,\n open = props.open,\n wrapClassName = props.wrapClassName,\n centered = props.centered,\n getContainer = props.getContainer,\n closeIcon = props.closeIcon,\n _props$focusTriggerAf = props.focusTriggerAfterClose,\n focusTriggerAfterClose = _props$focusTriggerAf === void 0 ? true : _props$focusTriggerAf,\n visible = props.visible,\n _props$width = props.width,\n width = _props$width === void 0 ? 520 : _props$width,\n restProps = __rest(props, [\"prefixCls\", \"className\", \"open\", \"wrapClassName\", \"centered\", \"getContainer\", \"closeIcon\", \"focusTriggerAfterClose\", \"visible\", \"width\"]);\n var prefixCls = getPrefixCls('modal', customizePrefixCls);\n var rootPrefixCls = getPrefixCls();\n // Style\n var _useStyle = useStyle(prefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n wrapSSR = _useStyle2[0],\n hashId = _useStyle2[1];\n var wrapClassNameExtended = classNames(wrapClassName, (_classNames = {}, _defineProperty(_classNames, prefixCls + \"-centered\", !!centered), _defineProperty(_classNames, prefixCls + \"-wrap-rtl\", direction === 'rtl'), _classNames));\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== \"production\" ? warning(!('visible' in props), 'Modal', '`visible` is deprecated, please use `open` instead.') : void 0;\n }\n return wrapSSR( /*#__PURE__*/React.createElement(NoCompactStyle, null, /*#__PURE__*/React.createElement(NoFormStyle, {\n status: true,\n override: true\n }, /*#__PURE__*/React.createElement(Dialog, _extends({\n width: width\n }, restProps, {\n getContainer: getContainer === undefined ? getContextPopupContainer : getContainer,\n prefixCls: prefixCls,\n rootClassName: hashId,\n wrapClassName: wrapClassNameExtended,\n footer: renderFooter(_extends(_extends({}, props), {\n onOk: handleOk,\n onCancel: handleCancel\n })),\n visible: open !== null && open !== void 0 ? open : visible,\n mousePosition: (_a = restProps.mousePosition) !== null && _a !== void 0 ? _a : mousePosition,\n onClose: handleCancel,\n closeIcon: renderCloseIcon(prefixCls, closeIcon),\n focusTriggerAfterClose: focusTriggerAfterClose,\n transitionName: getTransitionName(rootPrefixCls, 'zoom', props.transitionName),\n maskTransitionName: getTransitionName(rootPrefixCls, 'fade', props.maskTransitionName),\n className: classNames(hashId, className)\n })))));\n};\nexport default Modal;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport CheckCircleFilled from \"@ant-design/icons/es/icons/CheckCircleFilled\";\nimport CloseCircleFilled from \"@ant-design/icons/es/icons/CloseCircleFilled\";\nimport ExclamationCircleFilled from \"@ant-design/icons/es/icons/ExclamationCircleFilled\";\nimport InfoCircleFilled from \"@ant-design/icons/es/icons/InfoCircleFilled\";\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport ConfigProvider from '../config-provider';\nimport LocaleReceiver from '../locale-provider/LocaleReceiver';\nimport ActionButton from '../_util/ActionButton';\nimport { getTransitionName } from '../_util/motion';\nimport warning from '../_util/warning';\nimport Dialog from './Modal';\nexport function ConfirmContent(props) {\n var icon = props.icon,\n onCancel = props.onCancel,\n onOk = props.onOk,\n close = props.close,\n okText = props.okText,\n okButtonProps = props.okButtonProps,\n cancelText = props.cancelText,\n cancelButtonProps = props.cancelButtonProps,\n confirmPrefixCls = props.confirmPrefixCls,\n rootPrefixCls = props.rootPrefixCls,\n type = props.type,\n okCancel = props.okCancel,\n staticLocale = props.locale;\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof icon === 'string' && icon.length > 2), 'Modal', \"`icon` is using ReactNode instead of string naming in v4. Please check `\" + icon + \"` at https://ant.design/components/icon\") : void 0;\n // Icon\n var mergedIcon = icon;\n // 支持传入{ icon: null }来隐藏`Modal.confirm`默认的Icon\n if (!icon && icon !== null) {\n switch (type) {\n case 'info':\n mergedIcon = /*#__PURE__*/React.createElement(InfoCircleFilled, null);\n break;\n case 'success':\n mergedIcon = /*#__PURE__*/React.createElement(CheckCircleFilled, null);\n break;\n case 'error':\n mergedIcon = /*#__PURE__*/React.createElement(CloseCircleFilled, null);\n break;\n default:\n mergedIcon = /*#__PURE__*/React.createElement(ExclamationCircleFilled, null);\n }\n }\n var okType = props.okType || 'primary';\n // 默认为 true,保持向下兼容\n var mergedOkCancel = okCancel !== null && okCancel !== void 0 ? okCancel : type === 'confirm';\n var autoFocusButton = props.autoFocusButton === null ? false : props.autoFocusButton || 'ok';\n return /*#__PURE__*/React.createElement(LocaleReceiver, {\n componentName: \"Modal\"\n }, function (locale) {\n var mergedLocale = staticLocale || locale;\n var cancelButton = mergedOkCancel && /*#__PURE__*/React.createElement(ActionButton, {\n actionFn: onCancel,\n close: close,\n autoFocus: autoFocusButton === 'cancel',\n buttonProps: cancelButtonProps,\n prefixCls: rootPrefixCls + \"-btn\"\n }, cancelText || (mergedLocale === null || mergedLocale === void 0 ? void 0 : mergedLocale.cancelText));\n return /*#__PURE__*/React.createElement(\"div\", {\n className: confirmPrefixCls + \"-body-wrapper\"\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: confirmPrefixCls + \"-body\"\n }, mergedIcon, props.title === undefined ? null : /*#__PURE__*/React.createElement(\"span\", {\n className: confirmPrefixCls + \"-title\"\n }, props.title), /*#__PURE__*/React.createElement(\"div\", {\n className: confirmPrefixCls + \"-content\"\n }, props.content)), /*#__PURE__*/React.createElement(\"div\", {\n className: confirmPrefixCls + \"-btns\"\n }, cancelButton, /*#__PURE__*/React.createElement(ActionButton, {\n type: okType,\n actionFn: onOk,\n close: close,\n autoFocus: autoFocusButton === 'ok',\n buttonProps: okButtonProps,\n prefixCls: rootPrefixCls + \"-btn\"\n }, okText || (mergedOkCancel ? mergedLocale === null || mergedLocale === void 0 ? void 0 : mergedLocale.okText : mergedLocale === null || mergedLocale === void 0 ? void 0 : mergedLocale.justOkText))));\n });\n}\nvar ConfirmDialog = function ConfirmDialog(props) {\n var close = props.close,\n zIndex = props.zIndex,\n afterClose = props.afterClose,\n visible = props.visible,\n open = props.open,\n keyboard = props.keyboard,\n centered = props.centered,\n getContainer = props.getContainer,\n maskStyle = props.maskStyle,\n direction = props.direction,\n prefixCls = props.prefixCls,\n wrapClassName = props.wrapClassName,\n rootPrefixCls = props.rootPrefixCls,\n iconPrefixCls = props.iconPrefixCls,\n bodyStyle = props.bodyStyle,\n _props$closable = props.closable,\n closable = _props$closable === void 0 ? false : _props$closable,\n closeIcon = props.closeIcon,\n modalRender = props.modalRender,\n focusTriggerAfterClose = props.focusTriggerAfterClose;\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== \"production\" ? warning(visible === undefined, 'Modal', \"`visible` is deprecated, please use `open` instead.\") : void 0;\n }\n var confirmPrefixCls = prefixCls + \"-confirm\";\n var width = props.width || 416;\n var style = props.style || {};\n var mask = props.mask === undefined ? true : props.mask;\n // 默认为 false,保持旧版默认行为\n var maskClosable = props.maskClosable === undefined ? false : props.maskClosable;\n var classString = classNames(confirmPrefixCls, confirmPrefixCls + \"-\" + props.type, _defineProperty({}, confirmPrefixCls + \"-rtl\", direction === 'rtl'), props.className);\n return /*#__PURE__*/React.createElement(ConfigProvider, {\n prefixCls: rootPrefixCls,\n iconPrefixCls: iconPrefixCls,\n direction: direction\n }, /*#__PURE__*/React.createElement(Dialog, {\n prefixCls: prefixCls,\n className: classString,\n wrapClassName: classNames(_defineProperty({}, confirmPrefixCls + \"-centered\", !!props.centered), wrapClassName),\n onCancel: function onCancel() {\n return close === null || close === void 0 ? void 0 : close({\n triggerCancel: true\n });\n },\n open: open,\n title: \"\",\n footer: \"\",\n transitionName: getTransitionName(rootPrefixCls, 'zoom', props.transitionName),\n maskTransitionName: getTransitionName(rootPrefixCls, 'fade', props.maskTransitionName),\n mask: mask,\n maskClosable: maskClosable,\n maskStyle: maskStyle,\n style: style,\n bodyStyle: bodyStyle,\n width: width,\n zIndex: zIndex,\n afterClose: afterClose,\n keyboard: keyboard,\n centered: centered,\n getContainer: getContainer,\n closable: closable,\n closeIcon: closeIcon,\n modalRender: modalRender,\n focusTriggerAfterClose: focusTriggerAfterClose\n }, /*#__PURE__*/React.createElement(ConfirmContent, _extends({}, props, {\n confirmPrefixCls: confirmPrefixCls\n }))));\n};\nif (process.env.NODE_ENV !== 'production') {\n ConfirmDialog.displayName = 'ConfirmDialog';\n}\nexport default ConfirmDialog;","var destroyFns = [];\nexport default destroyFns;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") 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])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { render as reactRender, unmount as reactUnmount } from \"rc-util/es/React/render\";\nimport * as React from 'react';\nimport { globalConfig } from '../config-provider';\nimport warning from '../_util/warning';\nimport ConfirmDialog from './ConfirmDialog';\nimport destroyFns from './destroyFns';\nimport { getConfirmLocale } from './locale';\nvar defaultRootPrefixCls = '';\nfunction getRootPrefixCls() {\n return defaultRootPrefixCls;\n}\nexport default function confirm(config) {\n var container = document.createDocumentFragment();\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n var currentConfig = _extends(_extends({}, config), {\n close: close,\n open: true\n });\n var timeoutId;\n function destroy() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var triggerCancel = args.some(function (param) {\n return param && param.triggerCancel;\n });\n if (config.onCancel && triggerCancel) {\n config.onCancel.apply(config, [function () {}].concat(_toConsumableArray(args.slice(1))));\n }\n for (var i = 0; i < destroyFns.length; i++) {\n var fn = destroyFns[i];\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n if (fn === close) {\n destroyFns.splice(i, 1);\n break;\n }\n }\n reactUnmount(container);\n }\n function render(_a) {\n var okText = _a.okText,\n cancelText = _a.cancelText,\n customizePrefixCls = _a.prefixCls,\n props = __rest(_a, [\"okText\", \"cancelText\", \"prefixCls\"]);\n clearTimeout(timeoutId);\n /**\n * https://github.com/ant-design/ant-design/issues/23623\n *\n * Sync render blocks React event. Let's make this async.\n */\n timeoutId = setTimeout(function () {\n var runtimeLocale = getConfirmLocale();\n var _globalConfig = globalConfig(),\n getPrefixCls = _globalConfig.getPrefixCls,\n getIconPrefixCls = _globalConfig.getIconPrefixCls;\n // because Modal.config \b set rootPrefixCls, which is different from other components\n var rootPrefixCls = getPrefixCls(undefined, getRootPrefixCls());\n var prefixCls = customizePrefixCls || rootPrefixCls + \"-modal\";\n var iconPrefixCls = getIconPrefixCls();\n reactRender( /*#__PURE__*/React.createElement(ConfirmDialog, _extends({}, props, {\n prefixCls: prefixCls,\n rootPrefixCls: rootPrefixCls,\n iconPrefixCls: iconPrefixCls,\n okText: okText,\n locale: runtimeLocale,\n cancelText: cancelText || runtimeLocale.cancelText\n })), container);\n });\n }\n function close() {\n var _this = this;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n currentConfig = _extends(_extends({}, currentConfig), {\n open: false,\n afterClose: function afterClose() {\n if (typeof config.afterClose === 'function') {\n config.afterClose();\n }\n destroy.apply(_this, args);\n }\n });\n // Legacy support\n if (currentConfig.visible) {\n delete currentConfig.visible;\n }\n render(currentConfig);\n }\n function update(configUpdate) {\n if (typeof configUpdate === 'function') {\n currentConfig = configUpdate(currentConfig);\n } else {\n currentConfig = _extends(_extends({}, currentConfig), configUpdate);\n }\n render(currentConfig);\n }\n render(currentConfig);\n destroyFns.push(close);\n return {\n destroy: close,\n update: update\n };\n}\nexport function withWarn(props) {\n return _extends(_extends({}, props), {\n type: 'warning'\n });\n}\nexport function withInfo(props) {\n return _extends(_extends({}, props), {\n type: 'info'\n });\n}\nexport function withSuccess(props) {\n return _extends(_extends({}, props), {\n type: 'success'\n });\n}\nexport function withError(props) {\n return _extends(_extends({}, props), {\n type: 'error'\n });\n}\nexport function withConfirm(props) {\n return _extends(_extends({}, props), {\n type: 'confirm'\n });\n}\nexport function modalGlobalConfig(_ref) {\n var rootPrefixCls = _ref.rootPrefixCls;\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Modal', 'Modal.config is deprecated. Please use ConfigProvider.config instead.') : void 0;\n defaultRootPrefixCls = rootPrefixCls;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { ConfigContext } from '../../config-provider';\nimport LocaleReceiver from '../../locale-provider/LocaleReceiver';\nimport defaultLocale from '../../locale/en_US';\nimport ConfirmDialog from '../ConfirmDialog';\nvar HookModal = function HookModal(_ref, ref) {\n var afterClose = _ref.afterClose,\n config = _ref.config;\n var _React$useState = React.useState(true),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n open = _React$useState2[0],\n setOpen = _React$useState2[1];\n var _React$useState3 = React.useState(config),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n innerConfig = _React$useState4[0],\n setInnerConfig = _React$useState4[1];\n var _React$useContext = React.useContext(ConfigContext),\n direction = _React$useContext.direction,\n getPrefixCls = _React$useContext.getPrefixCls;\n var prefixCls = getPrefixCls('modal');\n var rootPrefixCls = getPrefixCls();\n var close = function close() {\n setOpen(false);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var triggerCancel = args.some(function (param) {\n return param && param.triggerCancel;\n });\n if (innerConfig.onCancel && triggerCancel) {\n innerConfig.onCancel.apply(innerConfig, [function () {}].concat(_toConsumableArray(args.slice(1))));\n }\n };\n React.useImperativeHandle(ref, function () {\n return {\n destroy: close,\n update: function update(newConfig) {\n setInnerConfig(function (originConfig) {\n return _extends(_extends({}, originConfig), newConfig);\n });\n }\n };\n });\n return /*#__PURE__*/React.createElement(LocaleReceiver, {\n componentName: \"Modal\",\n defaultLocale: defaultLocale.Modal\n }, function (contextLocale) {\n return /*#__PURE__*/React.createElement(ConfirmDialog, _extends({\n prefixCls: prefixCls,\n rootPrefixCls: rootPrefixCls\n }, innerConfig, {\n close: close,\n open: open,\n afterClose: afterClose,\n okText: innerConfig.okText || (innerConfig.okCancel ? contextLocale.okText : contextLocale.justOkText),\n direction: direction,\n cancelText: innerConfig.cancelText || contextLocale.cancelText\n }));\n });\n};\nexport default /*#__PURE__*/React.forwardRef(HookModal);","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport usePatchElement from '../../_util/hooks/usePatchElement';\nimport { withConfirm, withError, withInfo, withSuccess, withWarn } from '../confirm';\nimport HookModal from './HookModal';\nvar uuid = 0;\nvar ElementsHolder = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (_props, ref) {\n var _usePatchElement = usePatchElement(),\n _usePatchElement2 = _slicedToArray(_usePatchElement, 2),\n elements = _usePatchElement2[0],\n patchElement = _usePatchElement2[1];\n React.useImperativeHandle(ref, function () {\n return {\n patchElement: patchElement\n };\n }, []);\n // eslint-disable-next-line react/jsx-no-useless-fragment\n return /*#__PURE__*/React.createElement(React.Fragment, null, elements);\n}));\nexport default function useModal() {\n var holderRef = React.useRef(null);\n // ========================== Effect ==========================\n var _React$useState = React.useState([]),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n actionQueue = _React$useState2[0],\n setActionQueue = _React$useState2[1];\n React.useEffect(function () {\n if (actionQueue.length) {\n var cloneQueue = _toConsumableArray(actionQueue);\n cloneQueue.forEach(function (action) {\n action();\n });\n setActionQueue([]);\n }\n }, [actionQueue]);\n // =========================== Hook ===========================\n var getConfirmFunc = React.useCallback(function (withFunc) {\n return function hookConfirm(config) {\n var _a;\n uuid += 1;\n var modalRef = /*#__PURE__*/React.createRef();\n var closeFunc;\n var modal = /*#__PURE__*/React.createElement(HookModal, {\n key: \"modal-\" + uuid,\n config: withFunc(config),\n ref: modalRef,\n afterClose: function afterClose() {\n closeFunc === null || closeFunc === void 0 ? void 0 : closeFunc();\n }\n });\n closeFunc = (_a = holderRef.current) === null || _a === void 0 ? void 0 : _a.patchElement(modal);\n return {\n destroy: function destroy() {\n function destroyAction() {\n var _a;\n (_a = modalRef.current) === null || _a === void 0 ? void 0 : _a.destroy();\n }\n if (modalRef.current) {\n destroyAction();\n } else {\n setActionQueue(function (prev) {\n return [].concat(_toConsumableArray(prev), [destroyAction]);\n });\n }\n },\n update: function update(newConfig) {\n function updateAction() {\n var _a;\n (_a = modalRef.current) === null || _a === void 0 ? void 0 : _a.update(newConfig);\n }\n if (modalRef.current) {\n updateAction();\n } else {\n setActionQueue(function (prev) {\n return [].concat(_toConsumableArray(prev), [updateAction]);\n });\n }\n }\n };\n };\n }, []);\n var fns = React.useMemo(function () {\n return {\n info: getConfirmFunc(withInfo),\n success: getConfirmFunc(withSuccess),\n error: getConfirmFunc(withError),\n warning: getConfirmFunc(withWarn),\n confirm: getConfirmFunc(withConfirm)\n };\n }, []);\n // eslint-disable-next-line react/jsx-key\n return [fns, /*#__PURE__*/React.createElement(ElementsHolder, {\n ref: holderRef\n })];\n}","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nexport default function usePatchElement() {\n var _React$useState = React.useState([]),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n elements = _React$useState2[0],\n setElements = _React$useState2[1];\n var patchElement = React.useCallback(function (element) {\n // append a new element to elements (and create a new ref)\n setElements(function (originElements) {\n return [].concat(_toConsumableArray(originElements), [element]);\n });\n // return a function that removes the new element out of elements (and create a new ref)\n // it works a little like useEffect\n return function () {\n setElements(function (originElements) {\n return originElements.filter(function (ele) {\n return ele !== element;\n });\n });\n };\n }, []);\n return [elements, patchElement];\n}","import confirm, { modalGlobalConfig, withConfirm, withError, withInfo, withSuccess, withWarn } from './confirm';\nimport destroyFns from './destroyFns';\nimport OriginModal from './Modal';\nimport PurePanel from './PurePanel';\nimport useModal from './useModal';\nfunction modalWarn(props) {\n return confirm(withWarn(props));\n}\nvar Modal = OriginModal;\nModal.useModal = useModal;\nModal.info = function infoFn(props) {\n return confirm(withInfo(props));\n};\nModal.success = function successFn(props) {\n return confirm(withSuccess(props));\n};\nModal.error = function errorFn(props) {\n return confirm(withError(props));\n};\nModal.warning = modalWarn;\nModal.warn = modalWarn;\nModal.confirm = function confirmFn(props) {\n return confirm(withConfirm(props));\n};\nModal.destroyAll = function destroyAllFn() {\n while (destroyFns.length) {\n var close = destroyFns.pop();\n if (close) {\n close();\n }\n }\n};\nModal.config = modalGlobalConfig;\nModal._InternalPanelDoNotUseOrYouWillBeFired = PurePanel;\nexport default Modal;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport { resetComponent } from '../../style';\n// ============================== Shared ==============================\nvar genSharedDividerStyle = function genSharedDividerStyle(token) {\n var _extends2;\n var componentCls = token.componentCls,\n sizePaddingEdgeHorizontal = token.sizePaddingEdgeHorizontal,\n colorSplit = token.colorSplit,\n lineWidth = token.lineWidth;\n return _defineProperty({}, componentCls, _extends(_extends({}, resetComponent(token)), (_extends2 = {\n borderBlockStart: lineWidth + \"px solid \" + colorSplit,\n // vertical\n '&-vertical': {\n position: 'relative',\n top: '-0.06em',\n display: 'inline-block',\n height: '0.9em',\n margin: \"0 \" + token.dividerVerticalGutterMargin + \"px\",\n verticalAlign: 'middle',\n borderTop: 0,\n borderInlineStart: lineWidth + \"px solid \" + colorSplit\n },\n '&-horizontal': {\n display: 'flex',\n clear: 'both',\n width: '100%',\n minWidth: '100%',\n margin: token.dividerHorizontalGutterMargin + \"px 0\"\n },\n '&-horizontal&-with-text': {\n display: 'flex',\n margin: token.dividerHorizontalWithTextGutterMargin + \"px 0\",\n color: token.colorTextHeading,\n fontWeight: 500,\n fontSize: token.fontSizeLG,\n whiteSpace: 'nowrap',\n textAlign: 'center',\n borderBlockStart: \"0 \" + colorSplit,\n '&::before, &::after': {\n position: 'relative',\n top: '50%',\n width: '50%',\n borderBlockStart: lineWidth + \"px solid transparent\",\n // Chrome not accept `inherit` in `border-top`\n borderBlockStartColor: 'inherit',\n borderBlockEnd: 0,\n transform: 'translateY(50%)',\n content: \"''\"\n }\n },\n '&-horizontal&-with-text-left': {\n '&::before': {\n top: '50%',\n width: '5%'\n },\n '&::after': {\n top: '50%',\n width: '95%'\n }\n },\n '&-horizontal&-with-text-right': {\n '&::before': {\n top: '50%',\n width: '95%'\n },\n '&::after': {\n top: '50%',\n width: '5%'\n }\n }\n }, _defineProperty(_extends2, componentCls + \"-inner-text\", {\n display: 'inline-block',\n padding: '0 1em'\n }), _defineProperty(_extends2, '&-dashed', {\n background: 'none',\n borderColor: colorSplit,\n borderStyle: 'dashed',\n borderWidth: lineWidth + \"px 0 0\"\n }), _defineProperty(_extends2, '&-horizontal&-with-text&-dashed', {\n '&::before, &::after': {\n borderStyle: 'dashed none none'\n }\n }), _defineProperty(_extends2, '&-vertical&-dashed', {\n borderInlineStart: lineWidth,\n borderInlineEnd: 0,\n borderBlockStart: 0,\n borderBlockEnd: 0\n }), _defineProperty(_extends2, '&-plain&-with-text', {\n color: token.colorText,\n fontWeight: 'normal',\n fontSize: token.fontSize\n }), _defineProperty(_extends2, '&-horizontal&-with-text-left&-no-default-orientation-margin-left', _defineProperty({\n '&::before': {\n width: 0\n },\n '&::after': {\n width: '100%'\n }\n }, componentCls + \"-inner-text\", {\n paddingInlineStart: sizePaddingEdgeHorizontal\n })), _defineProperty(_extends2, '&-horizontal&-with-text-right&-no-default-orientation-margin-right', _defineProperty({\n '&::before': {\n width: '100%'\n },\n '&::after': {\n width: 0\n }\n }, componentCls + \"-inner-text\", {\n paddingInlineEnd: sizePaddingEdgeHorizontal\n })), _extends2)));\n};\n// ============================== Export ==============================\nexport default genComponentStyleHook('Divider', function (token) {\n var dividerToken = mergeToken(token, {\n dividerVerticalGutterMargin: token.marginXS,\n dividerHorizontalWithTextGutterMargin: token.margin,\n dividerHorizontalGutterMargin: token.marginLG\n });\n return [genSharedDividerStyle(dividerToken)];\n}, {\n sizePaddingEdgeHorizontal: 0\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") 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])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport warning from '../_util/warning';\nimport useStyle from './style';\nvar Divider = function Divider(props) {\n var _classNames;\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction;\n var customizePrefixCls = props.prefixCls,\n _props$type = props.type,\n type = _props$type === void 0 ? 'horizontal' : _props$type,\n _props$orientation = props.orientation,\n orientation = _props$orientation === void 0 ? 'center' : _props$orientation,\n orientationMargin = props.orientationMargin,\n className = props.className,\n children = props.children,\n dashed = props.dashed,\n plain = props.plain,\n restProps = __rest(props, [\"prefixCls\", \"type\", \"orientation\", \"orientationMargin\", \"className\", \"children\", \"dashed\", \"plain\"]);\n var prefixCls = getPrefixCls('divider', customizePrefixCls);\n var _useStyle = useStyle(prefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n wrapSSR = _useStyle2[0],\n hashId = _useStyle2[1];\n var orientationPrefix = orientation.length > 0 ? \"-\" + orientation : orientation;\n var hasChildren = !!children;\n var hasCustomMarginLeft = orientation === 'left' && orientationMargin != null;\n var hasCustomMarginRight = orientation === 'right' && orientationMargin != null;\n var classString = classNames(prefixCls, hashId, prefixCls + \"-\" + type, (_classNames = {}, _defineProperty(_classNames, prefixCls + \"-with-text\", hasChildren), _defineProperty(_classNames, prefixCls + \"-with-text\" + orientationPrefix, hasChildren), _defineProperty(_classNames, prefixCls + \"-dashed\", !!dashed), _defineProperty(_classNames, prefixCls + \"-plain\", !!plain), _defineProperty(_classNames, prefixCls + \"-rtl\", direction === 'rtl'), _defineProperty(_classNames, prefixCls + \"-no-default-orientation-margin-left\", hasCustomMarginLeft), _defineProperty(_classNames, prefixCls + \"-no-default-orientation-margin-right\", hasCustomMarginRight), _classNames), className);\n var innerStyle = _extends(_extends({}, hasCustomMarginLeft && {\n marginLeft: orientationMargin\n }), hasCustomMarginRight && {\n marginRight: orientationMargin\n });\n // Warning children not work in vertical mode\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== \"production\" ? warning(!children || type !== 'vertical', 'Divider', '`children` not working in `vertical` mode.') : void 0;\n }\n return wrapSSR( /*#__PURE__*/React.createElement(\"div\", _extends({\n className: classString\n }, restProps, {\n role: \"separator\"\n }), children && type !== 'vertical' && /*#__PURE__*/React.createElement(\"span\", {\n className: prefixCls + \"-inner-text\",\n style: innerStyle\n }, children)));\n};\nexport default Divider;","var _style, _polygon, _g, _g2, _polygon2, _polygon3, _g3, _g4, _polygon4, _polygon5, _polygon6, _polygon7, _g5, _polygon8, _polygon9, _polygon10;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgMetamaskLogo(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Layer_1\",\n xmlnsEv: \"http://www.w3.org/2001/xml-events\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n x: \"0px\",\n y: \"0px\",\n viewBox: \"0 0 318.6 318.6\",\n style: {\n enableBackground: \"new 0 0 318.6 318.6\"\n },\n xmlSpace: \"preserve\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _style || (_style = /*#__PURE__*/React.createElement(\"style\", {\n type: \"text/css\"\n }, \"\\n\\t.st0{fill:#E2761B;stroke:#E2761B;stroke-linecap:round;stroke-linejoin:round;}\\n\\t.st1{fill:#E4761B;stroke:#E4761B;stroke-linecap:round;stroke-linejoin:round;}\\n\\t.st2{fill:#D7C1B3;stroke:#D7C1B3;stroke-linecap:round;stroke-linejoin:round;}\\n\\t.st3{fill:#233447;stroke:#233447;stroke-linecap:round;stroke-linejoin:round;}\\n\\t.st4{fill:#CD6116;stroke:#CD6116;stroke-linecap:round;stroke-linejoin:round;}\\n\\t.st5{fill:#E4751F;stroke:#E4751F;stroke-linecap:round;stroke-linejoin:round;}\\n\\t.st6{fill:#F6851B;stroke:#F6851B;stroke-linecap:round;stroke-linejoin:round;}\\n\\t.st7{fill:#C0AD9E;stroke:#C0AD9E;stroke-linecap:round;stroke-linejoin:round;}\\n\\t.st8{fill:#161616;stroke:#161616;stroke-linecap:round;stroke-linejoin:round;}\\n\\t.st9{fill:#763D16;stroke:#763D16;stroke-linecap:round;stroke-linejoin:round;}\\n\")), _polygon || (_polygon = /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"st0\",\n points: \"274.1,35.5 174.6,109.4 193,65.8 \"\n })), _g || (_g = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"st1\",\n points: \"44.4,35.5 143.1,110.1 125.6,65.8 \"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"st1\",\n points: \"238.3,206.8 211.8,247.4 268.5,263 284.8,207.7 \"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"st1\",\n points: \"33.9,207.7 50.1,263 106.8,247.4 80.3,206.8 \"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"st1\",\n points: \"103.6,138.2 87.8,162.1 144.1,164.6 142.1,104.1 \"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"st1\",\n points: \"214.9,138.2 175.9,103.4 174.6,164.6 230.8,162.1 \"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"st1\",\n points: \"106.8,247.4 140.6,230.9 111.4,208.1 \"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"st1\",\n points: \"177.9,230.9 211.8,247.4 207.1,208.1 \"\n }))), _g2 || (_g2 = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"st2\",\n points: \"211.8,247.4 177.9,230.9 180.6,253 180.3,262.3 \"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"st2\",\n points: \"106.8,247.4 138.3,262.3 138.1,253 140.6,230.9 \"\n }))), _polygon2 || (_polygon2 = /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"st3\",\n points: \"138.8,193.5 110.6,185.2 130.5,176.1 \"\n })), _polygon3 || (_polygon3 = /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"st3\",\n points: \"179.7,193.5 188,176.1 208,185.2 \"\n })), _g3 || (_g3 = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"st4\",\n points: \"106.8,247.4 111.6,206.8 80.3,207.7 \"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"st4\",\n points: \"207,206.8 211.8,247.4 238.3,207.7 \"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"st4\",\n points: \"230.8,162.1 174.6,164.6 179.8,193.5 188.1,176.1 208.1,185.2 \"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"st4\",\n points: \"110.6,185.2 130.6,176.1 138.8,193.5 144.1,164.6 87.8,162.1 \"\n }))), _g4 || (_g4 = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"st5\",\n points: \"87.8,162.1 111.4,208.1 110.6,185.2 \"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"st5\",\n points: \"208.1,185.2 207.1,208.1 230.8,162.1 \"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"st5\",\n points: \"144.1,164.6 138.8,193.5 145.4,227.6 146.9,182.7 \"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"st5\",\n points: \"174.6,164.6 171.9,182.6 173.1,227.6 179.8,193.5 \"\n }))), _polygon4 || (_polygon4 = /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"st6\",\n points: \"179.8,193.5 173.1,227.6 177.9,230.9 207.1,208.1 208.1,185.2 \"\n })), _polygon5 || (_polygon5 = /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"st6\",\n points: \"110.6,185.2 111.4,208.1 140.6,230.9 145.4,227.6 138.8,193.5 \"\n })), _polygon6 || (_polygon6 = /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"st7\",\n points: \"180.3,262.3 180.6,253 178.1,250.8 140.4,250.8 138.1,253 138.3,262.3 106.8,247.4 117.8,256.4 140.1,271.9 178.4,271.9 200.8,256.4 211.8,247.4 \"\n })), _polygon7 || (_polygon7 = /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"st8\",\n points: \"177.9,230.9 173.1,227.6 145.4,227.6 140.6,230.9 138.1,253 140.4,250.8 178.1,250.8 180.6,253 \"\n })), _g5 || (_g5 = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"st9\",\n points: \"278.3,114.2 286.8,73.4 274.1,35.5 177.9,106.9 214.9,138.2 267.2,153.5 278.8,140 273.8,136.4 281.8,129.1 275.6,124.3 283.6,118.2 \"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"st9\",\n points: \"31.8,73.4 40.3,114.2 34.9,118.2 42.9,124.3 36.8,129.1 44.8,136.4 39.8,140 51.3,153.5 103.6,138.2 140.6,106.9 44.4,35.5 \"\n }))), _polygon8 || (_polygon8 = /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"st6\",\n points: \"267.2,153.5 214.9,138.2 230.8,162.1 207.1,208.1 238.3,207.7 284.8,207.7 \"\n })), _polygon9 || (_polygon9 = /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"st6\",\n points: \"103.6,138.2 51.3,153.5 33.9,207.7 80.3,207.7 111.4,208.1 87.8,162.1 \"\n })), _polygon10 || (_polygon10 = /*#__PURE__*/React.createElement(\"polygon\", {\n className: \"st6\",\n points: \"174.6,164.6 177.9,106.9 193.1,65.8 125.6,65.8 140.6,106.9 144.1,164.6 145.3,182.8 145.4,227.6 173.1,227.6 173.3,182.8 \"\n })));\n}\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgMetamaskLogo);\nexport default __webpack_public_path__ + \"static/media/metamask_Logo.322b917795f932ec2603591387f37bb1.svg\";\nexport { ForwardRef as ReactComponent };","var _desc, _defs, _g;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgWalletconnectLogo(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"300px\",\n height: \"185px\",\n viewBox: \"0 0 300 185\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, \"WalletConnect\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _desc || (_desc = /*#__PURE__*/React.createElement(\"desc\", null, \"Created with Sketch.\")), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null)), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Page-1\",\n stroke: \"none\",\n strokeWidth: 1,\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"walletconnect-logo-alt\",\n fill: \"#3B99FC\",\n fillRule: \"nonzero\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M61.4385429,36.2562612 C110.349767,-11.6319051 189.65053,-11.6319051 238.561752,36.2562612 L244.448297,42.0196786 C246.893858,44.4140867 246.893858,48.2961898 244.448297,50.690599 L224.311602,70.406102 C223.088821,71.6033071 221.106302,71.6033071 219.883521,70.406102 L211.782937,62.4749541 C177.661245,29.0669724 122.339051,29.0669724 88.2173582,62.4749541 L79.542302,70.9685592 C78.3195204,72.1657633 76.337001,72.1657633 75.1142214,70.9685592 L54.9775265,51.2530561 C52.5319653,48.8586469 52.5319653,44.9765439 54.9775265,42.5821357 L61.4385429,36.2562612 Z M280.206339,77.0300061 L298.128036,94.5769031 C300.573585,96.9713 300.573599,100.85338 298.128067,103.247793 L217.317896,182.368927 C214.872352,184.763353 210.907314,184.76338 208.461736,182.368989 C208.461726,182.368979 208.461714,182.368967 208.461704,182.368957 L151.107561,126.214385 C150.496171,125.615783 149.504911,125.615783 148.893521,126.214385 C148.893517,126.214389 148.893514,126.214393 148.89351,126.214396 L91.5405888,182.368927 C89.095052,184.763359 85.1300133,184.763399 82.6844276,182.369014 C82.6844133,182.369 82.684398,182.368986 82.6843827,182.36897 L1.87196327,103.246785 C-0.573596939,100.852377 -0.573596939,96.9702735 1.87196327,94.5758653 L19.7936929,77.028998 C22.2392531,74.6345898 26.2042918,74.6345898 28.6498531,77.028998 L86.0048306,133.184355 C86.6162214,133.782957 87.6074796,133.782957 88.2188704,133.184355 C88.2188796,133.184346 88.2188878,133.184338 88.2188969,133.184331 L145.571,77.028998 C148.016505,74.6345347 151.981544,74.6344449 154.427161,77.028798 C154.427195,77.0288316 154.427229,77.0288653 154.427262,77.028899 L211.782164,133.184331 C212.393554,133.782932 213.384814,133.782932 213.996204,133.184331 L271.350179,77.0300061 C273.79574,74.6355969 277.760778,74.6355969 280.206339,77.0300061 Z\",\n id: \"WalletConnect\"\n })))));\n}\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgWalletconnectLogo);\nexport default __webpack_public_path__ + \"static/media/walletconnect_Logo.dfa25e470b69d81428be54242b6c9bd1.svg\";\nexport { ForwardRef as ReactComponent };","import { CoinbaseWallet } from \"@web3-react/coinbase-wallet\";\nimport { initializeConnector } from \"@web3-react/core\";\n\nimport { URLS } from \"../constants/networks\";\n\nexport const [coinbaseWallet, hooks] = initializeConnector(\n (actions) =>\n new CoinbaseWallet({\n actions,\n options: {\n url: URLS[1][0],\n appName: \"Web3-Boilerplate\"\n }\n })\n);\n","const styles = {\n connectButton: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n cursor: \"pointer\",\n paddingBlock: \"5px\",\n marginBottom: \"12px\",\n boxShadow: \"0 4px 4px rgba(0,0,0,.25),0 0 5px rgba(0,0,0,.25),inset 0 0 10px #fff\"\n },\n connectButtonText: {\n fontWeight: \"600\",\n paddingLeft: \"30px\"\n }\n} as const;\n\nfunction ConnectButton({ label, image, onClick }: { label: string; image: string; onClick: () => void }) {\n return (\n \n );\n}\n\nexport default ConnectButton;\n","import { Modal, Divider } from \"antd\";\n\nimport coinbase_Logo from \"../../assets/images/coinbase_Logo.png\";\nimport metamask_Logo from \"../../assets/svg/metamask_Logo.svg\";\nimport walletconnect_Logo from \"../../assets/svg/walletconnect_Logo.svg\";\nimport trustwallet_logo from \"../../assets/images/trustwallet_logo.png\";\nimport { coinbaseWallet } from \"../../connectors/coinbaseWallet\";\nimport { metaMask } from \"../../connectors/metaMask\";\nimport { walletConnect } from \"../../connectors/walletConnect\";\n\nimport ConnectButton from \"./ConnectButton\";\n\nconst styles = {\n modalTitle: {\n marginBottom: \"20px\",\n padding: \"10px\",\n display: \"flex\",\n justifyContent: \"center\",\n fontWeight: \"700\",\n fontSize: \"20px\"\n }\n} as const;\n\ninterface ConnectModalProps {\n isModalOpen: boolean;\n setIsModalOpen: React.Dispatch>;\n}\n\nconst ConnectModal: React.FC = ({ isModalOpen, setIsModalOpen }) => {\n const activateConnector = async (label: string) => {\n switch (label) {\n case \"MetaMask\":\n await metaMask.activate();\n window.localStorage.setItem(\"connectorId\", \"injected\");\n\n break;\n\n case \"WalletConnect\":\n await walletConnect.activate();\n window.localStorage.setItem(\"connectorId\", \"wallet_connect\");\n\n break;\n\n case \"Coinbase Wallet\":\n await coinbaseWallet.activate();\n window.localStorage.setItem(\"connectorId\", \"injected\");\n\n break;\n\n default:\n await metaMask.activate();\n window.localStorage.setItem(\"connectorId\", \"injected\");\n }\n };\n return (\n setIsModalOpen(false)}\n bodyStyle={{\n width: \"320px\",\n margin: \"auto\",\n padding: \"15px\",\n fontSize: \"17px\",\n fontWeight: \"500\"\n }}\n >\n
Connect Your Wallet
\n\n
\n activateConnector(\"MetaMask\")} />\n\n activateConnector(\"MetaMask\")}\n />\n activateConnector(\"WalletConnect\")}\n />\n\n\n activateConnector(\"Coinbase Wallet\")}\n />\n \n \n\n
\n Wallets are provided by External Providers and by selecting you agree to Terms of those Providers. Your access\n to the wallet might be reliant on the External Provider being operational.\n
\n
\n \n );\n};\n\nexport default ConnectModal;\n","// This icon file is generated automatically.\nvar SelectOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h360c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H184V184h656v320c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V144c0-17.7-14.3-32-32-32zM653.3 599.4l52.2-52.2a8.01 8.01 0 00-4.7-13.6l-179.4-21c-5.1-.6-9.5 3.7-8.9 8.9l21 179.4c.8 6.6 8.9 9.4 13.6 4.7l52.4-52.4 256.2 256.2c3.1 3.1 8.2 3.1 11.3 0l42.4-42.4c3.1-3.1 3.1-8.2 0-11.3L653.3 599.4z\" } }] }, \"name\": \"select\", \"theme\": \"outlined\" };\nexport default SelectOutlined;\n","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport SelectOutlinedSvg from \"@ant-design/icons-svg/es/asn/SelectOutlined\";\nimport AntdIcon from '../components/AntdIcon';\nvar SelectOutlined = function SelectOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _objectSpread(_objectSpread({}, props), {}, {\n ref: ref,\n icon: SelectOutlinedSvg\n }));\n};\nSelectOutlined.displayName = 'SelectOutlined';\nexport default /*#__PURE__*/React.forwardRef(SelectOutlined);","// This icon file is generated automatically.\nvar EllipsisOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M176 511a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0zm280 0a56 56 0 10112 0 56 56 0 10-112 0z\" } }] }, \"name\": \"ellipsis\", \"theme\": \"outlined\" };\nexport default EllipsisOutlined;\n","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport EllipsisOutlinedSvg from \"@ant-design/icons-svg/es/asn/EllipsisOutlined\";\nimport AntdIcon from '../components/AntdIcon';\nvar EllipsisOutlined = function EllipsisOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _objectSpread(_objectSpread({}, props), {}, {\n ref: ref,\n icon: EllipsisOutlinedSvg\n }));\n};\nEllipsisOutlined.displayName = 'EllipsisOutlined';\nexport default /*#__PURE__*/React.forwardRef(EllipsisOutlined);","// This icon file is generated automatically.\nvar PlusOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"defs\", \"attrs\": {}, \"children\": [{ \"tag\": \"style\", \"attrs\": {} }] }, { \"tag\": \"path\", \"attrs\": { \"d\": \"M482 152h60q8 0 8 8v704q0 8-8 8h-60q-8 0-8-8V160q0-8 8-8z\" } }, { \"tag\": \"path\", \"attrs\": { \"d\": \"M176 474h672q8 0 8 8v60q0 8-8 8H176q-8 0-8-8v-60q0-8 8-8z\" } }] }, \"name\": \"plus\", \"theme\": \"outlined\" };\nexport default PlusOutlined;\n","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport PlusOutlinedSvg from \"@ant-design/icons-svg/es/asn/PlusOutlined\";\nimport AntdIcon from '../components/AntdIcon';\nvar PlusOutlined = function PlusOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _objectSpread(_objectSpread({}, props), {}, {\n ref: ref,\n icon: PlusOutlinedSvg\n }));\n};\nPlusOutlined.displayName = 'PlusOutlined';\nexport default /*#__PURE__*/React.forwardRef(PlusOutlined);","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport useEvent from './useEvent';\nimport useLayoutEffect, { useLayoutUpdateEffect } from './useLayoutEffect';\nimport useState from './useState';\nvar Source;\n(function (Source) {\n Source[Source[\"INNER\"] = 0] = \"INNER\";\n Source[Source[\"PROP\"] = 1] = \"PROP\";\n})(Source || (Source = {}));\n/** We only think `undefined` is empty */\nfunction hasValue(value) {\n return value !== undefined;\n}\n/**\n * Similar to `useState` but will use props value if provided.\n * Note that internal use rc-util `useState` hook.\n */\nexport default function useMergedState(defaultStateValue, option) {\n var _ref = option || {},\n defaultValue = _ref.defaultValue,\n value = _ref.value,\n onChange = _ref.onChange,\n postState = _ref.postState;\n // ======================= Init =======================\n var _useState = useState(function () {\n var finalValue = undefined;\n var source;\n if (hasValue(value)) {\n finalValue = value;\n source = Source.PROP;\n } else if (hasValue(defaultValue)) {\n finalValue = typeof defaultValue === 'function' ? defaultValue() : defaultValue;\n source = Source.PROP;\n } else {\n finalValue = typeof defaultStateValue === 'function' ? defaultStateValue() : defaultStateValue;\n source = Source.INNER;\n }\n return [finalValue, source, finalValue];\n }),\n _useState2 = _slicedToArray(_useState, 2),\n mergedValue = _useState2[0],\n setMergedValue = _useState2[1];\n var chosenValue = hasValue(value) ? value : mergedValue[0];\n var postMergedValue = postState ? postState(chosenValue) : chosenValue;\n // ======================= Sync =======================\n useLayoutUpdateEffect(function () {\n setMergedValue(function (_ref2) {\n var _ref3 = _slicedToArray(_ref2, 1),\n prevValue = _ref3[0];\n return [value, Source.PROP, prevValue];\n });\n }, [value]);\n // ====================== Update ======================\n var changeEventPrevRef = React.useRef();\n var triggerChange = useEvent(function (updater, ignoreDestroy) {\n setMergedValue(function (prev) {\n var _prev = _slicedToArray(prev, 3),\n prevValue = _prev[0],\n prevSource = _prev[1],\n prevPrevValue = _prev[2];\n var nextValue = typeof updater === 'function' ? updater(prevValue) : updater;\n // Do nothing if value not change\n if (nextValue === prevValue) {\n return prev;\n }\n // Use prev prev value if is in a batch update to avoid missing data\n var overridePrevValue = prevSource === Source.INNER && changeEventPrevRef.current !== prevPrevValue ? prevPrevValue : prevValue;\n return [nextValue, Source.INNER, overridePrevValue];\n }, ignoreDestroy);\n });\n // ====================== Change ======================\n var onChangeFn = useEvent(onChange);\n useLayoutEffect(function () {\n var _mergedValue = _slicedToArray(mergedValue, 3),\n current = _mergedValue[0],\n source = _mergedValue[1],\n prev = _mergedValue[2];\n if (current !== prev && source === Source.INNER) {\n onChangeFn(current, prev);\n changeEventPrevRef.current = prev;\n }\n }, [mergedValue]);\n return [postMergedValue, triggerChange];\n}","export default (function () {\n if (typeof navigator === 'undefined' || typeof window === 'undefined') {\n return false;\n }\n var agent = navigator.userAgent || navigator.vendor || window.opera;\n return /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(agent) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(agent === null || agent === void 0 ? void 0 : agent.substr(0, 4));\n});","import * as React from 'react';\nexport default function useEvent(callback) {\n var fnRef = React.useRef();\n fnRef.current = callback;\n var memoFn = React.useCallback(function () {\n var _fnRef$current;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return (_fnRef$current = fnRef.current) === null || _fnRef$current === void 0 ? void 0 : _fnRef$current.call.apply(_fnRef$current, [fnRef].concat(args));\n }, []);\n return memoFn;\n}","import { createContext } from 'react';\nexport default /*#__PURE__*/createContext(null);","import * as React from 'react';\nimport classNames from 'classnames';\nvar TabPane = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var prefixCls = _ref.prefixCls,\n className = _ref.className,\n style = _ref.style,\n id = _ref.id,\n active = _ref.active,\n tabKey = _ref.tabKey,\n children = _ref.children;\n return /*#__PURE__*/React.createElement(\"div\", {\n id: id && \"\".concat(id, \"-panel-\").concat(tabKey),\n role: \"tabpanel\",\n tabIndex: active ? 0 : -1,\n \"aria-labelledby\": id && \"\".concat(id, \"-tab-\").concat(tabKey),\n \"aria-hidden\": !active,\n style: style,\n className: classNames(prefixCls, active && \"\".concat(prefixCls, \"-active\"), className),\n ref: ref\n }, children);\n});\nif (process.env.NODE_ENV !== 'production') {\n TabPane.displayName = 'TabPane';\n}\nexport default TabPane;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar _excluded = [\"key\", \"forceRender\", \"style\", \"className\"];\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nimport TabContext from '../TabContext';\nimport TabPane from './TabPane';\nexport default function TabPanelList(_ref) {\n var id = _ref.id,\n activeKey = _ref.activeKey,\n animated = _ref.animated,\n tabPosition = _ref.tabPosition,\n destroyInactiveTabPane = _ref.destroyInactiveTabPane;\n var _React$useContext = React.useContext(TabContext),\n prefixCls = _React$useContext.prefixCls,\n tabs = _React$useContext.tabs;\n var tabPaneAnimated = animated.tabPane;\n var tabPanePrefixCls = \"\".concat(prefixCls, \"-tabpane\");\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(\"\".concat(prefixCls, \"-content-holder\"))\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(\"\".concat(prefixCls, \"-content\"), \"\".concat(prefixCls, \"-content-\").concat(tabPosition), _defineProperty({}, \"\".concat(prefixCls, \"-content-animated\"), tabPaneAnimated))\n }, tabs.map(function (_ref2) {\n var key = _ref2.key,\n forceRender = _ref2.forceRender,\n paneStyle = _ref2.style,\n paneClassName = _ref2.className,\n restTabProps = _objectWithoutProperties(_ref2, _excluded);\n var active = key === activeKey;\n return /*#__PURE__*/React.createElement(CSSMotion, _extends({\n key: key,\n visible: active,\n forceRender: forceRender,\n removeOnLeave: !!destroyInactiveTabPane,\n leavedClassName: \"\".concat(tabPanePrefixCls, \"-hidden\")\n }, animated.tabPaneMotion), function (_ref3, ref) {\n var motionStyle = _ref3.style,\n motionClassName = _ref3.className;\n return /*#__PURE__*/React.createElement(TabPane, _extends({}, restTabProps, {\n prefixCls: tabPanePrefixCls,\n id: id,\n tabKey: key,\n animated: tabPaneAnimated,\n active: active,\n style: _objectSpread(_objectSpread({}, paneStyle), motionStyle),\n className: classNames(paneClassName, motionClassName),\n ref: ref\n }));\n });\n })));\n}","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n if (typeof Map !== 'undefined') {\r\n return Map;\r\n }\r\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\r\n function getIndex(arr, key) {\r\n var result = -1;\r\n arr.some(function (entry, index) {\r\n if (entry[0] === key) {\r\n result = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n return result;\r\n }\r\n return /** @class */ (function () {\r\n function class_1() {\r\n this.__entries__ = [];\r\n }\r\n Object.defineProperty(class_1.prototype, \"size\", {\r\n /**\r\n * @returns {boolean}\r\n */\r\n get: function () {\r\n return this.__entries__.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\r\n class_1.prototype.get = function (key) {\r\n var index = getIndex(this.__entries__, key);\r\n var entry = this.__entries__[index];\r\n return entry && entry[1];\r\n };\r\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\r\n class_1.prototype.set = function (key, value) {\r\n var index = getIndex(this.__entries__, key);\r\n if (~index) {\r\n this.__entries__[index][1] = value;\r\n }\r\n else {\r\n this.__entries__.push([key, value]);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.delete = function (key) {\r\n var entries = this.__entries__;\r\n var index = getIndex(entries, key);\r\n if (~index) {\r\n entries.splice(index, 1);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.has = function (key) {\r\n return !!~getIndex(this.__entries__, key);\r\n };\r\n /**\r\n * @returns {void}\r\n */\r\n class_1.prototype.clear = function () {\r\n this.__entries__.splice(0);\r\n };\r\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\r\n class_1.prototype.forEach = function (callback, ctx) {\r\n if (ctx === void 0) { ctx = null; }\r\n for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n var entry = _a[_i];\r\n callback.call(ctx, entry[1], entry[0]);\r\n }\r\n };\r\n return class_1;\r\n }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n if (typeof global !== 'undefined' && global.Math === Math) {\r\n return global;\r\n }\r\n if (typeof self !== 'undefined' && self.Math === Math) {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined' && window.Math === Math) {\r\n return window;\r\n }\r\n // eslint-disable-next-line no-new-func\r\n return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n if (typeof requestAnimationFrame === 'function') {\r\n // It's required to use a bounded function because IE sometimes throws\r\n // an \"Invalid calling object\" error if rAF is invoked without the global\r\n // object on the left hand side.\r\n return requestAnimationFrame.bind(global$1);\r\n }\r\n return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\r\n function resolvePending() {\r\n if (leadingCall) {\r\n leadingCall = false;\r\n callback();\r\n }\r\n if (trailingCall) {\r\n proxy();\r\n }\r\n }\r\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\r\n function timeoutCallback() {\r\n requestAnimationFrame$1(resolvePending);\r\n }\r\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\r\n function proxy() {\r\n var timeStamp = Date.now();\r\n if (leadingCall) {\r\n // Reject immediately following calls.\r\n if (timeStamp - lastCallTime < trailingTimeout) {\r\n return;\r\n }\r\n // Schedule new call to be in invoked when the pending one is resolved.\r\n // This is important for \"transitions\" which never actually start\r\n // immediately so there is a chance that we might miss one if change\r\n // happens amids the pending invocation.\r\n trailingCall = true;\r\n }\r\n else {\r\n leadingCall = true;\r\n trailingCall = false;\r\n setTimeout(timeoutCallback, delay);\r\n }\r\n lastCallTime = timeStamp;\r\n }\r\n return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserverController.\r\n *\r\n * @private\r\n */\r\n function ResizeObserverController() {\r\n /**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\r\n this.connected_ = false;\r\n /**\r\n * Tells that controller has subscribed for Mutation Events.\r\n *\r\n * @private {boolean}\r\n */\r\n this.mutationEventsAdded_ = false;\r\n /**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\r\n this.mutationsObserver_ = null;\r\n /**\r\n * A list of connected observers.\r\n *\r\n * @private {Array}\r\n */\r\n this.observers_ = [];\r\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n }\r\n /**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.addObserver = function (observer) {\r\n if (!~this.observers_.indexOf(observer)) {\r\n this.observers_.push(observer);\r\n }\r\n // Add listeners if they haven't been added yet.\r\n if (!this.connected_) {\r\n this.connect_();\r\n }\r\n };\r\n /**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.removeObserver = function (observer) {\r\n var observers = this.observers_;\r\n var index = observers.indexOf(observer);\r\n // Remove observer if it's present in registry.\r\n if (~index) {\r\n observers.splice(index, 1);\r\n }\r\n // Remove listeners if controller has no connected observers.\r\n if (!observers.length && this.connected_) {\r\n this.disconnect_();\r\n }\r\n };\r\n /**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.refresh = function () {\r\n var changesDetected = this.updateObservers_();\r\n // Continue running updates if changes have been detected as there might\r\n // be future ones caused by CSS transitions.\r\n if (changesDetected) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\r\n ResizeObserverController.prototype.updateObservers_ = function () {\r\n // Collect observers that have active observations.\r\n var activeObservers = this.observers_.filter(function (observer) {\r\n return observer.gatherActive(), observer.hasActive();\r\n });\r\n // Deliver notifications in a separate cycle in order to avoid any\r\n // collisions between observers, e.g. when multiple instances of\r\n // ResizeObserver are tracking the same element and the callback of one\r\n // of them changes content dimensions of the observed target. Sometimes\r\n // this may result in notifications being blocked for the rest of observers.\r\n activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n return activeObservers.length > 0;\r\n };\r\n /**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.connect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already added.\r\n if (!isBrowser || this.connected_) {\r\n return;\r\n }\r\n // Subscription to the \"Transitionend\" event is used as a workaround for\r\n // delayed transitions. This way it's possible to capture at least the\r\n // final state of an element.\r\n document.addEventListener('transitionend', this.onTransitionEnd_);\r\n window.addEventListener('resize', this.refresh);\r\n if (mutationObserverSupported) {\r\n this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n this.mutationsObserver_.observe(document, {\r\n attributes: true,\r\n childList: true,\r\n characterData: true,\r\n subtree: true\r\n });\r\n }\r\n else {\r\n document.addEventListener('DOMSubtreeModified', this.refresh);\r\n this.mutationEventsAdded_ = true;\r\n }\r\n this.connected_ = true;\r\n };\r\n /**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.disconnect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already removed.\r\n if (!isBrowser || !this.connected_) {\r\n return;\r\n }\r\n document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n window.removeEventListener('resize', this.refresh);\r\n if (this.mutationsObserver_) {\r\n this.mutationsObserver_.disconnect();\r\n }\r\n if (this.mutationEventsAdded_) {\r\n document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n }\r\n this.mutationsObserver_ = null;\r\n this.mutationEventsAdded_ = false;\r\n this.connected_ = false;\r\n };\r\n /**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n // Detect whether transition may affect dimensions of an element.\r\n var isReflowProperty = transitionKeys.some(function (key) {\r\n return !!~propertyName.indexOf(key);\r\n });\r\n if (isReflowProperty) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\r\n ResizeObserverController.getInstance = function () {\r\n if (!this.instance_) {\r\n this.instance_ = new ResizeObserverController();\r\n }\r\n return this.instance_;\r\n };\r\n /**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\r\n ResizeObserverController.instance_ = null;\r\n return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n var key = _a[_i];\r\n Object.defineProperty(target, key, {\r\n value: props[key],\r\n enumerable: false,\r\n writable: false,\r\n configurable: true\r\n });\r\n }\r\n return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n // Assume that the element is an instance of Node, which means that it\r\n // has the \"ownerDocument\" property from which we can retrieve a\r\n // corresponding global object.\r\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n // Return the local global object if it's not possible extract one from\r\n // provided element.\r\n return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n var positions = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n positions[_i - 1] = arguments[_i];\r\n }\r\n return positions.reduce(function (size, position) {\r\n var value = styles['border-' + position + '-width'];\r\n return size + toFloat(value);\r\n }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n var positions = ['top', 'right', 'bottom', 'left'];\r\n var paddings = {};\r\n for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n var position = positions_1[_i];\r\n var value = styles['padding-' + position];\r\n paddings[position] = toFloat(value);\r\n }\r\n return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n var bbox = target.getBBox();\r\n return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n // Client width & height properties can't be\r\n // used exclusively as they provide rounded values.\r\n var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n // By this condition we can catch all non-replaced inline, hidden and\r\n // detached elements. Though elements with width & height properties less\r\n // than 0.5 will be discarded as well.\r\n //\r\n // Without it we would need to implement separate methods for each of\r\n // those cases and it's not possible to perform a precise and performance\r\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n // gives wrong results for elements with width & height less than 0.5.\r\n if (!clientWidth && !clientHeight) {\r\n return emptyRect;\r\n }\r\n var styles = getWindowOf(target).getComputedStyle(target);\r\n var paddings = getPaddings(styles);\r\n var horizPad = paddings.left + paddings.right;\r\n var vertPad = paddings.top + paddings.bottom;\r\n // Computed styles of width & height are being used because they are the\r\n // only dimensions available to JS that contain non-rounded values. It could\r\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n var width = toFloat(styles.width), height = toFloat(styles.height);\r\n // Width & height include paddings and borders when the 'border-box' box\r\n // model is applied (except for IE).\r\n if (styles.boxSizing === 'border-box') {\r\n // Following conditions are required to handle Internet Explorer which\r\n // doesn't include paddings and borders to computed CSS dimensions.\r\n //\r\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n // properties then it's either IE, and thus we don't need to subtract\r\n // anything, or an element merely doesn't have paddings/borders styles.\r\n if (Math.round(width + horizPad) !== clientWidth) {\r\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n }\r\n if (Math.round(height + vertPad) !== clientHeight) {\r\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n }\r\n }\r\n // Following steps can't be applied to the document's root element as its\r\n // client[Width/Height] properties represent viewport area of the window.\r\n // Besides, it's as well not necessary as the itself neither has\r\n // rendered scroll bars nor it can be clipped.\r\n if (!isDocumentElement(target)) {\r\n // In some browsers (only in Firefox, actually) CSS width & height\r\n // include scroll bars size which can be removed at this step as scroll\r\n // bars are the only difference between rounded dimensions + paddings\r\n // and \"client\" properties, though that is not always true in Chrome.\r\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n // Chrome has a rather weird rounding of \"client\" properties.\r\n // E.g. for an element with content width of 314.2px it sometimes gives\r\n // the client width of 315px and for the width of 314.7px it may give\r\n // 314px. And it doesn't happen all the time. So just ignore this delta\r\n // as a non-relevant.\r\n if (Math.abs(vertScrollbar) !== 1) {\r\n width -= vertScrollbar;\r\n }\r\n if (Math.abs(horizScrollbar) !== 1) {\r\n height -= horizScrollbar;\r\n }\r\n }\r\n return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n // interface.\r\n if (typeof SVGGraphicsElement !== 'undefined') {\r\n return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n }\r\n // If it's so, then check that element is at least an instance of the\r\n // SVGElement and that it has the \"getBBox\" method.\r\n // eslint-disable-next-line no-extra-parens\r\n return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element ().\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n if (!isBrowser) {\r\n return emptyRect;\r\n }\r\n if (isSVGGraphicsElement(target)) {\r\n return getSVGContentRect(target);\r\n }\r\n return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n var rect = Object.create(Constr.prototype);\r\n // Rectangle's properties are not writable and non-enumerable.\r\n defineConfigurable(rect, {\r\n x: x, y: y, width: width, height: height,\r\n top: y,\r\n right: x + width,\r\n bottom: height + y,\r\n left: x\r\n });\r\n return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObservation.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n */\r\n function ResizeObservation(target) {\r\n /**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastWidth = 0;\r\n /**\r\n * Broadcasted height of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastHeight = 0;\r\n /**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\r\n this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n this.target = target;\r\n }\r\n /**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObservation.prototype.isActive = function () {\r\n var rect = getContentRect(this.target);\r\n this.contentRect_ = rect;\r\n return (rect.width !== this.broadcastWidth ||\r\n rect.height !== this.broadcastHeight);\r\n };\r\n /**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\r\n ResizeObservation.prototype.broadcastRect = function () {\r\n var rect = this.contentRect_;\r\n this.broadcastWidth = rect.width;\r\n this.broadcastHeight = rect.height;\r\n return rect;\r\n };\r\n return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObserverEntry.\r\n *\r\n * @param {Element} target - Element that is being observed.\r\n * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n */\r\n function ResizeObserverEntry(target, rectInit) {\r\n var contentRect = createReadOnlyRect(rectInit);\r\n // According to the specification following properties are not writable\r\n // and are also not enumerable in the native implementation.\r\n //\r\n // Property accessors are not being used as they'd require to define a\r\n // private WeakMap storage which may cause memory leaks in browsers that\r\n // don't support this type of collections.\r\n defineConfigurable(this, { target: target, contentRect: contentRect });\r\n }\r\n return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n * when one of the observed elements changes it's content dimensions.\r\n * @param {ResizeObserverController} controller - Controller instance which\r\n * is responsible for the updates of observer.\r\n * @param {ResizeObserver} callbackCtx - Reference to the public\r\n * ResizeObserver instance which will be passed to callback function.\r\n */\r\n function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n /**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array}\r\n */\r\n this.activeObservations_ = [];\r\n /**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map}\r\n */\r\n this.observations_ = new MapShim();\r\n if (typeof callback !== 'function') {\r\n throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n }\r\n this.callback_ = callback;\r\n this.controller_ = controller;\r\n this.callbackCtx_ = callbackCtx;\r\n }\r\n /**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.observe = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is already being observed.\r\n if (observations.has(target)) {\r\n return;\r\n }\r\n observations.set(target, new ResizeObservation(target));\r\n this.controller_.addObserver(this);\r\n // Force the update of observations.\r\n this.controller_.refresh();\r\n };\r\n /**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.unobserve = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is not being observed.\r\n if (!observations.has(target)) {\r\n return;\r\n }\r\n observations.delete(target);\r\n if (!observations.size) {\r\n this.controller_.removeObserver(this);\r\n }\r\n };\r\n /**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.disconnect = function () {\r\n this.clearActive();\r\n this.observations_.clear();\r\n this.controller_.removeObserver(this);\r\n };\r\n /**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.gatherActive = function () {\r\n var _this = this;\r\n this.clearActive();\r\n this.observations_.forEach(function (observation) {\r\n if (observation.isActive()) {\r\n _this.activeObservations_.push(observation);\r\n }\r\n });\r\n };\r\n /**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.broadcastActive = function () {\r\n // Do nothing if observer doesn't have active observations.\r\n if (!this.hasActive()) {\r\n return;\r\n }\r\n var ctx = this.callbackCtx_;\r\n // Create ResizeObserverEntry instance for every active observation.\r\n var entries = this.activeObservations_.map(function (observation) {\r\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n });\r\n this.callback_.call(ctx, entries, ctx);\r\n this.clearActive();\r\n };\r\n /**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.clearActive = function () {\r\n this.activeObservations_.splice(0);\r\n };\r\n /**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObserverSPI.prototype.hasActive = function () {\r\n return this.activeObservations_.length > 0;\r\n };\r\n return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n * dimensions of the observed elements change.\r\n */\r\n function ResizeObserver(callback) {\r\n if (!(this instanceof ResizeObserver)) {\r\n throw new TypeError('Cannot call a class as a function.');\r\n }\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n var controller = ResizeObserverController.getInstance();\r\n var observer = new ResizeObserverSPI(callback, controller, this);\r\n observers.set(this, observer);\r\n }\r\n return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n 'observe',\r\n 'unobserve',\r\n 'disconnect'\r\n].forEach(function (method) {\r\n ResizeObserver.prototype[method] = function () {\r\n var _a;\r\n return (_a = observers.get(this))[method].apply(_a, arguments);\r\n };\r\n});\n\nvar index = (function () {\r\n // Export existing implementation if available.\r\n if (typeof global$1.ResizeObserver !== 'undefined') {\r\n return global$1.ResizeObserver;\r\n }\r\n return ResizeObserver;\r\n})();\n\nexport default index;\n","import ResizeObserver from 'resize-observer-polyfill'; // =============================== Const ===============================\n\nvar elementListeners = new Map();\n\nfunction onResize(entities) {\n entities.forEach(function (entity) {\n var _elementListeners$get;\n\n var target = entity.target;\n (_elementListeners$get = elementListeners.get(target)) === null || _elementListeners$get === void 0 ? void 0 : _elementListeners$get.forEach(function (listener) {\n return listener(target);\n });\n });\n} // Note: ResizeObserver polyfill not support option to measure border-box resize\n\n\nvar resizeObserver = new ResizeObserver(onResize); // Dev env only\n\nexport var _el = process.env.NODE_ENV !== 'production' ? elementListeners : null; // eslint-disable-line\n\nexport var _rs = process.env.NODE_ENV !== 'production' ? onResize : null; // eslint-disable-line\n// ============================== Observe ==============================\n\nexport function observe(element, callback) {\n if (!elementListeners.has(element)) {\n elementListeners.set(element, new Set());\n resizeObserver.observe(element);\n }\n\n elementListeners.get(element).add(callback);\n}\nexport function unobserve(element, callback) {\n if (elementListeners.has(element)) {\n elementListeners.get(element).delete(callback);\n\n if (!elementListeners.get(element).size) {\n resizeObserver.unobserve(element);\n elementListeners.delete(element);\n }\n }\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport * as React from 'react';\n/**\n * Fallback to findDOMNode if origin ref do not provide any dom element\n */\n\nvar DomWrapper = /*#__PURE__*/function (_React$Component) {\n _inherits(DomWrapper, _React$Component);\n\n var _super = _createSuper(DomWrapper);\n\n function DomWrapper() {\n _classCallCheck(this, DomWrapper);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(DomWrapper, [{\n key: \"render\",\n value: function render() {\n return this.props.children;\n }\n }]);\n\n return DomWrapper;\n}(React.Component);\n\nexport { DomWrapper as default };","import * as React from 'react';\nexport var CollectionContext = /*#__PURE__*/React.createContext(null);\n/**\n * Collect all the resize event from children ResizeObserver\n */\n\nexport function Collection(_ref) {\n var children = _ref.children,\n onBatchResize = _ref.onBatchResize;\n var resizeIdRef = React.useRef(0);\n var resizeInfosRef = React.useRef([]);\n var onCollectionResize = React.useContext(CollectionContext);\n var onResize = React.useCallback(function (size, element, data) {\n resizeIdRef.current += 1;\n var currentId = resizeIdRef.current;\n resizeInfosRef.current.push({\n size: size,\n element: element,\n data: data\n });\n Promise.resolve().then(function () {\n if (currentId === resizeIdRef.current) {\n onBatchResize === null || onBatchResize === void 0 ? void 0 : onBatchResize(resizeInfosRef.current);\n resizeInfosRef.current = [];\n }\n }); // Continue bubbling if parent exist\n\n onCollectionResize === null || onCollectionResize === void 0 ? void 0 : onCollectionResize(size, element, data);\n }, [onBatchResize, onCollectionResize]);\n return /*#__PURE__*/React.createElement(CollectionContext.Provider, {\n value: onResize\n }, children);\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport { composeRef, supportRef } from \"rc-util/es/ref\";\nimport * as React from 'react';\nimport findDOMNode from \"rc-util/es/Dom/findDOMNode\";\nimport { observe, unobserve } from '../utils/observerUtil';\nimport DomWrapper from './DomWrapper';\nimport { CollectionContext } from '../Collection';\nexport default function SingleObserver(props) {\n var children = props.children,\n disabled = props.disabled;\n var elementRef = React.useRef(null);\n var wrapperRef = React.useRef(null);\n var onCollectionResize = React.useContext(CollectionContext); // =========================== Children ===========================\n\n var isRenderProps = typeof children === 'function';\n var mergedChildren = isRenderProps ? children(elementRef) : children; // ============================= Size =============================\n\n var sizeRef = React.useRef({\n width: -1,\n height: -1,\n offsetWidth: -1,\n offsetHeight: -1\n }); // ============================= Ref ==============================\n\n var canRef = !isRenderProps && /*#__PURE__*/React.isValidElement(mergedChildren) && supportRef(mergedChildren);\n var originRef = canRef ? mergedChildren.ref : null;\n var mergedRef = React.useMemo(function () {\n return composeRef(originRef, elementRef);\n }, [originRef, elementRef]); // =========================== Observe ============================\n\n var propsRef = React.useRef(props);\n propsRef.current = props; // Handler\n\n var onInternalResize = React.useCallback(function (target) {\n var _propsRef$current = propsRef.current,\n onResize = _propsRef$current.onResize,\n data = _propsRef$current.data;\n\n var _target$getBoundingCl = target.getBoundingClientRect(),\n width = _target$getBoundingCl.width,\n height = _target$getBoundingCl.height;\n\n var offsetWidth = target.offsetWidth,\n offsetHeight = target.offsetHeight;\n /**\n * Resize observer trigger when content size changed.\n * In most case we just care about element size,\n * let's use `boundary` instead of `contentRect` here to avoid shaking.\n */\n\n var fixedWidth = Math.floor(width);\n var fixedHeight = Math.floor(height);\n\n if (sizeRef.current.width !== fixedWidth || sizeRef.current.height !== fixedHeight || sizeRef.current.offsetWidth !== offsetWidth || sizeRef.current.offsetHeight !== offsetHeight) {\n var size = {\n width: fixedWidth,\n height: fixedHeight,\n offsetWidth: offsetWidth,\n offsetHeight: offsetHeight\n };\n sizeRef.current = size; // IE is strange, right?\n\n var mergedOffsetWidth = offsetWidth === Math.round(width) ? width : offsetWidth;\n var mergedOffsetHeight = offsetHeight === Math.round(height) ? height : offsetHeight;\n\n var sizeInfo = _objectSpread(_objectSpread({}, size), {}, {\n offsetWidth: mergedOffsetWidth,\n offsetHeight: mergedOffsetHeight\n }); // Let collection know what happened\n\n\n onCollectionResize === null || onCollectionResize === void 0 ? void 0 : onCollectionResize(sizeInfo, target, data);\n\n if (onResize) {\n // defer the callback but not defer to next frame\n Promise.resolve().then(function () {\n onResize(sizeInfo, target);\n });\n }\n }\n }, []); // Dynamic observe\n\n React.useEffect(function () {\n var currentElement = findDOMNode(elementRef.current) || findDOMNode(wrapperRef.current);\n\n if (currentElement && !disabled) {\n observe(currentElement, onInternalResize);\n }\n\n return function () {\n return unobserve(currentElement, onInternalResize);\n };\n }, [elementRef.current, disabled]); // ============================ Render ============================\n\n return /*#__PURE__*/React.createElement(DomWrapper, {\n ref: wrapperRef\n }, canRef ? /*#__PURE__*/React.cloneElement(mergedChildren, {\n ref: mergedRef\n }) : mergedChildren);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport toArray from \"rc-util/es/Children/toArray\";\nimport { warning } from \"rc-util/es/warning\";\nimport SingleObserver from './SingleObserver';\nimport { Collection } from './Collection';\nvar INTERNAL_PREFIX_KEY = 'rc-observer-key';\n\nfunction ResizeObserver(props) {\n var children = props.children;\n var childNodes = typeof children === 'function' ? [children] : toArray(children);\n\n if (process.env.NODE_ENV !== 'production') {\n if (childNodes.length > 1) {\n warning(false, 'Find more than one child node with `children` in ResizeObserver. Please use ResizeObserver.Collection instead.');\n } else if (childNodes.length === 0) {\n warning(false, '`children` of ResizeObserver is empty. Nothing is in observe.');\n }\n }\n\n return childNodes.map(function (child, index) {\n var key = (child === null || child === void 0 ? void 0 : child.key) || \"\".concat(INTERNAL_PREFIX_KEY, \"-\").concat(index);\n return /*#__PURE__*/React.createElement(SingleObserver, _extends({}, props, {\n key: key\n }), child);\n });\n}\n\nResizeObserver.Collection = Collection;\nexport default ResizeObserver;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { useRef, useState, useEffect } from 'react';\nimport raf from \"rc-util/es/raf\";\nexport default function useRaf(callback) {\n var rafRef = useRef();\n var removedRef = useRef(false);\n function trigger() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (!removedRef.current) {\n raf.cancel(rafRef.current);\n rafRef.current = raf(function () {\n callback.apply(void 0, args);\n });\n }\n }\n useEffect(function () {\n //be compatible with react 18 StrictMode in dev\n removedRef.current = false;\n return function () {\n removedRef.current = true;\n raf.cancel(rafRef.current);\n };\n }, []);\n return trigger;\n}\nexport function useRafState(defaultState) {\n var batchRef = useRef([]);\n var _useState = useState({}),\n _useState2 = _slicedToArray(_useState, 2),\n forceUpdate = _useState2[1];\n var state = useRef(typeof defaultState === 'function' ? defaultState() : defaultState);\n var flushUpdate = useRaf(function () {\n var current = state.current;\n batchRef.current.forEach(function (callback) {\n current = callback(current);\n });\n batchRef.current = [];\n state.current = current;\n forceUpdate({});\n });\n function updater(callback) {\n batchRef.current.push(callback);\n flushUpdate();\n }\n return [state.current, updater];\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport KeyCode from \"rc-util/es/KeyCode\";\nfunction TabNode(_ref, ref) {\n var _classNames;\n var prefixCls = _ref.prefixCls,\n id = _ref.id,\n active = _ref.active,\n _ref$tab = _ref.tab,\n key = _ref$tab.key,\n label = _ref$tab.label,\n disabled = _ref$tab.disabled,\n closeIcon = _ref$tab.closeIcon,\n closable = _ref.closable,\n renderWrapper = _ref.renderWrapper,\n removeAriaLabel = _ref.removeAriaLabel,\n editable = _ref.editable,\n onClick = _ref.onClick,\n onRemove = _ref.onRemove,\n onFocus = _ref.onFocus,\n style = _ref.style;\n var tabPrefix = \"\".concat(prefixCls, \"-tab\");\n React.useEffect(function () {\n return onRemove;\n }, []);\n var removable = editable && closable !== false && !disabled;\n function onInternalClick(e) {\n if (disabled) {\n return;\n }\n onClick(e);\n }\n function onRemoveTab(event) {\n event.preventDefault();\n event.stopPropagation();\n editable.onEdit('remove', {\n key: key,\n event: event\n });\n }\n var node = /*#__PURE__*/React.createElement(\"div\", {\n key: key,\n ref: ref,\n className: classNames(tabPrefix, (_classNames = {}, _defineProperty(_classNames, \"\".concat(tabPrefix, \"-with-remove\"), removable), _defineProperty(_classNames, \"\".concat(tabPrefix, \"-active\"), active), _defineProperty(_classNames, \"\".concat(tabPrefix, \"-disabled\"), disabled), _classNames)),\n style: style,\n onClick: onInternalClick\n }, /*#__PURE__*/React.createElement(\"div\", {\n role: \"tab\",\n \"aria-selected\": active,\n id: id && \"\".concat(id, \"-tab-\").concat(key),\n className: \"\".concat(tabPrefix, \"-btn\"),\n \"aria-controls\": id && \"\".concat(id, \"-panel-\").concat(key),\n \"aria-disabled\": disabled,\n tabIndex: disabled ? null : 0,\n onClick: function onClick(e) {\n e.stopPropagation();\n onInternalClick(e);\n },\n onKeyDown: function onKeyDown(e) {\n if ([KeyCode.SPACE, KeyCode.ENTER].includes(e.which)) {\n e.preventDefault();\n onInternalClick(e);\n }\n },\n onFocus: onFocus\n }, label), removable && /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n \"aria-label\": removeAriaLabel || 'remove',\n tabIndex: 0,\n className: \"\".concat(tabPrefix, \"-remove\"),\n onClick: function onClick(e) {\n e.stopPropagation();\n onRemoveTab(e);\n }\n }, closeIcon || editable.removeIcon || '×'));\n return renderWrapper ? renderWrapper(node) : node;\n}\nexport default /*#__PURE__*/React.forwardRef(TabNode);","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport { useMemo } from 'react';\nvar DEFAULT_SIZE = {\n width: 0,\n height: 0,\n left: 0,\n top: 0\n};\nexport default function useOffsets(tabs, tabSizes, holderScrollWidth) {\n return useMemo(function () {\n var _tabs$;\n var map = new Map();\n var lastOffset = tabSizes.get((_tabs$ = tabs[0]) === null || _tabs$ === void 0 ? void 0 : _tabs$.key) || DEFAULT_SIZE;\n var rightOffset = lastOffset.left + lastOffset.width;\n for (var i = 0; i < tabs.length; i += 1) {\n var key = tabs[i].key;\n var data = tabSizes.get(key);\n // Reuse last one when not exist yet\n if (!data) {\n var _tabs;\n data = tabSizes.get((_tabs = tabs[i - 1]) === null || _tabs === void 0 ? void 0 : _tabs.key) || DEFAULT_SIZE;\n }\n var entity = map.get(key) || _objectSpread({}, data);\n // Right\n entity.right = rightOffset - entity.left - entity.width;\n // Update entity\n map.set(key, entity);\n }\n return map;\n }, [tabs.map(function (tab) {\n return tab.key;\n }).join('_'), tabSizes, holderScrollWidth]);\n}","import { useMemo } from 'react';\nvar DEFAULT_SIZE = {\n width: 0,\n height: 0,\n left: 0,\n top: 0,\n right: 0\n};\nexport default function useVisibleRange(tabOffsets, visibleTabContentValue, transform, tabContentSizeValue, addNodeSizeValue, operationNodeSizeValue, _ref) {\n var tabs = _ref.tabs,\n tabPosition = _ref.tabPosition,\n rtl = _ref.rtl;\n var charUnit;\n var position;\n var transformSize;\n if (['top', 'bottom'].includes(tabPosition)) {\n charUnit = 'width';\n position = rtl ? 'right' : 'left';\n transformSize = Math.abs(transform);\n } else {\n charUnit = 'height';\n position = 'top';\n transformSize = -transform;\n }\n return useMemo(function () {\n if (!tabs.length) {\n return [0, 0];\n }\n var len = tabs.length;\n var endIndex = len;\n for (var i = 0; i < len; i += 1) {\n var offset = tabOffsets.get(tabs[i].key) || DEFAULT_SIZE;\n if (offset[position] + offset[charUnit] > transformSize + visibleTabContentValue) {\n endIndex = i - 1;\n break;\n }\n }\n var startIndex = 0;\n for (var _i = len - 1; _i >= 0; _i -= 1) {\n var _offset = tabOffsets.get(tabs[_i].key) || DEFAULT_SIZE;\n if (_offset[position] < transformSize) {\n startIndex = _i + 1;\n break;\n }\n }\n return [startIndex, endIndex];\n }, [tabOffsets, visibleTabContentValue, tabContentSizeValue, addNodeSizeValue, operationNodeSizeValue, transformSize, tabPosition, tabs.map(function (tab) {\n return tab.key;\n }).join('_'), rtl]);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"invalidate\", \"item\", \"renderItem\", \"responsive\", \"responsiveDisabled\", \"registerSize\", \"itemKey\", \"className\", \"style\", \"children\", \"display\", \"order\", \"component\"];\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport ResizeObserver from 'rc-resize-observer'; // Use shared variable to save bundle size\n\nvar UNDEFINED = undefined;\n\nfunction InternalItem(props, ref) {\n var prefixCls = props.prefixCls,\n invalidate = props.invalidate,\n item = props.item,\n renderItem = props.renderItem,\n responsive = props.responsive,\n responsiveDisabled = props.responsiveDisabled,\n registerSize = props.registerSize,\n itemKey = props.itemKey,\n className = props.className,\n style = props.style,\n children = props.children,\n display = props.display,\n order = props.order,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'div' : _props$component,\n restProps = _objectWithoutProperties(props, _excluded);\n\n var mergedHidden = responsive && !display; // ================================ Effect ================================\n\n function internalRegisterSize(width) {\n registerSize(itemKey, width);\n }\n\n React.useEffect(function () {\n return function () {\n internalRegisterSize(null);\n };\n }, []); // ================================ Render ================================\n\n var childNode = renderItem && item !== UNDEFINED ? renderItem(item) : children;\n var overflowStyle;\n\n if (!invalidate) {\n overflowStyle = {\n opacity: mergedHidden ? 0 : 1,\n height: mergedHidden ? 0 : UNDEFINED,\n overflowY: mergedHidden ? 'hidden' : UNDEFINED,\n order: responsive ? order : UNDEFINED,\n pointerEvents: mergedHidden ? 'none' : UNDEFINED,\n position: mergedHidden ? 'absolute' : UNDEFINED\n };\n }\n\n var overflowProps = {};\n\n if (mergedHidden) {\n overflowProps['aria-hidden'] = true;\n }\n\n var itemNode = /*#__PURE__*/React.createElement(Component, _extends({\n className: classNames(!invalidate && prefixCls, className),\n style: _objectSpread(_objectSpread({}, overflowStyle), style)\n }, overflowProps, restProps, {\n ref: ref\n }), childNode);\n\n if (responsive) {\n itemNode = /*#__PURE__*/React.createElement(ResizeObserver, {\n onResize: function onResize(_ref) {\n var offsetWidth = _ref.offsetWidth;\n internalRegisterSize(offsetWidth);\n },\n disabled: responsiveDisabled\n }, itemNode);\n }\n\n return itemNode;\n}\n\nvar Item = /*#__PURE__*/React.forwardRef(InternalItem);\nItem.displayName = 'Item';\nexport default Item;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"component\"],\n _excluded2 = [\"className\"],\n _excluded3 = [\"className\"];\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport Item from './Item';\nimport { OverflowContext } from './Overflow';\n\nvar InternalRawItem = function InternalRawItem(props, ref) {\n var context = React.useContext(OverflowContext); // Render directly when context not provided\n\n if (!context) {\n var _props$component = props.component,\n Component = _props$component === void 0 ? 'div' : _props$component,\n _restProps = _objectWithoutProperties(props, _excluded);\n\n return /*#__PURE__*/React.createElement(Component, _extends({}, _restProps, {\n ref: ref\n }));\n }\n\n var contextClassName = context.className,\n restContext = _objectWithoutProperties(context, _excluded2);\n\n var className = props.className,\n restProps = _objectWithoutProperties(props, _excluded3); // Do not pass context to sub item to avoid multiple measure\n\n\n return /*#__PURE__*/React.createElement(OverflowContext.Provider, {\n value: null\n }, /*#__PURE__*/React.createElement(Item, _extends({\n ref: ref,\n className: classNames(contextClassName, className)\n }, restContext, restProps)));\n};\n\nvar RawItem = /*#__PURE__*/React.forwardRef(InternalRawItem);\nRawItem.displayName = 'RawItem';\nexport default RawItem;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"data\", \"renderItem\", \"renderRawItem\", \"itemKey\", \"itemWidth\", \"ssr\", \"style\", \"className\", \"maxCount\", \"renderRest\", \"renderRawRest\", \"suffix\", \"component\", \"itemComponent\", \"onVisibleChange\"];\nimport * as React from 'react';\nimport { useState, useMemo, useCallback } from 'react';\nimport classNames from 'classnames';\nimport ResizeObserver from 'rc-resize-observer';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport Item from './Item';\nimport { useBatchFrameState } from './hooks/useBatchFrameState';\nimport RawItem from './RawItem';\nexport var OverflowContext = /*#__PURE__*/React.createContext(null);\nvar RESPONSIVE = 'responsive';\nvar INVALIDATE = 'invalidate';\n\nfunction defaultRenderRest(omittedItems) {\n return \"+ \".concat(omittedItems.length, \" ...\");\n}\n\nfunction Overflow(props, ref) {\n var _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-overflow' : _props$prefixCls,\n _props$data = props.data,\n data = _props$data === void 0 ? [] : _props$data,\n renderItem = props.renderItem,\n renderRawItem = props.renderRawItem,\n itemKey = props.itemKey,\n _props$itemWidth = props.itemWidth,\n itemWidth = _props$itemWidth === void 0 ? 10 : _props$itemWidth,\n ssr = props.ssr,\n style = props.style,\n className = props.className,\n maxCount = props.maxCount,\n renderRest = props.renderRest,\n renderRawRest = props.renderRawRest,\n suffix = props.suffix,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'div' : _props$component,\n itemComponent = props.itemComponent,\n onVisibleChange = props.onVisibleChange,\n restProps = _objectWithoutProperties(props, _excluded);\n\n var createUseState = useBatchFrameState();\n var fullySSR = ssr === 'full';\n\n var _createUseState = createUseState(null),\n _createUseState2 = _slicedToArray(_createUseState, 2),\n containerWidth = _createUseState2[0],\n setContainerWidth = _createUseState2[1];\n\n var mergedContainerWidth = containerWidth || 0;\n\n var _createUseState3 = createUseState(new Map()),\n _createUseState4 = _slicedToArray(_createUseState3, 2),\n itemWidths = _createUseState4[0],\n setItemWidths = _createUseState4[1];\n\n var _createUseState5 = createUseState(0),\n _createUseState6 = _slicedToArray(_createUseState5, 2),\n prevRestWidth = _createUseState6[0],\n setPrevRestWidth = _createUseState6[1];\n\n var _createUseState7 = createUseState(0),\n _createUseState8 = _slicedToArray(_createUseState7, 2),\n restWidth = _createUseState8[0],\n setRestWidth = _createUseState8[1];\n\n var _createUseState9 = createUseState(0),\n _createUseState10 = _slicedToArray(_createUseState9, 2),\n suffixWidth = _createUseState10[0],\n setSuffixWidth = _createUseState10[1];\n\n var _useState = useState(null),\n _useState2 = _slicedToArray(_useState, 2),\n suffixFixedStart = _useState2[0],\n setSuffixFixedStart = _useState2[1];\n\n var _useState3 = useState(null),\n _useState4 = _slicedToArray(_useState3, 2),\n displayCount = _useState4[0],\n setDisplayCount = _useState4[1];\n\n var mergedDisplayCount = React.useMemo(function () {\n if (displayCount === null && fullySSR) {\n return Number.MAX_SAFE_INTEGER;\n }\n\n return displayCount || 0;\n }, [displayCount, containerWidth]);\n\n var _useState5 = useState(false),\n _useState6 = _slicedToArray(_useState5, 2),\n restReady = _useState6[0],\n setRestReady = _useState6[1];\n\n var itemPrefixCls = \"\".concat(prefixCls, \"-item\"); // Always use the max width to avoid blink\n\n var mergedRestWidth = Math.max(prevRestWidth, restWidth); // ================================= Data =================================\n\n var isResponsive = maxCount === RESPONSIVE;\n var shouldResponsive = data.length && isResponsive;\n var invalidate = maxCount === INVALIDATE;\n /**\n * When is `responsive`, we will always render rest node to get the real width of it for calculation\n */\n\n var showRest = shouldResponsive || typeof maxCount === 'number' && data.length > maxCount;\n var mergedData = useMemo(function () {\n var items = data;\n\n if (shouldResponsive) {\n if (containerWidth === null && fullySSR) {\n items = data;\n } else {\n items = data.slice(0, Math.min(data.length, mergedContainerWidth / itemWidth));\n }\n } else if (typeof maxCount === 'number') {\n items = data.slice(0, maxCount);\n }\n\n return items;\n }, [data, itemWidth, containerWidth, maxCount, shouldResponsive]);\n var omittedItems = useMemo(function () {\n if (shouldResponsive) {\n return data.slice(mergedDisplayCount + 1);\n }\n\n return data.slice(mergedData.length);\n }, [data, mergedData, shouldResponsive, mergedDisplayCount]); // ================================= Item =================================\n\n var getKey = useCallback(function (item, index) {\n var _ref;\n\n if (typeof itemKey === 'function') {\n return itemKey(item);\n }\n\n return (_ref = itemKey && (item === null || item === void 0 ? void 0 : item[itemKey])) !== null && _ref !== void 0 ? _ref : index;\n }, [itemKey]);\n var mergedRenderItem = useCallback(renderItem || function (item) {\n return item;\n }, [renderItem]);\n\n function updateDisplayCount(count, suffixFixedStartVal, notReady) {\n // React 18 will sync render even when the value is same in some case.\n // We take `mergedData` as deps which may cause dead loop if it's dynamic generate.\n // ref: https://github.com/ant-design/ant-design/issues/36559\n if (displayCount === count && (suffixFixedStartVal === undefined || suffixFixedStartVal === suffixFixedStart)) {\n return;\n }\n\n setDisplayCount(count);\n\n if (!notReady) {\n setRestReady(count < data.length - 1);\n onVisibleChange === null || onVisibleChange === void 0 ? void 0 : onVisibleChange(count);\n }\n\n if (suffixFixedStartVal !== undefined) {\n setSuffixFixedStart(suffixFixedStartVal);\n }\n } // ================================= Size =================================\n\n\n function onOverflowResize(_, element) {\n setContainerWidth(element.clientWidth);\n }\n\n function registerSize(key, width) {\n setItemWidths(function (origin) {\n var clone = new Map(origin);\n\n if (width === null) {\n clone.delete(key);\n } else {\n clone.set(key, width);\n }\n\n return clone;\n });\n }\n\n function registerOverflowSize(_, width) {\n setRestWidth(width);\n setPrevRestWidth(restWidth);\n }\n\n function registerSuffixSize(_, width) {\n setSuffixWidth(width);\n } // ================================ Effect ================================\n\n\n function getItemWidth(index) {\n return itemWidths.get(getKey(mergedData[index], index));\n }\n\n useLayoutEffect(function () {\n if (mergedContainerWidth && mergedRestWidth && mergedData) {\n var totalWidth = suffixWidth;\n var len = mergedData.length;\n var lastIndex = len - 1; // When data count change to 0, reset this since not loop will reach\n\n if (!len) {\n updateDisplayCount(0, null);\n return;\n }\n\n for (var i = 0; i < len; i += 1) {\n var currentItemWidth = getItemWidth(i); // Fully will always render\n\n if (fullySSR) {\n currentItemWidth = currentItemWidth || 0;\n } // Break since data not ready\n\n\n if (currentItemWidth === undefined) {\n updateDisplayCount(i - 1, undefined, true);\n break;\n } // Find best match\n\n\n totalWidth += currentItemWidth;\n\n if ( // Only one means `totalWidth` is the final width\n lastIndex === 0 && totalWidth <= mergedContainerWidth || // Last two width will be the final width\n i === lastIndex - 1 && totalWidth + getItemWidth(lastIndex) <= mergedContainerWidth) {\n // Additional check if match the end\n updateDisplayCount(lastIndex, null);\n break;\n } else if (totalWidth + mergedRestWidth > mergedContainerWidth) {\n // Can not hold all the content to show rest\n updateDisplayCount(i - 1, totalWidth - currentItemWidth - suffixWidth + restWidth);\n break;\n }\n }\n\n if (suffix && getItemWidth(0) + suffixWidth > mergedContainerWidth) {\n setSuffixFixedStart(null);\n }\n }\n }, [mergedContainerWidth, itemWidths, restWidth, suffixWidth, getKey, mergedData]); // ================================ Render ================================\n\n var displayRest = restReady && !!omittedItems.length;\n var suffixStyle = {};\n\n if (suffixFixedStart !== null && shouldResponsive) {\n suffixStyle = {\n position: 'absolute',\n left: suffixFixedStart,\n top: 0\n };\n }\n\n var itemSharedProps = {\n prefixCls: itemPrefixCls,\n responsive: shouldResponsive,\n component: itemComponent,\n invalidate: invalidate\n }; // >>>>> Choice render fun by `renderRawItem`\n\n var internalRenderItemNode = renderRawItem ? function (item, index) {\n var key = getKey(item, index);\n return /*#__PURE__*/React.createElement(OverflowContext.Provider, {\n key: key,\n value: _objectSpread(_objectSpread({}, itemSharedProps), {}, {\n order: index,\n item: item,\n itemKey: key,\n registerSize: registerSize,\n display: index <= mergedDisplayCount\n })\n }, renderRawItem(item, index));\n } : function (item, index) {\n var key = getKey(item, index);\n return /*#__PURE__*/React.createElement(Item, _extends({}, itemSharedProps, {\n order: index,\n key: key,\n item: item,\n renderItem: mergedRenderItem,\n itemKey: key,\n registerSize: registerSize,\n display: index <= mergedDisplayCount\n }));\n }; // >>>>> Rest node\n\n var restNode;\n var restContextProps = {\n order: displayRest ? mergedDisplayCount : Number.MAX_SAFE_INTEGER,\n className: \"\".concat(itemPrefixCls, \"-rest\"),\n registerSize: registerOverflowSize,\n display: displayRest\n };\n\n if (!renderRawRest) {\n var mergedRenderRest = renderRest || defaultRenderRest;\n restNode = /*#__PURE__*/React.createElement(Item, _extends({}, itemSharedProps, restContextProps), typeof mergedRenderRest === 'function' ? mergedRenderRest(omittedItems) : mergedRenderRest);\n } else if (renderRawRest) {\n restNode = /*#__PURE__*/React.createElement(OverflowContext.Provider, {\n value: _objectSpread(_objectSpread({}, itemSharedProps), restContextProps)\n }, renderRawRest(omittedItems));\n }\n\n var overflowNode = /*#__PURE__*/React.createElement(Component, _extends({\n className: classNames(!invalidate && prefixCls, className),\n style: style,\n ref: ref\n }, restProps), mergedData.map(internalRenderItemNode), showRest ? restNode : null, suffix && /*#__PURE__*/React.createElement(Item, _extends({}, itemSharedProps, {\n responsive: isResponsive,\n responsiveDisabled: !shouldResponsive,\n order: mergedDisplayCount,\n className: \"\".concat(itemPrefixCls, \"-suffix\"),\n registerSize: registerSuffixSize,\n display: true,\n style: suffixStyle\n }), suffix));\n\n if (isResponsive) {\n overflowNode = /*#__PURE__*/React.createElement(ResizeObserver, {\n onResize: onOverflowResize,\n disabled: !shouldResponsive\n }, overflowNode);\n }\n\n return overflowNode;\n}\n\nvar ForwardOverflow = /*#__PURE__*/React.forwardRef(Overflow);\nForwardOverflow.displayName = 'Overflow';\nForwardOverflow.Item = RawItem;\nForwardOverflow.RESPONSIVE = RESPONSIVE;\nForwardOverflow.INVALIDATE = INVALIDATE; // Convert to generic type\n\nexport default ForwardOverflow;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { useRef } from 'react';\nimport raf from \"rc-util/es/raf\";\nimport useState from \"rc-util/es/hooks/useState\";\n/**\n * State generate. Return a `setState` but it will flush all state with one render to save perf.\n * This is not a realization of `unstable_batchedUpdates`.\n */\n\nexport function useBatchFrameState() {\n var _useState = useState({}),\n _useState2 = _slicedToArray(_useState, 2),\n forceUpdate = _useState2[1];\n\n var statesRef = useRef([]);\n var walkingIndex = 0;\n var beforeFrameId = 0;\n\n function createState(defaultValue) {\n var myIndex = walkingIndex;\n walkingIndex += 1; // Fill value if not exist yet\n\n if (statesRef.current.length < myIndex + 1) {\n statesRef.current[myIndex] = defaultValue;\n } // Return filled as `setState`\n\n\n var value = statesRef.current[myIndex];\n\n function setValue(val) {\n statesRef.current[myIndex] = typeof val === 'function' ? val(statesRef.current[myIndex]) : val;\n raf.cancel(beforeFrameId); // Flush with batch\n\n beforeFrameId = raf(function () {\n forceUpdate({}, true);\n });\n }\n\n return [value, setValue];\n }\n\n return createState;\n}","import Overflow from './Overflow';\nexport default Overflow;","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nvar _excluded = [\"children\", \"locked\"];\nimport * as React from 'react';\nimport useMemo from \"rc-util/es/hooks/useMemo\";\nimport shallowEqual from 'shallowequal';\nexport var MenuContext = /*#__PURE__*/React.createContext(null);\n\nfunction mergeProps(origin, target) {\n var clone = _objectSpread({}, origin);\n\n Object.keys(target).forEach(function (key) {\n var value = target[key];\n\n if (value !== undefined) {\n clone[key] = value;\n }\n });\n return clone;\n}\n\nexport default function InheritableContextProvider(_ref) {\n var children = _ref.children,\n locked = _ref.locked,\n restProps = _objectWithoutProperties(_ref, _excluded);\n\n var context = React.useContext(MenuContext);\n var inheritableContext = useMemo(function () {\n return mergeProps(context, restProps);\n }, [context, restProps], function (prev, next) {\n return !locked && (prev[0] !== next[0] || !shallowEqual(prev[1], next[1]));\n });\n return /*#__PURE__*/React.createElement(MenuContext.Provider, {\n value: inheritableContext\n }, children);\n}","import * as React from 'react';\nimport { MenuContext } from \"../context/MenuContext\";\nexport default function useActive(eventKey, disabled, onMouseEnter, onMouseLeave) {\n var _React$useContext = React.useContext(MenuContext),\n activeKey = _React$useContext.activeKey,\n onActive = _React$useContext.onActive,\n onInactive = _React$useContext.onInactive;\n\n var ret = {\n active: activeKey === eventKey\n }; // Skip when disabled\n\n if (!disabled) {\n ret.onMouseEnter = function (domEvent) {\n onMouseEnter === null || onMouseEnter === void 0 ? void 0 : onMouseEnter({\n key: eventKey,\n domEvent: domEvent\n });\n onActive(eventKey);\n };\n\n ret.onMouseLeave = function (domEvent) {\n onMouseLeave === null || onMouseLeave === void 0 ? void 0 : onMouseLeave({\n key: eventKey,\n domEvent: domEvent\n });\n onInactive(eventKey);\n };\n }\n\n return ret;\n}","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"item\"];\nimport warning from \"rc-util/es/warning\";\n/**\n * `onClick` event return `info.item` which point to react node directly.\n * We should warning this since it will not work on FC.\n */\n\nexport function warnItemProp(_ref) {\n var item = _ref.item,\n restInfo = _objectWithoutProperties(_ref, _excluded);\n\n Object.defineProperty(restInfo, 'item', {\n get: function get() {\n warning(false, '`info.item` is deprecated since we will move to function component that not provides React Node instance in future.');\n return item;\n }\n });\n return restInfo;\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nexport default function Icon(_ref) {\n var icon = _ref.icon,\n props = _ref.props,\n children = _ref.children;\n var iconNode;\n\n if (typeof icon === 'function') {\n iconNode = /*#__PURE__*/React.createElement(icon, _objectSpread({}, props));\n } else {\n // Compatible for origin definition\n iconNode = icon;\n }\n\n return iconNode || children || null;\n}","import * as React from 'react';\nimport { MenuContext } from \"../context/MenuContext\";\nexport default function useDirectionStyle(level) {\n var _React$useContext = React.useContext(MenuContext),\n mode = _React$useContext.mode,\n rtl = _React$useContext.rtl,\n inlineIndent = _React$useContext.inlineIndent;\n\n if (mode !== 'inline') {\n return null;\n }\n\n var len = level;\n return rtl ? {\n paddingRight: len * inlineIndent\n } : {\n paddingLeft: len * inlineIndent\n };\n}","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport * as React from 'react';\nvar EmptyList = []; // ========================= Path Register =========================\n\nexport var PathRegisterContext = /*#__PURE__*/React.createContext(null);\nexport function useMeasure() {\n return React.useContext(PathRegisterContext);\n} // ========================= Path Tracker ==========================\n\nexport var PathTrackerContext = /*#__PURE__*/React.createContext(EmptyList);\nexport function useFullPath(eventKey) {\n var parentKeyPath = React.useContext(PathTrackerContext);\n return React.useMemo(function () {\n return eventKey !== undefined ? [].concat(_toConsumableArray(parentKeyPath), [eventKey]) : parentKeyPath;\n }, [parentKeyPath, eventKey]);\n} // =========================== Path User ===========================\n\nexport var PathUserContext = /*#__PURE__*/React.createContext(null);","import * as React from 'react';\nexport var IdContext = /*#__PURE__*/React.createContext(null);\nexport function getMenuId(uuid, eventKey) {\n if (uuid === undefined) {\n return null;\n }\n\n return \"\".concat(uuid, \"-\").concat(eventKey);\n}\n/**\n * Get `data-menu-id`\n */\n\nexport function useMenuId(eventKey) {\n var id = React.useContext(IdContext);\n return getMenuId(id, eventKey);\n}","import * as React from 'react';\nvar PrivateContext = /*#__PURE__*/React.createContext({});\nexport default PrivateContext;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nvar _excluded = [\"title\", \"attribute\", \"elementRef\"],\n _excluded2 = [\"style\", \"className\", \"eventKey\", \"warnKey\", \"disabled\", \"itemIcon\", \"children\", \"role\", \"onMouseEnter\", \"onMouseLeave\", \"onClick\", \"onKeyDown\", \"onFocus\"],\n _excluded3 = [\"active\"];\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport Overflow from 'rc-overflow';\nimport warning from \"rc-util/es/warning\";\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport omit from \"rc-util/es/omit\";\nimport { MenuContext } from \"./context/MenuContext\";\nimport useActive from \"./hooks/useActive\";\nimport { warnItemProp } from \"./utils/warnUtil\";\nimport Icon from \"./Icon\";\nimport useDirectionStyle from \"./hooks/useDirectionStyle\";\nimport { useFullPath, useMeasure } from \"./context/PathContext\";\nimport { useMenuId } from \"./context/IdContext\";\nimport PrivateContext from \"./context/PrivateContext\";\n\n// Since Menu event provide the `info.item` which point to the MenuItem node instance.\n// We have to use class component here.\n// This should be removed from doc & api in future.\nvar LegacyMenuItem = /*#__PURE__*/function (_React$Component) {\n _inherits(LegacyMenuItem, _React$Component);\n\n var _super = _createSuper(LegacyMenuItem);\n\n function LegacyMenuItem() {\n _classCallCheck(this, LegacyMenuItem);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(LegacyMenuItem, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n title = _this$props.title,\n attribute = _this$props.attribute,\n elementRef = _this$props.elementRef,\n restProps = _objectWithoutProperties(_this$props, _excluded);\n\n var passedProps = omit(restProps, ['eventKey']);\n warning(!attribute, '`attribute` of Menu.Item is deprecated. Please pass attribute directly.');\n return /*#__PURE__*/React.createElement(Overflow.Item, _extends({}, attribute, {\n title: typeof title === 'string' ? title : undefined\n }, passedProps, {\n ref: elementRef\n }));\n }\n }]);\n\n return LegacyMenuItem;\n}(React.Component);\n/**\n * Real Menu Item component\n */\n\n\nvar InternalMenuItem = function InternalMenuItem(props) {\n var _classNames;\n\n var style = props.style,\n className = props.className,\n eventKey = props.eventKey,\n warnKey = props.warnKey,\n disabled = props.disabled,\n itemIcon = props.itemIcon,\n children = props.children,\n role = props.role,\n onMouseEnter = props.onMouseEnter,\n onMouseLeave = props.onMouseLeave,\n onClick = props.onClick,\n onKeyDown = props.onKeyDown,\n onFocus = props.onFocus,\n restProps = _objectWithoutProperties(props, _excluded2);\n\n var domDataId = useMenuId(eventKey);\n\n var _React$useContext = React.useContext(MenuContext),\n prefixCls = _React$useContext.prefixCls,\n onItemClick = _React$useContext.onItemClick,\n contextDisabled = _React$useContext.disabled,\n overflowDisabled = _React$useContext.overflowDisabled,\n contextItemIcon = _React$useContext.itemIcon,\n selectedKeys = _React$useContext.selectedKeys,\n onActive = _React$useContext.onActive;\n\n var _React$useContext2 = React.useContext(PrivateContext),\n _internalRenderMenuItem = _React$useContext2._internalRenderMenuItem;\n\n var itemCls = \"\".concat(prefixCls, \"-item\");\n var legacyMenuItemRef = React.useRef();\n var elementRef = React.useRef();\n var mergedDisabled = contextDisabled || disabled;\n var connectedKeys = useFullPath(eventKey); // ================================ Warn ================================\n\n if (process.env.NODE_ENV !== 'production' && warnKey) {\n warning(false, 'MenuItem should not leave undefined `key`.');\n } // ============================= Info =============================\n\n\n var getEventInfo = function getEventInfo(e) {\n return {\n key: eventKey,\n // Note: For legacy code is reversed which not like other antd component\n keyPath: _toConsumableArray(connectedKeys).reverse(),\n item: legacyMenuItemRef.current,\n domEvent: e\n };\n }; // ============================= Icon =============================\n\n\n var mergedItemIcon = itemIcon || contextItemIcon; // ============================ Active ============================\n\n var _useActive = useActive(eventKey, mergedDisabled, onMouseEnter, onMouseLeave),\n active = _useActive.active,\n activeProps = _objectWithoutProperties(_useActive, _excluded3); // ============================ Select ============================\n\n\n var selected = selectedKeys.includes(eventKey); // ======================== DirectionStyle ========================\n\n var directionStyle = useDirectionStyle(connectedKeys.length); // ============================ Events ============================\n\n var onInternalClick = function onInternalClick(e) {\n if (mergedDisabled) {\n return;\n }\n\n var info = getEventInfo(e);\n onClick === null || onClick === void 0 ? void 0 : onClick(warnItemProp(info));\n onItemClick(info);\n };\n\n var onInternalKeyDown = function onInternalKeyDown(e) {\n onKeyDown === null || onKeyDown === void 0 ? void 0 : onKeyDown(e);\n\n if (e.which === KeyCode.ENTER) {\n var info = getEventInfo(e); // Legacy. Key will also trigger click event\n\n onClick === null || onClick === void 0 ? void 0 : onClick(warnItemProp(info));\n onItemClick(info);\n }\n };\n /**\n * Used for accessibility. Helper will focus element without key board.\n * We should manually trigger an active\n */\n\n\n var onInternalFocus = function onInternalFocus(e) {\n onActive(eventKey);\n onFocus === null || onFocus === void 0 ? void 0 : onFocus(e);\n }; // ============================ Render ============================\n\n\n var optionRoleProps = {};\n\n if (props.role === 'option') {\n optionRoleProps['aria-selected'] = selected;\n }\n\n var renderNode = /*#__PURE__*/React.createElement(LegacyMenuItem, _extends({\n ref: legacyMenuItemRef,\n elementRef: elementRef,\n role: role === null ? 'none' : role || 'menuitem',\n tabIndex: disabled ? null : -1,\n \"data-menu-id\": overflowDisabled && domDataId ? null : domDataId\n }, restProps, activeProps, optionRoleProps, {\n component: \"li\",\n \"aria-disabled\": disabled,\n style: _objectSpread(_objectSpread({}, directionStyle), style),\n className: classNames(itemCls, (_classNames = {}, _defineProperty(_classNames, \"\".concat(itemCls, \"-active\"), active), _defineProperty(_classNames, \"\".concat(itemCls, \"-selected\"), selected), _defineProperty(_classNames, \"\".concat(itemCls, \"-disabled\"), mergedDisabled), _classNames), className),\n onClick: onInternalClick,\n onKeyDown: onInternalKeyDown,\n onFocus: onInternalFocus\n }), children, /*#__PURE__*/React.createElement(Icon, {\n props: _objectSpread(_objectSpread({}, props), {}, {\n isSelected: selected\n }),\n icon: mergedItemIcon\n }));\n\n if (_internalRenderMenuItem) {\n renderNode = _internalRenderMenuItem(renderNode, props, {\n selected: selected\n });\n }\n\n return renderNode;\n};\n\nfunction MenuItem(props) {\n var eventKey = props.eventKey; // ==================== Record KeyPath ====================\n\n var measure = useMeasure();\n var connectedKeyPath = useFullPath(eventKey); // eslint-disable-next-line consistent-return\n\n React.useEffect(function () {\n if (measure) {\n measure.registerPath(eventKey, connectedKeyPath);\n return function () {\n measure.unregisterPath(eventKey, connectedKeyPath);\n };\n }\n }, [connectedKeyPath]);\n\n if (measure) {\n return null;\n } // ======================== Render ========================\n\n\n return /*#__PURE__*/React.createElement(InternalMenuItem, props);\n}\n\nexport default MenuItem;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nvar _excluded = [\"label\", \"children\", \"key\", \"type\"];\nimport * as React from 'react';\nimport toArray from \"rc-util/es/Children/toArray\";\nimport { Divider, MenuItem, MenuItemGroup, SubMenu } from '..';\nexport function parseChildren(children, keyPath) {\n return toArray(children).map(function (child, index) {\n if ( /*#__PURE__*/React.isValidElement(child)) {\n var _eventKey, _child$props;\n\n var key = child.key;\n var eventKey = (_eventKey = (_child$props = child.props) === null || _child$props === void 0 ? void 0 : _child$props.eventKey) !== null && _eventKey !== void 0 ? _eventKey : key;\n var emptyKey = eventKey === null || eventKey === undefined;\n\n if (emptyKey) {\n eventKey = \"tmp_key-\".concat([].concat(_toConsumableArray(keyPath), [index]).join('-'));\n }\n\n var cloneProps = {\n key: eventKey,\n eventKey: eventKey\n };\n\n if (process.env.NODE_ENV !== 'production' && emptyKey) {\n cloneProps.warnKey = true;\n }\n\n return /*#__PURE__*/React.cloneElement(child, cloneProps);\n }\n\n return child;\n });\n}\n\nfunction convertItemsToNodes(list) {\n return (list || []).map(function (opt, index) {\n if (opt && _typeof(opt) === 'object') {\n var _ref = opt,\n label = _ref.label,\n children = _ref.children,\n key = _ref.key,\n type = _ref.type,\n restProps = _objectWithoutProperties(_ref, _excluded);\n\n var mergedKey = key !== null && key !== void 0 ? key : \"tmp-\".concat(index); // MenuItemGroup & SubMenuItem\n\n if (children || type === 'group') {\n if (type === 'group') {\n // Group\n return /*#__PURE__*/React.createElement(MenuItemGroup, _extends({\n key: mergedKey\n }, restProps, {\n title: label\n }), convertItemsToNodes(children));\n } // Sub Menu\n\n\n return /*#__PURE__*/React.createElement(SubMenu, _extends({\n key: mergedKey\n }, restProps, {\n title: label\n }), convertItemsToNodes(children));\n } // MenuItem & Divider\n\n\n if (type === 'divider') {\n return /*#__PURE__*/React.createElement(Divider, _extends({\n key: mergedKey\n }, restProps));\n }\n\n return /*#__PURE__*/React.createElement(MenuItem, _extends({\n key: mergedKey\n }, restProps), label);\n }\n\n return null;\n }).filter(function (opt) {\n return opt;\n });\n}\n\nexport function parseItems(children, items, keyPath) {\n var childNodes = children;\n\n if (items) {\n childNodes = convertItemsToNodes(items);\n }\n\n return parseChildren(childNodes, keyPath);\n}","import * as React from 'react';\n/**\n * Cache callback function that always return same ref instead.\n * This is used for context optimization.\n */\n\nexport default function useMemoCallback(func) {\n var funRef = React.useRef(func);\n funRef.current = func;\n var callback = React.useCallback(function () {\n var _funRef$current;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return (_funRef$current = funRef.current) === null || _funRef$current === void 0 ? void 0 : _funRef$current.call.apply(_funRef$current, [funRef].concat(args));\n }, []);\n return func ? callback : undefined;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"className\", \"children\"];\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { MenuContext } from \"../context/MenuContext\";\n\nvar InternalSubMenuList = function InternalSubMenuList(_ref, ref) {\n var className = _ref.className,\n children = _ref.children,\n restProps = _objectWithoutProperties(_ref, _excluded);\n\n var _React$useContext = React.useContext(MenuContext),\n prefixCls = _React$useContext.prefixCls,\n mode = _React$useContext.mode,\n rtl = _React$useContext.rtl;\n\n return /*#__PURE__*/React.createElement(\"ul\", _extends({\n className: classNames(prefixCls, rtl && \"\".concat(prefixCls, \"-rtl\"), \"\".concat(prefixCls, \"-sub\"), \"\".concat(prefixCls, \"-\").concat(mode === 'inline' ? 'inline' : 'vertical'), className)\n }, restProps, {\n \"data-menu-list\": true,\n ref: ref\n }), children);\n};\n\nvar SubMenuList = /*#__PURE__*/React.forwardRef(InternalSubMenuList);\nSubMenuList.displayName = 'SubMenuList';\nexport default SubMenuList;","import ReactDOM from 'react-dom';\nexport default function addEventListenerWrap(target, eventType, cb, option) {\n /* eslint camelcase: 2 */\n var callback = ReactDOM.unstable_batchedUpdates ? function run(e) {\n ReactDOM.unstable_batchedUpdates(cb, e);\n } : cb;\n if (target.addEventListener) {\n target.addEventListener(eventType, callback, option);\n }\n return {\n remove: function remove() {\n if (target.removeEventListener) {\n target.removeEventListener(eventType, callback, option);\n }\n }\n };\n}","import { useRef, useEffect, forwardRef, useImperativeHandle } from 'react';\nimport ReactDOM from 'react-dom';\nimport canUseDom from './Dom/canUseDom';\nvar Portal = /*#__PURE__*/forwardRef(function (props, ref) {\n var didUpdate = props.didUpdate,\n getContainer = props.getContainer,\n children = props.children;\n var parentRef = useRef();\n var containerRef = useRef();\n // Ref return nothing, only for wrapper check exist\n useImperativeHandle(ref, function () {\n return {};\n });\n // Create container in client side with sync to avoid useEffect not get ref\n var initRef = useRef(false);\n if (!initRef.current && canUseDom()) {\n containerRef.current = getContainer();\n parentRef.current = containerRef.current.parentNode;\n initRef.current = true;\n }\n // [Legacy] Used by `rc-trigger`\n useEffect(function () {\n didUpdate === null || didUpdate === void 0 ? void 0 : didUpdate(props);\n });\n useEffect(function () {\n // Restore container to original place\n // React 18 StrictMode will unmount first and mount back for effect test:\n // https://reactjs.org/blog/2022/03/29/react-v18.html#new-strict-mode-behaviors\n if (containerRef.current.parentNode === null && parentRef.current !== null) {\n parentRef.current.appendChild(containerRef.current);\n }\n return function () {\n var _containerRef$current, _containerRef$current2;\n // [Legacy] This should not be handle by Portal but parent PortalWrapper instead.\n // Since some component use `Portal` directly, we have to keep the logic here.\n (_containerRef$current = containerRef.current) === null || _containerRef$current === void 0 ? void 0 : (_containerRef$current2 = _containerRef$current.parentNode) === null || _containerRef$current2 === void 0 ? void 0 : _containerRef$current2.removeChild(containerRef.current);\n };\n }, []);\n return containerRef.current ? /*#__PURE__*/ReactDOM.createPortal(children, containerRef.current) : null;\n});\nexport default Portal;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n\nfunction isPointsEq(a1, a2, isAlignPoint) {\n if (isAlignPoint) {\n return a1[0] === a2[0];\n }\n\n return a1[0] === a2[0] && a1[1] === a2[1];\n}\n\nexport function getAlignFromPlacement(builtinPlacements, placementStr, align) {\n var baseAlign = builtinPlacements[placementStr] || {};\n return _objectSpread(_objectSpread({}, baseAlign), align);\n}\nexport function getAlignPopupClassName(builtinPlacements, prefixCls, align, isAlignPoint) {\n var points = align.points;\n var placements = Object.keys(builtinPlacements);\n\n for (var i = 0; i < placements.length; i += 1) {\n var placement = placements[i];\n\n if (isPointsEq(builtinPlacements[placement].points, points, isAlignPoint)) {\n return \"\".concat(prefixCls, \"-placement-\").concat(placement);\n }\n }\n\n return '';\n}","export function getMotion(_ref) {\n var prefixCls = _ref.prefixCls,\n motion = _ref.motion,\n animation = _ref.animation,\n transitionName = _ref.transitionName;\n\n if (motion) {\n return motion;\n }\n\n if (animation) {\n return {\n motionName: \"\".concat(prefixCls, \"-\").concat(animation)\n };\n }\n\n if (transitionName) {\n return {\n motionName: transitionName\n };\n }\n\n return null;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nimport { getMotion } from \"../utils/legacyUtil\";\nexport default function Mask(props) {\n var prefixCls = props.prefixCls,\n visible = props.visible,\n zIndex = props.zIndex,\n mask = props.mask,\n maskMotion = props.maskMotion,\n maskAnimation = props.maskAnimation,\n maskTransitionName = props.maskTransitionName;\n\n if (!mask) {\n return null;\n }\n\n var motion = {};\n\n if (maskMotion || maskTransitionName || maskAnimation) {\n motion = _objectSpread({\n motionAppear: true\n }, getMotion({\n motion: maskMotion,\n prefixCls: prefixCls,\n transitionName: maskTransitionName,\n animation: maskAnimation\n }));\n }\n\n return /*#__PURE__*/React.createElement(CSSMotion, _extends({}, motion, {\n visible: visible,\n removeOnLeave: true\n }), function (_ref) {\n var className = _ref.className;\n return /*#__PURE__*/React.createElement(\"div\", {\n style: {\n zIndex: zIndex\n },\n className: classNames(\"\".concat(prefixCls, \"-mask\"), className)\n });\n });\n}","export default (function (element) {\n if (!element) {\n return false;\n }\n if (element instanceof HTMLElement && element.offsetParent) {\n return true;\n }\n if (element instanceof SVGGraphicsElement && element.getBBox) {\n var _element$getBBox = element.getBBox(),\n width = _element$getBBox.width,\n height = _element$getBBox.height;\n if (width || height) {\n return true;\n }\n }\n if (element instanceof HTMLElement && element.getBoundingClientRect) {\n var _element$getBoundingC = element.getBoundingClientRect(),\n _width = _element$getBoundingC.width,\n _height = _element$getBoundingC.height;\n if (_width || _height) {\n return true;\n }\n }\n return false;\n});","let vendorPrefix;\n\nconst jsCssMap = {\n Webkit: '-webkit-',\n Moz: '-moz-',\n // IE did it wrong again ...\n ms: '-ms-',\n O: '-o-',\n};\n\nfunction getVendorPrefix() {\n if (vendorPrefix !== undefined) {\n return vendorPrefix;\n }\n vendorPrefix = '';\n const style = document.createElement('p').style;\n const testProp = 'Transform';\n for (const key in jsCssMap) {\n if (key + testProp in style) {\n vendorPrefix = key;\n }\n }\n return vendorPrefix;\n}\n\nfunction getTransitionName() {\n return getVendorPrefix()\n ? `${getVendorPrefix()}TransitionProperty`\n : 'transitionProperty';\n}\n\nexport function getTransformName() {\n return getVendorPrefix() ? `${getVendorPrefix()}Transform` : 'transform';\n}\n\nexport function setTransitionProperty(node, value) {\n const name = getTransitionName();\n if (name) {\n node.style[name] = value;\n if (name !== 'transitionProperty') {\n node.style.transitionProperty = value;\n }\n }\n}\n\nfunction setTransform(node, value) {\n const name = getTransformName();\n if (name) {\n node.style[name] = value;\n if (name !== 'transform') {\n node.style.transform = value;\n }\n }\n}\n\nexport function getTransitionProperty(node) {\n return node.style.transitionProperty || node.style[getTransitionName()];\n}\n\nexport function getTransformXY(node) {\n const style = window.getComputedStyle(node, null);\n const transform =\n style.getPropertyValue('transform') ||\n style.getPropertyValue(getTransformName());\n if (transform && transform !== 'none') {\n const matrix = transform.replace(/[^0-9\\-.,]/g, '').split(',');\n return {\n x: parseFloat(matrix[12] || matrix[4], 0),\n y: parseFloat(matrix[13] || matrix[5], 0),\n };\n }\n return {\n x: 0,\n y: 0,\n };\n}\n\nconst matrix2d = /matrix\\((.*)\\)/;\nconst matrix3d = /matrix3d\\((.*)\\)/;\n\nexport function setTransformXY(node, xy) {\n const style = window.getComputedStyle(node, null);\n const transform =\n style.getPropertyValue('transform') ||\n style.getPropertyValue(getTransformName());\n if (transform && transform !== 'none') {\n let arr;\n let match2d = transform.match(matrix2d);\n if (match2d) {\n match2d = match2d[1];\n arr = match2d.split(',').map(item => {\n return parseFloat(item, 10);\n });\n arr[4] = xy.x;\n arr[5] = xy.y;\n setTransform(node, `matrix(${arr.join(',')})`);\n } else {\n const match3d = transform.match(matrix3d)[1];\n arr = match3d.split(',').map(item => {\n return parseFloat(item, 10);\n });\n arr[12] = xy.x;\n arr[13] = xy.y;\n setTransform(node, `matrix3d(${arr.join(',')})`);\n }\n } else {\n setTransform(\n node,\n `translateX(${xy.x}px) translateY(${xy.y}px) translateZ(0)`,\n );\n }\n}\n","import {\n setTransitionProperty,\n getTransitionProperty,\n getTransformXY,\n setTransformXY,\n getTransformName,\n} from './propertyUtils';\n\nconst RE_NUM = /[\\-+]?(?:\\d*\\.|)\\d+(?:[eE][\\-+]?\\d+|)/.source;\n\nlet getComputedStyleX;\n\n// https://stackoverflow.com/a/3485654/3040605\nfunction forceRelayout(elem) {\n const originalStyle = elem.style.display;\n elem.style.display = 'none';\n elem.offsetHeight; // eslint-disable-line\n elem.style.display = originalStyle;\n}\n\nfunction css(el, name, v) {\n let value = v;\n if (typeof name === 'object') {\n for (const i in name) {\n if (name.hasOwnProperty(i)) {\n css(el, i, name[i]);\n }\n }\n return undefined;\n }\n if (typeof value !== 'undefined') {\n if (typeof value === 'number') {\n value = `${value}px`;\n }\n el.style[name] = value;\n return undefined;\n }\n return getComputedStyleX(el, name);\n}\n\nfunction getClientPosition(elem) {\n let box;\n let x;\n let y;\n const doc = elem.ownerDocument;\n const body = doc.body;\n const docElem = doc && doc.documentElement;\n // 根据 GBS 最新数据,A-Grade Browsers 都已支持 getBoundingClientRect 方法,不用再考虑传统的实现方式\n box = elem.getBoundingClientRect();\n\n // 注:jQuery 还考虑减去 docElem.clientLeft/clientTop\n // 但测试发现,这样反而会导致当 html 和 body 有边距/边框样式时,获取的值不正确\n // 此外,ie6 会忽略 html 的 margin 值,幸运地是没有谁会去设置 html 的 margin\n\n x = Math.floor(box.left);\n y = Math.floor(box.top);\n\n // In IE, most of the time, 2 extra pixels are added to the top and left\n // due to the implicit 2-pixel inset border. In IE6/7 quirks mode and\n // IE6 standards mode, this border can be overridden by setting the\n // document element's border to zero -- thus, we cannot rely on the\n // offset always being 2 pixels.\n\n // In quirks mode, the offset can be determined by querying the body's\n // clientLeft/clientTop, but in standards mode, it is found by querying\n // the document element's clientLeft/clientTop. Since we already called\n // getClientBoundingRect we have already forced a reflow, so it is not\n // too expensive just to query them all.\n\n // ie 下应该减去窗口的边框吧,毕竟默认 absolute 都是相对窗口定位的\n // 窗口边框标准是设 documentElement ,quirks 时设置 body\n // 最好禁止在 body 和 html 上边框 ,但 ie < 9 html 默认有 2px ,减去\n // 但是非 ie 不可能设置窗口边框,body html 也不是窗口 ,ie 可以通过 html,body 设置\n // 标准 ie 下 docElem.clientTop 就是 border-top\n // ie7 html 即窗口边框改变不了。永远为 2\n // 但标准 firefox/chrome/ie9 下 docElem.clientTop 是窗口边框,即使设了 border-top 也为 0\n\n x -= docElem.clientLeft || body.clientLeft || 0;\n y -= docElem.clientTop || body.clientTop || 0;\n\n return {\n left: x,\n top: y,\n };\n}\n\nfunction getScroll(w, top) {\n let ret = w[`page${top ? 'Y' : 'X'}Offset`];\n const method = `scroll${top ? 'Top' : 'Left'}`;\n if (typeof ret !== 'number') {\n const d = w.document;\n // ie6,7,8 standard mode\n ret = d.documentElement[method];\n if (typeof ret !== 'number') {\n // quirks mode\n ret = d.body[method];\n }\n }\n return ret;\n}\n\nfunction getScrollLeft(w) {\n return getScroll(w);\n}\n\nfunction getScrollTop(w) {\n return getScroll(w, true);\n}\n\nfunction getOffset(el) {\n const pos = getClientPosition(el);\n const doc = el.ownerDocument;\n const w = doc.defaultView || doc.parentWindow;\n pos.left += getScrollLeft(w);\n pos.top += getScrollTop(w);\n return pos;\n}\n\n/**\n * A crude way of determining if an object is a window\n * @member util\n */\nfunction isWindow(obj) {\n // must use == for ie8\n /* eslint eqeqeq:0 */\n return obj !== null && obj !== undefined && obj == obj.window;\n}\n\nfunction getDocument(node) {\n if (isWindow(node)) {\n return node.document;\n }\n if (node.nodeType === 9) {\n return node;\n }\n return node.ownerDocument;\n}\n\nfunction _getComputedStyle(elem, name, cs) {\n let computedStyle = cs;\n let val = '';\n const d = getDocument(elem);\n computedStyle = computedStyle || d.defaultView.getComputedStyle(elem, null);\n\n // https://github.com/kissyteam/kissy/issues/61\n if (computedStyle) {\n val = computedStyle.getPropertyValue(name) || computedStyle[name];\n }\n\n return val;\n}\n\nconst _RE_NUM_NO_PX = new RegExp(`^(${RE_NUM})(?!px)[a-z%]+$`, 'i');\nconst RE_POS = /^(top|right|bottom|left)$/;\nconst CURRENT_STYLE = 'currentStyle';\nconst RUNTIME_STYLE = 'runtimeStyle';\nconst LEFT = 'left';\nconst PX = 'px';\n\nfunction _getComputedStyleIE(elem, name) {\n // currentStyle maybe null\n // http://msdn.microsoft.com/en-us/library/ms535231.aspx\n let ret = elem[CURRENT_STYLE] && elem[CURRENT_STYLE][name];\n\n // 当 width/height 设置为百分比时,通过 pixelLeft 方式转换的 width/height 值\n // 一开始就处理了! CUSTOM_STYLE.height,CUSTOM_STYLE.width ,cssHook 解决@2011-08-19\n // 在 ie 下不对,需要直接用 offset 方式\n // borderWidth 等值也有问题,但考虑到 borderWidth 设为百分比的概率很小,这里就不考虑了\n\n // From the awesome hack by Dean Edwards\n // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n // If we're not dealing with a regular pixel number\n // but a number that has a weird ending, we need to convert it to pixels\n // exclude left right for relativity\n if (_RE_NUM_NO_PX.test(ret) && !RE_POS.test(name)) {\n // Remember the original values\n const style = elem.style;\n const left = style[LEFT];\n const rsLeft = elem[RUNTIME_STYLE][LEFT];\n\n // prevent flashing of content\n elem[RUNTIME_STYLE][LEFT] = elem[CURRENT_STYLE][LEFT];\n\n // Put in the new values to get a computed value out\n style[LEFT] = name === 'fontSize' ? '1em' : ret || 0;\n ret = style.pixelLeft + PX;\n\n // Revert the changed values\n style[LEFT] = left;\n\n elem[RUNTIME_STYLE][LEFT] = rsLeft;\n }\n return ret === '' ? 'auto' : ret;\n}\n\nif (typeof window !== 'undefined') {\n getComputedStyleX = window.getComputedStyle\n ? _getComputedStyle\n : _getComputedStyleIE;\n}\n\nfunction getOffsetDirection(dir, option) {\n if (dir === 'left') {\n return option.useCssRight ? 'right' : dir;\n }\n return option.useCssBottom ? 'bottom' : dir;\n}\n\nfunction oppositeOffsetDirection(dir) {\n if (dir === 'left') {\n return 'right';\n } else if (dir === 'right') {\n return 'left';\n } else if (dir === 'top') {\n return 'bottom';\n } else if (dir === 'bottom') {\n return 'top';\n }\n}\n\n// 设置 elem 相对 elem.ownerDocument 的坐标\nfunction setLeftTop(elem, offset, option) {\n // set position first, in-case top/left are set even on static elem\n if (css(elem, 'position') === 'static') {\n elem.style.position = 'relative';\n }\n let presetH = -999;\n let presetV = -999;\n const horizontalProperty = getOffsetDirection('left', option);\n const verticalProperty = getOffsetDirection('top', option);\n const oppositeHorizontalProperty = oppositeOffsetDirection(\n horizontalProperty,\n );\n const oppositeVerticalProperty = oppositeOffsetDirection(verticalProperty);\n\n if (horizontalProperty !== 'left') {\n presetH = 999;\n }\n\n if (verticalProperty !== 'top') {\n presetV = 999;\n }\n let originalTransition = '';\n const originalOffset = getOffset(elem);\n if ('left' in offset || 'top' in offset) {\n originalTransition = getTransitionProperty(elem) || '';\n setTransitionProperty(elem, 'none');\n }\n if ('left' in offset) {\n elem.style[oppositeHorizontalProperty] = '';\n elem.style[horizontalProperty] = `${presetH}px`;\n }\n if ('top' in offset) {\n elem.style[oppositeVerticalProperty] = '';\n elem.style[verticalProperty] = `${presetV}px`;\n }\n // force relayout\n forceRelayout(elem);\n const old = getOffset(elem);\n const originalStyle = {};\n for (const key in offset) {\n if (offset.hasOwnProperty(key)) {\n const dir = getOffsetDirection(key, option);\n const preset = key === 'left' ? presetH : presetV;\n const off = originalOffset[key] - old[key];\n if (dir === key) {\n originalStyle[dir] = preset + off;\n } else {\n originalStyle[dir] = preset - off;\n }\n }\n }\n css(elem, originalStyle);\n // force relayout\n forceRelayout(elem);\n if ('left' in offset || 'top' in offset) {\n setTransitionProperty(elem, originalTransition);\n }\n const ret = {};\n for (const key in offset) {\n if (offset.hasOwnProperty(key)) {\n const dir = getOffsetDirection(key, option);\n const off = offset[key] - originalOffset[key];\n if (key === dir) {\n ret[dir] = originalStyle[dir] + off;\n } else {\n ret[dir] = originalStyle[dir] - off;\n }\n }\n }\n css(elem, ret);\n}\n\nfunction setTransform(elem, offset) {\n const originalOffset = getOffset(elem);\n const originalXY = getTransformXY(elem);\n const resultXY = { x: originalXY.x, y: originalXY.y };\n if ('left' in offset) {\n resultXY.x = originalXY.x + offset.left - originalOffset.left;\n }\n if ('top' in offset) {\n resultXY.y = originalXY.y + offset.top - originalOffset.top;\n }\n setTransformXY(elem, resultXY);\n}\n\nfunction setOffset(elem, offset, option) {\n if (option.ignoreShake) {\n const oriOffset = getOffset(elem);\n\n const oLeft = oriOffset.left.toFixed(0);\n const oTop = oriOffset.top.toFixed(0);\n const tLeft = offset.left.toFixed(0);\n const tTop = offset.top.toFixed(0);\n\n if (oLeft === tLeft && oTop === tTop) {\n return;\n }\n }\n\n if (option.useCssRight || option.useCssBottom) {\n setLeftTop(elem, offset, option);\n } else if (\n option.useCssTransform &&\n getTransformName() in document.body.style\n ) {\n setTransform(elem, offset, option);\n } else {\n setLeftTop(elem, offset, option);\n }\n}\n\nfunction each(arr, fn) {\n for (let i = 0; i < arr.length; i++) {\n fn(arr[i]);\n }\n}\n\nfunction isBorderBoxFn(elem) {\n return getComputedStyleX(elem, 'boxSizing') === 'border-box';\n}\n\nconst BOX_MODELS = ['margin', 'border', 'padding'];\nconst CONTENT_INDEX = -1;\nconst PADDING_INDEX = 2;\nconst BORDER_INDEX = 1;\nconst MARGIN_INDEX = 0;\n\nfunction swap(elem, options, callback) {\n const old = {};\n const style = elem.style;\n let name;\n\n // Remember the old values, and insert the new ones\n for (name in options) {\n if (options.hasOwnProperty(name)) {\n old[name] = style[name];\n style[name] = options[name];\n }\n }\n\n callback.call(elem);\n\n // Revert the old values\n for (name in options) {\n if (options.hasOwnProperty(name)) {\n style[name] = old[name];\n }\n }\n}\n\nfunction getPBMWidth(elem, props, which) {\n let value = 0;\n let prop;\n let j;\n let i;\n for (j = 0; j < props.length; j++) {\n prop = props[j];\n if (prop) {\n for (i = 0; i < which.length; i++) {\n let cssProp;\n if (prop === 'border') {\n cssProp = `${prop}${which[i]}Width`;\n } else {\n cssProp = prop + which[i];\n }\n value += parseFloat(getComputedStyleX(elem, cssProp)) || 0;\n }\n }\n }\n return value;\n}\n\nconst domUtils = {\n getParent(element) {\n let parent = element;\n do {\n if (parent.nodeType === 11 && parent.host) {\n parent = parent.host;\n } else {\n parent = parent.parentNode;\n }\n } while (parent && parent.nodeType !== 1 && parent.nodeType !== 9);\n return parent;\n },\n};\n\neach(['Width', 'Height'], name => {\n domUtils[`doc${name}`] = refWin => {\n const d = refWin.document;\n return Math.max(\n // firefox chrome documentElement.scrollHeight< body.scrollHeight\n // ie standard mode : documentElement.scrollHeight> body.scrollHeight\n d.documentElement[`scroll${name}`],\n // quirks : documentElement.scrollHeight 最大等于可视窗口多一点?\n d.body[`scroll${name}`],\n domUtils[`viewport${name}`](d),\n );\n };\n\n domUtils[`viewport${name}`] = win => {\n // pc browser includes scrollbar in window.innerWidth\n const prop = `client${name}`;\n const doc = win.document;\n const body = doc.body;\n const documentElement = doc.documentElement;\n const documentElementProp = documentElement[prop];\n // 标准模式取 documentElement\n // backcompat 取 body\n return (\n (doc.compatMode === 'CSS1Compat' && documentElementProp) ||\n (body && body[prop]) ||\n documentElementProp\n );\n };\n});\n\n/*\n 得到元素的大小信息\n @param elem\n @param name\n @param {String} [extra] 'padding' : (css width) + padding\n 'border' : (css width) + padding + border\n 'margin' : (css width) + padding + border + margin\n */\nfunction getWH(elem, name, ex) {\n let extra = ex;\n if (isWindow(elem)) {\n return name === 'width'\n ? domUtils.viewportWidth(elem)\n : domUtils.viewportHeight(elem);\n } else if (elem.nodeType === 9) {\n return name === 'width'\n ? domUtils.docWidth(elem)\n : domUtils.docHeight(elem);\n }\n const which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];\n let borderBoxValue =\n name === 'width'\n ? Math.floor(elem.getBoundingClientRect().width)\n : Math.floor(elem.getBoundingClientRect().height);\n const isBorderBox = isBorderBoxFn(elem);\n let cssBoxValue = 0;\n if (\n borderBoxValue === null ||\n borderBoxValue === undefined ||\n borderBoxValue <= 0\n ) {\n borderBoxValue = undefined;\n // Fall back to computed then un computed css if necessary\n cssBoxValue = getComputedStyleX(elem, name);\n if (\n cssBoxValue === null ||\n cssBoxValue === undefined ||\n Number(cssBoxValue) < 0\n ) {\n cssBoxValue = elem.style[name] || 0;\n }\n // Normalize '', auto, and prepare for extra\n cssBoxValue = parseFloat(cssBoxValue) || 0;\n }\n if (extra === undefined) {\n extra = isBorderBox ? BORDER_INDEX : CONTENT_INDEX;\n }\n const borderBoxValueOrIsBorderBox =\n borderBoxValue !== undefined || isBorderBox;\n const val = borderBoxValue || cssBoxValue;\n if (extra === CONTENT_INDEX) {\n if (borderBoxValueOrIsBorderBox) {\n return val - getPBMWidth(elem, ['border', 'padding'], which);\n }\n return cssBoxValue;\n } else if (borderBoxValueOrIsBorderBox) {\n if (extra === BORDER_INDEX) {\n return val;\n }\n return (\n val +\n (extra === PADDING_INDEX\n ? -getPBMWidth(elem, ['border'], which)\n : getPBMWidth(elem, ['margin'], which))\n );\n }\n return cssBoxValue + getPBMWidth(elem, BOX_MODELS.slice(extra), which);\n}\n\nconst cssShow = {\n position: 'absolute',\n visibility: 'hidden',\n display: 'block',\n};\n\n// fix #119 : https://github.com/kissyteam/kissy/issues/119\nfunction getWHIgnoreDisplay(...args) {\n let val;\n const elem = args[0];\n // in case elem is window\n // elem.offsetWidth === undefined\n if (elem.offsetWidth !== 0) {\n val = getWH.apply(undefined, args);\n } else {\n swap(elem, cssShow, () => {\n val = getWH.apply(undefined, args);\n });\n }\n return val;\n}\n\neach(['width', 'height'], name => {\n const first = name.charAt(0).toUpperCase() + name.slice(1);\n domUtils[`outer${first}`] = (el, includeMargin) => {\n return (\n el &&\n getWHIgnoreDisplay(el, name, includeMargin ? MARGIN_INDEX : BORDER_INDEX)\n );\n };\n const which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];\n\n domUtils[name] = (elem, v) => {\n let val = v;\n if (val !== undefined) {\n if (elem) {\n const isBorderBox = isBorderBoxFn(elem);\n if (isBorderBox) {\n val += getPBMWidth(elem, ['padding', 'border'], which);\n }\n return css(elem, name, val);\n }\n return undefined;\n }\n return elem && getWHIgnoreDisplay(elem, name, CONTENT_INDEX);\n };\n});\n\nfunction mix(to, from) {\n for (const i in from) {\n if (from.hasOwnProperty(i)) {\n to[i] = from[i];\n }\n }\n return to;\n}\n\nconst utils = {\n getWindow(node) {\n if (node && node.document && node.setTimeout) {\n return node;\n }\n const doc = node.ownerDocument || node;\n return doc.defaultView || doc.parentWindow;\n },\n getDocument,\n offset(el, value, option) {\n if (typeof value !== 'undefined') {\n setOffset(el, value, option || {});\n } else {\n return getOffset(el);\n }\n },\n isWindow,\n each,\n css,\n clone(obj) {\n let i;\n const ret = {};\n for (i in obj) {\n if (obj.hasOwnProperty(i)) {\n ret[i] = obj[i];\n }\n }\n const overflow = obj.overflow;\n if (overflow) {\n for (i in obj) {\n if (obj.hasOwnProperty(i)) {\n ret.overflow[i] = obj.overflow[i];\n }\n }\n }\n return ret;\n },\n mix,\n getWindowScrollLeft(w) {\n return getScrollLeft(w);\n },\n getWindowScrollTop(w) {\n return getScrollTop(w);\n },\n merge(...args) {\n const ret = {};\n for (let i = 0; i < args.length; i++) {\n utils.mix(ret, args[i]);\n }\n return ret;\n },\n viewportWidth: 0,\n viewportHeight: 0,\n};\n\nmix(utils, domUtils);\n\nexport default utils;\n","import utils from './utils';\n\n/**\n * 得到会导致元素显示不全的祖先元素\n */\nconst { getParent } = utils;\n\nfunction getOffsetParent(element) {\n if (utils.isWindow(element) || element.nodeType === 9) {\n return null;\n }\n // ie 这个也不是完全可行\n /*\n
\n
\n 元素 6 高 100px 宽 50px
\n
\n
\n */\n // element.offsetParent does the right thing in ie7 and below. Return parent with layout!\n // In other browsers it only includes elements with position absolute, relative or\n // fixed, not elements with overflow set to auto or scroll.\n // if (UA.ie && ieMode < 8) {\n // return element.offsetParent;\n // }\n // 统一的 offsetParent 方法\n const doc = utils.getDocument(element);\n const body = doc.body;\n let parent;\n let positionStyle = utils.css(element, 'position');\n const skipStatic = positionStyle === 'fixed' || positionStyle === 'absolute';\n\n if (!skipStatic) {\n return element.nodeName.toLowerCase() === 'html'\n ? null\n : getParent(element);\n }\n\n for (\n parent = getParent(element);\n parent && parent !== body && parent.nodeType !== 9;\n parent = getParent(parent)\n ) {\n positionStyle = utils.css(parent, 'position');\n if (positionStyle !== 'static') {\n return parent;\n }\n }\n return null;\n}\n\nexport default getOffsetParent;\n","import utils from './utils';\n\nconst { getParent } = utils;\n\nexport default function isAncestorFixed(element) {\n if (utils.isWindow(element) || element.nodeType === 9) {\n return false;\n }\n\n const doc = utils.getDocument(element);\n const body = doc.body;\n let parent = null;\n for (\n parent = getParent(element);\n // 修复元素位于 document.documentElement 下导致崩溃问题\n parent && parent !== body && parent !== doc;\n parent = getParent(parent)\n ) {\n const positionStyle = utils.css(parent, 'position');\n if (positionStyle === 'fixed') {\n return true;\n }\n }\n return false;\n}\n","import utils from './utils';\nimport getOffsetParent from './getOffsetParent';\nimport isAncestorFixed from './isAncestorFixed';\n\n/**\n * 获得元素的显示部分的区域\n */\nfunction getVisibleRectForElement(element, alwaysByViewport) {\n const visibleRect = {\n left: 0,\n right: Infinity,\n top: 0,\n bottom: Infinity,\n };\n let el = getOffsetParent(element);\n const doc = utils.getDocument(element);\n const win = doc.defaultView || doc.parentWindow;\n const body = doc.body;\n const documentElement = doc.documentElement;\n\n // Determine the size of the visible rect by climbing the dom accounting for\n // all scrollable containers.\n while (el) {\n // clientWidth is zero for inline block elements in ie.\n if (\n (navigator.userAgent.indexOf('MSIE') === -1 || el.clientWidth !== 0) &&\n // body may have overflow set on it, yet we still get the entire\n // viewport. In some browsers, el.offsetParent may be\n // document.documentElement, so check for that too.\n (el !== body &&\n el !== documentElement &&\n utils.css(el, 'overflow') !== 'visible')\n ) {\n const pos = utils.offset(el);\n // add border\n pos.left += el.clientLeft;\n pos.top += el.clientTop;\n visibleRect.top = Math.max(visibleRect.top, pos.top);\n visibleRect.right = Math.min(\n visibleRect.right,\n // consider area without scrollBar\n pos.left + el.clientWidth,\n );\n visibleRect.bottom = Math.min(\n visibleRect.bottom,\n pos.top + el.clientHeight,\n );\n visibleRect.left = Math.max(visibleRect.left, pos.left);\n } else if (el === body || el === documentElement) {\n break;\n }\n el = getOffsetParent(el);\n }\n\n // Set element position to fixed\n // make sure absolute element itself don't affect it's visible area\n // https://github.com/ant-design/ant-design/issues/7601\n let originalPosition = null;\n if (!utils.isWindow(element) && element.nodeType !== 9) {\n originalPosition = element.style.position;\n const position = utils.css(element, 'position');\n if (position === 'absolute') {\n element.style.position = 'fixed';\n }\n }\n\n const scrollX = utils.getWindowScrollLeft(win);\n const scrollY = utils.getWindowScrollTop(win);\n const viewportWidth = utils.viewportWidth(win);\n const viewportHeight = utils.viewportHeight(win);\n let documentWidth = documentElement.scrollWidth;\n let documentHeight = documentElement.scrollHeight;\n\n // scrollXXX on html is sync with body which means overflow: hidden on body gets wrong scrollXXX.\n // We should cut this ourself.\n const bodyStyle = window.getComputedStyle(body);\n if (bodyStyle.overflowX === 'hidden') {\n documentWidth = win.innerWidth;\n }\n if (bodyStyle.overflowY === 'hidden') {\n documentHeight = win.innerHeight;\n }\n\n // Reset element position after calculate the visible area\n if (element.style) {\n element.style.position = originalPosition;\n }\n\n if (alwaysByViewport || isAncestorFixed(element)) {\n // Clip by viewport's size.\n visibleRect.left = Math.max(visibleRect.left, scrollX);\n visibleRect.top = Math.max(visibleRect.top, scrollY);\n visibleRect.right = Math.min(visibleRect.right, scrollX + viewportWidth);\n visibleRect.bottom = Math.min(visibleRect.bottom, scrollY + viewportHeight);\n } else {\n // Clip by document's size.\n const maxVisibleWidth = Math.max(documentWidth, scrollX + viewportWidth);\n visibleRect.right = Math.min(visibleRect.right, maxVisibleWidth);\n\n const maxVisibleHeight = Math.max(documentHeight, scrollY + viewportHeight);\n visibleRect.bottom = Math.min(visibleRect.bottom, maxVisibleHeight);\n }\n\n return visibleRect.top >= 0 &&\n visibleRect.left >= 0 &&\n visibleRect.bottom > visibleRect.top &&\n visibleRect.right > visibleRect.left\n ? visibleRect\n : null;\n}\n\nexport default getVisibleRectForElement;\n","import utils from './utils';\n\nfunction getRegion(node) {\n let offset;\n let w;\n let h;\n if (!utils.isWindow(node) && node.nodeType !== 9) {\n offset = utils.offset(node);\n w = utils.outerWidth(node);\n h = utils.outerHeight(node);\n } else {\n const win = utils.getWindow(node);\n offset = {\n left: utils.getWindowScrollLeft(win),\n top: utils.getWindowScrollTop(win),\n };\n w = utils.viewportWidth(win);\n h = utils.viewportHeight(win);\n }\n offset.width = w;\n offset.height = h;\n return offset;\n}\n\nexport default getRegion;\n","/**\n * 获取 node 上的 align 对齐点 相对于页面的坐标\n */\n\nfunction getAlignOffset(region, align) {\n const V = align.charAt(0);\n const H = align.charAt(1);\n const w = region.width;\n const h = region.height;\n\n let x = region.left;\n let y = region.top;\n\n if (V === 'c') {\n y += h / 2;\n } else if (V === 'b') {\n y += h;\n }\n\n if (H === 'c') {\n x += w / 2;\n } else if (H === 'r') {\n x += w;\n }\n\n return {\n left: x,\n top: y,\n };\n}\n\nexport default getAlignOffset;\n","import getAlignOffset from './getAlignOffset';\n\nfunction getElFuturePos(elRegion, refNodeRegion, points, offset, targetOffset) {\n const p1 = getAlignOffset(refNodeRegion, points[1]);\n const p2 = getAlignOffset(elRegion, points[0]);\n const diff = [p2.left - p1.left, p2.top - p1.top];\n\n return {\n left: Math.round(elRegion.left - diff[0] + offset[0] - targetOffset[0]),\n top: Math.round(elRegion.top - diff[1] + offset[1] - targetOffset[1]),\n };\n}\n\nexport default getElFuturePos;\n","/**\n * align dom node flexibly\n * @author yiminghe@gmail.com\n */\n\nimport utils from '../utils';\nimport getVisibleRectForElement from '../getVisibleRectForElement';\nimport adjustForViewport from '../adjustForViewport';\nimport getRegion from '../getRegion';\nimport getElFuturePos from '../getElFuturePos';\n\n// http://yiminghe.iteye.com/blog/1124720\n\nfunction isFailX(elFuturePos, elRegion, visibleRect) {\n return (\n elFuturePos.left < visibleRect.left ||\n elFuturePos.left + elRegion.width > visibleRect.right\n );\n}\n\nfunction isFailY(elFuturePos, elRegion, visibleRect) {\n return (\n elFuturePos.top < visibleRect.top ||\n elFuturePos.top + elRegion.height > visibleRect.bottom\n );\n}\n\nfunction isCompleteFailX(elFuturePos, elRegion, visibleRect) {\n return (\n elFuturePos.left > visibleRect.right ||\n elFuturePos.left + elRegion.width < visibleRect.left\n );\n}\n\nfunction isCompleteFailY(elFuturePos, elRegion, visibleRect) {\n return (\n elFuturePos.top > visibleRect.bottom ||\n elFuturePos.top + elRegion.height < visibleRect.top\n );\n}\n\nfunction flip(points, reg, map) {\n const ret = [];\n utils.each(points, p => {\n ret.push(\n p.replace(reg, m => {\n return map[m];\n }),\n );\n });\n return ret;\n}\n\nfunction flipOffset(offset, index) {\n offset[index] = -offset[index];\n return offset;\n}\n\nfunction convertOffset(str, offsetLen) {\n let n;\n if (/%$/.test(str)) {\n n = (parseInt(str.substring(0, str.length - 1), 10) / 100) * offsetLen;\n } else {\n n = parseInt(str, 10);\n }\n return n || 0;\n}\n\nfunction normalizeOffset(offset, el) {\n offset[0] = convertOffset(offset[0], el.width);\n offset[1] = convertOffset(offset[1], el.height);\n}\n\n/**\n * @param el\n * @param tgtRegion 参照节点所占的区域: { left, top, width, height }\n * @param align\n */\nfunction doAlign(el, tgtRegion, align, isTgtRegionVisible) {\n let points = align.points;\n let offset = align.offset || [0, 0];\n let targetOffset = align.targetOffset || [0, 0];\n let overflow = align.overflow;\n const source = align.source || el;\n offset = [].concat(offset);\n targetOffset = [].concat(targetOffset);\n overflow = overflow || {};\n const newOverflowCfg = {};\n let fail = 0;\n const alwaysByViewport = !!(overflow && overflow.alwaysByViewport);\n // 当前节点可以被放置的显示区域\n const visibleRect = getVisibleRectForElement(source, alwaysByViewport);\n // 当前节点所占的区域, left/top/width/height\n const elRegion = getRegion(source);\n // 将 offset 转换成数值,支持百分比\n normalizeOffset(offset, elRegion);\n normalizeOffset(targetOffset, tgtRegion);\n // 当前节点将要被放置的位置\n let elFuturePos = getElFuturePos(\n elRegion,\n tgtRegion,\n points,\n offset,\n targetOffset,\n );\n // 当前节点将要所处的区域\n let newElRegion = utils.merge(elRegion, elFuturePos);\n\n // 如果可视区域不能完全放置当前节点时允许调整\n if (\n visibleRect &&\n (overflow.adjustX || overflow.adjustY) &&\n isTgtRegionVisible\n ) {\n if (overflow.adjustX) {\n // 如果横向不能放下\n if (isFailX(elFuturePos, elRegion, visibleRect)) {\n // 对齐位置反下\n const newPoints = flip(points, /[lr]/gi, {\n l: 'r',\n r: 'l',\n });\n // 偏移量也反下\n const newOffset = flipOffset(offset, 0);\n const newTargetOffset = flipOffset(targetOffset, 0);\n const newElFuturePos = getElFuturePos(\n elRegion,\n tgtRegion,\n newPoints,\n newOffset,\n newTargetOffset,\n );\n\n if (!isCompleteFailX(newElFuturePos, elRegion, visibleRect)) {\n fail = 1;\n points = newPoints;\n offset = newOffset;\n targetOffset = newTargetOffset;\n }\n }\n }\n\n if (overflow.adjustY) {\n // 如果纵向不能放下\n if (isFailY(elFuturePos, elRegion, visibleRect)) {\n // 对齐位置反下\n const newPoints = flip(points, /[tb]/gi, {\n t: 'b',\n b: 't',\n });\n // 偏移量也反下\n const newOffset = flipOffset(offset, 1);\n const newTargetOffset = flipOffset(targetOffset, 1);\n const newElFuturePos = getElFuturePos(\n elRegion,\n tgtRegion,\n newPoints,\n newOffset,\n newTargetOffset,\n );\n\n if (!isCompleteFailY(newElFuturePos, elRegion, visibleRect)) {\n fail = 1;\n points = newPoints;\n offset = newOffset;\n targetOffset = newTargetOffset;\n }\n }\n }\n\n // 如果失败,重新计算当前节点将要被放置的位置\n if (fail) {\n elFuturePos = getElFuturePos(\n elRegion,\n tgtRegion,\n points,\n offset,\n targetOffset,\n );\n utils.mix(newElRegion, elFuturePos);\n }\n const isStillFailX = isFailX(elFuturePos, elRegion, visibleRect);\n const isStillFailY = isFailY(elFuturePos, elRegion, visibleRect);\n // 检查反下后的位置是否可以放下了,如果仍然放不下:\n // 1. 复原修改过的定位参数\n if (isStillFailX || isStillFailY) {\n let newPoints = points;\n\n // 重置对应部分的翻转逻辑\n if (isStillFailX) {\n newPoints = flip(points, /[lr]/gi, {\n l: 'r',\n r: 'l',\n });\n }\n if (isStillFailY) {\n newPoints = flip(points, /[tb]/gi, {\n t: 'b',\n b: 't',\n });\n }\n\n points = newPoints;\n\n offset = align.offset || [0, 0];\n targetOffset = align.targetOffset || [0, 0];\n }\n // 2. 只有指定了可以调整当前方向才调整\n newOverflowCfg.adjustX = overflow.adjustX && isStillFailX;\n newOverflowCfg.adjustY = overflow.adjustY && isStillFailY;\n\n // 确实要调整,甚至可能会调整高度宽度\n if (newOverflowCfg.adjustX || newOverflowCfg.adjustY) {\n newElRegion = adjustForViewport(\n elFuturePos,\n elRegion,\n visibleRect,\n newOverflowCfg,\n );\n }\n }\n\n // need judge to in case set fixed with in css on height auto element\n if (newElRegion.width !== elRegion.width) {\n utils.css(\n source,\n 'width',\n utils.width(source) + newElRegion.width - elRegion.width,\n );\n }\n\n if (newElRegion.height !== elRegion.height) {\n utils.css(\n source,\n 'height',\n utils.height(source) + newElRegion.height - elRegion.height,\n );\n }\n\n // https://github.com/kissyteam/kissy/issues/190\n // 相对于屏幕位置没变,而 left/top 变了\n // 例如
\n utils.offset(\n source,\n {\n left: newElRegion.left,\n top: newElRegion.top,\n },\n {\n useCssRight: align.useCssRight,\n useCssBottom: align.useCssBottom,\n useCssTransform: align.useCssTransform,\n ignoreShake: align.ignoreShake,\n },\n );\n\n return {\n points,\n offset,\n targetOffset,\n overflow: newOverflowCfg,\n };\n}\n\nexport default doAlign;\n/**\n * 2012-04-26 yiminghe@gmail.com\n * - 优化智能对齐算法\n * - 慎用 resizeXX\n *\n * 2011-07-13 yiminghe@gmail.com note:\n * - 增加智能对齐,以及大小调整选项\n **/\n","import utils from './utils';\n\nfunction adjustForViewport(elFuturePos, elRegion, visibleRect, overflow) {\n const pos = utils.clone(elFuturePos);\n const size = {\n width: elRegion.width,\n height: elRegion.height,\n };\n\n if (overflow.adjustX && pos.left < visibleRect.left) {\n pos.left = visibleRect.left;\n }\n\n // Left edge inside and right edge outside viewport, try to resize it.\n if (\n overflow.resizeWidth &&\n pos.left >= visibleRect.left &&\n pos.left + size.width > visibleRect.right\n ) {\n size.width -= pos.left + size.width - visibleRect.right;\n }\n\n // Right edge outside viewport, try to move it.\n if (overflow.adjustX && pos.left + size.width > visibleRect.right) {\n // 保证左边界和可视区域左边界对齐\n pos.left = Math.max(visibleRect.right - size.width, visibleRect.left);\n }\n\n // Top edge outside viewport, try to move it.\n if (overflow.adjustY && pos.top < visibleRect.top) {\n pos.top = visibleRect.top;\n }\n\n // Top edge inside and bottom edge outside viewport, try to resize it.\n if (\n overflow.resizeHeight &&\n pos.top >= visibleRect.top &&\n pos.top + size.height > visibleRect.bottom\n ) {\n size.height -= pos.top + size.height - visibleRect.bottom;\n }\n\n // Bottom edge outside viewport, try to move it.\n if (overflow.adjustY && pos.top + size.height > visibleRect.bottom) {\n // 保证上边界和可视区域上边界对齐\n pos.top = Math.max(visibleRect.bottom - size.height, visibleRect.top);\n }\n\n return utils.mix(pos, size);\n}\n\nexport default adjustForViewport;\n","import doAlign from './align';\nimport getOffsetParent from '../getOffsetParent';\nimport getVisibleRectForElement from '../getVisibleRectForElement';\nimport getRegion from '../getRegion';\n\nfunction isOutOfVisibleRect(target, alwaysByViewport) {\n const visibleRect = getVisibleRectForElement(target, alwaysByViewport);\n const targetRegion = getRegion(target);\n\n return (\n !visibleRect ||\n targetRegion.left + targetRegion.width <= visibleRect.left ||\n targetRegion.top + targetRegion.height <= visibleRect.top ||\n targetRegion.left >= visibleRect.right ||\n targetRegion.top >= visibleRect.bottom\n );\n}\n\nfunction alignElement(el, refNode, align) {\n const target = align.target || refNode;\n const refNodeRegion = getRegion(target);\n\n const isTargetNotOutOfVisible = !isOutOfVisibleRect(\n target,\n align.overflow && align.overflow.alwaysByViewport,\n );\n\n return doAlign(el, refNodeRegion, align, isTargetNotOutOfVisible);\n}\n\nalignElement.__getOffsetParent = getOffsetParent;\n\nalignElement.__getVisibleRectForElement = getVisibleRectForElement;\n\nexport default alignElement;\n","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport ResizeObserver from 'resize-observer-polyfill';\nimport contains from \"rc-util/es/Dom/contains\";\nexport function isSamePoint(prev, next) {\n if (prev === next) return true;\n if (!prev || !next) return false;\n\n if ('pageX' in next && 'pageY' in next) {\n return prev.pageX === next.pageX && prev.pageY === next.pageY;\n }\n\n if ('clientX' in next && 'clientY' in next) {\n return prev.clientX === next.clientX && prev.clientY === next.clientY;\n }\n\n return false;\n}\nexport function restoreFocus(activeElement, container) {\n // Focus back if is in the container\n if (activeElement !== document.activeElement && contains(container, activeElement) && typeof activeElement.focus === 'function') {\n activeElement.focus();\n }\n}\nexport function monitorResize(element, callback) {\n var prevWidth = null;\n var prevHeight = null;\n\n function onResize(_ref) {\n var _ref2 = _slicedToArray(_ref, 1),\n target = _ref2[0].target;\n\n if (!document.documentElement.contains(target)) return;\n\n var _target$getBoundingCl = target.getBoundingClientRect(),\n width = _target$getBoundingCl.width,\n height = _target$getBoundingCl.height;\n\n var fixedWidth = Math.floor(width);\n var fixedHeight = Math.floor(height);\n\n if (prevWidth !== fixedWidth || prevHeight !== fixedHeight) {\n // https://webkit.org/blog/9997/resizeobserver-in-webkit/\n Promise.resolve().then(function () {\n callback({\n width: fixedWidth,\n height: fixedHeight\n });\n });\n }\n\n prevWidth = fixedWidth;\n prevHeight = fixedHeight;\n }\n\n var resizeObserver = new ResizeObserver(onResize);\n\n if (element) {\n resizeObserver.observe(element);\n }\n\n return function () {\n resizeObserver.disconnect();\n };\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\n\n/**\n * Removed props:\n * - childrenProps\n */\nimport React from 'react';\nimport { composeRef } from \"rc-util/es/ref\";\nimport isVisible from \"rc-util/es/Dom/isVisible\";\nimport { alignElement, alignPoint } from 'dom-align';\nimport addEventListener from \"rc-util/es/Dom/addEventListener\";\nimport isEqual from 'lodash/isEqual';\nimport { isSamePoint, restoreFocus, monitorResize } from './util';\nimport useBuffer from './hooks/useBuffer';\n\nfunction getElement(func) {\n if (typeof func !== 'function') return null;\n return func();\n}\n\nfunction getPoint(point) {\n if (_typeof(point) !== 'object' || !point) return null;\n return point;\n}\n\nvar Align = function Align(_ref, ref) {\n var children = _ref.children,\n disabled = _ref.disabled,\n target = _ref.target,\n align = _ref.align,\n onAlign = _ref.onAlign,\n monitorWindowResize = _ref.monitorWindowResize,\n _ref$monitorBufferTim = _ref.monitorBufferTime,\n monitorBufferTime = _ref$monitorBufferTim === void 0 ? 0 : _ref$monitorBufferTim;\n var cacheRef = React.useRef({});\n var nodeRef = React.useRef();\n var childNode = React.Children.only(children); // ===================== Align ======================\n // We save the props here to avoid closure makes props ood\n\n var forceAlignPropsRef = React.useRef({});\n forceAlignPropsRef.current.disabled = disabled;\n forceAlignPropsRef.current.target = target;\n forceAlignPropsRef.current.align = align;\n forceAlignPropsRef.current.onAlign = onAlign;\n\n var _useBuffer = useBuffer(function () {\n var _forceAlignPropsRef$c = forceAlignPropsRef.current,\n latestDisabled = _forceAlignPropsRef$c.disabled,\n latestTarget = _forceAlignPropsRef$c.target,\n latestAlign = _forceAlignPropsRef$c.align,\n latestOnAlign = _forceAlignPropsRef$c.onAlign;\n\n if (!latestDisabled && latestTarget) {\n var source = nodeRef.current;\n var result;\n var element = getElement(latestTarget);\n var point = getPoint(latestTarget);\n cacheRef.current.element = element;\n cacheRef.current.point = point;\n cacheRef.current.align = latestAlign; // IE lose focus after element realign\n // We should record activeElement and restore later\n\n // IE lose focus after element realign\n // We should record activeElement and restore later\n var _document = document,\n activeElement = _document.activeElement; // We only align when element is visible\n\n // We only align when element is visible\n if (element && isVisible(element)) {\n result = alignElement(source, element, latestAlign);\n } else if (point) {\n result = alignPoint(source, point, latestAlign);\n }\n\n restoreFocus(activeElement, source);\n\n if (latestOnAlign && result) {\n latestOnAlign(source, result);\n }\n\n return true;\n }\n\n return false;\n }, monitorBufferTime),\n _useBuffer2 = _slicedToArray(_useBuffer, 2),\n _forceAlign = _useBuffer2[0],\n cancelForceAlign = _useBuffer2[1]; // ===================== Effect =====================\n // Listen for target updated\n\n\n var resizeMonitor = React.useRef({\n cancel: function cancel() {}\n }); // Listen for source updated\n\n var sourceResizeMonitor = React.useRef({\n cancel: function cancel() {}\n });\n React.useEffect(function () {\n var element = getElement(target);\n var point = getPoint(target);\n\n if (nodeRef.current !== sourceResizeMonitor.current.element) {\n sourceResizeMonitor.current.cancel();\n sourceResizeMonitor.current.element = nodeRef.current;\n sourceResizeMonitor.current.cancel = monitorResize(nodeRef.current, _forceAlign);\n }\n\n if (cacheRef.current.element !== element || !isSamePoint(cacheRef.current.point, point) || !isEqual(cacheRef.current.align, align)) {\n _forceAlign(); // Add resize observer\n\n\n if (resizeMonitor.current.element !== element) {\n resizeMonitor.current.cancel();\n resizeMonitor.current.element = element;\n resizeMonitor.current.cancel = monitorResize(element, _forceAlign);\n }\n }\n }); // Listen for disabled change\n\n React.useEffect(function () {\n if (!disabled) {\n _forceAlign();\n } else {\n cancelForceAlign();\n }\n }, [disabled]); // Listen for window resize\n\n var winResizeRef = React.useRef(null);\n React.useEffect(function () {\n if (monitorWindowResize) {\n if (!winResizeRef.current) {\n winResizeRef.current = addEventListener(window, 'resize', _forceAlign);\n }\n } else if (winResizeRef.current) {\n winResizeRef.current.remove();\n winResizeRef.current = null;\n }\n }, [monitorWindowResize]); // Clear all if unmount\n\n React.useEffect(function () {\n return function () {\n resizeMonitor.current.cancel();\n sourceResizeMonitor.current.cancel();\n if (winResizeRef.current) winResizeRef.current.remove();\n cancelForceAlign();\n };\n }, []); // ====================== Ref =======================\n\n React.useImperativeHandle(ref, function () {\n return {\n forceAlign: function forceAlign() {\n return _forceAlign(true);\n }\n };\n }); // ===================== Render =====================\n\n if ( /*#__PURE__*/React.isValidElement(childNode)) {\n childNode = /*#__PURE__*/React.cloneElement(childNode, {\n ref: composeRef(childNode.ref, nodeRef)\n });\n }\n\n return childNode;\n};\n\nvar RcAlign = /*#__PURE__*/React.forwardRef(Align);\nRcAlign.displayName = 'Align';\nexport default RcAlign;","import React from 'react';\nexport default (function (callback, buffer) {\n var calledRef = React.useRef(false);\n var timeoutRef = React.useRef(null);\n\n function cancelTrigger() {\n window.clearTimeout(timeoutRef.current);\n }\n\n function trigger(force) {\n cancelTrigger();\n\n if (!calledRef.current || force === true) {\n if (callback() === false) {\n // Not delay since callback cancelled self\n return;\n }\n\n calledRef.current = true;\n timeoutRef.current = window.setTimeout(function () {\n calledRef.current = false;\n }, buffer);\n } else {\n timeoutRef.current = window.setTimeout(function () {\n calledRef.current = false;\n trigger();\n }, buffer);\n }\n }\n\n return [trigger, function () {\n calledRef.current = false;\n cancelTrigger();\n }];\n});","import utils from '../utils';\nimport doAlign from './align';\n\n/**\n * `tgtPoint`: { pageX, pageY } or { clientX, clientY }.\n * If client position provided, will internal convert to page position.\n */\n\nfunction alignPoint(el, tgtPoint, align) {\n let pageX;\n let pageY;\n\n const doc = utils.getDocument(el);\n const win = doc.defaultView || doc.parentWindow;\n\n const scrollX = utils.getWindowScrollLeft(win);\n const scrollY = utils.getWindowScrollTop(win);\n const viewportWidth = utils.viewportWidth(win);\n const viewportHeight = utils.viewportHeight(win);\n\n if ('pageX' in tgtPoint) {\n pageX = tgtPoint.pageX;\n } else {\n pageX = scrollX + tgtPoint.clientX;\n }\n\n if ('pageY' in tgtPoint) {\n pageY = tgtPoint.pageY;\n } else {\n pageY = scrollY + tgtPoint.clientY;\n }\n\n const tgtRegion = {\n left: pageX,\n top: pageY,\n width: 0,\n height: 0,\n };\n\n const pointInView =\n pageX >= 0 &&\n pageX <= scrollX + viewportWidth &&\n (pageY >= 0 && pageY <= scrollY + viewportHeight);\n\n // Provide default target point\n const points = [align.points[0], 'cc'];\n\n return doAlign(el, tgtRegion, { ...align, points }, pointInView);\n}\n\nexport default alignPoint;\n","// export this package's api\nimport Align from './Align';\nexport default Align;","import _regeneratorRuntime from \"@babel/runtime/helpers/esm/regeneratorRuntime\";\nimport _asyncToGenerator from \"@babel/runtime/helpers/esm/asyncToGenerator\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { useEffect, useRef } from 'react';\nimport raf from \"rc-util/es/raf\";\nimport useState from \"rc-util/es/hooks/useState\";\n/**\n * Popup should follow the steps for each component work correctly:\n * measure - check for the current stretch size\n * align - let component align the position\n * aligned - re-align again in case additional className changed the size\n * afterAlign - choice next step is trigger motion or finished\n * beforeMotion - should reset motion to invisible so that CSSMotion can do normal motion\n * motion - play the motion\n * stable - everything is done\n */\n\nvar StatusQueue = ['measure', 'alignPre', 'align', null, 'motion'];\nexport default (function (visible, doMeasure) {\n var _useState = useState(null),\n _useState2 = _slicedToArray(_useState, 2),\n status = _useState2[0],\n setInternalStatus = _useState2[1];\n\n var rafRef = useRef();\n\n function setStatus(nextStatus) {\n setInternalStatus(nextStatus, true);\n }\n\n function cancelRaf() {\n raf.cancel(rafRef.current);\n }\n\n function goNextStatus(callback) {\n cancelRaf();\n rafRef.current = raf(function () {\n // Only align should be manually trigger\n setStatus(function (prev) {\n switch (status) {\n case 'align':\n return 'motion';\n\n case 'motion':\n return 'stable';\n\n default:\n }\n\n return prev;\n });\n callback === null || callback === void 0 ? void 0 : callback();\n });\n } // Init status\n\n\n useEffect(function () {\n setStatus('measure');\n }, [visible]); // Go next status\n\n useEffect(function () {\n switch (status) {\n case 'measure':\n doMeasure();\n break;\n\n default:\n }\n\n if (status) {\n rafRef.current = raf( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n var index, nextStatus;\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n index = StatusQueue.indexOf(status);\n nextStatus = StatusQueue[index + 1];\n\n if (nextStatus && index !== -1) {\n setStatus(nextStatus);\n }\n\n case 3:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n })));\n }\n }, [status]);\n useEffect(function () {\n return function () {\n cancelRaf();\n };\n }, []);\n return [status, goNextStatus];\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { useRef, useState } from 'react';\nimport Align from 'rc-align';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport CSSMotion from 'rc-motion';\nimport classNames from 'classnames';\nimport useVisibleStatus from \"./useVisibleStatus\";\nimport { getMotion } from \"../utils/legacyUtil\";\nimport useStretchStyle from \"./useStretchStyle\";\nvar PopupInner = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var visible = props.visible,\n prefixCls = props.prefixCls,\n className = props.className,\n style = props.style,\n children = props.children,\n zIndex = props.zIndex,\n stretch = props.stretch,\n destroyPopupOnHide = props.destroyPopupOnHide,\n forceRender = props.forceRender,\n align = props.align,\n point = props.point,\n getRootDomNode = props.getRootDomNode,\n getClassNameFromAlign = props.getClassNameFromAlign,\n onAlign = props.onAlign,\n onMouseEnter = props.onMouseEnter,\n onMouseLeave = props.onMouseLeave,\n onMouseDown = props.onMouseDown,\n onTouchStart = props.onTouchStart,\n onClick = props.onClick;\n var alignRef = useRef();\n var elementRef = useRef();\n\n var _useState = useState(),\n _useState2 = _slicedToArray(_useState, 2),\n alignedClassName = _useState2[0],\n setAlignedClassName = _useState2[1]; // ======================= Measure ========================\n\n\n var _useStretchStyle = useStretchStyle(stretch),\n _useStretchStyle2 = _slicedToArray(_useStretchStyle, 2),\n stretchStyle = _useStretchStyle2[0],\n measureStretchStyle = _useStretchStyle2[1];\n\n function doMeasure() {\n if (stretch) {\n measureStretchStyle(getRootDomNode());\n }\n } // ======================== Status ========================\n\n\n var _useVisibleStatus = useVisibleStatus(visible, doMeasure),\n _useVisibleStatus2 = _slicedToArray(_useVisibleStatus, 2),\n status = _useVisibleStatus2[0],\n goNextStatus = _useVisibleStatus2[1]; // ======================== Aligns ========================\n\n /**\n * `alignedClassName` may modify `source` size,\n * which means one time align may not move to the correct position at once.\n *\n * We will reset `alignTimes` for each status switch to `alignPre`\n * and let `rc-align` to align for multiple times to ensure get final stable place.\n * Currently we mark `alignTimes < 2` repeat align, it will increase if user report for align issue.\n * \n * Update:\n * In React 18. `rc-align` effect of align may faster than ref called trigger `forceAlign`.\n * We adjust this to `alignTimes < 2`.\n * We need refactor `rc-align` to support mark of `forceAlign` call if this still happen.\n */\n\n\n var _useState3 = useState(0),\n _useState4 = _slicedToArray(_useState3, 2),\n alignTimes = _useState4[0],\n setAlignTimes = _useState4[1];\n\n var prepareResolveRef = useRef();\n useLayoutEffect(function () {\n if (status === 'alignPre') {\n setAlignTimes(0);\n }\n }, [status]); // `target` on `rc-align` can accept as a function to get the bind element or a point.\n // ref: https://www.npmjs.com/package/rc-align\n\n function getAlignTarget() {\n if (point) {\n return point;\n }\n\n return getRootDomNode;\n }\n\n function forceAlign() {\n var _alignRef$current;\n\n (_alignRef$current = alignRef.current) === null || _alignRef$current === void 0 ? void 0 : _alignRef$current.forceAlign();\n }\n\n function onInternalAlign(popupDomNode, matchAlign) {\n var nextAlignedClassName = getClassNameFromAlign(matchAlign);\n\n if (alignedClassName !== nextAlignedClassName) {\n setAlignedClassName(nextAlignedClassName);\n } // We will retry multi times to make sure that the element has been align in the right position.\n\n\n setAlignTimes(function (val) {\n return val + 1;\n });\n\n if (status === 'align') {\n onAlign === null || onAlign === void 0 ? void 0 : onAlign(popupDomNode, matchAlign);\n }\n } // Delay to go to next status\n\n\n useLayoutEffect(function () {\n if (status === 'align') {\n // Repeat until not more align needed\n if (alignTimes < 3) {\n forceAlign();\n } else {\n goNextStatus(function () {\n var _prepareResolveRef$cu;\n\n (_prepareResolveRef$cu = prepareResolveRef.current) === null || _prepareResolveRef$cu === void 0 ? void 0 : _prepareResolveRef$cu.call(prepareResolveRef);\n });\n }\n }\n }, [alignTimes]); // ======================== Motion ========================\n\n var motion = _objectSpread({}, getMotion(props));\n\n ['onAppearEnd', 'onEnterEnd', 'onLeaveEnd'].forEach(function (eventName) {\n var originHandler = motion[eventName];\n\n motion[eventName] = function (element, event) {\n goNextStatus();\n return originHandler === null || originHandler === void 0 ? void 0 : originHandler(element, event);\n };\n });\n\n function onShowPrepare() {\n return new Promise(function (resolve) {\n prepareResolveRef.current = resolve;\n });\n } // Go to stable directly when motion not provided\n\n\n React.useEffect(function () {\n if (!motion.motionName && status === 'motion') {\n goNextStatus();\n }\n }, [motion.motionName, status]); // ========================= Refs =========================\n\n React.useImperativeHandle(ref, function () {\n return {\n forceAlign: forceAlign,\n getElement: function getElement() {\n return elementRef.current;\n }\n };\n }); // ======================== Render ========================\n\n var mergedStyle = _objectSpread(_objectSpread({}, stretchStyle), {}, {\n zIndex: zIndex,\n opacity: status === 'motion' || status === 'stable' || !visible ? undefined : 0,\n // Cannot interact with disappearing elements\n // https://github.com/ant-design/ant-design/issues/35051#issuecomment-1101340714\n pointerEvents: !visible && status !== 'stable' ? 'none' : undefined\n }, style); // Align status\n\n\n var alignDisabled = true;\n\n if (align !== null && align !== void 0 && align.points && (status === 'align' || status === 'stable')) {\n alignDisabled = false;\n }\n\n var childNode = children; // Wrapper when multiple children\n\n if (React.Children.count(children) > 1) {\n childNode = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-content\")\n }, children);\n }\n\n return /*#__PURE__*/React.createElement(CSSMotion, _extends({\n visible: visible,\n ref: elementRef,\n leavedClassName: \"\".concat(prefixCls, \"-hidden\")\n }, motion, {\n onAppearPrepare: onShowPrepare,\n onEnterPrepare: onShowPrepare,\n removeOnLeave: destroyPopupOnHide,\n forceRender: forceRender\n }), function (_ref, motionRef) {\n var motionClassName = _ref.className,\n motionStyle = _ref.style;\n var mergedClassName = classNames(prefixCls, className, alignedClassName, motionClassName);\n return /*#__PURE__*/React.createElement(Align, {\n target: getAlignTarget(),\n key: \"popup\",\n ref: alignRef,\n monitorWindowResize: true,\n disabled: alignDisabled,\n align: align,\n onAlign: onInternalAlign\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: motionRef,\n className: mergedClassName,\n onMouseEnter: onMouseEnter,\n onMouseLeave: onMouseLeave,\n onMouseDownCapture: onMouseDown,\n onTouchStartCapture: onTouchStart,\n onClick: onClick,\n style: _objectSpread(_objectSpread({}, motionStyle), mergedStyle)\n }, childNode));\n });\n});\nPopupInner.displayName = 'PopupInner';\nexport default PopupInner;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nexport default (function (stretch) {\n var _React$useState = React.useState({\n width: 0,\n height: 0\n }),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n targetSize = _React$useState2[0],\n setTargetSize = _React$useState2[1];\n\n function measureStretch(element) {\n var tgtWidth = element.offsetWidth,\n tgtHeight = element.offsetHeight;\n\n var _element$getBoundingC = element.getBoundingClientRect(),\n width = _element$getBoundingC.width,\n height = _element$getBoundingC.height; // Rect is more accurate than offset, use if near\n\n\n if (Math.abs(tgtWidth - width) < 1 && Math.abs(tgtHeight - height) < 1) {\n tgtWidth = width;\n tgtHeight = height;\n }\n\n setTargetSize({\n width: tgtWidth,\n height: tgtHeight\n });\n } // Merge stretch style\n\n\n var style = React.useMemo(function () {\n var sizeStyle = {};\n\n if (stretch) {\n var width = targetSize.width,\n height = targetSize.height; // Stretch with target\n\n if (stretch.indexOf('height') !== -1 && height) {\n sizeStyle.height = height;\n } else if (stretch.indexOf('minHeight') !== -1 && height) {\n sizeStyle.minHeight = height;\n }\n\n if (stretch.indexOf('width') !== -1 && width) {\n sizeStyle.width = width;\n } else if (stretch.indexOf('minWidth') !== -1 && width) {\n sizeStyle.minWidth = width;\n }\n }\n\n return sizeStyle;\n }, [stretch, targetSize]);\n return [style, measureStretch];\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport CSSMotion from 'rc-motion';\nimport classNames from 'classnames';\nvar MobilePopupInner = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var prefixCls = props.prefixCls,\n visible = props.visible,\n zIndex = props.zIndex,\n children = props.children,\n _props$mobile = props.mobile;\n _props$mobile = _props$mobile === void 0 ? {} : _props$mobile;\n var popupClassName = _props$mobile.popupClassName,\n popupStyle = _props$mobile.popupStyle,\n _props$mobile$popupMo = _props$mobile.popupMotion,\n popupMotion = _props$mobile$popupMo === void 0 ? {} : _props$mobile$popupMo,\n popupRender = _props$mobile.popupRender,\n onClick = props.onClick;\n var elementRef = React.useRef(); // ========================= Refs =========================\n\n React.useImperativeHandle(ref, function () {\n return {\n forceAlign: function forceAlign() {},\n getElement: function getElement() {\n return elementRef.current;\n }\n };\n }); // ======================== Render ========================\n\n var mergedStyle = _objectSpread({\n zIndex: zIndex\n }, popupStyle);\n\n var childNode = children; // Wrapper when multiple children\n\n if (React.Children.count(children) > 1) {\n childNode = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-content\")\n }, children);\n } // Mobile support additional render\n\n\n if (popupRender) {\n childNode = popupRender(childNode);\n }\n\n return /*#__PURE__*/React.createElement(CSSMotion, _extends({\n visible: visible,\n ref: elementRef,\n removeOnLeave: true\n }, popupMotion), function (_ref, motionRef) {\n var motionClassName = _ref.className,\n motionStyle = _ref.style;\n var mergedClassName = classNames(prefixCls, popupClassName, motionClassName);\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: motionRef,\n className: mergedClassName,\n onClick: onClick,\n style: _objectSpread(_objectSpread({}, motionStyle), mergedStyle)\n }, childNode);\n });\n});\nMobilePopupInner.displayName = 'MobilePopupInner';\nexport default MobilePopupInner;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"visible\", \"mobile\"];\nimport * as React from 'react';\nimport { useState, useEffect } from 'react';\nimport isMobile from \"rc-util/es/isMobile\";\nimport Mask from \"./Mask\";\nimport PopupInner from \"./PopupInner\";\nimport MobilePopupInner from \"./MobilePopupInner\";\nvar Popup = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var visible = _ref.visible,\n mobile = _ref.mobile,\n props = _objectWithoutProperties(_ref, _excluded);\n\n var _useState = useState(visible),\n _useState2 = _slicedToArray(_useState, 2),\n innerVisible = _useState2[0],\n serInnerVisible = _useState2[1];\n\n var _useState3 = useState(false),\n _useState4 = _slicedToArray(_useState3, 2),\n inMobile = _useState4[0],\n setInMobile = _useState4[1];\n\n var cloneProps = _objectSpread(_objectSpread({}, props), {}, {\n visible: innerVisible\n }); // We check mobile in visible changed here.\n // And this also delay set `innerVisible` to avoid popup component render flash\n\n\n useEffect(function () {\n serInnerVisible(visible);\n\n if (visible && mobile) {\n setInMobile(isMobile());\n }\n }, [visible, mobile]);\n var popupNode = inMobile ? /*#__PURE__*/React.createElement(MobilePopupInner, _extends({}, cloneProps, {\n mobile: mobile,\n ref: ref\n })) : /*#__PURE__*/React.createElement(PopupInner, _extends({}, cloneProps, {\n ref: ref\n })); // We can use fragment directly but this may failed some selector usage. Keep as origin logic\n\n return /*#__PURE__*/React.createElement(\"div\", null, /*#__PURE__*/React.createElement(Mask, cloneProps), popupNode);\n});\nPopup.displayName = 'Popup';\nexport default Popup;","import * as React from 'react';\nvar TriggerContext = /*#__PURE__*/React.createContext(null);\nexport default TriggerContext;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as React from 'react';\nimport ReactDOM from 'react-dom';\nimport raf from \"rc-util/es/raf\";\nimport contains from \"rc-util/es/Dom/contains\";\nimport findDOMNode from \"rc-util/es/Dom/findDOMNode\";\nimport { composeRef, supportRef } from \"rc-util/es/ref\";\nimport addEventListener from \"rc-util/es/Dom/addEventListener\";\nimport Portal from \"rc-util/es/Portal\";\nimport classNames from 'classnames';\nimport { getAlignFromPlacement, getAlignPopupClassName } from \"./utils/alignUtil\";\nimport Popup from \"./Popup\";\nimport TriggerContext from \"./context\";\n\nfunction noop() {}\n\nfunction returnEmptyString() {\n return '';\n}\n\nfunction returnDocument(element) {\n if (element) {\n return element.ownerDocument;\n }\n\n return window.document;\n}\n\nvar ALL_HANDLERS = ['onClick', 'onMouseDown', 'onTouchStart', 'onMouseEnter', 'onMouseLeave', 'onFocus', 'onBlur', 'onContextMenu'];\n\n/**\n * Internal usage. Do not use in your code since this will be removed.\n */\nexport function generateTrigger(PortalComponent) {\n var Trigger = /*#__PURE__*/function (_React$Component) {\n _inherits(Trigger, _React$Component);\n\n var _super = _createSuper(Trigger);\n\n // ensure `getContainer` will be called only once\n function Trigger(props) {\n var _this;\n\n _classCallCheck(this, Trigger);\n\n _this = _super.call(this, props);\n\n _defineProperty(_assertThisInitialized(_this), \"popupRef\", /*#__PURE__*/React.createRef());\n\n _defineProperty(_assertThisInitialized(_this), \"triggerRef\", /*#__PURE__*/React.createRef());\n\n _defineProperty(_assertThisInitialized(_this), \"portalContainer\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"attachId\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"clickOutsideHandler\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"touchOutsideHandler\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"contextMenuOutsideHandler1\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"contextMenuOutsideHandler2\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"mouseDownTimeout\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"focusTime\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"preClickTime\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"preTouchTime\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"delayTimer\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"hasPopupMouseDown\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"onMouseEnter\", function (e) {\n var mouseEnterDelay = _this.props.mouseEnterDelay;\n\n _this.fireEvents('onMouseEnter', e);\n\n _this.delaySetPopupVisible(true, mouseEnterDelay, mouseEnterDelay ? null : e);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onMouseMove\", function (e) {\n _this.fireEvents('onMouseMove', e);\n\n _this.setPoint(e);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onMouseLeave\", function (e) {\n _this.fireEvents('onMouseLeave', e);\n\n _this.delaySetPopupVisible(false, _this.props.mouseLeaveDelay);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onPopupMouseEnter\", function () {\n _this.clearDelayTimer();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onPopupMouseLeave\", function (e) {\n var _this$popupRef$curren;\n\n // https://github.com/react-component/trigger/pull/13\n // react bug?\n if (e.relatedTarget && !e.relatedTarget.setTimeout && contains((_this$popupRef$curren = _this.popupRef.current) === null || _this$popupRef$curren === void 0 ? void 0 : _this$popupRef$curren.getElement(), e.relatedTarget)) {\n return;\n }\n\n _this.delaySetPopupVisible(false, _this.props.mouseLeaveDelay);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onFocus\", function (e) {\n _this.fireEvents('onFocus', e); // incase focusin and focusout\n\n\n _this.clearDelayTimer();\n\n if (_this.isFocusToShow()) {\n _this.focusTime = Date.now();\n\n _this.delaySetPopupVisible(true, _this.props.focusDelay);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onMouseDown\", function (e) {\n _this.fireEvents('onMouseDown', e);\n\n _this.preClickTime = Date.now();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onTouchStart\", function (e) {\n _this.fireEvents('onTouchStart', e);\n\n _this.preTouchTime = Date.now();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onBlur\", function (e) {\n _this.fireEvents('onBlur', e);\n\n _this.clearDelayTimer();\n\n if (_this.isBlurToHide()) {\n _this.delaySetPopupVisible(false, _this.props.blurDelay);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onContextMenu\", function (e) {\n e.preventDefault();\n\n _this.fireEvents('onContextMenu', e);\n\n _this.setPopupVisible(true, e);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onContextMenuClose\", function () {\n if (_this.isContextMenuToShow()) {\n _this.close();\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onClick\", function (event) {\n _this.fireEvents('onClick', event); // focus will trigger click\n\n\n if (_this.focusTime) {\n var preTime;\n\n if (_this.preClickTime && _this.preTouchTime) {\n preTime = Math.min(_this.preClickTime, _this.preTouchTime);\n } else if (_this.preClickTime) {\n preTime = _this.preClickTime;\n } else if (_this.preTouchTime) {\n preTime = _this.preTouchTime;\n }\n\n if (Math.abs(preTime - _this.focusTime) < 20) {\n return;\n }\n\n _this.focusTime = 0;\n }\n\n _this.preClickTime = 0;\n _this.preTouchTime = 0; // Only prevent default when all the action is click.\n // https://github.com/ant-design/ant-design/issues/17043\n // https://github.com/ant-design/ant-design/issues/17291\n\n if (_this.isClickToShow() && (_this.isClickToHide() || _this.isBlurToHide()) && event && event.preventDefault) {\n event.preventDefault();\n }\n\n var nextVisible = !_this.state.popupVisible;\n\n if (_this.isClickToHide() && !nextVisible || nextVisible && _this.isClickToShow()) {\n _this.setPopupVisible(!_this.state.popupVisible, event);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onPopupMouseDown\", function () {\n _this.hasPopupMouseDown = true;\n clearTimeout(_this.mouseDownTimeout);\n _this.mouseDownTimeout = window.setTimeout(function () {\n _this.hasPopupMouseDown = false;\n }, 0);\n\n if (_this.context) {\n var _this$context;\n\n (_this$context = _this.context).onPopupMouseDown.apply(_this$context, arguments);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onDocumentClick\", function (event) {\n if (_this.props.mask && !_this.props.maskClosable) {\n return;\n }\n\n var target = event.target;\n\n var root = _this.getRootDomNode();\n\n var popupNode = _this.getPopupDomNode();\n\n if ( // mousedown on the target should also close popup when action is contextMenu.\n // https://github.com/ant-design/ant-design/issues/29853\n (!contains(root, target) || _this.isContextMenuOnly()) && !contains(popupNode, target) && !_this.hasPopupMouseDown) {\n _this.close();\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getRootDomNode\", function () {\n var getTriggerDOMNode = _this.props.getTriggerDOMNode;\n\n if (getTriggerDOMNode) {\n return getTriggerDOMNode(_this.triggerRef.current);\n }\n\n try {\n var domNode = findDOMNode(_this.triggerRef.current);\n\n if (domNode) {\n return domNode;\n }\n } catch (err) {// Do nothing\n }\n\n return ReactDOM.findDOMNode(_assertThisInitialized(_this));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getPopupClassNameFromAlign\", function (align) {\n var className = [];\n var _this$props = _this.props,\n popupPlacement = _this$props.popupPlacement,\n builtinPlacements = _this$props.builtinPlacements,\n prefixCls = _this$props.prefixCls,\n alignPoint = _this$props.alignPoint,\n getPopupClassNameFromAlign = _this$props.getPopupClassNameFromAlign;\n\n if (popupPlacement && builtinPlacements) {\n className.push(getAlignPopupClassName(builtinPlacements, prefixCls, align, alignPoint));\n }\n\n if (getPopupClassNameFromAlign) {\n className.push(getPopupClassNameFromAlign(align));\n }\n\n return className.join(' ');\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getComponent\", function () {\n var _this$props2 = _this.props,\n prefixCls = _this$props2.prefixCls,\n destroyPopupOnHide = _this$props2.destroyPopupOnHide,\n popupClassName = _this$props2.popupClassName,\n onPopupAlign = _this$props2.onPopupAlign,\n popupMotion = _this$props2.popupMotion,\n popupAnimation = _this$props2.popupAnimation,\n popupTransitionName = _this$props2.popupTransitionName,\n popupStyle = _this$props2.popupStyle,\n mask = _this$props2.mask,\n maskAnimation = _this$props2.maskAnimation,\n maskTransitionName = _this$props2.maskTransitionName,\n maskMotion = _this$props2.maskMotion,\n zIndex = _this$props2.zIndex,\n popup = _this$props2.popup,\n stretch = _this$props2.stretch,\n alignPoint = _this$props2.alignPoint,\n mobile = _this$props2.mobile,\n forceRender = _this$props2.forceRender,\n onPopupClick = _this$props2.onPopupClick;\n var _this$state = _this.state,\n popupVisible = _this$state.popupVisible,\n point = _this$state.point;\n\n var align = _this.getPopupAlign();\n\n var mouseProps = {};\n\n if (_this.isMouseEnterToShow()) {\n mouseProps.onMouseEnter = _this.onPopupMouseEnter;\n }\n\n if (_this.isMouseLeaveToHide()) {\n mouseProps.onMouseLeave = _this.onPopupMouseLeave;\n }\n\n mouseProps.onMouseDown = _this.onPopupMouseDown;\n mouseProps.onTouchStart = _this.onPopupMouseDown;\n return /*#__PURE__*/React.createElement(Popup, _extends({\n prefixCls: prefixCls,\n destroyPopupOnHide: destroyPopupOnHide,\n visible: popupVisible,\n point: alignPoint && point,\n className: popupClassName,\n align: align,\n onAlign: onPopupAlign,\n animation: popupAnimation,\n getClassNameFromAlign: _this.getPopupClassNameFromAlign\n }, mouseProps, {\n stretch: stretch,\n getRootDomNode: _this.getRootDomNode,\n style: popupStyle,\n mask: mask,\n zIndex: zIndex,\n transitionName: popupTransitionName,\n maskAnimation: maskAnimation,\n maskTransitionName: maskTransitionName,\n maskMotion: maskMotion,\n ref: _this.popupRef,\n motion: popupMotion,\n mobile: mobile,\n forceRender: forceRender,\n onClick: onPopupClick\n }), typeof popup === 'function' ? popup() : popup);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"attachParent\", function (popupContainer) {\n raf.cancel(_this.attachId);\n var _this$props3 = _this.props,\n getPopupContainer = _this$props3.getPopupContainer,\n getDocument = _this$props3.getDocument;\n\n var domNode = _this.getRootDomNode();\n\n var mountNode;\n\n if (!getPopupContainer) {\n mountNode = getDocument(_this.getRootDomNode()).body;\n } else if (domNode || getPopupContainer.length === 0) {\n // Compatible for legacy getPopupContainer with domNode argument.\n // If no need `domNode` argument, will call directly.\n // https://codesandbox.io/s/eloquent-mclean-ss93m?file=/src/App.js\n mountNode = getPopupContainer(domNode);\n }\n\n if (mountNode) {\n mountNode.appendChild(popupContainer);\n } else {\n // Retry after frame render in case parent not ready\n _this.attachId = raf(function () {\n _this.attachParent(popupContainer);\n });\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getContainer\", function () {\n if (!_this.portalContainer) {\n // In React.StrictMode component will call render multiple time in first mount.\n // When you want to refactor with FC, useRef will also init multiple time and\n // point to different useRef instance which will create multiple element\n // (This multiple render will not trigger effect so you can not clean up this\n // in effect). But this is safe with class component since it always point to same class instance.\n var getDocument = _this.props.getDocument;\n var popupContainer = getDocument(_this.getRootDomNode()).createElement('div'); // Make sure default popup container will never cause scrollbar appearing\n // https://github.com/react-component/trigger/issues/41\n\n popupContainer.style.position = 'absolute';\n popupContainer.style.top = '0';\n popupContainer.style.left = '0';\n popupContainer.style.width = '100%';\n _this.portalContainer = popupContainer;\n }\n\n _this.attachParent(_this.portalContainer);\n\n return _this.portalContainer;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"setPoint\", function (point) {\n var alignPoint = _this.props.alignPoint;\n if (!alignPoint || !point) return;\n\n _this.setState({\n point: {\n pageX: point.pageX,\n pageY: point.pageY\n }\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handlePortalUpdate\", function () {\n if (_this.state.prevPopupVisible !== _this.state.popupVisible) {\n _this.props.afterPopupVisibleChange(_this.state.popupVisible);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"triggerContextValue\", {\n onPopupMouseDown: _this.onPopupMouseDown\n });\n\n var _popupVisible;\n\n if ('popupVisible' in props) {\n _popupVisible = !!props.popupVisible;\n } else {\n _popupVisible = !!props.defaultPopupVisible;\n }\n\n _this.state = {\n prevPopupVisible: _popupVisible,\n popupVisible: _popupVisible\n };\n ALL_HANDLERS.forEach(function (h) {\n _this[\"fire\".concat(h)] = function (e) {\n _this.fireEvents(h, e);\n };\n });\n return _this;\n }\n\n _createClass(Trigger, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.componentDidUpdate();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n var props = this.props;\n var state = this.state; // We must listen to `mousedown` or `touchstart`, edge case:\n // https://github.com/ant-design/ant-design/issues/5804\n // https://github.com/react-component/calendar/issues/250\n // https://github.com/react-component/trigger/issues/50\n\n if (state.popupVisible) {\n var currentDocument;\n\n if (!this.clickOutsideHandler && (this.isClickToHide() || this.isContextMenuToShow())) {\n currentDocument = props.getDocument(this.getRootDomNode());\n this.clickOutsideHandler = addEventListener(currentDocument, 'mousedown', this.onDocumentClick);\n } // always hide on mobile\n\n\n if (!this.touchOutsideHandler) {\n currentDocument = currentDocument || props.getDocument(this.getRootDomNode());\n this.touchOutsideHandler = addEventListener(currentDocument, 'touchstart', this.onDocumentClick);\n } // close popup when trigger type contains 'onContextMenu' and document is scrolling.\n\n\n if (!this.contextMenuOutsideHandler1 && this.isContextMenuToShow()) {\n currentDocument = currentDocument || props.getDocument(this.getRootDomNode());\n this.contextMenuOutsideHandler1 = addEventListener(currentDocument, 'scroll', this.onContextMenuClose);\n } // close popup when trigger type contains 'onContextMenu' and window is blur.\n\n\n if (!this.contextMenuOutsideHandler2 && this.isContextMenuToShow()) {\n this.contextMenuOutsideHandler2 = addEventListener(window, 'blur', this.onContextMenuClose);\n }\n\n return;\n }\n\n this.clearOutsideHandler();\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.clearDelayTimer();\n this.clearOutsideHandler();\n clearTimeout(this.mouseDownTimeout);\n raf.cancel(this.attachId);\n }\n }, {\n key: \"getPopupDomNode\",\n value: function getPopupDomNode() {\n var _this$popupRef$curren2;\n\n // for test\n return ((_this$popupRef$curren2 = this.popupRef.current) === null || _this$popupRef$curren2 === void 0 ? void 0 : _this$popupRef$curren2.getElement()) || null;\n }\n }, {\n key: \"getPopupAlign\",\n value: function getPopupAlign() {\n var props = this.props;\n var popupPlacement = props.popupPlacement,\n popupAlign = props.popupAlign,\n builtinPlacements = props.builtinPlacements;\n\n if (popupPlacement && builtinPlacements) {\n return getAlignFromPlacement(builtinPlacements, popupPlacement, popupAlign);\n }\n\n return popupAlign;\n }\n }, {\n key: \"setPopupVisible\",\n value:\n /**\n * @param popupVisible Show or not the popup element\n * @param event SyntheticEvent, used for `pointAlign`\n */\n function setPopupVisible(popupVisible, event) {\n var alignPoint = this.props.alignPoint;\n var prevPopupVisible = this.state.popupVisible;\n this.clearDelayTimer();\n\n if (prevPopupVisible !== popupVisible) {\n if (!('popupVisible' in this.props)) {\n this.setState({\n popupVisible: popupVisible,\n prevPopupVisible: prevPopupVisible\n });\n }\n\n this.props.onPopupVisibleChange(popupVisible);\n } // Always record the point position since mouseEnterDelay will delay the show\n\n\n if (alignPoint && event && popupVisible) {\n this.setPoint(event);\n }\n }\n }, {\n key: \"delaySetPopupVisible\",\n value: function delaySetPopupVisible(visible, delayS, event) {\n var _this2 = this;\n\n var delay = delayS * 1000;\n this.clearDelayTimer();\n\n if (delay) {\n var point = event ? {\n pageX: event.pageX,\n pageY: event.pageY\n } : null;\n this.delayTimer = window.setTimeout(function () {\n _this2.setPopupVisible(visible, point);\n\n _this2.clearDelayTimer();\n }, delay);\n } else {\n this.setPopupVisible(visible, event);\n }\n }\n }, {\n key: \"clearDelayTimer\",\n value: function clearDelayTimer() {\n if (this.delayTimer) {\n clearTimeout(this.delayTimer);\n this.delayTimer = null;\n }\n }\n }, {\n key: \"clearOutsideHandler\",\n value: function clearOutsideHandler() {\n if (this.clickOutsideHandler) {\n this.clickOutsideHandler.remove();\n this.clickOutsideHandler = null;\n }\n\n if (this.contextMenuOutsideHandler1) {\n this.contextMenuOutsideHandler1.remove();\n this.contextMenuOutsideHandler1 = null;\n }\n\n if (this.contextMenuOutsideHandler2) {\n this.contextMenuOutsideHandler2.remove();\n this.contextMenuOutsideHandler2 = null;\n }\n\n if (this.touchOutsideHandler) {\n this.touchOutsideHandler.remove();\n this.touchOutsideHandler = null;\n }\n }\n }, {\n key: \"createTwoChains\",\n value: function createTwoChains(event) {\n var childPros = this.props.children.props;\n var props = this.props;\n\n if (childPros[event] && props[event]) {\n return this[\"fire\".concat(event)];\n }\n\n return childPros[event] || props[event];\n }\n }, {\n key: \"isClickToShow\",\n value: function isClickToShow() {\n var _this$props4 = this.props,\n action = _this$props4.action,\n showAction = _this$props4.showAction;\n return action.indexOf('click') !== -1 || showAction.indexOf('click') !== -1;\n }\n }, {\n key: \"isContextMenuOnly\",\n value: function isContextMenuOnly() {\n var action = this.props.action;\n return action === 'contextMenu' || action.length === 1 && action[0] === 'contextMenu';\n }\n }, {\n key: \"isContextMenuToShow\",\n value: function isContextMenuToShow() {\n var _this$props5 = this.props,\n action = _this$props5.action,\n showAction = _this$props5.showAction;\n return action.indexOf('contextMenu') !== -1 || showAction.indexOf('contextMenu') !== -1;\n }\n }, {\n key: \"isClickToHide\",\n value: function isClickToHide() {\n var _this$props6 = this.props,\n action = _this$props6.action,\n hideAction = _this$props6.hideAction;\n return action.indexOf('click') !== -1 || hideAction.indexOf('click') !== -1;\n }\n }, {\n key: \"isMouseEnterToShow\",\n value: function isMouseEnterToShow() {\n var _this$props7 = this.props,\n action = _this$props7.action,\n showAction = _this$props7.showAction;\n return action.indexOf('hover') !== -1 || showAction.indexOf('mouseEnter') !== -1;\n }\n }, {\n key: \"isMouseLeaveToHide\",\n value: function isMouseLeaveToHide() {\n var _this$props8 = this.props,\n action = _this$props8.action,\n hideAction = _this$props8.hideAction;\n return action.indexOf('hover') !== -1 || hideAction.indexOf('mouseLeave') !== -1;\n }\n }, {\n key: \"isFocusToShow\",\n value: function isFocusToShow() {\n var _this$props9 = this.props,\n action = _this$props9.action,\n showAction = _this$props9.showAction;\n return action.indexOf('focus') !== -1 || showAction.indexOf('focus') !== -1;\n }\n }, {\n key: \"isBlurToHide\",\n value: function isBlurToHide() {\n var _this$props10 = this.props,\n action = _this$props10.action,\n hideAction = _this$props10.hideAction;\n return action.indexOf('focus') !== -1 || hideAction.indexOf('blur') !== -1;\n }\n }, {\n key: \"forcePopupAlign\",\n value: function forcePopupAlign() {\n if (this.state.popupVisible) {\n var _this$popupRef$curren3;\n\n (_this$popupRef$curren3 = this.popupRef.current) === null || _this$popupRef$curren3 === void 0 ? void 0 : _this$popupRef$curren3.forceAlign();\n }\n }\n }, {\n key: \"fireEvents\",\n value: function fireEvents(type, e) {\n var childCallback = this.props.children.props[type];\n\n if (childCallback) {\n childCallback(e);\n }\n\n var callback = this.props[type];\n\n if (callback) {\n callback(e);\n }\n }\n }, {\n key: \"close\",\n value: function close() {\n this.setPopupVisible(false);\n }\n }, {\n key: \"render\",\n value: function render() {\n var popupVisible = this.state.popupVisible;\n var _this$props11 = this.props,\n children = _this$props11.children,\n forceRender = _this$props11.forceRender,\n alignPoint = _this$props11.alignPoint,\n className = _this$props11.className,\n autoDestroy = _this$props11.autoDestroy;\n var child = React.Children.only(children);\n var newChildProps = {\n key: 'trigger'\n }; // ============================== Visible Handlers ==============================\n // >>> ContextMenu\n\n if (this.isContextMenuToShow()) {\n newChildProps.onContextMenu = this.onContextMenu;\n } else {\n newChildProps.onContextMenu = this.createTwoChains('onContextMenu');\n } // >>> Click\n\n\n if (this.isClickToHide() || this.isClickToShow()) {\n newChildProps.onClick = this.onClick;\n newChildProps.onMouseDown = this.onMouseDown;\n newChildProps.onTouchStart = this.onTouchStart;\n } else {\n newChildProps.onClick = this.createTwoChains('onClick');\n newChildProps.onMouseDown = this.createTwoChains('onMouseDown');\n newChildProps.onTouchStart = this.createTwoChains('onTouchStart');\n } // >>> Hover(enter)\n\n\n if (this.isMouseEnterToShow()) {\n newChildProps.onMouseEnter = this.onMouseEnter; // Point align\n\n if (alignPoint) {\n newChildProps.onMouseMove = this.onMouseMove;\n }\n } else {\n newChildProps.onMouseEnter = this.createTwoChains('onMouseEnter');\n } // >>> Hover(leave)\n\n\n if (this.isMouseLeaveToHide()) {\n newChildProps.onMouseLeave = this.onMouseLeave;\n } else {\n newChildProps.onMouseLeave = this.createTwoChains('onMouseLeave');\n } // >>> Focus\n\n\n if (this.isFocusToShow() || this.isBlurToHide()) {\n newChildProps.onFocus = this.onFocus;\n newChildProps.onBlur = this.onBlur;\n } else {\n newChildProps.onFocus = this.createTwoChains('onFocus');\n newChildProps.onBlur = this.createTwoChains('onBlur');\n } // =================================== Render ===================================\n\n\n var childrenClassName = classNames(child && child.props && child.props.className, className);\n\n if (childrenClassName) {\n newChildProps.className = childrenClassName;\n }\n\n var cloneProps = _objectSpread({}, newChildProps);\n\n if (supportRef(child)) {\n cloneProps.ref = composeRef(this.triggerRef, child.ref);\n }\n\n var trigger = /*#__PURE__*/React.cloneElement(child, cloneProps);\n var portal; // prevent unmounting after it's rendered\n\n if (popupVisible || this.popupRef.current || forceRender) {\n portal = /*#__PURE__*/React.createElement(PortalComponent, {\n key: \"portal\",\n getContainer: this.getContainer,\n didUpdate: this.handlePortalUpdate\n }, this.getComponent());\n }\n\n if (!popupVisible && autoDestroy) {\n portal = null;\n }\n\n return /*#__PURE__*/React.createElement(TriggerContext.Provider, {\n value: this.triggerContextValue\n }, trigger, portal);\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(_ref, prevState) {\n var popupVisible = _ref.popupVisible;\n var newState = {};\n\n if (popupVisible !== undefined && prevState.popupVisible !== popupVisible) {\n newState.popupVisible = popupVisible;\n newState.prevPopupVisible = prevState.popupVisible;\n }\n\n return newState;\n }\n }]);\n\n return Trigger;\n }(React.Component);\n\n _defineProperty(Trigger, \"contextType\", TriggerContext);\n\n _defineProperty(Trigger, \"defaultProps\", {\n prefixCls: 'rc-trigger-popup',\n getPopupClassNameFromAlign: returnEmptyString,\n getDocument: returnDocument,\n onPopupVisibleChange: noop,\n afterPopupVisibleChange: noop,\n onPopupAlign: noop,\n popupClassName: '',\n mouseEnterDelay: 0,\n mouseLeaveDelay: 0.1,\n focusDelay: 0,\n blurDelay: 0.15,\n popupStyle: {},\n destroyPopupOnHide: false,\n popupAlign: {},\n defaultPopupVisible: false,\n mask: false,\n maskClosable: true,\n action: [],\n showAction: [],\n hideAction: [],\n autoDestroy: false\n });\n\n return Trigger;\n}\nexport default generateTrigger(Portal);","var autoAdjustOverflow = {\n adjustX: 1,\n adjustY: 1\n};\nexport var placements = {\n topLeft: {\n points: ['bl', 'tl'],\n overflow: autoAdjustOverflow,\n offset: [0, -7]\n },\n bottomLeft: {\n points: ['tl', 'bl'],\n overflow: autoAdjustOverflow,\n offset: [0, 7]\n },\n leftTop: {\n points: ['tr', 'tl'],\n overflow: autoAdjustOverflow,\n offset: [-4, 0]\n },\n rightTop: {\n points: ['tl', 'tr'],\n overflow: autoAdjustOverflow,\n offset: [4, 0]\n }\n};\nexport var placementsRtl = {\n topLeft: {\n points: ['bl', 'tl'],\n overflow: autoAdjustOverflow,\n offset: [0, -7]\n },\n bottomLeft: {\n points: ['tl', 'bl'],\n overflow: autoAdjustOverflow,\n offset: [0, 7]\n },\n rightTop: {\n points: ['tr', 'tl'],\n overflow: autoAdjustOverflow,\n offset: [-4, 0]\n },\n leftTop: {\n points: ['tl', 'tr'],\n overflow: autoAdjustOverflow,\n offset: [4, 0]\n }\n};\nexport default placements;","export function getMotion(mode, motion, defaultMotions) {\n if (motion) {\n return motion;\n }\n\n if (defaultMotions) {\n return defaultMotions[mode] || defaultMotions.other;\n }\n\n return undefined;\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport Trigger from 'rc-trigger';\nimport classNames from 'classnames';\nimport raf from \"rc-util/es/raf\";\nimport { MenuContext } from \"../context/MenuContext\";\nimport { placements, placementsRtl } from \"../placements\";\nimport { getMotion } from \"../utils/motionUtil\";\nvar popupPlacementMap = {\n horizontal: 'bottomLeft',\n vertical: 'rightTop',\n 'vertical-left': 'rightTop',\n 'vertical-right': 'leftTop'\n};\nexport default function PopupTrigger(_ref) {\n var prefixCls = _ref.prefixCls,\n visible = _ref.visible,\n children = _ref.children,\n popup = _ref.popup,\n popupClassName = _ref.popupClassName,\n popupOffset = _ref.popupOffset,\n disabled = _ref.disabled,\n mode = _ref.mode,\n onVisibleChange = _ref.onVisibleChange;\n\n var _React$useContext = React.useContext(MenuContext),\n getPopupContainer = _React$useContext.getPopupContainer,\n rtl = _React$useContext.rtl,\n subMenuOpenDelay = _React$useContext.subMenuOpenDelay,\n subMenuCloseDelay = _React$useContext.subMenuCloseDelay,\n builtinPlacements = _React$useContext.builtinPlacements,\n triggerSubMenuAction = _React$useContext.triggerSubMenuAction,\n forceSubMenuRender = _React$useContext.forceSubMenuRender,\n rootClassName = _React$useContext.rootClassName,\n motion = _React$useContext.motion,\n defaultMotions = _React$useContext.defaultMotions;\n\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n innerVisible = _React$useState2[0],\n setInnerVisible = _React$useState2[1];\n\n var placement = rtl ? _objectSpread(_objectSpread({}, placementsRtl), builtinPlacements) : _objectSpread(_objectSpread({}, placements), builtinPlacements);\n var popupPlacement = popupPlacementMap[mode];\n var targetMotion = getMotion(mode, motion, defaultMotions);\n\n var mergedMotion = _objectSpread(_objectSpread({}, targetMotion), {}, {\n leavedClassName: \"\".concat(prefixCls, \"-hidden\"),\n removeOnLeave: false,\n motionAppear: true\n }); // Delay to change visible\n\n\n var visibleRef = React.useRef();\n React.useEffect(function () {\n visibleRef.current = raf(function () {\n setInnerVisible(visible);\n });\n return function () {\n raf.cancel(visibleRef.current);\n };\n }, [visible]);\n return /*#__PURE__*/React.createElement(Trigger, {\n prefixCls: prefixCls,\n popupClassName: classNames(\"\".concat(prefixCls, \"-popup\"), _defineProperty({}, \"\".concat(prefixCls, \"-rtl\"), rtl), popupClassName, rootClassName),\n stretch: mode === 'horizontal' ? 'minWidth' : null,\n getPopupContainer: getPopupContainer,\n builtinPlacements: placement,\n popupPlacement: popupPlacement,\n popupVisible: innerVisible,\n popup: popup,\n popupAlign: popupOffset && {\n offset: popupOffset\n },\n action: disabled ? [] : [triggerSubMenuAction],\n mouseEnterDelay: subMenuOpenDelay,\n mouseLeaveDelay: subMenuCloseDelay,\n onPopupVisibleChange: onVisibleChange,\n forceRender: forceSubMenuRender,\n popupMotion: mergedMotion\n }, children);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport CSSMotion from 'rc-motion';\nimport { getMotion } from \"../utils/motionUtil\";\nimport MenuContextProvider, { MenuContext } from \"../context/MenuContext\";\nimport SubMenuList from \"./SubMenuList\";\nexport default function InlineSubMenuList(_ref) {\n var id = _ref.id,\n open = _ref.open,\n keyPath = _ref.keyPath,\n children = _ref.children;\n var fixedMode = 'inline';\n\n var _React$useContext = React.useContext(MenuContext),\n prefixCls = _React$useContext.prefixCls,\n forceSubMenuRender = _React$useContext.forceSubMenuRender,\n motion = _React$useContext.motion,\n defaultMotions = _React$useContext.defaultMotions,\n mode = _React$useContext.mode; // Always use latest mode check\n\n\n var sameModeRef = React.useRef(false);\n sameModeRef.current = mode === fixedMode; // We record `destroy` mark here since when mode change from `inline` to others.\n // The inline list should remove when motion end.\n\n var _React$useState = React.useState(!sameModeRef.current),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n destroy = _React$useState2[0],\n setDestroy = _React$useState2[1];\n\n var mergedOpen = sameModeRef.current ? open : false; // ================================= Effect =================================\n // Reset destroy state when mode change back\n\n React.useEffect(function () {\n if (sameModeRef.current) {\n setDestroy(false);\n }\n }, [mode]); // ================================= Render =================================\n\n var mergedMotion = _objectSpread({}, getMotion(fixedMode, motion, defaultMotions)); // No need appear since nest inlineCollapse changed\n\n\n if (keyPath.length > 1) {\n mergedMotion.motionAppear = false;\n } // Hide inline list when mode changed and motion end\n\n\n var originOnVisibleChanged = mergedMotion.onVisibleChanged;\n\n mergedMotion.onVisibleChanged = function (newVisible) {\n if (!sameModeRef.current && !newVisible) {\n setDestroy(true);\n }\n\n return originOnVisibleChanged === null || originOnVisibleChanged === void 0 ? void 0 : originOnVisibleChanged(newVisible);\n };\n\n if (destroy) {\n return null;\n }\n\n return /*#__PURE__*/React.createElement(MenuContextProvider, {\n mode: fixedMode,\n locked: !sameModeRef.current\n }, /*#__PURE__*/React.createElement(CSSMotion, _extends({\n visible: mergedOpen\n }, mergedMotion, {\n forceRender: forceSubMenuRender,\n removeOnLeave: false,\n leavedClassName: \"\".concat(prefixCls, \"-hidden\")\n }), function (_ref2) {\n var motionClassName = _ref2.className,\n motionStyle = _ref2.style;\n return /*#__PURE__*/React.createElement(SubMenuList, {\n id: id,\n className: motionClassName,\n style: motionStyle\n }, children);\n }));\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"style\", \"className\", \"title\", \"eventKey\", \"warnKey\", \"disabled\", \"internalPopupClose\", \"children\", \"itemIcon\", \"expandIcon\", \"popupClassName\", \"popupOffset\", \"onClick\", \"onMouseEnter\", \"onMouseLeave\", \"onTitleClick\", \"onTitleMouseEnter\", \"onTitleMouseLeave\"],\n _excluded2 = [\"active\"];\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport Overflow from 'rc-overflow';\nimport warning from \"rc-util/es/warning\";\nimport SubMenuList from \"./SubMenuList\";\nimport { parseChildren } from \"../utils/nodeUtil\";\nimport MenuContextProvider, { MenuContext } from \"../context/MenuContext\";\nimport useMemoCallback from \"../hooks/useMemoCallback\";\nimport PopupTrigger from \"./PopupTrigger\";\nimport Icon from \"../Icon\";\nimport useActive from \"../hooks/useActive\";\nimport { warnItemProp } from \"../utils/warnUtil\";\nimport useDirectionStyle from \"../hooks/useDirectionStyle\";\nimport InlineSubMenuList from \"./InlineSubMenuList\";\nimport { PathTrackerContext, PathUserContext, useFullPath, useMeasure } from \"../context/PathContext\";\nimport { useMenuId } from \"../context/IdContext\";\nimport PrivateContext from \"../context/PrivateContext\";\n\nvar InternalSubMenu = function InternalSubMenu(props) {\n var _classNames;\n\n var style = props.style,\n className = props.className,\n title = props.title,\n eventKey = props.eventKey,\n warnKey = props.warnKey,\n disabled = props.disabled,\n internalPopupClose = props.internalPopupClose,\n children = props.children,\n itemIcon = props.itemIcon,\n expandIcon = props.expandIcon,\n popupClassName = props.popupClassName,\n popupOffset = props.popupOffset,\n onClick = props.onClick,\n onMouseEnter = props.onMouseEnter,\n onMouseLeave = props.onMouseLeave,\n onTitleClick = props.onTitleClick,\n onTitleMouseEnter = props.onTitleMouseEnter,\n onTitleMouseLeave = props.onTitleMouseLeave,\n restProps = _objectWithoutProperties(props, _excluded);\n\n var domDataId = useMenuId(eventKey);\n\n var _React$useContext = React.useContext(MenuContext),\n prefixCls = _React$useContext.prefixCls,\n mode = _React$useContext.mode,\n openKeys = _React$useContext.openKeys,\n contextDisabled = _React$useContext.disabled,\n overflowDisabled = _React$useContext.overflowDisabled,\n activeKey = _React$useContext.activeKey,\n selectedKeys = _React$useContext.selectedKeys,\n contextItemIcon = _React$useContext.itemIcon,\n contextExpandIcon = _React$useContext.expandIcon,\n onItemClick = _React$useContext.onItemClick,\n onOpenChange = _React$useContext.onOpenChange,\n onActive = _React$useContext.onActive;\n\n var _React$useContext2 = React.useContext(PrivateContext),\n _internalRenderSubMenuItem = _React$useContext2._internalRenderSubMenuItem;\n\n var _React$useContext3 = React.useContext(PathUserContext),\n isSubPathKey = _React$useContext3.isSubPathKey;\n\n var connectedPath = useFullPath();\n var subMenuPrefixCls = \"\".concat(prefixCls, \"-submenu\");\n var mergedDisabled = contextDisabled || disabled;\n var elementRef = React.useRef();\n var popupRef = React.useRef(); // ================================ Warn ================================\n\n if (process.env.NODE_ENV !== 'production' && warnKey) {\n warning(false, 'SubMenu should not leave undefined `key`.');\n } // ================================ Icon ================================\n\n\n var mergedItemIcon = itemIcon || contextItemIcon;\n var mergedExpandIcon = expandIcon || contextExpandIcon; // ================================ Open ================================\n\n var originOpen = openKeys.includes(eventKey);\n var open = !overflowDisabled && originOpen; // =============================== Select ===============================\n\n var childrenSelected = isSubPathKey(selectedKeys, eventKey); // =============================== Active ===============================\n\n var _useActive = useActive(eventKey, mergedDisabled, onTitleMouseEnter, onTitleMouseLeave),\n active = _useActive.active,\n activeProps = _objectWithoutProperties(_useActive, _excluded2); // Fallback of active check to avoid hover on menu title or disabled item\n\n\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n childrenActive = _React$useState2[0],\n setChildrenActive = _React$useState2[1];\n\n var triggerChildrenActive = function triggerChildrenActive(newActive) {\n if (!mergedDisabled) {\n setChildrenActive(newActive);\n }\n };\n\n var onInternalMouseEnter = function onInternalMouseEnter(domEvent) {\n triggerChildrenActive(true);\n onMouseEnter === null || onMouseEnter === void 0 ? void 0 : onMouseEnter({\n key: eventKey,\n domEvent: domEvent\n });\n };\n\n var onInternalMouseLeave = function onInternalMouseLeave(domEvent) {\n triggerChildrenActive(false);\n onMouseLeave === null || onMouseLeave === void 0 ? void 0 : onMouseLeave({\n key: eventKey,\n domEvent: domEvent\n });\n };\n\n var mergedActive = React.useMemo(function () {\n if (active) {\n return active;\n }\n\n if (mode !== 'inline') {\n return childrenActive || isSubPathKey([activeKey], eventKey);\n }\n\n return false;\n }, [mode, active, activeKey, childrenActive, eventKey, isSubPathKey]); // ========================== DirectionStyle ==========================\n\n var directionStyle = useDirectionStyle(connectedPath.length); // =============================== Events ===============================\n // >>>> Title click\n\n var onInternalTitleClick = function onInternalTitleClick(e) {\n // Skip if disabled\n if (mergedDisabled) {\n return;\n }\n\n onTitleClick === null || onTitleClick === void 0 ? void 0 : onTitleClick({\n key: eventKey,\n domEvent: e\n }); // Trigger open by click when mode is `inline`\n\n if (mode === 'inline') {\n onOpenChange(eventKey, !originOpen);\n }\n }; // >>>> Context for children click\n\n\n var onMergedItemClick = useMemoCallback(function (info) {\n onClick === null || onClick === void 0 ? void 0 : onClick(warnItemProp(info));\n onItemClick(info);\n }); // >>>>> Visible change\n\n var onPopupVisibleChange = function onPopupVisibleChange(newVisible) {\n if (mode !== 'inline') {\n onOpenChange(eventKey, newVisible);\n }\n };\n /**\n * Used for accessibility. Helper will focus element without key board.\n * We should manually trigger an active\n */\n\n\n var onInternalFocus = function onInternalFocus() {\n onActive(eventKey);\n }; // =============================== Render ===============================\n\n\n var popupId = domDataId && \"\".concat(domDataId, \"-popup\"); // >>>>> Title\n\n var titleNode = /*#__PURE__*/React.createElement(\"div\", _extends({\n role: \"menuitem\",\n style: directionStyle,\n className: \"\".concat(subMenuPrefixCls, \"-title\"),\n tabIndex: mergedDisabled ? null : -1,\n ref: elementRef,\n title: typeof title === 'string' ? title : null,\n \"data-menu-id\": overflowDisabled && domDataId ? null : domDataId,\n \"aria-expanded\": open,\n \"aria-haspopup\": true,\n \"aria-controls\": popupId,\n \"aria-disabled\": mergedDisabled,\n onClick: onInternalTitleClick,\n onFocus: onInternalFocus\n }, activeProps), title, /*#__PURE__*/React.createElement(Icon, {\n icon: mode !== 'horizontal' ? mergedExpandIcon : null,\n props: _objectSpread(_objectSpread({}, props), {}, {\n isOpen: open,\n // [Legacy] Not sure why need this mark\n isSubMenu: true\n })\n }, /*#__PURE__*/React.createElement(\"i\", {\n className: \"\".concat(subMenuPrefixCls, \"-arrow\")\n }))); // Cache mode if it change to `inline` which do not have popup motion\n\n var triggerModeRef = React.useRef(mode);\n\n if (mode !== 'inline' && connectedPath.length > 1) {\n triggerModeRef.current = 'vertical';\n } else {\n triggerModeRef.current = mode;\n }\n\n if (!overflowDisabled) {\n var triggerMode = triggerModeRef.current; // Still wrap with Trigger here since we need avoid react re-mount dom node\n // Which makes motion failed\n\n titleNode = /*#__PURE__*/React.createElement(PopupTrigger, {\n mode: triggerMode,\n prefixCls: subMenuPrefixCls,\n visible: !internalPopupClose && open && mode !== 'inline',\n popupClassName: popupClassName,\n popupOffset: popupOffset,\n popup: /*#__PURE__*/React.createElement(MenuContextProvider // Special handle of horizontal mode\n , {\n mode: triggerMode === 'horizontal' ? 'vertical' : triggerMode\n }, /*#__PURE__*/React.createElement(SubMenuList, {\n id: popupId,\n ref: popupRef\n }, children)),\n disabled: mergedDisabled,\n onVisibleChange: onPopupVisibleChange\n }, titleNode);\n } // >>>>> List node\n\n\n var listNode = /*#__PURE__*/React.createElement(Overflow.Item, _extends({\n role: \"none\"\n }, restProps, {\n component: \"li\",\n style: style,\n className: classNames(subMenuPrefixCls, \"\".concat(subMenuPrefixCls, \"-\").concat(mode), className, (_classNames = {}, _defineProperty(_classNames, \"\".concat(subMenuPrefixCls, \"-open\"), open), _defineProperty(_classNames, \"\".concat(subMenuPrefixCls, \"-active\"), mergedActive), _defineProperty(_classNames, \"\".concat(subMenuPrefixCls, \"-selected\"), childrenSelected), _defineProperty(_classNames, \"\".concat(subMenuPrefixCls, \"-disabled\"), mergedDisabled), _classNames)),\n onMouseEnter: onInternalMouseEnter,\n onMouseLeave: onInternalMouseLeave\n }), titleNode, !overflowDisabled && /*#__PURE__*/React.createElement(InlineSubMenuList, {\n id: popupId,\n open: open,\n keyPath: connectedPath\n }, children));\n\n if (_internalRenderSubMenuItem) {\n listNode = _internalRenderSubMenuItem(listNode, props, {\n selected: childrenSelected,\n active: mergedActive,\n open: open,\n disabled: mergedDisabled\n });\n } // >>>>> Render\n\n\n return /*#__PURE__*/React.createElement(MenuContextProvider, {\n onItemClick: onMergedItemClick,\n mode: mode === 'horizontal' ? 'vertical' : mode,\n itemIcon: mergedItemIcon,\n expandIcon: mergedExpandIcon\n }, listNode);\n};\n\nexport default function SubMenu(props) {\n var eventKey = props.eventKey,\n children = props.children;\n var connectedKeyPath = useFullPath(eventKey);\n var childList = parseChildren(children, connectedKeyPath); // ==================== Record KeyPath ====================\n\n var measure = useMeasure(); // eslint-disable-next-line consistent-return\n\n React.useEffect(function () {\n if (measure) {\n measure.registerPath(eventKey, connectedKeyPath);\n return function () {\n measure.unregisterPath(eventKey, connectedKeyPath);\n };\n }\n }, [connectedKeyPath]);\n var renderNode; // ======================== Render ========================\n\n if (measure) {\n renderNode = childList;\n } else {\n renderNode = /*#__PURE__*/React.createElement(InternalSubMenu, props, childList);\n }\n\n return /*#__PURE__*/React.createElement(PathTrackerContext.Provider, {\n value: connectedKeyPath\n }, renderNode);\n}","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport isVisible from './isVisible';\nfunction focusable(node) {\n var includePositive = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n if (isVisible(node)) {\n var nodeName = node.nodeName.toLowerCase();\n var isFocusableElement =\n // Focusable element\n ['input', 'select', 'textarea', 'button'].includes(nodeName) ||\n // Editable element\n node.isContentEditable ||\n // Anchor with href element\n nodeName === 'a' && !!node.getAttribute('href');\n // Get tabIndex\n var tabIndexAttr = node.getAttribute('tabindex');\n var tabIndexNum = Number(tabIndexAttr);\n // Parse as number if validate\n var tabIndex = null;\n if (tabIndexAttr && !Number.isNaN(tabIndexNum)) {\n tabIndex = tabIndexNum;\n } else if (isFocusableElement && tabIndex === null) {\n tabIndex = 0;\n }\n // Block focusable if disabled\n if (isFocusableElement && node.disabled) {\n tabIndex = null;\n }\n return tabIndex !== null && (tabIndex >= 0 || includePositive && tabIndex < 0);\n }\n return false;\n}\nexport function getFocusNodeList(node) {\n var includePositive = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var res = _toConsumableArray(node.querySelectorAll('*')).filter(function (child) {\n return focusable(child, includePositive);\n });\n if (focusable(node, includePositive)) {\n res.unshift(node);\n }\n return res;\n}\nvar lastFocusElement = null;\n/** @deprecated Do not use since this may failed when used in async */\nexport function saveLastFocusNode() {\n lastFocusElement = document.activeElement;\n}\n/** @deprecated Do not use since this may failed when used in async */\nexport function clearLastFocusNode() {\n lastFocusElement = null;\n}\n/** @deprecated Do not use since this may failed when used in async */\nexport function backLastFocusNode() {\n if (lastFocusElement) {\n try {\n // 元素可能已经被移动了\n lastFocusElement.focus();\n /* eslint-disable no-empty */\n } catch (e) {\n // empty\n }\n /* eslint-enable no-empty */\n }\n}\n\nexport function limitTabRange(node, e) {\n if (e.keyCode === 9) {\n var tabNodeList = getFocusNodeList(node);\n var lastTabNode = tabNodeList[e.shiftKey ? 0 : tabNodeList.length - 1];\n var leavingTab = lastTabNode === document.activeElement || node === document.activeElement;\n if (leavingTab) {\n var target = tabNodeList[e.shiftKey ? tabNodeList.length - 1 : 0];\n target.focus();\n e.preventDefault();\n }\n }\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as React from 'react';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport raf from \"rc-util/es/raf\";\nimport { getFocusNodeList } from \"rc-util/es/Dom/focus\";\nimport { getMenuId } from \"../context/IdContext\"; // destruct to reduce minify size\n\nvar LEFT = KeyCode.LEFT,\n RIGHT = KeyCode.RIGHT,\n UP = KeyCode.UP,\n DOWN = KeyCode.DOWN,\n ENTER = KeyCode.ENTER,\n ESC = KeyCode.ESC,\n HOME = KeyCode.HOME,\n END = KeyCode.END;\nvar ArrowKeys = [UP, DOWN, LEFT, RIGHT];\n\nfunction getOffset(mode, isRootLevel, isRtl, which) {\n var _inline, _horizontal, _vertical, _offsets;\n\n var prev = 'prev';\n var next = 'next';\n var children = 'children';\n var parent = 'parent'; // Inline enter is special that we use unique operation\n\n if (mode === 'inline' && which === ENTER) {\n return {\n inlineTrigger: true\n };\n }\n\n var inline = (_inline = {}, _defineProperty(_inline, UP, prev), _defineProperty(_inline, DOWN, next), _inline);\n var horizontal = (_horizontal = {}, _defineProperty(_horizontal, LEFT, isRtl ? next : prev), _defineProperty(_horizontal, RIGHT, isRtl ? prev : next), _defineProperty(_horizontal, DOWN, children), _defineProperty(_horizontal, ENTER, children), _horizontal);\n var vertical = (_vertical = {}, _defineProperty(_vertical, UP, prev), _defineProperty(_vertical, DOWN, next), _defineProperty(_vertical, ENTER, children), _defineProperty(_vertical, ESC, parent), _defineProperty(_vertical, LEFT, isRtl ? children : parent), _defineProperty(_vertical, RIGHT, isRtl ? parent : children), _vertical);\n var offsets = {\n inline: inline,\n horizontal: horizontal,\n vertical: vertical,\n inlineSub: inline,\n horizontalSub: vertical,\n verticalSub: vertical\n };\n var type = (_offsets = offsets[\"\".concat(mode).concat(isRootLevel ? '' : 'Sub')]) === null || _offsets === void 0 ? void 0 : _offsets[which];\n\n switch (type) {\n case prev:\n return {\n offset: -1,\n sibling: true\n };\n\n case next:\n return {\n offset: 1,\n sibling: true\n };\n\n case parent:\n return {\n offset: -1,\n sibling: false\n };\n\n case children:\n return {\n offset: 1,\n sibling: false\n };\n\n default:\n return null;\n }\n}\n\nfunction findContainerUL(element) {\n var current = element;\n\n while (current) {\n if (current.getAttribute('data-menu-list')) {\n return current;\n }\n\n current = current.parentElement;\n } // Normally should not reach this line\n\n /* istanbul ignore next */\n\n\n return null;\n}\n/**\n * Find focused element within element set provided\n */\n\n\nfunction getFocusElement(activeElement, elements) {\n var current = activeElement || document.activeElement;\n\n while (current) {\n if (elements.has(current)) {\n return current;\n }\n\n current = current.parentElement;\n }\n\n return null;\n}\n/**\n * Get focusable elements from the element set under provided container\n */\n\n\nfunction getFocusableElements(container, elements) {\n var list = getFocusNodeList(container, true);\n return list.filter(function (ele) {\n return elements.has(ele);\n });\n}\n\nfunction getNextFocusElement(parentQueryContainer, elements, focusMenuElement) {\n var offset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;\n\n // Key on the menu item will not get validate parent container\n if (!parentQueryContainer) {\n return null;\n } // List current level menu item elements\n\n\n var sameLevelFocusableMenuElementList = getFocusableElements(parentQueryContainer, elements); // Find next focus index\n\n var count = sameLevelFocusableMenuElementList.length;\n var focusIndex = sameLevelFocusableMenuElementList.findIndex(function (ele) {\n return focusMenuElement === ele;\n });\n\n if (offset < 0) {\n if (focusIndex === -1) {\n focusIndex = count - 1;\n } else {\n focusIndex -= 1;\n }\n } else if (offset > 0) {\n focusIndex += 1;\n }\n\n focusIndex = (focusIndex + count) % count; // Focus menu item\n\n return sameLevelFocusableMenuElementList[focusIndex];\n}\n\nexport default function useAccessibility(mode, activeKey, isRtl, id, containerRef, getKeys, getKeyPath, triggerActiveKey, triggerAccessibilityOpen, originOnKeyDown) {\n var rafRef = React.useRef();\n var activeRef = React.useRef();\n activeRef.current = activeKey;\n\n var cleanRaf = function cleanRaf() {\n raf.cancel(rafRef.current);\n };\n\n React.useEffect(function () {\n return function () {\n cleanRaf();\n };\n }, []);\n return function (e) {\n var which = e.which;\n\n if ([].concat(ArrowKeys, [ENTER, ESC, HOME, END]).includes(which)) {\n // Convert key to elements\n var elements;\n var key2element;\n var element2key; // >>> Wrap as function since we use raf for some case\n\n var refreshElements = function refreshElements() {\n elements = new Set();\n key2element = new Map();\n element2key = new Map();\n var keys = getKeys();\n keys.forEach(function (key) {\n var element = document.querySelector(\"[data-menu-id='\".concat(getMenuId(id, key), \"']\"));\n\n if (element) {\n elements.add(element);\n element2key.set(element, key);\n key2element.set(key, element);\n }\n });\n return elements;\n };\n\n refreshElements(); // First we should find current focused MenuItem/SubMenu element\n\n var activeElement = key2element.get(activeKey);\n var focusMenuElement = getFocusElement(activeElement, elements);\n var focusMenuKey = element2key.get(focusMenuElement);\n var offsetObj = getOffset(mode, getKeyPath(focusMenuKey, true).length === 1, isRtl, which); // Some mode do not have fully arrow operation like inline\n\n if (!offsetObj && which !== HOME && which !== END) {\n return;\n } // Arrow prevent default to avoid page scroll\n\n\n if (ArrowKeys.includes(which) || [HOME, END].includes(which)) {\n e.preventDefault();\n }\n\n var tryFocus = function tryFocus(menuElement) {\n if (menuElement) {\n var focusTargetElement = menuElement; // Focus to link instead of menu item if possible\n\n var link = menuElement.querySelector('a');\n\n if (link !== null && link !== void 0 && link.getAttribute('href')) {\n focusTargetElement = link;\n }\n\n var targetKey = element2key.get(menuElement);\n triggerActiveKey(targetKey);\n /**\n * Do not `useEffect` here since `tryFocus` may trigger async\n * which makes React sync update the `activeKey`\n * that force render before `useRef` set the next activeKey\n */\n\n cleanRaf();\n rafRef.current = raf(function () {\n if (activeRef.current === targetKey) {\n focusTargetElement.focus();\n }\n });\n }\n };\n\n if ([HOME, END].includes(which) || offsetObj.sibling || !focusMenuElement) {\n // ========================== Sibling ==========================\n // Find walkable focus menu element container\n var parentQueryContainer;\n\n if (!focusMenuElement || mode === 'inline') {\n parentQueryContainer = containerRef.current;\n } else {\n parentQueryContainer = findContainerUL(focusMenuElement);\n } // Get next focus element\n\n\n var targetElement;\n var focusableElements = getFocusableElements(parentQueryContainer, elements);\n\n if (which === HOME) {\n targetElement = focusableElements[0];\n } else if (which === END) {\n targetElement = focusableElements[focusableElements.length - 1];\n } else {\n targetElement = getNextFocusElement(parentQueryContainer, elements, focusMenuElement, offsetObj.offset);\n } // Focus menu item\n\n\n tryFocus(targetElement); // ======================= InlineTrigger =======================\n } else if (offsetObj.inlineTrigger) {\n // Inline trigger no need switch to sub menu item\n triggerAccessibilityOpen(focusMenuKey); // =========================== Level ===========================\n } else if (offsetObj.offset > 0) {\n triggerAccessibilityOpen(focusMenuKey, true);\n cleanRaf();\n rafRef.current = raf(function () {\n // Async should resync elements\n refreshElements();\n var controlId = focusMenuElement.getAttribute('aria-controls');\n var subQueryContainer = document.getElementById(controlId); // Get sub focusable menu item\n\n var targetElement = getNextFocusElement(subQueryContainer, elements); // Focus menu item\n\n tryFocus(targetElement);\n }, 5);\n } else if (offsetObj.offset < 0) {\n var keyPath = getKeyPath(focusMenuKey, true);\n var parentKey = keyPath[keyPath.length - 2];\n var parentMenuElement = key2element.get(parentKey); // Focus menu item\n\n triggerAccessibilityOpen(parentKey, false);\n tryFocus(parentMenuElement);\n }\n } // Pass origin key down event\n\n\n originOnKeyDown === null || originOnKeyDown === void 0 ? void 0 : originOnKeyDown(e);\n };\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nvar uniquePrefix = Math.random().toFixed(5).toString().slice(2);\nvar internalId = 0;\nexport default function useUUID(id) {\n var _useMergedState = useMergedState(id, {\n value: id\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n uuid = _useMergedState2[0],\n setUUID = _useMergedState2[1];\n\n React.useEffect(function () {\n internalId += 1;\n var newId = process.env.NODE_ENV === 'test' ? 'test' : \"\".concat(uniquePrefix, \"-\").concat(internalId);\n setUUID(\"rc-menu-uuid-\".concat(newId));\n }, []);\n return uuid;\n}","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { useRef, useCallback } from 'react';\nimport warning from \"rc-util/es/warning\";\nimport { nextSlice } from \"../utils/timeUtil\";\nvar PATH_SPLIT = '__RC_UTIL_PATH_SPLIT__';\n\nvar getPathStr = function getPathStr(keyPath) {\n return keyPath.join(PATH_SPLIT);\n};\n\nvar getPathKeys = function getPathKeys(keyPathStr) {\n return keyPathStr.split(PATH_SPLIT);\n};\n\nexport var OVERFLOW_KEY = 'rc-menu-more';\nexport default function useKeyRecords() {\n var _React$useState = React.useState({}),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n internalForceUpdate = _React$useState2[1];\n\n var key2pathRef = useRef(new Map());\n var path2keyRef = useRef(new Map());\n\n var _React$useState3 = React.useState([]),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n overflowKeys = _React$useState4[0],\n setOverflowKeys = _React$useState4[1];\n\n var updateRef = useRef(0);\n var destroyRef = useRef(false);\n\n var forceUpdate = function forceUpdate() {\n if (!destroyRef.current) {\n internalForceUpdate({});\n }\n };\n\n var registerPath = useCallback(function (key, keyPath) {\n // Warning for invalidate or duplicated `key`\n if (process.env.NODE_ENV !== 'production') {\n warning(!key2pathRef.current.has(key), \"Duplicated key '\".concat(key, \"' used in Menu by path [\").concat(keyPath.join(' > '), \"]\"));\n } // Fill map\n\n\n var connectedPath = getPathStr(keyPath);\n path2keyRef.current.set(connectedPath, key);\n key2pathRef.current.set(key, connectedPath);\n updateRef.current += 1;\n var id = updateRef.current;\n nextSlice(function () {\n if (id === updateRef.current) {\n forceUpdate();\n }\n });\n }, []);\n var unregisterPath = useCallback(function (key, keyPath) {\n var connectedPath = getPathStr(keyPath);\n path2keyRef.current.delete(connectedPath);\n key2pathRef.current.delete(key);\n }, []);\n var refreshOverflowKeys = useCallback(function (keys) {\n setOverflowKeys(keys);\n }, []);\n var getKeyPath = useCallback(function (eventKey, includeOverflow) {\n var fullPath = key2pathRef.current.get(eventKey) || '';\n var keys = getPathKeys(fullPath);\n\n if (includeOverflow && overflowKeys.includes(keys[0])) {\n keys.unshift(OVERFLOW_KEY);\n }\n\n return keys;\n }, [overflowKeys]);\n var isSubPathKey = useCallback(function (pathKeys, eventKey) {\n return pathKeys.some(function (pathKey) {\n var pathKeyList = getKeyPath(pathKey, true);\n return pathKeyList.includes(eventKey);\n });\n }, [getKeyPath]);\n\n var getKeys = function getKeys() {\n var keys = _toConsumableArray(key2pathRef.current.keys());\n\n if (overflowKeys.length) {\n keys.push(OVERFLOW_KEY);\n }\n\n return keys;\n };\n /**\n * Find current key related child path keys\n */\n\n\n var getSubPathKeys = useCallback(function (key) {\n var connectedPath = \"\".concat(key2pathRef.current.get(key)).concat(PATH_SPLIT);\n var pathKeys = new Set();\n\n _toConsumableArray(path2keyRef.current.keys()).forEach(function (pathKey) {\n if (pathKey.startsWith(connectedPath)) {\n pathKeys.add(path2keyRef.current.get(pathKey));\n }\n });\n\n return pathKeys;\n }, []);\n React.useEffect(function () {\n return function () {\n destroyRef.current = true;\n };\n }, []);\n return {\n // Register\n registerPath: registerPath,\n unregisterPath: unregisterPath,\n refreshOverflowKeys: refreshOverflowKeys,\n // Util\n isSubPathKey: isSubPathKey,\n getKeyPath: getKeyPath,\n getKeys: getKeys,\n getSubPathKeys: getSubPathKeys\n };\n}","export function nextSlice(callback) {\n /* istanbul ignore next */\n Promise.resolve().then(callback);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"rootClassName\", \"style\", \"className\", \"tabIndex\", \"items\", \"children\", \"direction\", \"id\", \"mode\", \"inlineCollapsed\", \"disabled\", \"disabledOverflow\", \"subMenuOpenDelay\", \"subMenuCloseDelay\", \"forceSubMenuRender\", \"defaultOpenKeys\", \"openKeys\", \"activeKey\", \"defaultActiveFirst\", \"selectable\", \"multiple\", \"defaultSelectedKeys\", \"selectedKeys\", \"onSelect\", \"onDeselect\", \"inlineIndent\", \"motion\", \"defaultMotions\", \"triggerSubMenuAction\", \"builtinPlacements\", \"itemIcon\", \"expandIcon\", \"overflowedIndicator\", \"overflowedIndicatorPopupClassName\", \"getPopupContainer\", \"onClick\", \"onOpenChange\", \"onKeyDown\", \"openAnimation\", \"openTransitionName\", \"_internalRenderMenuItem\", \"_internalRenderSubMenuItem\"];\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport shallowEqual from 'shallowequal';\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport warning from \"rc-util/es/warning\";\nimport Overflow from 'rc-overflow';\nimport MenuItem from \"./MenuItem\";\nimport { parseItems } from \"./utils/nodeUtil\";\nimport MenuContextProvider from \"./context/MenuContext\";\nimport useMemoCallback from \"./hooks/useMemoCallback\";\nimport { warnItemProp } from \"./utils/warnUtil\";\nimport SubMenu from \"./SubMenu\";\nimport useAccessibility from \"./hooks/useAccessibility\";\nimport useUUID from \"./hooks/useUUID\";\nimport { PathRegisterContext, PathUserContext } from \"./context/PathContext\";\nimport useKeyRecords, { OVERFLOW_KEY } from \"./hooks/useKeyRecords\";\nimport { getMenuId, IdContext } from \"./context/IdContext\";\nimport PrivateContext from \"./context/PrivateContext\";\nimport { useImperativeHandle } from 'react';\n/**\n * Menu modify after refactor:\n * ## Add\n * - disabled\n *\n * ## Remove\n * - openTransitionName\n * - openAnimation\n * - onDestroy\n * - siderCollapsed: Seems antd do not use this prop (Need test in antd)\n * - collapsedWidth: Seems this logic should be handle by antd Layout.Sider\n */\n// optimize for render\n\nvar EMPTY_LIST = [];\nvar Menu = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _childList$, _classNames;\n\n var _ref = props,\n _ref$prefixCls = _ref.prefixCls,\n prefixCls = _ref$prefixCls === void 0 ? 'rc-menu' : _ref$prefixCls,\n rootClassName = _ref.rootClassName,\n style = _ref.style,\n className = _ref.className,\n _ref$tabIndex = _ref.tabIndex,\n tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex,\n items = _ref.items,\n children = _ref.children,\n direction = _ref.direction,\n id = _ref.id,\n _ref$mode = _ref.mode,\n mode = _ref$mode === void 0 ? 'vertical' : _ref$mode,\n inlineCollapsed = _ref.inlineCollapsed,\n disabled = _ref.disabled,\n disabledOverflow = _ref.disabledOverflow,\n _ref$subMenuOpenDelay = _ref.subMenuOpenDelay,\n subMenuOpenDelay = _ref$subMenuOpenDelay === void 0 ? 0.1 : _ref$subMenuOpenDelay,\n _ref$subMenuCloseDela = _ref.subMenuCloseDelay,\n subMenuCloseDelay = _ref$subMenuCloseDela === void 0 ? 0.1 : _ref$subMenuCloseDela,\n forceSubMenuRender = _ref.forceSubMenuRender,\n defaultOpenKeys = _ref.defaultOpenKeys,\n openKeys = _ref.openKeys,\n activeKey = _ref.activeKey,\n defaultActiveFirst = _ref.defaultActiveFirst,\n _ref$selectable = _ref.selectable,\n selectable = _ref$selectable === void 0 ? true : _ref$selectable,\n _ref$multiple = _ref.multiple,\n multiple = _ref$multiple === void 0 ? false : _ref$multiple,\n defaultSelectedKeys = _ref.defaultSelectedKeys,\n selectedKeys = _ref.selectedKeys,\n onSelect = _ref.onSelect,\n onDeselect = _ref.onDeselect,\n _ref$inlineIndent = _ref.inlineIndent,\n inlineIndent = _ref$inlineIndent === void 0 ? 24 : _ref$inlineIndent,\n motion = _ref.motion,\n defaultMotions = _ref.defaultMotions,\n _ref$triggerSubMenuAc = _ref.triggerSubMenuAction,\n triggerSubMenuAction = _ref$triggerSubMenuAc === void 0 ? 'hover' : _ref$triggerSubMenuAc,\n builtinPlacements = _ref.builtinPlacements,\n itemIcon = _ref.itemIcon,\n expandIcon = _ref.expandIcon,\n _ref$overflowedIndica = _ref.overflowedIndicator,\n overflowedIndicator = _ref$overflowedIndica === void 0 ? '...' : _ref$overflowedIndica,\n overflowedIndicatorPopupClassName = _ref.overflowedIndicatorPopupClassName,\n getPopupContainer = _ref.getPopupContainer,\n onClick = _ref.onClick,\n onOpenChange = _ref.onOpenChange,\n onKeyDown = _ref.onKeyDown,\n openAnimation = _ref.openAnimation,\n openTransitionName = _ref.openTransitionName,\n _internalRenderMenuItem = _ref._internalRenderMenuItem,\n _internalRenderSubMenuItem = _ref._internalRenderSubMenuItem,\n restProps = _objectWithoutProperties(_ref, _excluded);\n\n var childList = React.useMemo(function () {\n return parseItems(children, items, EMPTY_LIST);\n }, [children, items]);\n\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n mounted = _React$useState2[0],\n setMounted = _React$useState2[1];\n\n var containerRef = React.useRef();\n var uuid = useUUID(id);\n var isRtl = direction === 'rtl'; // ========================= Warn =========================\n\n if (process.env.NODE_ENV !== 'production') {\n warning(!openAnimation && !openTransitionName, '`openAnimation` and `openTransitionName` is removed. Please use `motion` or `defaultMotion` instead.');\n } // ========================= Open =========================\n\n\n var _useMergedState = useMergedState(defaultOpenKeys, {\n value: openKeys,\n postState: function postState(keys) {\n return keys || EMPTY_LIST;\n }\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n mergedOpenKeys = _useMergedState2[0],\n setMergedOpenKeys = _useMergedState2[1];\n\n var triggerOpenKeys = function triggerOpenKeys(keys) {\n setMergedOpenKeys(keys);\n onOpenChange === null || onOpenChange === void 0 ? void 0 : onOpenChange(keys);\n }; // >>>>> Cache & Reset open keys when inlineCollapsed changed\n\n\n var _React$useState3 = React.useState(mergedOpenKeys),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n inlineCacheOpenKeys = _React$useState4[0],\n setInlineCacheOpenKeys = _React$useState4[1];\n\n var mountRef = React.useRef(false); // ========================= Mode =========================\n\n var _React$useMemo = React.useMemo(function () {\n if ((mode === 'inline' || mode === 'vertical') && inlineCollapsed) {\n return ['vertical', inlineCollapsed];\n }\n\n return [mode, false];\n }, [mode, inlineCollapsed]),\n _React$useMemo2 = _slicedToArray(_React$useMemo, 2),\n mergedMode = _React$useMemo2[0],\n mergedInlineCollapsed = _React$useMemo2[1];\n\n var isInlineMode = mergedMode === 'inline';\n\n var _React$useState5 = React.useState(mergedMode),\n _React$useState6 = _slicedToArray(_React$useState5, 2),\n internalMode = _React$useState6[0],\n setInternalMode = _React$useState6[1];\n\n var _React$useState7 = React.useState(mergedInlineCollapsed),\n _React$useState8 = _slicedToArray(_React$useState7, 2),\n internalInlineCollapsed = _React$useState8[0],\n setInternalInlineCollapsed = _React$useState8[1];\n\n React.useEffect(function () {\n setInternalMode(mergedMode);\n setInternalInlineCollapsed(mergedInlineCollapsed);\n\n if (!mountRef.current) {\n return;\n } // Synchronously update MergedOpenKeys\n\n\n if (isInlineMode) {\n setMergedOpenKeys(inlineCacheOpenKeys);\n } else {\n // Trigger open event in case its in control\n triggerOpenKeys(EMPTY_LIST);\n }\n }, [mergedMode, mergedInlineCollapsed]); // ====================== Responsive ======================\n\n var _React$useState9 = React.useState(0),\n _React$useState10 = _slicedToArray(_React$useState9, 2),\n lastVisibleIndex = _React$useState10[0],\n setLastVisibleIndex = _React$useState10[1];\n\n var allVisible = lastVisibleIndex >= childList.length - 1 || internalMode !== 'horizontal' || disabledOverflow; // Cache\n\n React.useEffect(function () {\n if (isInlineMode) {\n setInlineCacheOpenKeys(mergedOpenKeys);\n }\n }, [mergedOpenKeys]);\n React.useEffect(function () {\n mountRef.current = true;\n return function () {\n mountRef.current = false;\n };\n }, []); // ========================= Path =========================\n\n var _useKeyRecords = useKeyRecords(),\n registerPath = _useKeyRecords.registerPath,\n unregisterPath = _useKeyRecords.unregisterPath,\n refreshOverflowKeys = _useKeyRecords.refreshOverflowKeys,\n isSubPathKey = _useKeyRecords.isSubPathKey,\n getKeyPath = _useKeyRecords.getKeyPath,\n getKeys = _useKeyRecords.getKeys,\n getSubPathKeys = _useKeyRecords.getSubPathKeys;\n\n var registerPathContext = React.useMemo(function () {\n return {\n registerPath: registerPath,\n unregisterPath: unregisterPath\n };\n }, [registerPath, unregisterPath]);\n var pathUserContext = React.useMemo(function () {\n return {\n isSubPathKey: isSubPathKey\n };\n }, [isSubPathKey]);\n React.useEffect(function () {\n refreshOverflowKeys(allVisible ? EMPTY_LIST : childList.slice(lastVisibleIndex + 1).map(function (child) {\n return child.key;\n }));\n }, [lastVisibleIndex, allVisible]); // ======================== Active ========================\n\n var _useMergedState3 = useMergedState(activeKey || defaultActiveFirst && ((_childList$ = childList[0]) === null || _childList$ === void 0 ? void 0 : _childList$.key), {\n value: activeKey\n }),\n _useMergedState4 = _slicedToArray(_useMergedState3, 2),\n mergedActiveKey = _useMergedState4[0],\n setMergedActiveKey = _useMergedState4[1];\n\n var onActive = useMemoCallback(function (key) {\n setMergedActiveKey(key);\n });\n var onInactive = useMemoCallback(function () {\n setMergedActiveKey(undefined);\n });\n useImperativeHandle(ref, function () {\n return {\n list: containerRef.current,\n focus: function focus(options) {\n var _childList$find;\n\n var shouldFocusKey = mergedActiveKey !== null && mergedActiveKey !== void 0 ? mergedActiveKey : (_childList$find = childList.find(function (node) {\n return !node.props.disabled;\n })) === null || _childList$find === void 0 ? void 0 : _childList$find.key;\n\n if (shouldFocusKey) {\n var _containerRef$current, _containerRef$current2, _containerRef$current3;\n\n (_containerRef$current = containerRef.current) === null || _containerRef$current === void 0 ? void 0 : (_containerRef$current2 = _containerRef$current.querySelector(\"li[data-menu-id='\".concat(getMenuId(uuid, shouldFocusKey), \"']\"))) === null || _containerRef$current2 === void 0 ? void 0 : (_containerRef$current3 = _containerRef$current2.focus) === null || _containerRef$current3 === void 0 ? void 0 : _containerRef$current3.call(_containerRef$current2, options);\n }\n }\n };\n }); // ======================== Select ========================\n // >>>>> Select keys\n\n var _useMergedState5 = useMergedState(defaultSelectedKeys || [], {\n value: selectedKeys,\n // Legacy convert key to array\n postState: function postState(keys) {\n if (Array.isArray(keys)) {\n return keys;\n }\n\n if (keys === null || keys === undefined) {\n return EMPTY_LIST;\n }\n\n return [keys];\n }\n }),\n _useMergedState6 = _slicedToArray(_useMergedState5, 2),\n mergedSelectKeys = _useMergedState6[0],\n setMergedSelectKeys = _useMergedState6[1]; // >>>>> Trigger select\n\n\n var triggerSelection = function triggerSelection(info) {\n if (selectable) {\n // Insert or Remove\n var targetKey = info.key;\n var exist = mergedSelectKeys.includes(targetKey);\n var newSelectKeys;\n\n if (multiple) {\n if (exist) {\n newSelectKeys = mergedSelectKeys.filter(function (key) {\n return key !== targetKey;\n });\n } else {\n newSelectKeys = [].concat(_toConsumableArray(mergedSelectKeys), [targetKey]);\n }\n } else {\n newSelectKeys = [targetKey];\n }\n\n setMergedSelectKeys(newSelectKeys); // Trigger event\n\n var selectInfo = _objectSpread(_objectSpread({}, info), {}, {\n selectedKeys: newSelectKeys\n });\n\n if (exist) {\n onDeselect === null || onDeselect === void 0 ? void 0 : onDeselect(selectInfo);\n } else {\n onSelect === null || onSelect === void 0 ? void 0 : onSelect(selectInfo);\n }\n } // Whatever selectable, always close it\n\n\n if (!multiple && mergedOpenKeys.length && internalMode !== 'inline') {\n triggerOpenKeys(EMPTY_LIST);\n }\n }; // ========================= Open =========================\n\n /**\n * Click for item. SubMenu do not have selection status\n */\n\n\n var onInternalClick = useMemoCallback(function (info) {\n onClick === null || onClick === void 0 ? void 0 : onClick(warnItemProp(info));\n triggerSelection(info);\n });\n var onInternalOpenChange = useMemoCallback(function (key, open) {\n var newOpenKeys = mergedOpenKeys.filter(function (k) {\n return k !== key;\n });\n\n if (open) {\n newOpenKeys.push(key);\n } else if (internalMode !== 'inline') {\n // We need find all related popup to close\n var subPathKeys = getSubPathKeys(key);\n newOpenKeys = newOpenKeys.filter(function (k) {\n return !subPathKeys.has(k);\n });\n }\n\n if (!shallowEqual(mergedOpenKeys, newOpenKeys)) {\n triggerOpenKeys(newOpenKeys);\n }\n });\n var getInternalPopupContainer = useMemoCallback(getPopupContainer); // ==================== Accessibility =====================\n\n var triggerAccessibilityOpen = function triggerAccessibilityOpen(key, open) {\n var nextOpen = open !== null && open !== void 0 ? open : !mergedOpenKeys.includes(key);\n onInternalOpenChange(key, nextOpen);\n };\n\n var onInternalKeyDown = useAccessibility(internalMode, mergedActiveKey, isRtl, uuid, containerRef, getKeys, getKeyPath, setMergedActiveKey, triggerAccessibilityOpen, onKeyDown); // ======================== Effect ========================\n\n React.useEffect(function () {\n setMounted(true);\n }, []); // ======================= Context ========================\n\n var privateContext = React.useMemo(function () {\n return {\n _internalRenderMenuItem: _internalRenderMenuItem,\n _internalRenderSubMenuItem: _internalRenderSubMenuItem\n };\n }, [_internalRenderMenuItem, _internalRenderSubMenuItem]); // ======================== Render ========================\n // >>>>> Children\n\n var wrappedChildList = internalMode !== 'horizontal' || disabledOverflow ? childList : // Need wrap for overflow dropdown that do not response for open\n childList.map(function (child, index) {\n return (\n /*#__PURE__*/\n // Always wrap provider to avoid sub node re-mount\n React.createElement(MenuContextProvider, {\n key: child.key,\n overflowDisabled: index > lastVisibleIndex\n }, child)\n );\n }); // >>>>> Container\n\n var container = /*#__PURE__*/React.createElement(Overflow, _extends({\n id: id,\n ref: containerRef,\n prefixCls: \"\".concat(prefixCls, \"-overflow\"),\n component: \"ul\",\n itemComponent: MenuItem,\n className: classNames(prefixCls, \"\".concat(prefixCls, \"-root\"), \"\".concat(prefixCls, \"-\").concat(internalMode), className, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-inline-collapsed\"), internalInlineCollapsed), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), isRtl), _classNames), rootClassName),\n dir: direction,\n style: style,\n role: \"menu\",\n tabIndex: tabIndex,\n data: wrappedChildList,\n renderRawItem: function renderRawItem(node) {\n return node;\n },\n renderRawRest: function renderRawRest(omitItems) {\n // We use origin list since wrapped list use context to prevent open\n var len = omitItems.length;\n var originOmitItems = len ? childList.slice(-len) : null;\n return /*#__PURE__*/React.createElement(SubMenu, {\n eventKey: OVERFLOW_KEY,\n title: overflowedIndicator,\n disabled: allVisible,\n internalPopupClose: len === 0,\n popupClassName: overflowedIndicatorPopupClassName\n }, originOmitItems);\n },\n maxCount: internalMode !== 'horizontal' || disabledOverflow ? Overflow.INVALIDATE : Overflow.RESPONSIVE,\n ssr: \"full\",\n \"data-menu-list\": true,\n onVisibleChange: function onVisibleChange(newLastIndex) {\n setLastVisibleIndex(newLastIndex);\n },\n onKeyDown: onInternalKeyDown\n }, restProps)); // >>>>> Render\n\n return /*#__PURE__*/React.createElement(PrivateContext.Provider, {\n value: privateContext\n }, /*#__PURE__*/React.createElement(IdContext.Provider, {\n value: uuid\n }, /*#__PURE__*/React.createElement(MenuContextProvider, {\n prefixCls: prefixCls,\n rootClassName: rootClassName,\n mode: internalMode,\n openKeys: mergedOpenKeys,\n rtl: isRtl // Disabled\n ,\n disabled: disabled // Motion\n ,\n motion: mounted ? motion : null,\n defaultMotions: mounted ? defaultMotions : null // Active\n ,\n activeKey: mergedActiveKey,\n onActive: onActive,\n onInactive: onInactive // Selection\n ,\n selectedKeys: mergedSelectKeys // Level\n ,\n inlineIndent: inlineIndent // Popup\n ,\n subMenuOpenDelay: subMenuOpenDelay,\n subMenuCloseDelay: subMenuCloseDelay,\n forceSubMenuRender: forceSubMenuRender,\n builtinPlacements: builtinPlacements,\n triggerSubMenuAction: triggerSubMenuAction,\n getPopupContainer: getInternalPopupContainer // Icon\n ,\n itemIcon: itemIcon,\n expandIcon: expandIcon // Events\n ,\n onItemClick: onInternalClick,\n onOpenChange: onInternalOpenChange\n }, /*#__PURE__*/React.createElement(PathUserContext.Provider, {\n value: pathUserContext\n }, container), /*#__PURE__*/React.createElement(\"div\", {\n style: {\n display: 'none'\n },\n \"aria-hidden\": true\n }, /*#__PURE__*/React.createElement(PathRegisterContext.Provider, {\n value: registerPathContext\n }, childList)))));\n});\nexport default Menu;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"className\", \"title\", \"eventKey\", \"children\"],\n _excluded2 = [\"children\"];\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport { parseChildren } from \"./utils/nodeUtil\";\nimport { MenuContext } from \"./context/MenuContext\";\nimport { useFullPath, useMeasure } from \"./context/PathContext\";\n\nvar InternalMenuItemGroup = function InternalMenuItemGroup(_ref) {\n var className = _ref.className,\n title = _ref.title,\n eventKey = _ref.eventKey,\n children = _ref.children,\n restProps = _objectWithoutProperties(_ref, _excluded);\n\n var _React$useContext = React.useContext(MenuContext),\n prefixCls = _React$useContext.prefixCls;\n\n var groupPrefixCls = \"\".concat(prefixCls, \"-item-group\");\n return /*#__PURE__*/React.createElement(\"li\", _extends({}, restProps, {\n onClick: function onClick(e) {\n return e.stopPropagation();\n },\n className: classNames(groupPrefixCls, className)\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(groupPrefixCls, \"-title\"),\n title: typeof title === 'string' ? title : undefined\n }, title), /*#__PURE__*/React.createElement(\"ul\", {\n className: \"\".concat(groupPrefixCls, \"-list\")\n }, children));\n};\n\nexport default function MenuItemGroup(_ref2) {\n var children = _ref2.children,\n props = _objectWithoutProperties(_ref2, _excluded2);\n\n var connectedKeyPath = useFullPath(props.eventKey);\n var childList = parseChildren(children, connectedKeyPath);\n var measure = useMeasure();\n\n if (measure) {\n return childList;\n }\n\n return /*#__PURE__*/React.createElement(InternalMenuItemGroup, omit(props, ['warnKey']), childList);\n}","import * as React from 'react';\nimport classNames from 'classnames';\nimport { MenuContext } from \"./context/MenuContext\";\nimport { useMeasure } from \"./context/PathContext\";\nexport default function Divider(_ref) {\n var className = _ref.className,\n style = _ref.style;\n\n var _React$useContext = React.useContext(MenuContext),\n prefixCls = _React$useContext.prefixCls;\n\n var measure = useMeasure();\n\n if (measure) {\n return null;\n }\n\n return /*#__PURE__*/React.createElement(\"li\", {\n className: classNames(\"\".concat(prefixCls, \"-item-divider\"), className),\n style: style\n });\n}","import Menu from \"./Menu\";\nimport MenuItem from \"./MenuItem\";\nimport SubMenu from \"./SubMenu\";\nimport MenuItemGroup from \"./MenuItemGroup\";\nimport { useFullPath } from \"./context/PathContext\";\nimport Divider from \"./Divider\";\nexport { SubMenu, MenuItem as Item, MenuItem, MenuItemGroup, MenuItemGroup as ItemGroup, Divider,\n/** @private Only used for antd internal. Do not use in your production. */\nuseFullPath };\nvar ExportMenu = Menu;\nExportMenu.Item = MenuItem;\nExportMenu.SubMenu = SubMenu;\nExportMenu.ItemGroup = MenuItemGroup;\nExportMenu.Divider = Divider;\nexport default ExportMenu;","var autoAdjustOverflow = {\n adjustX: 1,\n adjustY: 1\n};\nvar targetOffset = [0, 0];\nvar placements = {\n topLeft: {\n points: ['bl', 'tl'],\n overflow: autoAdjustOverflow,\n offset: [0, -4],\n targetOffset: targetOffset\n },\n topCenter: {\n points: ['bc', 'tc'],\n overflow: autoAdjustOverflow,\n offset: [0, -4],\n targetOffset: targetOffset\n },\n topRight: {\n points: ['br', 'tr'],\n overflow: autoAdjustOverflow,\n offset: [0, -4],\n targetOffset: targetOffset\n },\n bottomLeft: {\n points: ['tl', 'bl'],\n overflow: autoAdjustOverflow,\n offset: [0, 4],\n targetOffset: targetOffset\n },\n bottomCenter: {\n points: ['tc', 'bc'],\n overflow: autoAdjustOverflow,\n offset: [0, 4],\n targetOffset: targetOffset\n },\n bottomRight: {\n points: ['tr', 'br'],\n overflow: autoAdjustOverflow,\n offset: [0, 4],\n targetOffset: targetOffset\n }\n};\nexport default placements;","import * as React from 'react';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport raf from \"rc-util/es/raf\";\nimport { getFocusNodeList } from \"rc-util/es/Dom/focus\";\nvar ESC = KeyCode.ESC,\n TAB = KeyCode.TAB;\nexport default function useAccessibility(_ref) {\n var visible = _ref.visible,\n setTriggerVisible = _ref.setTriggerVisible,\n triggerRef = _ref.triggerRef,\n onVisibleChange = _ref.onVisibleChange,\n autoFocus = _ref.autoFocus;\n var focusMenuRef = React.useRef(false);\n\n var handleCloseMenuAndReturnFocus = function handleCloseMenuAndReturnFocus() {\n if (visible && triggerRef.current) {\n var _triggerRef$current, _triggerRef$current$t, _triggerRef$current$t2, _triggerRef$current$t3;\n\n (_triggerRef$current = triggerRef.current) === null || _triggerRef$current === void 0 ? void 0 : (_triggerRef$current$t = _triggerRef$current.triggerRef) === null || _triggerRef$current$t === void 0 ? void 0 : (_triggerRef$current$t2 = _triggerRef$current$t.current) === null || _triggerRef$current$t2 === void 0 ? void 0 : (_triggerRef$current$t3 = _triggerRef$current$t2.focus) === null || _triggerRef$current$t3 === void 0 ? void 0 : _triggerRef$current$t3.call(_triggerRef$current$t2);\n setTriggerVisible(false);\n\n if (typeof onVisibleChange === 'function') {\n onVisibleChange(false);\n }\n }\n };\n\n var focusMenu = function focusMenu() {\n var _triggerRef$current2, _triggerRef$current2$, _triggerRef$current2$2, _triggerRef$current2$3;\n\n var elements = getFocusNodeList((_triggerRef$current2 = triggerRef.current) === null || _triggerRef$current2 === void 0 ? void 0 : (_triggerRef$current2$ = _triggerRef$current2.popupRef) === null || _triggerRef$current2$ === void 0 ? void 0 : (_triggerRef$current2$2 = _triggerRef$current2$.current) === null || _triggerRef$current2$2 === void 0 ? void 0 : (_triggerRef$current2$3 = _triggerRef$current2$2.getElement) === null || _triggerRef$current2$3 === void 0 ? void 0 : _triggerRef$current2$3.call(_triggerRef$current2$2));\n var firstElement = elements[0];\n\n if (firstElement === null || firstElement === void 0 ? void 0 : firstElement.focus) {\n firstElement.focus();\n focusMenuRef.current = true;\n return true;\n }\n\n return false;\n };\n\n var handleKeyDown = function handleKeyDown(event) {\n switch (event.keyCode) {\n case ESC:\n handleCloseMenuAndReturnFocus();\n break;\n\n case TAB:\n {\n var focusResult = false;\n\n if (!focusMenuRef.current) {\n focusResult = focusMenu();\n }\n\n if (focusResult) {\n event.preventDefault();\n } else {\n handleCloseMenuAndReturnFocus();\n }\n\n break;\n }\n }\n };\n\n React.useEffect(function () {\n if (visible) {\n window.addEventListener('keydown', handleKeyDown);\n\n if (autoFocus) {\n // FIXME: hack with raf\n raf(focusMenu, 3);\n }\n\n return function () {\n window.removeEventListener('keydown', handleKeyDown);\n focusMenuRef.current = false;\n };\n }\n\n return function () {\n focusMenuRef.current = false;\n };\n }, [visible]); // eslint-disable-line react-hooks/exhaustive-deps\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"arrow\", \"prefixCls\", \"transitionName\", \"animation\", \"align\", \"placement\", \"placements\", \"getPopupContainer\", \"showAction\", \"hideAction\", \"overlayClassName\", \"overlayStyle\", \"visible\", \"trigger\", \"autoFocus\"];\nimport * as React from 'react';\nimport Trigger from 'rc-trigger';\nimport classNames from 'classnames';\nimport Placements from './placements';\nimport useAccessibility from './hooks/useAccessibility';\n\nfunction Dropdown(props, ref) {\n var _props$arrow = props.arrow,\n arrow = _props$arrow === void 0 ? false : _props$arrow,\n _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-dropdown' : _props$prefixCls,\n transitionName = props.transitionName,\n animation = props.animation,\n align = props.align,\n _props$placement = props.placement,\n placement = _props$placement === void 0 ? 'bottomLeft' : _props$placement,\n _props$placements = props.placements,\n placements = _props$placements === void 0 ? Placements : _props$placements,\n getPopupContainer = props.getPopupContainer,\n showAction = props.showAction,\n hideAction = props.hideAction,\n overlayClassName = props.overlayClassName,\n overlayStyle = props.overlayStyle,\n visible = props.visible,\n _props$trigger = props.trigger,\n trigger = _props$trigger === void 0 ? ['hover'] : _props$trigger,\n autoFocus = props.autoFocus,\n otherProps = _objectWithoutProperties(props, _excluded);\n\n var _React$useState = React.useState(),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n triggerVisible = _React$useState2[0],\n setTriggerVisible = _React$useState2[1];\n\n var mergedVisible = 'visible' in props ? visible : triggerVisible;\n var triggerRef = React.useRef(null);\n React.useImperativeHandle(ref, function () {\n return triggerRef.current;\n });\n useAccessibility({\n visible: mergedVisible,\n setTriggerVisible: setTriggerVisible,\n triggerRef: triggerRef,\n onVisibleChange: props.onVisibleChange,\n autoFocus: autoFocus\n });\n\n var getOverlayElement = function getOverlayElement() {\n var overlay = props.overlay;\n var overlayElement;\n\n if (typeof overlay === 'function') {\n overlayElement = overlay();\n } else {\n overlayElement = overlay;\n }\n\n return overlayElement;\n };\n\n var onClick = function onClick(e) {\n var onOverlayClick = props.onOverlayClick;\n setTriggerVisible(false);\n\n if (onOverlayClick) {\n onOverlayClick(e);\n }\n };\n\n var onVisibleChange = function onVisibleChange(newVisible) {\n var onVisibleChangeProp = props.onVisibleChange;\n setTriggerVisible(newVisible);\n\n if (typeof onVisibleChangeProp === 'function') {\n onVisibleChangeProp(newVisible);\n }\n };\n\n var getMenuElement = function getMenuElement() {\n var overlayElement = getOverlayElement();\n return /*#__PURE__*/React.createElement(React.Fragment, null, arrow && /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-arrow\")\n }), overlayElement);\n };\n\n var getMenuElementOrLambda = function getMenuElementOrLambda() {\n var overlay = props.overlay;\n\n if (typeof overlay === 'function') {\n return getMenuElement;\n }\n\n return getMenuElement();\n };\n\n var getMinOverlayWidthMatchTrigger = function getMinOverlayWidthMatchTrigger() {\n var minOverlayWidthMatchTrigger = props.minOverlayWidthMatchTrigger,\n alignPoint = props.alignPoint;\n\n if ('minOverlayWidthMatchTrigger' in props) {\n return minOverlayWidthMatchTrigger;\n }\n\n return !alignPoint;\n };\n\n var getOpenClassName = function getOpenClassName() {\n var openClassName = props.openClassName;\n\n if (openClassName !== undefined) {\n return openClassName;\n }\n\n return \"\".concat(prefixCls, \"-open\");\n };\n\n var renderChildren = function renderChildren() {\n var children = props.children;\n var childrenProps = children.props ? children.props : {};\n var childClassName = classNames(childrenProps.className, getOpenClassName());\n return mergedVisible && children ? /*#__PURE__*/React.cloneElement(children, {\n className: childClassName\n }) : children;\n };\n\n var triggerHideAction = hideAction;\n\n if (!triggerHideAction && trigger.indexOf('contextMenu') !== -1) {\n triggerHideAction = ['click'];\n }\n\n return /*#__PURE__*/React.createElement(Trigger, _objectSpread(_objectSpread({\n builtinPlacements: placements\n }, otherProps), {}, {\n prefixCls: prefixCls,\n ref: triggerRef,\n popupClassName: classNames(overlayClassName, _defineProperty({}, \"\".concat(prefixCls, \"-show-arrow\"), arrow)),\n popupStyle: overlayStyle,\n action: trigger,\n showAction: showAction,\n hideAction: triggerHideAction || [],\n popupPlacement: placement,\n popupAlign: align,\n popupTransitionName: transitionName,\n popupAnimation: animation,\n popupVisible: mergedVisible,\n stretch: getMinOverlayWidthMatchTrigger() ? 'minWidth' : '',\n popup: getMenuElementOrLambda(),\n onPopupVisibleChange: onVisibleChange,\n onPopupClick: onClick,\n getPopupContainer: getPopupContainer\n }), renderChildren());\n}\n\nexport default /*#__PURE__*/React.forwardRef(Dropdown);","import Dropdown from './Dropdown';\nexport default Dropdown;","import * as React from 'react';\nfunction AddButton(_ref, ref) {\n var prefixCls = _ref.prefixCls,\n editable = _ref.editable,\n locale = _ref.locale,\n style = _ref.style;\n if (!editable || editable.showAdd === false) {\n return null;\n }\n return /*#__PURE__*/React.createElement(\"button\", {\n ref: ref,\n type: \"button\",\n className: \"\".concat(prefixCls, \"-nav-add\"),\n style: style,\n \"aria-label\": (locale === null || locale === void 0 ? void 0 : locale.addAriaLabel) || 'Add tab',\n onClick: function onClick(event) {\n editable.onEdit('add', {\n event: event\n });\n }\n }, editable.addIcon || '+');\n}\nexport default /*#__PURE__*/React.forwardRef(AddButton);","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useState, useEffect } from 'react';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport Menu, { MenuItem } from 'rc-menu';\nimport Dropdown from 'rc-dropdown';\nimport AddButton from './AddButton';\nfunction OperationNode(_ref, ref) {\n var prefixCls = _ref.prefixCls,\n id = _ref.id,\n tabs = _ref.tabs,\n locale = _ref.locale,\n mobile = _ref.mobile,\n _ref$moreIcon = _ref.moreIcon,\n moreIcon = _ref$moreIcon === void 0 ? 'More' : _ref$moreIcon,\n moreTransitionName = _ref.moreTransitionName,\n style = _ref.style,\n className = _ref.className,\n editable = _ref.editable,\n tabBarGutter = _ref.tabBarGutter,\n rtl = _ref.rtl,\n removeAriaLabel = _ref.removeAriaLabel,\n onTabClick = _ref.onTabClick,\n getPopupContainer = _ref.getPopupContainer,\n popupClassName = _ref.popupClassName;\n // ======================== Dropdown ========================\n var _useState = useState(false),\n _useState2 = _slicedToArray(_useState, 2),\n open = _useState2[0],\n setOpen = _useState2[1];\n var _useState3 = useState(null),\n _useState4 = _slicedToArray(_useState3, 2),\n selectedKey = _useState4[0],\n setSelectedKey = _useState4[1];\n var popupId = \"\".concat(id, \"-more-popup\");\n var dropdownPrefix = \"\".concat(prefixCls, \"-dropdown\");\n var selectedItemId = selectedKey !== null ? \"\".concat(popupId, \"-\").concat(selectedKey) : null;\n var dropdownAriaLabel = locale === null || locale === void 0 ? void 0 : locale.dropdownAriaLabel;\n function onRemoveTab(event, key) {\n event.preventDefault();\n event.stopPropagation();\n editable.onEdit('remove', {\n key: key,\n event: event\n });\n }\n var menu = /*#__PURE__*/React.createElement(Menu, {\n onClick: function onClick(_ref2) {\n var key = _ref2.key,\n domEvent = _ref2.domEvent;\n onTabClick(key, domEvent);\n setOpen(false);\n },\n prefixCls: \"\".concat(dropdownPrefix, \"-menu\"),\n id: popupId,\n tabIndex: -1,\n role: \"listbox\",\n \"aria-activedescendant\": selectedItemId,\n selectedKeys: [selectedKey],\n \"aria-label\": dropdownAriaLabel !== undefined ? dropdownAriaLabel : 'expanded dropdown'\n }, tabs.map(function (tab) {\n var removable = editable && tab.closable !== false && !tab.disabled;\n return /*#__PURE__*/React.createElement(MenuItem, {\n key: tab.key,\n id: \"\".concat(popupId, \"-\").concat(tab.key),\n role: \"option\",\n \"aria-controls\": id && \"\".concat(id, \"-panel-\").concat(tab.key),\n disabled: tab.disabled\n }, /*#__PURE__*/React.createElement(\"span\", null, tab.label), removable && /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n \"aria-label\": removeAriaLabel || 'remove',\n tabIndex: 0,\n className: \"\".concat(dropdownPrefix, \"-menu-item-remove\"),\n onClick: function onClick(e) {\n e.stopPropagation();\n onRemoveTab(e, tab.key);\n }\n }, tab.closeIcon || editable.removeIcon || '×'));\n }));\n function selectOffset(offset) {\n var enabledTabs = tabs.filter(function (tab) {\n return !tab.disabled;\n });\n var selectedIndex = enabledTabs.findIndex(function (tab) {\n return tab.key === selectedKey;\n }) || 0;\n var len = enabledTabs.length;\n for (var i = 0; i < len; i += 1) {\n selectedIndex = (selectedIndex + offset + len) % len;\n var tab = enabledTabs[selectedIndex];\n if (!tab.disabled) {\n setSelectedKey(tab.key);\n return;\n }\n }\n }\n function onKeyDown(e) {\n var which = e.which;\n if (!open) {\n if ([KeyCode.DOWN, KeyCode.SPACE, KeyCode.ENTER].includes(which)) {\n setOpen(true);\n e.preventDefault();\n }\n return;\n }\n switch (which) {\n case KeyCode.UP:\n selectOffset(-1);\n e.preventDefault();\n break;\n case KeyCode.DOWN:\n selectOffset(1);\n e.preventDefault();\n break;\n case KeyCode.ESC:\n setOpen(false);\n break;\n case KeyCode.SPACE:\n case KeyCode.ENTER:\n if (selectedKey !== null) onTabClick(selectedKey, e);\n break;\n }\n }\n // ========================= Effect =========================\n useEffect(function () {\n // We use query element here to avoid React strict warning\n var ele = document.getElementById(selectedItemId);\n if (ele && ele.scrollIntoView) {\n ele.scrollIntoView(false);\n }\n }, [selectedKey]);\n useEffect(function () {\n if (!open) {\n setSelectedKey(null);\n }\n }, [open]);\n // ========================= Render =========================\n var moreStyle = _defineProperty({}, rtl ? 'marginRight' : 'marginLeft', tabBarGutter);\n if (!tabs.length) {\n moreStyle.visibility = 'hidden';\n moreStyle.order = 1;\n }\n var overlayClassName = classNames(_defineProperty({}, \"\".concat(dropdownPrefix, \"-rtl\"), rtl));\n var moreNode = mobile ? null : /*#__PURE__*/React.createElement(Dropdown, {\n prefixCls: dropdownPrefix,\n overlay: menu,\n trigger: ['hover'],\n visible: tabs.length ? open : false,\n transitionName: moreTransitionName,\n onVisibleChange: setOpen,\n overlayClassName: classNames(overlayClassName, popupClassName),\n mouseEnterDelay: 0.1,\n mouseLeaveDelay: 0.1,\n getPopupContainer: getPopupContainer\n }, /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n className: \"\".concat(prefixCls, \"-nav-more\"),\n style: moreStyle,\n tabIndex: -1,\n \"aria-hidden\": \"true\",\n \"aria-haspopup\": \"listbox\",\n \"aria-controls\": popupId,\n id: \"\".concat(id, \"-more\"),\n \"aria-expanded\": open,\n onKeyDown: onKeyDown\n }, moreIcon));\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(\"\".concat(prefixCls, \"-nav-operations\"), className),\n style: style,\n ref: ref\n }, moreNode, /*#__PURE__*/React.createElement(AddButton, {\n prefixCls: prefixCls,\n locale: locale,\n editable: editable\n }));\n}\nexport default /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(OperationNode), function (_, next) {\n return (\n // https://github.com/ant-design/ant-design/issues/32544\n // We'd better remove syntactic sugar in `rc-menu` since this has perf issue\n next.tabMoving\n );\n});","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { useState, useRef } from 'react';\nvar MIN_SWIPE_DISTANCE = 0.1;\nvar STOP_SWIPE_DISTANCE = 0.01;\nvar REFRESH_INTERVAL = 20;\nvar SPEED_OFF_MULTIPLE = Math.pow(0.995, REFRESH_INTERVAL);\n// ================================= Hook =================================\nexport default function useTouchMove(ref, onOffset) {\n var _useState = useState(),\n _useState2 = _slicedToArray(_useState, 2),\n touchPosition = _useState2[0],\n setTouchPosition = _useState2[1];\n var _useState3 = useState(0),\n _useState4 = _slicedToArray(_useState3, 2),\n lastTimestamp = _useState4[0],\n setLastTimestamp = _useState4[1];\n var _useState5 = useState(0),\n _useState6 = _slicedToArray(_useState5, 2),\n lastTimeDiff = _useState6[0],\n setLastTimeDiff = _useState6[1];\n var _useState7 = useState(),\n _useState8 = _slicedToArray(_useState7, 2),\n lastOffset = _useState8[0],\n setLastOffset = _useState8[1];\n var motionRef = useRef();\n // ========================= Events =========================\n // >>> Touch events\n function onTouchStart(e) {\n var _e$touches$ = e.touches[0],\n screenX = _e$touches$.screenX,\n screenY = _e$touches$.screenY;\n setTouchPosition({\n x: screenX,\n y: screenY\n });\n window.clearInterval(motionRef.current);\n }\n function onTouchMove(e) {\n if (!touchPosition) return;\n e.preventDefault();\n var _e$touches$2 = e.touches[0],\n screenX = _e$touches$2.screenX,\n screenY = _e$touches$2.screenY;\n setTouchPosition({\n x: screenX,\n y: screenY\n });\n var offsetX = screenX - touchPosition.x;\n var offsetY = screenY - touchPosition.y;\n onOffset(offsetX, offsetY);\n var now = Date.now();\n setLastTimestamp(now);\n setLastTimeDiff(now - lastTimestamp);\n setLastOffset({\n x: offsetX,\n y: offsetY\n });\n }\n function onTouchEnd() {\n if (!touchPosition) return;\n setTouchPosition(null);\n setLastOffset(null);\n // Swipe if needed\n if (lastOffset) {\n var distanceX = lastOffset.x / lastTimeDiff;\n var distanceY = lastOffset.y / lastTimeDiff;\n var absX = Math.abs(distanceX);\n var absY = Math.abs(distanceY);\n // Skip swipe if low distance\n if (Math.max(absX, absY) < MIN_SWIPE_DISTANCE) return;\n var currentX = distanceX;\n var currentY = distanceY;\n motionRef.current = window.setInterval(function () {\n if (Math.abs(currentX) < STOP_SWIPE_DISTANCE && Math.abs(currentY) < STOP_SWIPE_DISTANCE) {\n window.clearInterval(motionRef.current);\n return;\n }\n currentX *= SPEED_OFF_MULTIPLE;\n currentY *= SPEED_OFF_MULTIPLE;\n onOffset(currentX * REFRESH_INTERVAL, currentY * REFRESH_INTERVAL);\n }, REFRESH_INTERVAL);\n }\n }\n // >>> Wheel event\n var lastWheelDirectionRef = useRef();\n function onWheel(e) {\n var deltaX = e.deltaX,\n deltaY = e.deltaY;\n // Convert both to x & y since wheel only happened on PC\n var mixed = 0;\n var absX = Math.abs(deltaX);\n var absY = Math.abs(deltaY);\n if (absX === absY) {\n mixed = lastWheelDirectionRef.current === 'x' ? deltaX : deltaY;\n } else if (absX > absY) {\n mixed = deltaX;\n lastWheelDirectionRef.current = 'x';\n } else {\n mixed = deltaY;\n lastWheelDirectionRef.current = 'y';\n }\n if (onOffset(-mixed, -mixed)) {\n e.preventDefault();\n }\n }\n // ========================= Effect =========================\n var touchEventsRef = useRef(null);\n touchEventsRef.current = {\n onTouchStart: onTouchStart,\n onTouchMove: onTouchMove,\n onTouchEnd: onTouchEnd,\n onWheel: onWheel\n };\n React.useEffect(function () {\n function onProxyTouchStart(e) {\n touchEventsRef.current.onTouchStart(e);\n }\n function onProxyTouchMove(e) {\n touchEventsRef.current.onTouchMove(e);\n }\n function onProxyTouchEnd(e) {\n touchEventsRef.current.onTouchEnd(e);\n }\n function onProxyWheel(e) {\n touchEventsRef.current.onWheel(e);\n }\n document.addEventListener('touchmove', onProxyTouchMove, {\n passive: false\n });\n document.addEventListener('touchend', onProxyTouchEnd, {\n passive: false\n });\n // No need to clean up since element removed\n ref.current.addEventListener('touchstart', onProxyTouchStart, {\n passive: false\n });\n ref.current.addEventListener('wheel', onProxyWheel);\n return function () {\n document.removeEventListener('touchmove', onProxyTouchMove);\n document.removeEventListener('touchend', onProxyTouchEnd);\n };\n }, []);\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nexport default function useSyncState(defaultState, onChange) {\n var stateRef = React.useRef(defaultState);\n var _React$useState = React.useState({}),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n forceUpdate = _React$useState2[1];\n function setState(updater) {\n var newValue = typeof updater === 'function' ? updater(stateRef.current) : updater;\n if (newValue !== stateRef.current) {\n onChange(newValue, stateRef.current);\n }\n stateRef.current = newValue;\n forceUpdate({});\n }\n return [stateRef.current, setState];\n}","/**\n * We trade Map as deps which may change with same value but different ref object.\n * We should make it as hash for deps\n * */\nexport function stringify(obj) {\n var tgt;\n if (obj instanceof Map) {\n tgt = {};\n obj.forEach(function (v, k) {\n tgt[k] = v;\n });\n } else {\n tgt = obj;\n }\n return JSON.stringify(tgt);\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport * as React from 'react';\nvar ExtraContent = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var position = _ref.position,\n prefixCls = _ref.prefixCls,\n extra = _ref.extra;\n if (!extra) return null;\n var content;\n // Parse extra\n var assertExtra = {};\n if (_typeof(extra) === 'object' && ! /*#__PURE__*/React.isValidElement(extra)) {\n assertExtra = extra;\n } else {\n assertExtra.right = extra;\n }\n if (position === 'right') {\n content = assertExtra.right;\n }\n if (position === 'left') {\n content = assertExtra.left;\n }\n return content ? /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-extra-content\"),\n ref: ref\n }, content) : null;\n});\nif (process.env.NODE_ENV !== 'production') {\n ExtraContent.displayName = 'ExtraContent';\n}\nexport default ExtraContent;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { useState, useRef, useEffect } from 'react';\nimport classNames from 'classnames';\nimport raf from \"rc-util/es/raf\";\nimport { useComposeRef } from \"rc-util/es/ref\";\nimport ResizeObserver from 'rc-resize-observer';\nimport useRaf, { useRafState } from '../hooks/useRaf';\nimport TabNode from './TabNode';\nimport useOffsets from '../hooks/useOffsets';\nimport useVisibleRange from '../hooks/useVisibleRange';\nimport OperationNode from './OperationNode';\nimport TabContext from '../TabContext';\nimport useTouchMove from '../hooks/useTouchMove';\nimport useRefs from '../hooks/useRefs';\nimport AddButton from './AddButton';\nimport useSyncState from '../hooks/useSyncState';\nimport { stringify } from '../util';\nimport ExtraContent from './ExtraContent';\nvar getSize = function getSize(refObj) {\n var _ref = refObj.current || {},\n _ref$offsetWidth = _ref.offsetWidth,\n offsetWidth = _ref$offsetWidth === void 0 ? 0 : _ref$offsetWidth,\n _ref$offsetHeight = _ref.offsetHeight,\n offsetHeight = _ref$offsetHeight === void 0 ? 0 : _ref$offsetHeight;\n return [offsetWidth, offsetHeight];\n};\n/**\n * Convert `SizeInfo` to unit value. Such as [123, 456] with `top` position get `123`\n */\nvar getUnitValue = function getUnitValue(size, tabPositionTopOrBottom) {\n return size[tabPositionTopOrBottom ? 0 : 1];\n};\nfunction TabNavList(props, ref) {\n var _classNames;\n var _React$useContext = React.useContext(TabContext),\n prefixCls = _React$useContext.prefixCls,\n tabs = _React$useContext.tabs;\n var className = props.className,\n style = props.style,\n id = props.id,\n animated = props.animated,\n activeKey = props.activeKey,\n rtl = props.rtl,\n extra = props.extra,\n editable = props.editable,\n locale = props.locale,\n tabPosition = props.tabPosition,\n tabBarGutter = props.tabBarGutter,\n children = props.children,\n onTabClick = props.onTabClick,\n onTabScroll = props.onTabScroll;\n var containerRef = useRef();\n var extraLeftRef = useRef();\n var extraRightRef = useRef();\n var tabsWrapperRef = useRef();\n var tabListRef = useRef();\n var operationsRef = useRef();\n var innerAddButtonRef = useRef();\n var _useRefs = useRefs(),\n _useRefs2 = _slicedToArray(_useRefs, 2),\n getBtnRef = _useRefs2[0],\n removeBtnRef = _useRefs2[1];\n var tabPositionTopOrBottom = tabPosition === 'top' || tabPosition === 'bottom';\n var _useSyncState = useSyncState(0, function (next, prev) {\n if (tabPositionTopOrBottom && onTabScroll) {\n onTabScroll({\n direction: next > prev ? 'left' : 'right'\n });\n }\n }),\n _useSyncState2 = _slicedToArray(_useSyncState, 2),\n transformLeft = _useSyncState2[0],\n setTransformLeft = _useSyncState2[1];\n var _useSyncState3 = useSyncState(0, function (next, prev) {\n if (!tabPositionTopOrBottom && onTabScroll) {\n onTabScroll({\n direction: next > prev ? 'top' : 'bottom'\n });\n }\n }),\n _useSyncState4 = _slicedToArray(_useSyncState3, 2),\n transformTop = _useSyncState4[0],\n setTransformTop = _useSyncState4[1];\n var _useState = useState([0, 0]),\n _useState2 = _slicedToArray(_useState, 2),\n containerExcludeExtraSize = _useState2[0],\n setContainerExcludeExtraSize = _useState2[1];\n var _useState3 = useState([0, 0]),\n _useState4 = _slicedToArray(_useState3, 2),\n tabContentSize = _useState4[0],\n setTabContentSize = _useState4[1];\n var _useState5 = useState([0, 0]),\n _useState6 = _slicedToArray(_useState5, 2),\n addSize = _useState6[0],\n setAddSize = _useState6[1];\n var _useState7 = useState([0, 0]),\n _useState8 = _slicedToArray(_useState7, 2),\n operationSize = _useState8[0],\n setOperationSize = _useState8[1];\n var _useRafState = useRafState(new Map()),\n _useRafState2 = _slicedToArray(_useRafState, 2),\n tabSizes = _useRafState2[0],\n setTabSizes = _useRafState2[1];\n var tabOffsets = useOffsets(tabs, tabSizes, tabContentSize[0]);\n // ========================== Unit =========================\n var containerExcludeExtraSizeValue = getUnitValue(containerExcludeExtraSize, tabPositionTopOrBottom);\n var tabContentSizeValue = getUnitValue(tabContentSize, tabPositionTopOrBottom);\n var addSizeValue = getUnitValue(addSize, tabPositionTopOrBottom);\n var operationSizeValue = getUnitValue(operationSize, tabPositionTopOrBottom);\n var needScroll = containerExcludeExtraSizeValue < tabContentSizeValue + addSizeValue;\n var visibleTabContentValue = needScroll ? containerExcludeExtraSizeValue - operationSizeValue : containerExcludeExtraSizeValue - addSizeValue;\n // ========================== Util =========================\n var operationsHiddenClassName = \"\".concat(prefixCls, \"-nav-operations-hidden\");\n var transformMin = 0;\n var transformMax = 0;\n if (!tabPositionTopOrBottom) {\n transformMin = Math.min(0, visibleTabContentValue - tabContentSizeValue);\n transformMax = 0;\n } else if (rtl) {\n transformMin = 0;\n transformMax = Math.max(0, tabContentSizeValue - visibleTabContentValue);\n } else {\n transformMin = Math.min(0, visibleTabContentValue - tabContentSizeValue);\n transformMax = 0;\n }\n function alignInRange(value) {\n if (value < transformMin) {\n return transformMin;\n }\n if (value > transformMax) {\n return transformMax;\n }\n return value;\n }\n // ========================= Mobile ========================\n var touchMovingRef = useRef();\n var _useState9 = useState(),\n _useState10 = _slicedToArray(_useState9, 2),\n lockAnimation = _useState10[0],\n setLockAnimation = _useState10[1];\n function doLockAnimation() {\n setLockAnimation(Date.now());\n }\n function clearTouchMoving() {\n window.clearTimeout(touchMovingRef.current);\n }\n useTouchMove(tabsWrapperRef, function (offsetX, offsetY) {\n function doMove(setState, offset) {\n setState(function (value) {\n var newValue = alignInRange(value + offset);\n return newValue;\n });\n }\n // Skip scroll if place is enough\n if (containerExcludeExtraSizeValue >= tabContentSizeValue) {\n return false;\n }\n if (tabPositionTopOrBottom) {\n doMove(setTransformLeft, offsetX);\n } else {\n doMove(setTransformTop, offsetY);\n }\n clearTouchMoving();\n doLockAnimation();\n return true;\n });\n useEffect(function () {\n clearTouchMoving();\n if (lockAnimation) {\n touchMovingRef.current = window.setTimeout(function () {\n setLockAnimation(0);\n }, 100);\n }\n return clearTouchMoving;\n }, [lockAnimation]);\n // ===================== Visible Range =====================\n // Render tab node & collect tab offset\n var _useVisibleRange = useVisibleRange(tabOffsets,\n // Container\n visibleTabContentValue,\n // Transform\n tabPositionTopOrBottom ? transformLeft : transformTop,\n // Tabs\n tabContentSizeValue,\n // Add\n addSizeValue,\n // Operation\n operationSizeValue, _objectSpread(_objectSpread({}, props), {}, {\n tabs: tabs\n })),\n _useVisibleRange2 = _slicedToArray(_useVisibleRange, 2),\n visibleStart = _useVisibleRange2[0],\n visibleEnd = _useVisibleRange2[1];\n // ========================= Scroll ========================\n var scrollToTab = function scrollToTab() {\n var key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : activeKey;\n var tabOffset = tabOffsets.get(key) || {\n width: 0,\n height: 0,\n left: 0,\n right: 0,\n top: 0\n };\n if (tabPositionTopOrBottom) {\n // ============ Align with top & bottom ============\n var newTransform = transformLeft;\n // RTL\n if (rtl) {\n if (tabOffset.right < transformLeft) {\n newTransform = tabOffset.right;\n } else if (tabOffset.right + tabOffset.width > transformLeft + visibleTabContentValue) {\n newTransform = tabOffset.right + tabOffset.width - visibleTabContentValue;\n }\n }\n // LTR\n else if (tabOffset.left < -transformLeft) {\n newTransform = -tabOffset.left;\n } else if (tabOffset.left + tabOffset.width > -transformLeft + visibleTabContentValue) {\n newTransform = -(tabOffset.left + tabOffset.width - visibleTabContentValue);\n }\n setTransformTop(0);\n setTransformLeft(alignInRange(newTransform));\n } else {\n // ============ Align with left & right ============\n var _newTransform = transformTop;\n if (tabOffset.top < -transformTop) {\n _newTransform = -tabOffset.top;\n } else if (tabOffset.top + tabOffset.height > -transformTop + visibleTabContentValue) {\n _newTransform = -(tabOffset.top + tabOffset.height - visibleTabContentValue);\n }\n setTransformLeft(0);\n setTransformTop(alignInRange(_newTransform));\n }\n };\n // ========================== Tab ==========================\n var tabNodeStyle = {};\n if (tabPosition === 'top' || tabPosition === 'bottom') {\n tabNodeStyle[rtl ? 'marginRight' : 'marginLeft'] = tabBarGutter;\n } else {\n tabNodeStyle.marginTop = tabBarGutter;\n }\n var tabNodes = tabs.map(function (tab, i) {\n var key = tab.key;\n return /*#__PURE__*/React.createElement(TabNode, {\n id: id,\n prefixCls: prefixCls,\n key: key,\n tab: tab\n /* first node should not have margin left */,\n style: i === 0 ? undefined : tabNodeStyle,\n closable: tab.closable,\n editable: editable,\n active: key === activeKey,\n renderWrapper: children,\n removeAriaLabel: locale === null || locale === void 0 ? void 0 : locale.removeAriaLabel,\n ref: getBtnRef(key),\n onClick: function onClick(e) {\n onTabClick(key, e);\n },\n onRemove: function onRemove() {\n removeBtnRef(key);\n },\n onFocus: function onFocus() {\n scrollToTab(key);\n doLockAnimation();\n if (!tabsWrapperRef.current) {\n return;\n }\n // Focus element will make scrollLeft change which we should reset back\n if (!rtl) {\n tabsWrapperRef.current.scrollLeft = 0;\n }\n tabsWrapperRef.current.scrollTop = 0;\n }\n });\n });\n var onListHolderResize = useRaf(function () {\n // Update wrapper records\n var containerSize = getSize(containerRef);\n var extraLeftSize = getSize(extraLeftRef);\n var extraRightSize = getSize(extraRightRef);\n setContainerExcludeExtraSize([containerSize[0] - extraLeftSize[0] - extraRightSize[0], containerSize[1] - extraLeftSize[1] - extraRightSize[1]]);\n var newAddSize = getSize(innerAddButtonRef);\n setAddSize(newAddSize);\n var newOperationSize = getSize(operationsRef);\n setOperationSize(newOperationSize);\n // Which includes add button size\n var tabContentFullSize = getSize(tabListRef);\n setTabContentSize([tabContentFullSize[0] - newAddSize[0], tabContentFullSize[1] - newAddSize[1]]);\n // Update buttons records\n setTabSizes(function () {\n var newSizes = new Map();\n tabs.forEach(function (_ref2) {\n var key = _ref2.key;\n var btnNode = getBtnRef(key).current;\n if (btnNode) {\n newSizes.set(key, {\n width: btnNode.offsetWidth,\n height: btnNode.offsetHeight,\n left: btnNode.offsetLeft,\n top: btnNode.offsetTop\n });\n }\n });\n return newSizes;\n });\n });\n // ======================== Dropdown =======================\n var startHiddenTabs = tabs.slice(0, visibleStart);\n var endHiddenTabs = tabs.slice(visibleEnd + 1);\n var hiddenTabs = [].concat(_toConsumableArray(startHiddenTabs), _toConsumableArray(endHiddenTabs));\n // =================== Link & Operations ===================\n var _useState11 = useState(),\n _useState12 = _slicedToArray(_useState11, 2),\n inkStyle = _useState12[0],\n setInkStyle = _useState12[1];\n var activeTabOffset = tabOffsets.get(activeKey);\n // Delay set ink style to avoid remove tab blink\n var inkBarRafRef = useRef();\n function cleanInkBarRaf() {\n raf.cancel(inkBarRafRef.current);\n }\n useEffect(function () {\n var newInkStyle = {};\n if (activeTabOffset) {\n if (tabPositionTopOrBottom) {\n if (rtl) {\n newInkStyle.right = activeTabOffset.right;\n } else {\n newInkStyle.left = activeTabOffset.left;\n }\n newInkStyle.width = activeTabOffset.width;\n } else {\n newInkStyle.top = activeTabOffset.top;\n newInkStyle.height = activeTabOffset.height;\n }\n }\n cleanInkBarRaf();\n inkBarRafRef.current = raf(function () {\n setInkStyle(newInkStyle);\n });\n return cleanInkBarRaf;\n }, [activeTabOffset, tabPositionTopOrBottom, rtl]);\n // ========================= Effect ========================\n useEffect(function () {\n scrollToTab();\n // eslint-disable-next-line\n }, [activeKey, stringify(activeTabOffset), stringify(tabOffsets), tabPositionTopOrBottom]);\n // Should recalculate when rtl changed\n useEffect(function () {\n onListHolderResize();\n // eslint-disable-next-line\n }, [rtl]);\n // ========================= Render ========================\n var hasDropdown = !!hiddenTabs.length;\n var wrapPrefix = \"\".concat(prefixCls, \"-nav-wrap\");\n var pingLeft;\n var pingRight;\n var pingTop;\n var pingBottom;\n if (tabPositionTopOrBottom) {\n if (rtl) {\n pingRight = transformLeft > 0;\n pingLeft = transformLeft + containerExcludeExtraSizeValue < tabContentSizeValue;\n } else {\n pingLeft = transformLeft < 0;\n pingRight = -transformLeft + containerExcludeExtraSizeValue < tabContentSizeValue;\n }\n } else {\n pingTop = transformTop < 0;\n pingBottom = -transformTop + containerExcludeExtraSizeValue < tabContentSizeValue;\n }\n return /*#__PURE__*/React.createElement(ResizeObserver, {\n onResize: onListHolderResize\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: useComposeRef(ref, containerRef),\n role: \"tablist\",\n className: classNames(\"\".concat(prefixCls, \"-nav\"), className),\n style: style,\n onKeyDown: function onKeyDown() {\n // No need animation when use keyboard\n doLockAnimation();\n }\n }, /*#__PURE__*/React.createElement(ExtraContent, {\n ref: extraLeftRef,\n position: \"left\",\n extra: extra,\n prefixCls: prefixCls\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(wrapPrefix, (_classNames = {}, _defineProperty(_classNames, \"\".concat(wrapPrefix, \"-ping-left\"), pingLeft), _defineProperty(_classNames, \"\".concat(wrapPrefix, \"-ping-right\"), pingRight), _defineProperty(_classNames, \"\".concat(wrapPrefix, \"-ping-top\"), pingTop), _defineProperty(_classNames, \"\".concat(wrapPrefix, \"-ping-bottom\"), pingBottom), _classNames)),\n ref: tabsWrapperRef\n }, /*#__PURE__*/React.createElement(ResizeObserver, {\n onResize: onListHolderResize\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: tabListRef,\n className: \"\".concat(prefixCls, \"-nav-list\"),\n style: {\n transform: \"translate(\".concat(transformLeft, \"px, \").concat(transformTop, \"px)\"),\n transition: lockAnimation ? 'none' : undefined\n }\n }, tabNodes, /*#__PURE__*/React.createElement(AddButton, {\n ref: innerAddButtonRef,\n prefixCls: prefixCls,\n locale: locale,\n editable: editable,\n style: _objectSpread(_objectSpread({}, tabNodes.length === 0 ? undefined : tabNodeStyle), {}, {\n visibility: hasDropdown ? 'hidden' : null\n })\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(\"\".concat(prefixCls, \"-ink-bar\"), _defineProperty({}, \"\".concat(prefixCls, \"-ink-bar-animated\"), animated.inkBar)),\n style: inkStyle\n })))), /*#__PURE__*/React.createElement(OperationNode, _extends({}, props, {\n removeAriaLabel: locale === null || locale === void 0 ? void 0 : locale.removeAriaLabel,\n ref: operationsRef,\n prefixCls: prefixCls,\n tabs: hiddenTabs,\n className: !hasDropdown && operationsHiddenClassName,\n tabMoving: !!lockAnimation\n })), /*#__PURE__*/React.createElement(ExtraContent, {\n ref: extraRightRef,\n position: \"right\",\n extra: extra,\n prefixCls: prefixCls\n })));\n /* eslint-enable */\n}\n\nexport default /*#__PURE__*/React.forwardRef(TabNavList);","import * as React from 'react';\nimport { useRef } from 'react';\nexport default function useRefs() {\n var cacheRefs = useRef(new Map());\n function getRef(key) {\n if (!cacheRefs.current.has(key)) {\n cacheRefs.current.set(key, /*#__PURE__*/React.createRef());\n }\n return cacheRefs.current.get(key);\n }\n function removeRef(key) {\n cacheRefs.current.delete(key);\n }\n return [getRef, removeRef];\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"renderTabBar\"],\n _excluded2 = [\"label\", \"key\"];\nimport React from \"react\";\n// zombieJ: To compatible with `renderTabBar` usage.\nimport TabNavList from '.';\nimport { useContext } from 'react';\nimport TabContext from '../TabContext';\nimport TabPane from '../TabPanelList/TabPane';\n// We have to create a TabNavList components.\nexport default function TabNavListWrapper(_ref) {\n var renderTabBar = _ref.renderTabBar,\n restProps = _objectWithoutProperties(_ref, _excluded);\n var _useContext = useContext(TabContext),\n tabs = _useContext.tabs;\n if (renderTabBar) {\n var tabNavBarProps = _objectSpread(_objectSpread({}, restProps), {}, {\n // Legacy support. We do not use this actually\n panes: tabs.map(function (_ref2) {\n var label = _ref2.label,\n key = _ref2.key,\n restTabProps = _objectWithoutProperties(_ref2, _excluded2);\n return /*#__PURE__*/React.createElement(TabPane, _extends({\n tab: label,\n key: key,\n tabKey: key\n }, restTabProps));\n })\n });\n return renderTabBar(tabNavBarProps, TabNavList);\n }\n return /*#__PURE__*/React.createElement(TabNavList, restProps);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"id\", \"prefixCls\", \"className\", \"items\", \"direction\", \"activeKey\", \"defaultActiveKey\", \"editable\", \"animated\", \"tabPosition\", \"tabBarGutter\", \"tabBarStyle\", \"tabBarExtraContent\", \"locale\", \"moreIcon\", \"moreTransitionName\", \"destroyInactiveTabPane\", \"renderTabBar\", \"onChange\", \"onTabClick\", \"onTabScroll\", \"getPopupContainer\", \"popupClassName\"];\n// Accessibility https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/Tab_Role\nimport * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport classNames from 'classnames';\nimport isMobile from \"rc-util/es/isMobile\";\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport TabPanelList from './TabPanelList';\nimport TabContext from './TabContext';\nimport TabNavListWrapper from './TabNavList/Wrapper';\nimport useAnimateConfig from './hooks/useAnimateConfig';\n/**\n * Should added antd:\n * - type\n *\n * Removed:\n * - onNextClick\n * - onPrevClick\n * - keyboard\n */\n// Used for accessibility\nvar uuid = 0;\nfunction Tabs(_ref, ref) {\n var _classNames;\n var id = _ref.id,\n _ref$prefixCls = _ref.prefixCls,\n prefixCls = _ref$prefixCls === void 0 ? 'rc-tabs' : _ref$prefixCls,\n className = _ref.className,\n items = _ref.items,\n direction = _ref.direction,\n activeKey = _ref.activeKey,\n defaultActiveKey = _ref.defaultActiveKey,\n editable = _ref.editable,\n animated = _ref.animated,\n _ref$tabPosition = _ref.tabPosition,\n tabPosition = _ref$tabPosition === void 0 ? 'top' : _ref$tabPosition,\n tabBarGutter = _ref.tabBarGutter,\n tabBarStyle = _ref.tabBarStyle,\n tabBarExtraContent = _ref.tabBarExtraContent,\n locale = _ref.locale,\n moreIcon = _ref.moreIcon,\n moreTransitionName = _ref.moreTransitionName,\n destroyInactiveTabPane = _ref.destroyInactiveTabPane,\n renderTabBar = _ref.renderTabBar,\n onChange = _ref.onChange,\n onTabClick = _ref.onTabClick,\n onTabScroll = _ref.onTabScroll,\n getPopupContainer = _ref.getPopupContainer,\n popupClassName = _ref.popupClassName,\n restProps = _objectWithoutProperties(_ref, _excluded);\n var tabs = React.useMemo(function () {\n return (items || []).filter(function (item) {\n return item && _typeof(item) === 'object' && 'key' in item;\n });\n }, [items]);\n var rtl = direction === 'rtl';\n var mergedAnimated = useAnimateConfig(animated);\n // ======================== Mobile ========================\n var _useState = useState(false),\n _useState2 = _slicedToArray(_useState, 2),\n mobile = _useState2[0],\n setMobile = _useState2[1];\n useEffect(function () {\n // Only update on the client side\n setMobile(isMobile());\n }, []);\n // ====================== Active Key ======================\n var _useMergedState = useMergedState(function () {\n var _tabs$;\n return (_tabs$ = tabs[0]) === null || _tabs$ === void 0 ? void 0 : _tabs$.key;\n }, {\n value: activeKey,\n defaultValue: defaultActiveKey\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n mergedActiveKey = _useMergedState2[0],\n setMergedActiveKey = _useMergedState2[1];\n var _useState3 = useState(function () {\n return tabs.findIndex(function (tab) {\n return tab.key === mergedActiveKey;\n });\n }),\n _useState4 = _slicedToArray(_useState3, 2),\n activeIndex = _useState4[0],\n setActiveIndex = _useState4[1];\n // Reset active key if not exist anymore\n useEffect(function () {\n var newActiveIndex = tabs.findIndex(function (tab) {\n return tab.key === mergedActiveKey;\n });\n if (newActiveIndex === -1) {\n var _tabs$newActiveIndex;\n newActiveIndex = Math.max(0, Math.min(activeIndex, tabs.length - 1));\n setMergedActiveKey((_tabs$newActiveIndex = tabs[newActiveIndex]) === null || _tabs$newActiveIndex === void 0 ? void 0 : _tabs$newActiveIndex.key);\n }\n setActiveIndex(newActiveIndex);\n }, [tabs.map(function (tab) {\n return tab.key;\n }).join('_'), mergedActiveKey, activeIndex]);\n // ===================== Accessibility ====================\n var _useMergedState3 = useMergedState(null, {\n value: id\n }),\n _useMergedState4 = _slicedToArray(_useMergedState3, 2),\n mergedId = _useMergedState4[0],\n setMergedId = _useMergedState4[1];\n // Async generate id to avoid ssr mapping failed\n useEffect(function () {\n if (!id) {\n setMergedId(\"rc-tabs-\".concat(process.env.NODE_ENV === 'test' ? 'test' : uuid));\n uuid += 1;\n }\n }, []);\n // ======================== Events ========================\n function onInternalTabClick(key, e) {\n onTabClick === null || onTabClick === void 0 ? void 0 : onTabClick(key, e);\n var isActiveChanged = key !== mergedActiveKey;\n setMergedActiveKey(key);\n if (isActiveChanged) {\n onChange === null || onChange === void 0 ? void 0 : onChange(key);\n }\n }\n // ======================== Render ========================\n var sharedProps = {\n id: mergedId,\n activeKey: mergedActiveKey,\n animated: mergedAnimated,\n tabPosition: tabPosition,\n rtl: rtl,\n mobile: mobile\n };\n var tabNavBar;\n var tabNavBarProps = _objectSpread(_objectSpread({}, sharedProps), {}, {\n editable: editable,\n locale: locale,\n moreIcon: moreIcon,\n moreTransitionName: moreTransitionName,\n tabBarGutter: tabBarGutter,\n onTabClick: onInternalTabClick,\n onTabScroll: onTabScroll,\n extra: tabBarExtraContent,\n style: tabBarStyle,\n panes: null,\n getPopupContainer: getPopupContainer,\n popupClassName: popupClassName\n });\n return /*#__PURE__*/React.createElement(TabContext.Provider, {\n value: {\n tabs: tabs,\n prefixCls: prefixCls\n }\n }, /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: ref,\n id: id,\n className: classNames(prefixCls, \"\".concat(prefixCls, \"-\").concat(tabPosition), (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-mobile\"), mobile), _defineProperty(_classNames, \"\".concat(prefixCls, \"-editable\"), editable), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), rtl), _classNames), className)\n }, restProps), tabNavBar, /*#__PURE__*/React.createElement(TabNavListWrapper, _extends({}, tabNavBarProps, {\n renderTabBar: renderTabBar\n })), /*#__PURE__*/React.createElement(TabPanelList, _extends({\n destroyInactiveTabPane: destroyInactiveTabPane\n }, sharedProps, {\n animated: mergedAnimated\n }))));\n}\nvar ForwardTabs = /*#__PURE__*/React.forwardRef(Tabs);\nif (process.env.NODE_ENV !== 'production') {\n ForwardTabs.displayName = 'Tabs';\n}\nexport default ForwardTabs;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport warning from \"rc-util/es/warning\";\nexport default function useAnimateConfig() {\n var animated = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n inkBar: true,\n tabPane: false\n };\n var mergedAnimated;\n if (animated === false) {\n mergedAnimated = {\n inkBar: false,\n tabPane: false\n };\n } else if (animated === true) {\n mergedAnimated = {\n inkBar: true,\n tabPane: false\n };\n } else {\n mergedAnimated = _objectSpread({\n inkBar: true\n }, _typeof(animated) === 'object' ? animated : {});\n }\n // Enable tabPane animation if provide motion\n if (mergedAnimated.tabPaneMotion && mergedAnimated.tabPane === undefined) {\n mergedAnimated.tabPane = true;\n }\n if (!mergedAnimated.tabPaneMotion && mergedAnimated.tabPane) {\n if (process.env.NODE_ENV !== 'production') {\n warning(false, '`animated.tabPane` is true but `animated.tabPaneMotion` is not provided. Motion will not work.');\n }\n mergedAnimated.tabPane = false;\n }\n return mergedAnimated;\n}","import Tabs from './Tabs';\nexport default Tabs;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { getTransitionName } from '../../_util/motion';\nvar motion = {\n motionAppear: false,\n motionEnter: true,\n motionLeave: true\n};\nexport default function useAnimateConfig(prefixCls) {\n var animated = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n inkBar: true,\n tabPane: false\n };\n var mergedAnimated;\n if (animated === false) {\n mergedAnimated = {\n inkBar: false,\n tabPane: false\n };\n } else if (animated === true) {\n mergedAnimated = {\n inkBar: true,\n tabPane: true\n };\n } else {\n mergedAnimated = _extends({\n inkBar: true\n }, _typeof(animated) === 'object' ? animated : {});\n }\n if (mergedAnimated.tabPane) {\n mergedAnimated.tabPaneMotion = _extends(_extends({}, motion), {\n motionName: getTransitionName(prefixCls, 'switch')\n });\n }\n return mergedAnimated;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") 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])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport toArray from \"rc-util/es/Children/toArray\";\nimport warning from '../../_util/warning';\nfunction filter(items) {\n return items.filter(function (item) {\n return item;\n });\n}\nexport default function useLegacyItems(items, children) {\n if (items) {\n return items;\n }\n process.env.NODE_ENV !== \"production\" ? warning(!children, 'Tabs', 'Tabs.TabPane is deprecated. Please use `items` directly.') : void 0;\n var childrenItems = toArray(children).map(function (node) {\n if ( /*#__PURE__*/React.isValidElement(node)) {\n var key = node.key,\n props = node.props;\n var _a = props || {},\n tab = _a.tab,\n restProps = __rest(_a, [\"tab\"]);\n var item = _extends(_extends({\n key: String(key)\n }, restProps), {\n label: tab\n });\n return item;\n }\n return null;\n });\n return filter(childrenItems);\n}","var TabPane = function TabPane() {\n return null;\n};\nif (process.env.NODE_ENV !== 'production') {\n TabPane.displayName = 'DeprecatedTabPane';\n}\nexport default TabPane;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Keyframes } from '@ant-design/cssinjs';\nimport { initMotion } from './motion';\nexport var slideUpIn = new Keyframes('antSlideUpIn', {\n '0%': {\n transform: 'scaleY(0.8)',\n transformOrigin: '0% 0%',\n opacity: 0\n },\n '100%': {\n transform: 'scaleY(1)',\n transformOrigin: '0% 0%',\n opacity: 1\n }\n});\nexport var slideUpOut = new Keyframes('antSlideUpOut', {\n '0%': {\n transform: 'scaleY(1)',\n transformOrigin: '0% 0%',\n opacity: 1\n },\n '100%': {\n transform: 'scaleY(0.8)',\n transformOrigin: '0% 0%',\n opacity: 0\n }\n});\nexport var slideDownIn = new Keyframes('antSlideDownIn', {\n '0%': {\n transform: 'scaleY(0.8)',\n transformOrigin: '100% 100%',\n opacity: 0\n },\n '100%': {\n transform: 'scaleY(1)',\n transformOrigin: '100% 100%',\n opacity: 1\n }\n});\nexport var slideDownOut = new Keyframes('antSlideDownOut', {\n '0%': {\n transform: 'scaleY(1)',\n transformOrigin: '100% 100%',\n opacity: 1\n },\n '100%': {\n transform: 'scaleY(0.8)',\n transformOrigin: '100% 100%',\n opacity: 0\n }\n});\nexport var slideLeftIn = new Keyframes('antSlideLeftIn', {\n '0%': {\n transform: 'scaleX(0.8)',\n transformOrigin: '0% 0%',\n opacity: 0\n },\n '100%': {\n transform: 'scaleX(1)',\n transformOrigin: '0% 0%',\n opacity: 1\n }\n});\nexport var slideLeftOut = new Keyframes('antSlideLeftOut', {\n '0%': {\n transform: 'scaleX(1)',\n transformOrigin: '0% 0%',\n opacity: 1\n },\n '100%': {\n transform: 'scaleX(0.8)',\n transformOrigin: '0% 0%',\n opacity: 0\n }\n});\nexport var slideRightIn = new Keyframes('antSlideRightIn', {\n '0%': {\n transform: 'scaleX(0.8)',\n transformOrigin: '100% 0%',\n opacity: 0\n },\n '100%': {\n transform: 'scaleX(1)',\n transformOrigin: '100% 0%',\n opacity: 1\n }\n});\nexport var slideRightOut = new Keyframes('antSlideRightOut', {\n '0%': {\n transform: 'scaleX(1)',\n transformOrigin: '100% 0%',\n opacity: 1\n },\n '100%': {\n transform: 'scaleX(0.8)',\n transformOrigin: '100% 0%',\n opacity: 0\n }\n});\nvar slideMotion = {\n 'slide-up': {\n inKeyframes: slideUpIn,\n outKeyframes: slideUpOut\n },\n 'slide-down': {\n inKeyframes: slideDownIn,\n outKeyframes: slideDownOut\n },\n 'slide-left': {\n inKeyframes: slideLeftIn,\n outKeyframes: slideLeftOut\n },\n 'slide-right': {\n inKeyframes: slideRightIn,\n outKeyframes: slideRightOut\n }\n};\nexport var initSlideMotion = function initSlideMotion(token, motionName) {\n var _ref;\n var antCls = token.antCls;\n var motionCls = antCls + \"-\" + motionName;\n var _slideMotion$motionNa = slideMotion[motionName],\n inKeyframes = _slideMotion$motionNa.inKeyframes,\n outKeyframes = _slideMotion$motionNa.outKeyframes;\n return [initMotion(motionCls, inKeyframes, outKeyframes, token.motionDurationMid), (_ref = {}, _defineProperty(_ref, \"\\n \" + motionCls + \"-enter,\\n \" + motionCls + \"-appear\\n \", {\n opacity: 0,\n animationTimingFunction: token.motionEaseOutQuint\n }), _defineProperty(_ref, motionCls + \"-leave\", {\n animationTimingFunction: token.motionEaseInQuint\n }), _ref)];\n};","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { initSlideMotion } from '../../style/motion';\nvar genMotionStyle = function genMotionStyle(token) {\n var componentCls = token.componentCls,\n motionDurationSlow = token.motionDurationSlow;\n return [_defineProperty({}, componentCls, _defineProperty({}, componentCls + \"-switch\", {\n '&-appear, &-enter': {\n transition: 'none',\n '&-start': {\n opacity: 0\n },\n '&-active': {\n opacity: 1,\n transition: \"opacity \" + motionDurationSlow\n }\n },\n '&-leave': {\n position: 'absolute',\n transition: 'none',\n inset: 0,\n '&-start': {\n opacity: 1\n },\n '&-active': {\n opacity: 0,\n transition: \"opacity \" + motionDurationSlow\n }\n }\n })),\n // Follow code may reuse in other components\n [initSlideMotion(token, 'slide-up'), initSlideMotion(token, 'slide-down')]];\n};\nexport default genMotionStyle;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport { genFocusStyle, resetComponent, textEllipsis } from '../../style';\nimport genMotionStyle from './motion';\nvar genCardStyle = function genCardStyle(token) {\n var _ref, _ref4, _ref6, _ref10, _ref12, _ref14;\n var componentCls = token.componentCls,\n tabsCardHorizontalPadding = token.tabsCardHorizontalPadding,\n tabsCardHeadBackground = token.tabsCardHeadBackground,\n tabsCardGutter = token.tabsCardGutter,\n colorSplit = token.colorSplit;\n return _defineProperty({}, componentCls + \"-card\", (_ref14 = {}, _defineProperty(_ref14, \"> \" + componentCls + \"-nav, > div > \" + componentCls + \"-nav\", (_ref = {}, _defineProperty(_ref, componentCls + \"-tab\", {\n margin: 0,\n padding: tabsCardHorizontalPadding,\n background: tabsCardHeadBackground,\n border: token.lineWidth + \"px \" + token.lineType + \" \" + colorSplit,\n transition: \"all \" + token.motionDurationSlow + \" \" + token.motionEaseInOut\n }), _defineProperty(_ref, componentCls + \"-tab-active\", {\n color: token.colorPrimary,\n background: token.colorBgContainer\n }), _defineProperty(_ref, componentCls + \"-ink-bar\", {\n visibility: 'hidden'\n }), _ref)), _defineProperty(_ref14, \"&\" + componentCls + \"-top, &\" + componentCls + \"-bottom\", _defineProperty({}, \"> \" + componentCls + \"-nav, > div > \" + componentCls + \"-nav\", _defineProperty({}, componentCls + \"-tab + \" + componentCls + \"-tab\", {\n marginLeft: {\n _skip_check_: true,\n value: tabsCardGutter + \"px\"\n }\n }))), _defineProperty(_ref14, \"&\" + componentCls + \"-top\", _defineProperty({}, \"> \" + componentCls + \"-nav, > div > \" + componentCls + \"-nav\", (_ref4 = {}, _defineProperty(_ref4, componentCls + \"-tab\", {\n borderRadius: token.borderRadiusLG + \"px \" + token.borderRadiusLG + \"px 0 0\"\n }), _defineProperty(_ref4, componentCls + \"-tab-active\", {\n borderBottomColor: token.colorBgContainer\n }), _ref4))), _defineProperty(_ref14, \"&\" + componentCls + \"-bottom\", _defineProperty({}, \"> \" + componentCls + \"-nav, > div > \" + componentCls + \"-nav\", (_ref6 = {}, _defineProperty(_ref6, componentCls + \"-tab\", {\n borderRadius: \"0 0 \" + token.borderRadiusLG + \"px \" + token.borderRadiusLG + \"px\"\n }), _defineProperty(_ref6, componentCls + \"-tab-active\", {\n borderTopColor: token.colorBgContainer\n }), _ref6))), _defineProperty(_ref14, \"&\" + componentCls + \"-left, &\" + componentCls + \"-right\", _defineProperty({}, \"> \" + componentCls + \"-nav, > div > \" + componentCls + \"-nav\", _defineProperty({}, componentCls + \"-tab + \" + componentCls + \"-tab\", {\n marginTop: tabsCardGutter + \"px\"\n }))), _defineProperty(_ref14, \"&\" + componentCls + \"-left\", _defineProperty({}, \"> \" + componentCls + \"-nav, > div > \" + componentCls + \"-nav\", (_ref10 = {}, _defineProperty(_ref10, componentCls + \"-tab\", {\n borderRadius: {\n _skip_check_: true,\n value: token.borderRadiusLG + \"px 0 0 \" + token.borderRadiusLG + \"px\"\n }\n }), _defineProperty(_ref10, componentCls + \"-tab-active\", {\n borderRightColor: {\n _skip_check_: true,\n value: token.colorBgContainer\n }\n }), _ref10))), _defineProperty(_ref14, \"&\" + componentCls + \"-right\", _defineProperty({}, \"> \" + componentCls + \"-nav, > div > \" + componentCls + \"-nav\", (_ref12 = {}, _defineProperty(_ref12, componentCls + \"-tab\", {\n borderRadius: {\n _skip_check_: true,\n value: \"0 \" + token.borderRadiusLG + \"px \" + token.borderRadiusLG + \"px 0\"\n }\n }), _defineProperty(_ref12, componentCls + \"-tab-active\", {\n borderLeftColor: {\n _skip_check_: true,\n value: token.colorBgContainer\n }\n }), _ref12))), _ref14));\n};\nvar genDropdownStyle = function genDropdownStyle(token) {\n var componentCls = token.componentCls,\n tabsHoverColor = token.tabsHoverColor,\n dropdownEdgeChildVerticalPadding = token.dropdownEdgeChildVerticalPadding;\n return _defineProperty({}, componentCls + \"-dropdown\", _extends(_extends({}, resetComponent(token)), _defineProperty({\n position: 'absolute',\n top: -9999,\n left: {\n _skip_check_: true,\n value: -9999\n },\n zIndex: token.zIndexPopup,\n display: 'block',\n '&-hidden': {\n display: 'none'\n }\n }, componentCls + \"-dropdown-menu\", {\n maxHeight: token.tabsDropdownHeight,\n margin: 0,\n padding: dropdownEdgeChildVerticalPadding + \"px 0\",\n overflowX: 'hidden',\n overflowY: 'auto',\n textAlign: {\n _skip_check_: true,\n value: 'left'\n },\n listStyleType: 'none',\n backgroundColor: token.colorBgContainer,\n backgroundClip: 'padding-box',\n borderRadius: token.borderRadiusLG,\n outline: 'none',\n boxShadow: token.boxShadow,\n '&-item': _extends(_extends({}, textEllipsis), {\n display: 'flex',\n alignItems: 'center',\n minWidth: token.tabsDropdownWidth,\n margin: 0,\n padding: token.paddingXXS + \"px \" + token.paddingSM + \"px\",\n color: token.colorText,\n fontWeight: 'normal',\n fontSize: token.fontSize,\n lineHeight: token.lineHeight,\n cursor: 'pointer',\n transition: \"all \" + token.motionDurationSlow,\n '> span': {\n flex: 1,\n whiteSpace: 'nowrap'\n },\n '&-remove': {\n flex: 'none',\n marginLeft: {\n _skip_check_: true,\n value: token.marginSM\n },\n color: token.colorTextDescription,\n fontSize: token.fontSizeSM,\n background: 'transparent',\n border: 0,\n cursor: 'pointer',\n '&:hover': {\n color: tabsHoverColor\n }\n },\n '&:hover': {\n background: token.controlItemBgHover\n },\n '&-disabled': {\n '&, &:hover': {\n color: token.colorTextDisabled,\n background: 'transparent',\n cursor: 'not-allowed'\n }\n }\n })\n })));\n};\nvar genPositionStyle = function genPositionStyle(token) {\n var _ref17, _ref18, _ref23, _ref24, _ref25, _ref29, _ref32, _ref33;\n var componentCls = token.componentCls,\n margin = token.margin,\n colorSplit = token.colorSplit;\n return _ref33 = {}, _defineProperty(_ref33, componentCls + \"-top, \" + componentCls + \"-bottom\", _defineProperty({\n flexDirection: 'column'\n }, \"> \" + componentCls + \"-nav, > div > \" + componentCls + \"-nav\", (_ref18 = {\n margin: \"0 0 \" + margin + \"px 0\",\n '&::before': {\n position: 'absolute',\n right: {\n _skip_check_: true,\n value: 0\n },\n left: {\n _skip_check_: true,\n value: 0\n },\n borderBottom: token.lineWidth + \"px \" + token.lineType + \" \" + colorSplit,\n content: \"''\"\n }\n }, _defineProperty(_ref18, componentCls + \"-ink-bar\", {\n height: token.lineWidthBold,\n '&-animated': {\n transition: \"width \" + token.motionDurationSlow + \", left \" + token.motionDurationSlow + \",\\n right \" + token.motionDurationSlow\n }\n }), _defineProperty(_ref18, componentCls + \"-nav-wrap\", (_ref17 = {\n '&::before, &::after': {\n top: 0,\n bottom: 0,\n width: token.controlHeight\n },\n '&::before': {\n left: {\n _skip_check_: true,\n value: 0\n },\n boxShadow: token.boxShadowTabsOverflowLeft\n },\n '&::after': {\n right: {\n _skip_check_: true,\n value: 0\n },\n boxShadow: token.boxShadowTabsOverflowRight\n }\n }, _defineProperty(_ref17, \"&\" + componentCls + \"-nav-wrap-ping-left::before\", {\n opacity: 1\n }), _defineProperty(_ref17, \"&\" + componentCls + \"-nav-wrap-ping-right::after\", {\n opacity: 1\n }), _ref17)), _ref18))), _defineProperty(_ref33, componentCls + \"-top\", _defineProperty({}, \"> \" + componentCls + \"-nav,\\n > div > \" + componentCls + \"-nav\", _defineProperty({\n '&::before': {\n bottom: 0\n }\n }, componentCls + \"-ink-bar\", {\n bottom: 0\n }))), _defineProperty(_ref33, componentCls + \"-bottom\", (_ref23 = {}, _defineProperty(_ref23, \"> \" + componentCls + \"-nav, > div > \" + componentCls + \"-nav\", _defineProperty({\n order: 1,\n marginTop: margin + \"px\",\n marginBottom: 0,\n '&::before': {\n top: 0\n }\n }, componentCls + \"-ink-bar\", {\n top: 0\n })), _defineProperty(_ref23, \"> \" + componentCls + \"-content-holder, > div > \" + componentCls + \"-content-holder\", {\n order: 0\n }), _ref23)), _defineProperty(_ref33, componentCls + \"-left, \" + componentCls + \"-right\", _defineProperty({}, \"> \" + componentCls + \"-nav, > div > \" + componentCls + \"-nav\", (_ref25 = {\n flexDirection: 'column',\n minWidth: token.controlHeight * 1.25\n }, _defineProperty(_ref25, componentCls + \"-tab\", {\n padding: token.paddingXS + \"px \" + token.paddingLG + \"px\",\n textAlign: 'center'\n }), _defineProperty(_ref25, componentCls + \"-tab + \" + componentCls + \"-tab\", {\n margin: token.margin + \"px 0 0 0\"\n }), _defineProperty(_ref25, componentCls + \"-nav-wrap\", (_ref24 = {\n flexDirection: 'column',\n '&::before, &::after': {\n right: {\n _skip_check_: true,\n value: 0\n },\n left: {\n _skip_check_: true,\n value: 0\n },\n height: token.controlHeight\n },\n '&::before': {\n top: 0,\n boxShadow: token.boxShadowTabsOverflowTop\n },\n '&::after': {\n bottom: 0,\n boxShadow: token.boxShadowTabsOverflowBottom\n }\n }, _defineProperty(_ref24, \"&\" + componentCls + \"-nav-wrap-ping-top::before\", {\n opacity: 1\n }), _defineProperty(_ref24, \"&\" + componentCls + \"-nav-wrap-ping-bottom::after\", {\n opacity: 1\n }), _ref24)), _defineProperty(_ref25, componentCls + \"-ink-bar\", {\n width: token.lineWidthBold,\n '&-animated': {\n transition: \"height \" + token.motionDurationSlow + \", top \" + token.motionDurationSlow\n }\n }), _defineProperty(_ref25, componentCls + \"-nav-list, \" + componentCls + \"-nav-operations\", {\n flex: '1 0 auto',\n flexDirection: 'column'\n }), _ref25))), _defineProperty(_ref33, componentCls + \"-left\", (_ref29 = {}, _defineProperty(_ref29, \"> \" + componentCls + \"-nav, > div > \" + componentCls + \"-nav\", _defineProperty({}, componentCls + \"-ink-bar\", {\n right: {\n _skip_check_: true,\n value: 0\n }\n })), _defineProperty(_ref29, \"> \" + componentCls + \"-content-holder, > div > \" + componentCls + \"-content-holder\", _defineProperty({\n marginLeft: {\n _skip_check_: true,\n value: \"-\" + token.lineWidth + \"px\"\n },\n borderLeft: {\n _skip_check_: true,\n value: token.lineWidth + \"px \" + token.lineType + \" \" + token.colorBorder\n }\n }, \"> \" + componentCls + \"-content > \" + componentCls + \"-tabpane\", {\n paddingLeft: {\n _skip_check_: true,\n value: token.paddingLG\n }\n })), _ref29)), _defineProperty(_ref33, componentCls + \"-right\", (_ref32 = {}, _defineProperty(_ref32, \"> \" + componentCls + \"-nav, > div > \" + componentCls + \"-nav\", _defineProperty({\n order: 1\n }, componentCls + \"-ink-bar\", {\n left: {\n _skip_check_: true,\n value: 0\n }\n })), _defineProperty(_ref32, \"> \" + componentCls + \"-content-holder, > div > \" + componentCls + \"-content-holder\", _defineProperty({\n order: 0,\n marginRight: {\n _skip_check_: true,\n value: -token.lineWidth\n },\n borderRight: {\n _skip_check_: true,\n value: token.lineWidth + \"px \" + token.lineType + \" \" + token.colorBorder\n }\n }, \"> \" + componentCls + \"-content > \" + componentCls + \"-tabpane\", {\n paddingRight: {\n _skip_check_: true,\n value: token.paddingLG\n }\n })), _ref32)), _ref33;\n};\nvar genSizeStyle = function genSizeStyle(token) {\n var _ref41, _ref44, _ref45;\n var componentCls = token.componentCls,\n padding = token.padding;\n return _ref45 = {}, _defineProperty(_ref45, componentCls, {\n '&-small': _defineProperty({}, \"> \" + componentCls + \"-nav\", _defineProperty({}, componentCls + \"-tab\", {\n padding: token.paddingXS + \"px 0\",\n fontSize: token.fontSize\n })),\n '&-large': _defineProperty({}, \"> \" + componentCls + \"-nav\", _defineProperty({}, componentCls + \"-tab\", {\n padding: padding + \"px 0\",\n fontSize: token.fontSizeLG\n }))\n }), _defineProperty(_ref45, componentCls + \"-card\", (_ref44 = {}, _defineProperty(_ref44, \"&\" + componentCls + \"-small\", (_ref41 = {}, _defineProperty(_ref41, \"> \" + componentCls + \"-nav\", _defineProperty({}, componentCls + \"-tab\", {\n padding: token.paddingXXS * 1.5 + \"px \" + padding + \"px\"\n })), _defineProperty(_ref41, \"&\" + componentCls + \"-bottom\", _defineProperty({}, \"> \" + componentCls + \"-nav \" + componentCls + \"-tab\", {\n borderRadius: \"0 0 \" + token.borderRadius + \"px \" + token.borderRadius + \"px\"\n })), _defineProperty(_ref41, \"&\" + componentCls + \"-top\", _defineProperty({}, \"> \" + componentCls + \"-nav \" + componentCls + \"-tab\", {\n borderRadius: token.borderRadius + \"px \" + token.borderRadius + \"px 0 0\"\n })), _defineProperty(_ref41, \"&\" + componentCls + \"-right\", _defineProperty({}, \"> \" + componentCls + \"-nav \" + componentCls + \"-tab\", {\n borderRadius: {\n _skip_check_: true,\n value: \"0 \" + token.borderRadius + \"px \" + token.borderRadius + \"px 0\"\n }\n })), _defineProperty(_ref41, \"&\" + componentCls + \"-left\", _defineProperty({}, \"> \" + componentCls + \"-nav \" + componentCls + \"-tab\", {\n borderRadius: {\n _skip_check_: true,\n value: token.borderRadius + \"px 0 0 \" + token.borderRadius + \"px\"\n }\n })), _ref41)), _defineProperty(_ref44, \"&\" + componentCls + \"-large\", _defineProperty({}, \"> \" + componentCls + \"-nav\", _defineProperty({}, componentCls + \"-tab\", {\n padding: token.paddingXS + \"px \" + padding + \"px \" + token.paddingXXS * 1.5 + \"px\"\n }))), _ref44)), _ref45;\n};\nvar genTabStyle = function genTabStyle(token) {\n var _tabCls, _ref46;\n var componentCls = token.componentCls,\n tabsActiveColor = token.tabsActiveColor,\n tabsHoverColor = token.tabsHoverColor,\n iconCls = token.iconCls,\n tabsHorizontalGutter = token.tabsHorizontalGutter;\n var tabCls = componentCls + \"-tab\";\n return _ref46 = {}, _defineProperty(_ref46, tabCls, (_tabCls = {\n position: 'relative',\n display: 'inline-flex',\n alignItems: 'center',\n padding: token.paddingSM + \"px 0\",\n fontSize: token.fontSize + \"px\",\n background: 'transparent',\n border: 0,\n outline: 'none',\n cursor: 'pointer',\n '&-btn, &-remove': _extends({\n '&:focus:not(:focus-visible), &:active': {\n color: tabsActiveColor\n }\n }, genFocusStyle(token)),\n '&-btn': {\n outline: 'none',\n transition: 'all 0.3s'\n },\n '&-remove': {\n flex: 'none',\n marginRight: {\n _skip_check_: true,\n value: -token.marginXXS\n },\n marginLeft: {\n _skip_check_: true,\n value: token.marginXS\n },\n color: token.colorTextDescription,\n fontSize: token.fontSizeSM,\n background: 'transparent',\n border: 'none',\n outline: 'none',\n cursor: 'pointer',\n transition: \"all \" + token.motionDurationSlow,\n '&:hover': {\n color: token.colorTextHeading\n }\n },\n '&:hover': {\n color: tabsHoverColor\n }\n }, _defineProperty(_tabCls, \"&\" + tabCls + \"-active \" + tabCls + \"-btn\", {\n color: token.colorPrimary,\n textShadow: token.tabsActiveTextShadow\n }), _defineProperty(_tabCls, \"&\" + tabCls + \"-disabled\", {\n color: token.colorTextDisabled,\n cursor: 'not-allowed'\n }), _defineProperty(_tabCls, \"&\" + tabCls + \"-disabled \" + tabCls + \"-btn, &\" + tabCls + \"-disabled \" + componentCls + \"-remove\", {\n '&:focus, &:active': {\n color: token.colorTextDisabled\n }\n }), _defineProperty(_tabCls, \"& \" + tabCls + \"-remove \" + iconCls, {\n margin: 0\n }), _defineProperty(_tabCls, iconCls, {\n marginRight: {\n _skip_check_: true,\n value: token.marginSM\n }\n }), _tabCls)), _defineProperty(_ref46, tabCls + \" + \" + tabCls, {\n margin: {\n _skip_check_: true,\n value: \"0 0 0 \" + tabsHorizontalGutter + \"px\"\n }\n }), _ref46;\n};\nvar genRtlStyle = function genRtlStyle(token) {\n var _ref48, _ref50, _ref51, _rtlCls, _ref55;\n var componentCls = token.componentCls,\n tabsHorizontalGutter = token.tabsHorizontalGutter,\n iconCls = token.iconCls,\n tabsCardGutter = token.tabsCardGutter;\n var rtlCls = componentCls + \"-rtl\";\n return _ref55 = {}, _defineProperty(_ref55, rtlCls, (_rtlCls = {\n direction: 'rtl'\n }, _defineProperty(_rtlCls, componentCls + \"-nav\", _defineProperty({}, componentCls + \"-tab\", (_ref48 = {\n margin: {\n _skip_check_: true,\n value: \"0 0 0 \" + tabsHorizontalGutter + \"px\"\n }\n }, _defineProperty(_ref48, componentCls + \"-tab:last-of-type\", {\n marginLeft: {\n _skip_check_: true,\n value: 0\n }\n }), _defineProperty(_ref48, iconCls, {\n marginRight: {\n _skip_check_: true,\n value: 0\n },\n marginLeft: {\n _skip_check_: true,\n value: token.marginSM + \"px\"\n }\n }), _defineProperty(_ref48, componentCls + \"-tab-remove\", _defineProperty({\n marginRight: {\n _skip_check_: true,\n value: token.marginXS + \"px\"\n },\n marginLeft: {\n _skip_check_: true,\n value: \"-\" + token.marginXXS + \"px\"\n }\n }, iconCls, {\n margin: 0\n })), _ref48))), _defineProperty(_rtlCls, \"&\" + componentCls + \"-left\", (_ref50 = {}, _defineProperty(_ref50, \"> \" + componentCls + \"-nav\", {\n order: 1\n }), _defineProperty(_ref50, \"> \" + componentCls + \"-content-holder\", {\n order: 0\n }), _ref50)), _defineProperty(_rtlCls, \"&\" + componentCls + \"-right\", (_ref51 = {}, _defineProperty(_ref51, \"> \" + componentCls + \"-nav\", {\n order: 0\n }), _defineProperty(_ref51, \"> \" + componentCls + \"-content-holder\", {\n order: 1\n }), _ref51)), _defineProperty(_rtlCls, \"&\" + componentCls + \"-card\" + componentCls + \"-top, &\" + componentCls + \"-card\" + componentCls + \"-bottom\", _defineProperty({}, \"> \" + componentCls + \"-nav, > div > \" + componentCls + \"-nav\", _defineProperty({}, componentCls + \"-tab + \" + componentCls + \"-tab\", {\n marginRight: {\n _skip_check_: true,\n value: tabsCardGutter + \"px\"\n },\n marginLeft: {\n _skip_check_: true,\n value: 0\n }\n }))), _rtlCls)), _defineProperty(_ref55, componentCls + \"-dropdown-rtl\", {\n direction: 'rtl'\n }), _defineProperty(_ref55, componentCls + \"-menu-item\", _defineProperty({}, componentCls + \"-dropdown-rtl\", {\n textAlign: {\n _skip_check_: true,\n value: 'right'\n }\n })), _ref55;\n};\nvar genTabsStyle = function genTabsStyle(token) {\n var _ref56, _extends3, _extends4, _ref60;\n var componentCls = token.componentCls,\n tabsCardHorizontalPadding = token.tabsCardHorizontalPadding,\n tabsCardHeight = token.tabsCardHeight,\n tabsCardGutter = token.tabsCardGutter,\n tabsHoverColor = token.tabsHoverColor,\n tabsActiveColor = token.tabsActiveColor,\n colorSplit = token.colorSplit;\n return _ref60 = {}, _defineProperty(_ref60, componentCls, _extends(_extends(_extends(_extends({}, resetComponent(token)), (_extends3 = {\n display: 'flex'\n }, _defineProperty(_extends3, \"> \" + componentCls + \"-nav, > div > \" + componentCls + \"-nav\", (_ref56 = {\n position: 'relative',\n display: 'flex',\n flex: 'none',\n alignItems: 'center'\n }, _defineProperty(_ref56, componentCls + \"-nav-wrap\", {\n position: 'relative',\n display: 'flex',\n flex: 'auto',\n alignSelf: 'stretch',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n transform: 'translate(0)',\n // >>>>> Ping shadow\n '&::before, &::after': {\n position: 'absolute',\n zIndex: 1,\n opacity: 0,\n transition: \"opacity \" + token.motionDurationSlow,\n content: \"''\",\n pointerEvents: 'none'\n }\n }), _defineProperty(_ref56, componentCls + \"-nav-list\", {\n position: 'relative',\n display: 'flex',\n transition: \"opacity \" + token.motionDurationSlow\n }), _defineProperty(_ref56, componentCls + \"-nav-operations\", {\n display: 'flex',\n alignSelf: 'stretch'\n }), _defineProperty(_ref56, componentCls + \"-nav-operations-hidden\", {\n position: 'absolute',\n visibility: 'hidden',\n pointerEvents: 'none'\n }), _defineProperty(_ref56, componentCls + \"-nav-more\", {\n position: 'relative',\n padding: tabsCardHorizontalPadding,\n background: 'transparent',\n border: 0,\n '&::after': {\n position: 'absolute',\n right: {\n _skip_check_: true,\n value: 0\n },\n bottom: 0,\n left: {\n _skip_check_: true,\n value: 0\n },\n height: token.controlHeightLG / 8,\n transform: 'translateY(100%)',\n content: \"''\"\n }\n }), _defineProperty(_ref56, componentCls + \"-nav-add\", _extends({\n minWidth: tabsCardHeight + \"px\",\n marginLeft: {\n _skip_check_: true,\n value: tabsCardGutter + \"px\"\n },\n padding: \"0 \" + token.paddingXS + \"px\",\n background: 'transparent',\n border: token.lineWidth + \"px \" + token.lineType + \" \" + colorSplit,\n borderRadius: token.borderRadiusLG + \"px \" + token.borderRadiusLG + \"px 0 0\",\n outline: 'none',\n cursor: 'pointer',\n transition: \"all \" + token.motionDurationSlow + \" \" + token.motionEaseInOut,\n '&:hover': {\n color: tabsHoverColor\n },\n '&:active, &:focus:not(:focus-visible)': {\n color: tabsActiveColor\n }\n }, genFocusStyle(token))), _ref56)), _defineProperty(_extends3, componentCls + \"-extra-content\", {\n flex: 'none'\n }), _defineProperty(_extends3, componentCls + \"-ink-bar\", {\n position: 'absolute',\n background: token.colorPrimary,\n pointerEvents: 'none'\n }), _extends3)), genTabStyle(token)), (_extends4 = {}, _defineProperty(_extends4, componentCls + \"-content\", {\n position: 'relative',\n width: '100%'\n }), _defineProperty(_extends4, componentCls + \"-content-holder\", {\n flex: 'auto',\n minWidth: 0,\n minHeight: 0\n }), _defineProperty(_extends4, componentCls + \"-tabpane\", {\n outline: 'none',\n '&-hidden': {\n display: 'none'\n }\n }), _extends4))), _defineProperty(_ref60, componentCls + \"-centered\", _defineProperty({}, \"> \" + componentCls + \"-nav, > div > \" + componentCls + \"-nav\", _defineProperty({}, componentCls + \"-nav-wrap\", _defineProperty({}, \"&:not([class*='\" + componentCls + \"-nav-wrap-ping'])\", {\n justifyContent: 'center'\n })))), _ref60;\n};\n// ============================== Export ==============================\nexport default genComponentStyleHook('Tabs', function (token) {\n var tabsCardHeight = token.controlHeightLG;\n var tabsToken = mergeToken(token, {\n tabsHoverColor: token.colorPrimaryHover,\n tabsActiveColor: token.colorPrimaryActive,\n tabsCardHorizontalPadding: (tabsCardHeight - Math.round(token.fontSize * token.lineHeight)) / 2 - token.lineWidth + \"px \" + token.padding + \"px\",\n tabsCardHeight: tabsCardHeight,\n tabsCardGutter: token.marginXXS / 2,\n tabsHorizontalGutter: 32,\n tabsCardHeadBackground: token.colorFillAlter,\n dropdownEdgeChildVerticalPadding: token.paddingXXS,\n tabsActiveTextShadow: '0 0 0.25px currentcolor',\n tabsDropdownHeight: 200,\n tabsDropdownWidth: 120\n });\n return [genSizeStyle(tabsToken), genRtlStyle(tabsToken), genPositionStyle(tabsToken), genDropdownStyle(tabsToken), genCardStyle(tabsToken), genTabsStyle(tabsToken), genMotionStyle(tabsToken)];\n}, function (token) {\n return {\n zIndexPopup: token.zIndexPopupBase + 50\n };\n});","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") 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])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport CloseOutlined from \"@ant-design/icons/es/icons/CloseOutlined\";\nimport EllipsisOutlined from \"@ant-design/icons/es/icons/EllipsisOutlined\";\nimport PlusOutlined from \"@ant-design/icons/es/icons/PlusOutlined\";\nimport classNames from 'classnames';\nimport RcTabs from 'rc-tabs';\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport SizeContext from '../config-provider/SizeContext';\nimport warning from '../_util/warning';\nimport useAnimateConfig from './hooks/useAnimateConfig';\nimport useLegacyItems from './hooks/useLegacyItems';\nimport TabPane from './TabPane';\nimport useStyle from './style';\nfunction Tabs(_a) {\n var type = _a.type,\n className = _a.className,\n propSize = _a.size,\n _onEdit = _a.onEdit,\n hideAdd = _a.hideAdd,\n centered = _a.centered,\n addIcon = _a.addIcon,\n popupClassName = _a.popupClassName,\n children = _a.children,\n items = _a.items,\n animated = _a.animated,\n props = __rest(_a, [\"type\", \"className\", \"size\", \"onEdit\", \"hideAdd\", \"centered\", \"addIcon\", \"popupClassName\", \"children\", \"items\", \"animated\"]);\n var customizePrefixCls = props.prefixCls,\n _props$moreIcon = props.moreIcon,\n moreIcon = _props$moreIcon === void 0 ? /*#__PURE__*/React.createElement(EllipsisOutlined, null) : _props$moreIcon;\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction,\n getPopupContainer = _React$useContext.getPopupContainer;\n var prefixCls = getPrefixCls('tabs', customizePrefixCls);\n var _useStyle = useStyle(prefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n wrapSSR = _useStyle2[0],\n hashId = _useStyle2[1];\n var editable;\n if (type === 'editable-card') {\n editable = {\n onEdit: function onEdit(editType, _ref) {\n var key = _ref.key,\n event = _ref.event;\n _onEdit === null || _onEdit === void 0 ? void 0 : _onEdit(editType === 'add' ? event : key, editType);\n },\n removeIcon: /*#__PURE__*/React.createElement(CloseOutlined, null),\n addIcon: addIcon || /*#__PURE__*/React.createElement(PlusOutlined, null),\n showAdd: hideAdd !== true\n };\n }\n var rootPrefixCls = getPrefixCls();\n process.env.NODE_ENV !== \"production\" ? warning(!('onPrevClick' in props) && !('onNextClick' in props), 'Tabs', '`onPrevClick` and `onNextClick` has been removed. Please use `onTabScroll` instead.') : void 0;\n var mergedItems = useLegacyItems(items, children);\n var mergedAnimated = useAnimateConfig(prefixCls, animated);\n return wrapSSR( /*#__PURE__*/React.createElement(SizeContext.Consumer, null, function (contextSize) {\n var _classNames;\n var size = propSize !== undefined ? propSize : contextSize;\n return /*#__PURE__*/React.createElement(RcTabs, _extends({\n direction: direction,\n getPopupContainer: getPopupContainer,\n moreTransitionName: rootPrefixCls + \"-slide-up\"\n }, props, {\n items: mergedItems,\n className: classNames((_classNames = {}, _defineProperty(_classNames, prefixCls + \"-\" + size, size), _defineProperty(_classNames, prefixCls + \"-card\", ['card', 'editable-card'].includes(type)), _defineProperty(_classNames, prefixCls + \"-editable-card\", type === 'editable-card'), _defineProperty(_classNames, prefixCls + \"-centered\", centered), _classNames), className, hashId),\n popupClassName: classNames(popupClassName, hashId),\n editable: editable,\n moreIcon: moreIcon,\n prefixCls: prefixCls,\n animated: mergedAnimated\n }));\n }));\n}\nTabs.TabPane = TabPane;\nexport default Tabs;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") 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])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { ConfigConsumer } from '../config-provider';\nvar Grid = function Grid(_a) {\n var prefixCls = _a.prefixCls,\n className = _a.className,\n _a$hoverable = _a.hoverable,\n hoverable = _a$hoverable === void 0 ? true : _a$hoverable,\n props = __rest(_a, [\"prefixCls\", \"className\", \"hoverable\"]);\n return /*#__PURE__*/React.createElement(ConfigConsumer, null, function (_ref) {\n var getPrefixCls = _ref.getPrefixCls;\n var prefix = getPrefixCls('card', prefixCls);\n var classString = classNames(prefix + \"-grid\", className, _defineProperty({}, prefix + \"-grid-hoverable\", hoverable));\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, props, {\n className: classString\n }));\n });\n};\nexport default Grid;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { genComponentStyleHook, mergeToken } from '../../theme/internal';\nimport { clearFix, resetComponent, textEllipsis } from '../../style';\n// ============================== Styles ==============================\n// ============================== Head ==============================\nvar genCardHeadStyle = function genCardHeadStyle(token) {\n var antCls = token.antCls,\n componentCls = token.componentCls,\n cardHeadHeight = token.cardHeadHeight,\n cardHeadPadding = token.cardHeadPadding,\n cardPaddingBase = token.cardPaddingBase,\n cardHeadTabsMarginBottom = token.cardHeadTabsMarginBottom;\n return _extends(_extends({\n minHeight: cardHeadHeight,\n marginBottom: -1,\n padding: \"0 \" + cardPaddingBase + \"px\",\n color: token.colorTextHeading,\n fontWeight: token.fontWeightStrong,\n fontSize: token.fontSizeLG,\n background: 'transparent',\n borderBottom: token.lineWidth + \"px \" + token.lineType + \" \" + token.colorBorderSecondary,\n borderRadius: token.borderRadiusLG + \"px \" + token.borderRadiusLG + \"px 0 0\"\n }, clearFix()), _defineProperty({\n '&-wrapper': {\n display: 'flex',\n alignItems: 'center'\n },\n '&-title': _extends(_extends({\n display: 'inline-block',\n flex: 1,\n padding: cardHeadPadding + \"px 0\"\n }, textEllipsis), _defineProperty({}, \"\\n > \" + componentCls + \"-typography,\\n > \" + componentCls + \"-typography-edit-content\\n \", {\n insetInlineStart: 0,\n marginTop: 0,\n marginBottom: 0\n }))\n }, antCls + \"-tabs-top\", {\n clear: 'both',\n marginBottom: cardHeadTabsMarginBottom,\n color: token.colorText,\n fontWeight: 'normal',\n fontSize: token.fontSize,\n '&-bar': {\n borderBottom: token.lineWidth + \"px \" + token.lineType + \" \" + token.colorBorderSecondary\n }\n }));\n};\n// ============================== Grid ==============================\nvar genCardGridStyle = function genCardGridStyle(token) {\n var cardPaddingBase = token.cardPaddingBase,\n colorBorderSecondary = token.colorBorderSecondary,\n cardShadow = token.cardShadow,\n lineWidth = token.lineWidth;\n return {\n width: '33.33%',\n padding: cardPaddingBase,\n border: 0,\n borderRadius: 0,\n boxShadow: \"\\n \" + lineWidth + \"px 0 0 0 \" + colorBorderSecondary + \",\\n 0 \" + lineWidth + \"px 0 0 \" + colorBorderSecondary + \",\\n \" + lineWidth + \"px \" + lineWidth + \"px 0 0 \" + colorBorderSecondary + \",\\n \" + lineWidth + \"px 0 0 0 \" + colorBorderSecondary + \" inset,\\n 0 \" + lineWidth + \"px 0 0 \" + colorBorderSecondary + \" inset;\\n \",\n transition: \"all \" + token.motionDurationMid,\n '&-hoverable:hover': {\n position: 'relative',\n zIndex: 1,\n boxShadow: cardShadow\n }\n };\n};\n// ============================== Actions ==============================\nvar genCardActionsStyle = function genCardActionsStyle(token) {\n var _span;\n var componentCls = token.componentCls,\n iconCls = token.iconCls,\n cardActionsLiMargin = token.cardActionsLiMargin,\n cardActionsIconSize = token.cardActionsIconSize,\n colorBorderSecondary = token.colorBorderSecondary;\n return _extends(_extends({\n margin: 0,\n padding: 0,\n listStyle: 'none',\n background: token.colorBgContainer,\n borderTop: token.lineWidth + \"px \" + token.lineType + \" \" + colorBorderSecondary,\n display: 'flex'\n }, clearFix()), {\n '& > li': {\n margin: cardActionsLiMargin,\n color: token.colorTextDescription,\n textAlign: 'center',\n '> span': (_span = {\n position: 'relative',\n display: 'block',\n minWidth: token.cardActionsIconSize * 2,\n fontSize: token.fontSize,\n lineHeight: token.lineHeight,\n cursor: 'pointer',\n '&:hover': {\n color: token.colorPrimary,\n transition: \"color \" + token.motionDurationMid\n }\n }, _defineProperty(_span, \"a:not(\" + componentCls + \"-btn), > \" + iconCls, {\n display: 'inline-block',\n width: '100%',\n color: token.colorTextDescription,\n lineHeight: token.fontSize * token.lineHeight + \"px\",\n transition: \"color \" + token.motionDurationMid,\n '&:hover': {\n color: token.colorPrimary\n }\n }), _defineProperty(_span, \"> \" + iconCls, {\n fontSize: cardActionsIconSize,\n lineHeight: cardActionsIconSize * token.lineHeight + \"px\"\n }), _span),\n '&:not(:last-child)': {\n borderInlineEnd: token.lineWidth + \"px \" + token.lineType + \" \" + colorBorderSecondary\n }\n }\n });\n};\n// ============================== Meta ==============================\nvar genCardMetaStyle = function genCardMetaStyle(token) {\n return _extends(_extends({\n margin: \"-\" + token.marginXXS + \"px 0\",\n display: 'flex'\n }, clearFix()), {\n '&-avatar': {\n paddingInlineEnd: token.padding\n },\n '&-detail': {\n overflow: 'hidden',\n flex: 1,\n '> div:not(:last-child)': {\n marginBottom: token.marginXS\n }\n },\n '&-title': _extends({\n color: token.colorTextHeading,\n fontWeight: token.fontWeightStrong,\n fontSize: token.fontSizeLG\n }, textEllipsis),\n '&-description': {\n color: token.colorTextDescription\n }\n });\n};\n// ============================== Inner ==============================\nvar genCardTypeInnerStyle = function genCardTypeInnerStyle(token) {\n var _ref;\n var componentCls = token.componentCls,\n cardPaddingBase = token.cardPaddingBase,\n colorFillAlter = token.colorFillAlter,\n cardInnerHeadPadding = token.cardInnerHeadPadding;\n return _ref = {}, _defineProperty(_ref, componentCls + \"-head\", {\n padding: \"0 \" + cardPaddingBase + \"px\",\n background: colorFillAlter,\n '&-title': {\n padding: cardInnerHeadPadding + \"px 0\",\n fontSize: token.fontSize\n }\n }), _defineProperty(_ref, componentCls + \"-body\", {\n padding: token.padding + \"px \" + cardPaddingBase + \"px\"\n }), _defineProperty(_ref, componentCls + \"-extra\", {\n padding: cardInnerHeadPadding + 1.5 + \"px 0\"\n }), _ref;\n};\n// ============================== Loading ==============================\nvar genCardLoadingStyle = function genCardLoadingStyle(token) {\n var componentCls = token.componentCls;\n return _defineProperty({\n overflow: 'hidden'\n }, componentCls + \"-body\", {\n userSelect: 'none'\n });\n};\n// ============================== Basic ==============================\nvar genCardStyle = function genCardStyle(token) {\n var _extends4, _ref4, _ref5, _ref7;\n var componentCls = token.componentCls,\n cardShadow = token.cardShadow,\n cardHeadHeight = token.cardHeadHeight,\n cardHeadPadding = token.cardHeadPadding,\n colorBorderSecondary = token.colorBorderSecondary,\n boxShadow = token.boxShadow,\n cardPaddingBase = token.cardPaddingBase;\n return _ref7 = {}, _defineProperty(_ref7, componentCls, _extends(_extends({}, resetComponent(token)), (_extends4 = {\n position: 'relative',\n background: token.colorBgContainer,\n borderRadius: token.borderRadiusLG\n }, _defineProperty(_extends4, \"&:not(\" + componentCls + \"-bordered)\", {\n boxShadow: boxShadow\n }), _defineProperty(_extends4, componentCls + \"-head\", genCardHeadStyle(token)), _defineProperty(_extends4, componentCls + \"-extra\", {\n // https://stackoverflow.com/a/22429853/3040605\n marginInlineStart: 'auto',\n padding: '',\n color: '',\n fontWeight: 'normal',\n fontSize: token.fontSize\n }), _defineProperty(_extends4, componentCls + \"-body\", _extends({\n padding: cardPaddingBase,\n borderRadius: \" 0 0 \" + token.borderRadiusLG + \"px \" + token.borderRadiusLG + \"px\"\n }, clearFix())), _defineProperty(_extends4, componentCls + \"-grid\", genCardGridStyle(token)), _defineProperty(_extends4, componentCls + \"-cover\", {\n '> *': {\n display: 'block',\n width: '100%'\n },\n img: {\n borderRadius: token.borderRadiusLG + \"px \" + token.borderRadiusLG + \"px 0 0\"\n }\n }), _defineProperty(_extends4, componentCls + \"-actions\", genCardActionsStyle(token)), _defineProperty(_extends4, componentCls + \"-meta\", genCardMetaStyle(token)), _extends4))), _defineProperty(_ref7, componentCls + \"-bordered\", _defineProperty({\n border: token.lineWidth + \"px \" + token.lineType + \" \" + colorBorderSecondary\n }, componentCls + \"-cover\", {\n marginTop: -1,\n marginInlineStart: -1,\n marginInlineEnd: -1\n })), _defineProperty(_ref7, componentCls + \"-hoverable\", {\n cursor: 'pointer',\n transition: \"box-shadow \" + token.motionDurationMid + \", border-color \" + token.motionDurationMid,\n '&:hover': {\n borderColor: 'transparent',\n boxShadow: cardShadow\n }\n }), _defineProperty(_ref7, componentCls + \"-contain-grid\", (_ref4 = {}, _defineProperty(_ref4, componentCls + \"-body\", {\n display: 'flex',\n flexWrap: 'wrap'\n }), _defineProperty(_ref4, \"&:not(\" + componentCls + \"-loading) \" + componentCls + \"-body\", {\n marginBlockStart: -token.lineWidth,\n marginInlineStart: -token.lineWidth,\n padding: 0\n }), _ref4)), _defineProperty(_ref7, componentCls + \"-contain-tabs\", _defineProperty({}, \"> \" + componentCls + \"-head\", (_ref5 = {}, _defineProperty(_ref5, componentCls + \"-head-title\", {\n minHeight: cardHeadHeight - cardHeadPadding,\n paddingBottom: 0\n }), _defineProperty(_ref5, componentCls + \"-extra\", {\n paddingBottom: 0\n }), _ref5))), _defineProperty(_ref7, componentCls + \"-type-inner\", genCardTypeInnerStyle(token)), _defineProperty(_ref7, componentCls + \"-loading\", genCardLoadingStyle(token)), _defineProperty(_ref7, componentCls + \"-rtl\", {\n direction: 'rtl'\n }), _ref7;\n};\n// ============================== Size ==============================\nvar genCardSizeStyle = function genCardSizeStyle(token) {\n var _ref8, _ref10;\n var componentCls = token.componentCls,\n cardPaddingSM = token.cardPaddingSM,\n fontSize = token.fontSize,\n lineHeight = token.lineHeight,\n cardHeaderHeightSM = token.cardHeaderHeightSM;\n var cardHeadPaddingSM = (cardHeaderHeightSM - fontSize * lineHeight) / 2;\n return _defineProperty({}, componentCls + \"-small\", (_ref10 = {}, _defineProperty(_ref10, \"> \" + componentCls + \"-head\", _defineProperty({\n minHeight: cardHeaderHeightSM,\n padding: \"0 \" + cardPaddingSM + \"px\",\n fontSize: token.fontSize\n }, \"> \" + componentCls + \"-head-wrapper\", (_ref8 = {}, _defineProperty(_ref8, \"> \" + componentCls + \"-head-title\", {\n padding: cardHeadPaddingSM + \"px 0\"\n }), _defineProperty(_ref8, \"> \" + componentCls + \"-extra\", {\n padding: cardHeadPaddingSM + \"px 0\",\n fontSize: token.fontSize\n }), _ref8))), _defineProperty(_ref10, \"> \" + componentCls + \"-body\", {\n padding: cardPaddingSM\n }), _ref10));\n};\n// ============================== Export ==============================\nexport default genComponentStyleHook('Card', function (token) {\n var cardToken = mergeToken(token, {\n cardShadow: token.boxShadowCard,\n cardHeaderHeight: token.fontSizeLG * token.lineHeightLG + token.padding * 2,\n cardHeaderHeightSM: token.fontSize * token.lineHeight + token.paddingXS * 2,\n cardHeadPadding: token.padding,\n cardPaddingBase: token.paddingLG,\n cardHeadTabsMarginBottom: -token.padding - token.lineWidth,\n cardInnerHeadPadding: token.paddingSM,\n cardActionsLiMargin: token.paddingSM + \"px 0\",\n cardActionsIconSize: token.fontSize,\n cardPaddingSM: 12 // Fixed padding.\n });\n\n return [\n // Style\n genCardStyle(cardToken),\n // Size\n genCardSizeStyle(cardToken)];\n});","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") 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])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport SizeContext from '../config-provider/SizeContext';\nimport Skeleton from '../skeleton';\nimport Tabs from '../tabs';\nimport Grid from './Grid';\nimport useStyle from './style';\nfunction getAction(actions) {\n var actionList = actions.map(function (action, index) {\n return (\n /*#__PURE__*/\n // eslint-disable-next-line react/no-array-index-key\n React.createElement(\"li\", {\n style: {\n width: 100 / actions.length + \"%\"\n },\n key: \"action-\" + index\n }, /*#__PURE__*/React.createElement(\"span\", null, action))\n );\n });\n return actionList;\n}\nvar Card = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _extends2, _classNames;\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction;\n var size = React.useContext(SizeContext);\n var onTabChange = function onTabChange(key) {\n var _a;\n (_a = props.onTabChange) === null || _a === void 0 ? void 0 : _a.call(props, key);\n };\n var isContainGrid = function isContainGrid() {\n var containGrid;\n React.Children.forEach(props.children, function (element) {\n if (element && element.type && element.type === Grid) {\n containGrid = true;\n }\n });\n return containGrid;\n };\n var customizePrefixCls = props.prefixCls,\n className = props.className,\n extra = props.extra,\n _props$headStyle = props.headStyle,\n headStyle = _props$headStyle === void 0 ? {} : _props$headStyle,\n _props$bodyStyle = props.bodyStyle,\n bodyStyle = _props$bodyStyle === void 0 ? {} : _props$bodyStyle,\n title = props.title,\n loading = props.loading,\n _props$bordered = props.bordered,\n bordered = _props$bordered === void 0 ? true : _props$bordered,\n customizeSize = props.size,\n type = props.type,\n cover = props.cover,\n actions = props.actions,\n tabList = props.tabList,\n children = props.children,\n activeTabKey = props.activeTabKey,\n defaultActiveTabKey = props.defaultActiveTabKey,\n tabBarExtraContent = props.tabBarExtraContent,\n hoverable = props.hoverable,\n _props$tabProps = props.tabProps,\n tabProps = _props$tabProps === void 0 ? {} : _props$tabProps,\n others = __rest(props, [\"prefixCls\", \"className\", \"extra\", \"headStyle\", \"bodyStyle\", \"title\", \"loading\", \"bordered\", \"size\", \"type\", \"cover\", \"actions\", \"tabList\", \"children\", \"activeTabKey\", \"defaultActiveTabKey\", \"tabBarExtraContent\", \"hoverable\", \"tabProps\"]);\n var prefixCls = getPrefixCls('card', customizePrefixCls);\n var _useStyle = useStyle(prefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n wrapSSR = _useStyle2[0],\n hashId = _useStyle2[1];\n var loadingBlock = /*#__PURE__*/React.createElement(Skeleton, {\n loading: true,\n active: true,\n paragraph: {\n rows: 4\n },\n title: false\n }, children);\n var hasActiveTabKey = activeTabKey !== undefined;\n var extraProps = _extends(_extends({}, tabProps), (_extends2 = {}, _defineProperty(_extends2, hasActiveTabKey ? 'activeKey' : 'defaultActiveKey', hasActiveTabKey ? activeTabKey : defaultActiveTabKey), _defineProperty(_extends2, \"tabBarExtraContent\", tabBarExtraContent), _extends2));\n var head;\n var tabs = tabList && tabList.length ? /*#__PURE__*/React.createElement(Tabs, _extends({\n size: \"large\"\n }, extraProps, {\n className: prefixCls + \"-head-tabs\",\n onChange: onTabChange,\n items: tabList.map(function (item) {\n var _a;\n return {\n label: item.tab,\n key: item.key,\n disabled: (_a = item.disabled) !== null && _a !== void 0 ? _a : false\n };\n })\n })) : null;\n if (title || extra || tabs) {\n head = /*#__PURE__*/React.createElement(\"div\", {\n className: prefixCls + \"-head\",\n style: headStyle\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: prefixCls + \"-head-wrapper\"\n }, title && /*#__PURE__*/React.createElement(\"div\", {\n className: prefixCls + \"-head-title\"\n }, title), extra && /*#__PURE__*/React.createElement(\"div\", {\n className: prefixCls + \"-extra\"\n }, extra)), tabs);\n }\n var coverDom = cover ? /*#__PURE__*/React.createElement(\"div\", {\n className: prefixCls + \"-cover\"\n }, cover) : null;\n var body = /*#__PURE__*/React.createElement(\"div\", {\n className: prefixCls + \"-body\",\n style: bodyStyle\n }, loading ? loadingBlock : children);\n var actionDom = actions && actions.length ? /*#__PURE__*/React.createElement(\"ul\", {\n className: prefixCls + \"-actions\"\n }, getAction(actions)) : null;\n var divProps = omit(others, ['onTabChange']);\n var mergedSize = customizeSize || size;\n var classString = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, prefixCls + \"-loading\", loading), _defineProperty(_classNames, prefixCls + \"-bordered\", bordered), _defineProperty(_classNames, prefixCls + \"-hoverable\", hoverable), _defineProperty(_classNames, prefixCls + \"-contain-grid\", isContainGrid()), _defineProperty(_classNames, prefixCls + \"-contain-tabs\", tabList && tabList.length), _defineProperty(_classNames, prefixCls + \"-\" + mergedSize, mergedSize), _defineProperty(_classNames, prefixCls + \"-type-\" + type, !!type), _defineProperty(_classNames, prefixCls + \"-rtl\", direction === 'rtl'), _classNames), className, hashId);\n return wrapSSR( /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: ref\n }, divProps, {\n className: classString\n }), head, coverDom, body, actionDom));\n});\nexport default Card;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") 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])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { ConfigConsumer } from '../config-provider';\nvar Meta = function Meta(props) {\n return /*#__PURE__*/React.createElement(ConfigConsumer, null, function (_ref) {\n var getPrefixCls = _ref.getPrefixCls;\n var customizePrefixCls = props.prefixCls,\n className = props.className,\n avatar = props.avatar,\n title = props.title,\n description = props.description,\n others = __rest(props, [\"prefixCls\", \"className\", \"avatar\", \"title\", \"description\"]);\n var prefixCls = getPrefixCls('card', customizePrefixCls);\n var classString = classNames(prefixCls + \"-meta\", className);\n var avatarDom = avatar ? /*#__PURE__*/React.createElement(\"div\", {\n className: prefixCls + \"-meta-avatar\"\n }, avatar) : null;\n var titleDom = title ? /*#__PURE__*/React.createElement(\"div\", {\n className: prefixCls + \"-meta-title\"\n }, title) : null;\n var descriptionDom = description ? /*#__PURE__*/React.createElement(\"div\", {\n className: prefixCls + \"-meta-description\"\n }, description) : null;\n var MetaDetail = titleDom || descriptionDom ? /*#__PURE__*/React.createElement(\"div\", {\n className: prefixCls + \"-meta-detail\"\n }, titleDom, descriptionDom) : null;\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, others, {\n className: classString\n }), avatarDom, MetaDetail);\n });\n};\nexport default Meta;","import InternalCard from './Card';\nimport Grid from './Grid';\nimport Meta from './Meta';\nvar Card = InternalCard;\nCard.Grid = Grid;\nCard.Meta = Meta;\nexport default Card;","import React, { CSSProperties, useEffect, useState } from \"react\";\n\nimport { useWeb3React } from \"@web3-react/core\";\nimport { Skeleton } from \"antd\";\n\nimport { getEllipsisTxt } from \"../../utils/formatters\";\nimport Jazzicons from \"../Jazzicons\";\n\nconst styles = {\n address: {\n height: \"36px\",\n display: \"flex\",\n gap: \"5px\",\n backgroundColor: \"rgba(255, 255, 255, 0.1)\",\n borderRadius: \"9px\",\n alignItems: \"center\"\n }\n};\n\nexport interface AddressProps {\n style: CSSProperties | undefined;\n avatar: string;\n size: number | undefined;\n copyable: boolean;\n}\n\nconst Address: React.FC = (props) => {\n const { account } = useWeb3React();\n const [address, setAddress] = useState();\n const [isClicked, setIsClicked] = useState(false);\n\n useEffect(() => {\n if (account !== undefined) setAddress(account);\n }, [account]);\n\n useEffect(() => {\n if (isClicked === true)\n setTimeout(() => {\n setIsClicked(false);\n }, 5000);\n }, [isClicked]);\n\n if (address === undefined) return ;\n\n const Copy = () => (\n {\n navigator.clipboard.writeText(address);\n setIsClicked(true);\n }}\n >\n \n \n \n \n Copy Address\n \n );\n\n return (\n
\n {props.avatar === \"left\" && }\n

{props.size ? getEllipsisTxt(address, props.size) : address}

\n {props.avatar === \"right\" && }\n {props.copyable && (isClicked ? : )}\n
\n );\n};\n\nexport default Address;\n\nconst Check = () => (\n \n \n \n Copied!\n \n);\n","import { SelectOutlined } from \"@ant-design/icons\";\nimport { useWeb3React } from \"@web3-react/core\";\nimport { Button, Card, Modal } from \"antd\";\n\nimport { getExplorer } from \"../../constants/networks\";\nimport Address from \"./Address\";\n\ninterface ConnectModalProps {\n isModalOpen: boolean;\n setIsModalOpen: React.Dispatch>;\n disconnect: () => Promise;\n}\n\nconst DisconnectModal: React.FC = ({ isModalOpen, setIsModalOpen, disconnect }) => {\n const { account, chainId } = useWeb3React();\n\n return (\n setIsModalOpen(false)}\n bodyStyle={{\n width: \"350px\",\n padding: \"15px\",\n fontSize: \"17px\",\n fontWeight: \"500\"\n }}\n >\n Account\n \n
\n
\n {chainId !== undefined && (\n \n \n View on Explorer\n \n )}\n
\n \n disconnect()}\n >\n Disconnect Wallet\n \n \n );\n};\n\nexport default DisconnectModal;\n","import React, { useState } from \"react\";\n\nimport { useWeb3React } from \"@web3-react/core\";\nimport { Button } from \"antd\";\n\nimport { metaMask } from \"../../connectors/metaMask\";\nimport { walletConnect } from \"../../connectors/walletConnect\";\nimport { getEllipsisTxt } from \"../../utils/formatters\";\nimport Jazzicons from \"../Jazzicons\";\nimport ConnectModal from \"./ConnectModal\";\nimport DisconnectModal from \"./DisconnectModal\";\n\nconst styles = {\n account: {\n height: \"42px\",\n padding: \"0 15px\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n width: \"fit-content\",\n borderRadius: \"7px\",\n //backgroundColor: \"\",\n cursor: \"pointer\"\n },\n button: {\n height: \"40px\",\n padding: \"0 20px\",\n textAlign: \"center\",\n fontWeight: \"600\",\n letterSpacing: \"0.2px\",\n fontSize: \"15px\",\n margin: \"20px 20px\",\n border: \"none\",\n // background: \"black\",\n color: \"white\"\n },\n text: {\n color: \"white\"\n },\n modalTitle: {\n marginBottom: \"20px\",\n padding: \"10px\",\n display: \"flex\",\n justifyContent: \"center\",\n fontWeight: \"700\",\n fontSize: \"20px\"\n }\n} as const;\n\ninterface WantedChain {\n chain?: number;\n}\n\nconst ConnectAccount: React.FC = () => {\n const { account } = useWeb3React();\n const [isModalVisible, setIsModalVisible] = useState(false);\n const [isAuthModalOpen, setIsAuthModalOpen] = useState(false);\n\n const disconnect = async () => {\n const connector = metaMask || walletConnect;\n setIsModalVisible(false);\n setIsAuthModalOpen(false);\n localStorage.removeItem(\"connectorId\");\n if (connector.deactivate) {\n connector.deactivate();\n } else {\n connector.resetState();\n }\n // @ts-expect-error close can be returned by wallet\n if (connector && connector.close) {\n // @ts-expect-error close can be returned by wallet\n await connector.close();\n }\n };\n\n return (\n <>\n {account === undefined ? (\n
\n \n\n \n\n
\n
\n ) : (\n <>\n
setIsModalVisible(true)}>\n {account && typeof account === \"string\" && (\n

{getEllipsisTxt(account, 6)}

\n )}\n \n
\n\n \n \n )}\n \n );\n};\n\nexport default ConnectAccount;\n","var _path, _path2;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgBscLogo(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 25,\n height: 25,\n viewBox: \"0 0 30 30\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 10C0 4.47715 4.47715 0 10 0H20C25.5228 0 30 4.47715 30 10V20C30 25.5228 25.5228 30 20 30H10C4.47715 30 0 25.5228 0 20V10Z\",\n fill: \"#F3BA2F\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.3588 13.5038L15 9.8625L18.6431 13.5056L20.7619 11.3869L15 5.625L9.24 11.385L11.3588 13.5038ZM5.625 15L7.74375 12.8812L9.8625 15L7.74375 17.1188L5.625 15ZM11.3588 16.4963L15 20.1375L18.6431 16.4944L20.7619 18.6122L15 24.375L9.24 18.615L9.23719 18.6122L11.3588 16.4963ZM20.1375 15L22.2563 12.8812L24.375 15L22.2563 17.1188L20.1375 15ZM17.1488 14.9981H17.1506V15L15 17.1506L12.8522 15.0037L12.8484 15L12.8522 14.9972L13.2281 14.6203L13.4109 14.4375L15 12.8494L17.1497 14.9991L17.1488 14.9981Z\",\n fill: \"white\"\n })));\n}\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgBscLogo);\nexport default __webpack_public_path__ + \"static/media/bsc_Logo.71c0a79965aef99d7a39158dfec8caaf.svg\";\nexport { ForwardRef as ReactComponent };","\nimport { Link } from \"react-router-dom\";\nimport ConnectAccount from \"../components/Account/ConnectAccount\";\nimport ChainSelector from \"../components/ChainSelector\";\n\nconst styles = {\n accordion: {\n 'a, a:visited, a:hover, a:active': {\n color: '#1E1941',\n border: \"0px\"\n },\n textAlign: 'left', \n backgroundColor: \"#1E1941\", \n border: \"0px\",\n }\n}\nconst Nav = () => {\n\n\n \n return (\n <> \n \n \n );\n};\nexport default Nav;\n"," import { useEffect, useState } from \"react\";\n \n//import mainJs from \"../components/script/mainJs\";\n\n\n\n \nconst Buy = () => { \n\n const [rate, setRate] = useState('');\n const [bnbPrice, setBnbprice] = useState(0);\n const [btcPrice, setBtcprice] = useState(0);\n const [busdPrice, setBusdprice] = useState(0);\n const [usdtPrice, setUsdtprice] = useState(1);\n \n const [paymentmethod, setPaymentmethod] = useState('bnb');\n const [inputAmount, setInputamount] = useState(0);\n const [highAmount, setHighAmount] = useState(0);\n const [cryptoTopay, setCryptoTopay] = useState(0);\n const [usdtTohigh, setUsdttohigh] = useState(0.6340);\n const [showButton, setShowbutton] = useState(true);\n const wallet = \"0x22435B3c8fB160122D04E17C3865B4EeB896bF55\";\n const btcWallet = \"\";\n const ethWallet = \"\";\n\n var url = \"https://link.trustwallet.com/send/\";\n \n\n async function getapiatabnb() {\n const response = await fetch(\"https://min-api.cryptocompare.com/data/price?fsym=BNB&tsyms=USD\");\n var data = await response.json();\n var price = data.USD - (0.152 * data.USD);\n var price1 = price.toFixed(8);\n console.log('bnb price' + price1);\n setBnbprice(price1);\n \n }\n\n async function getapiatabtc() {\n const response = await fetch(\"https://min-api.cryptocompare.com/data/price?fsym=BTC&tsyms=USD\");\n var data = await response.json();\n var price = data.USD - (0.152 * data.USD);\n var price2 = price.toFixed(8);\n \n setBtcprice(price2);\n }\n\n async function getapiatabusd() {\n const response = await fetch(\"https://min-api.cryptocompare.com/data/price?fsym=BUSD&tsyms=USD\");\n var data = await response.json();\n var price = data.USD - (0.15 * data.USD);\n var price3 = price.toFixed(8);\n \n setBusdprice(price3);\n }\n \n async function getapiatausdt() {\n \n setUsdtprice(1);\n }\n\n async function getapiatahigh() {\n const response = await fetch(\"https://min-api.cryptocompare.com/data/price?fsym=PROS&tsyms=USD\");\n var data = await response.json();\n var price = data.USD - (0.15 * data.USD);\n var price3 = price.toFixed(4);\n \n setUsdttohigh(price3);\n }\n\n useEffect(() => {\n\n //mainJs();\n getapiatabnb();\n getapiatabtc();\n getapiatabusd();\n getapiatausdt();\n getapiatahigh();\n\n }, []);\n\n\n function paymentMethodChange(payMethod){\n\n if(payMethod == \"\"){\n setShowbutton(false);\n return false;\n }\n setPaymentmethod(payMethod);\n updateInputAmount(inputAmount); \n \n }\n\n\n function updateInputAmount(amount){\n\n if(amount < 100){\n setShowbutton(false);\n return false;\n }\n setShowbutton(true);\n setInputamount(amount);\n let myRate = rate;\n\n if(paymentmethod === \"bnb\"){\n \n myRate = bnbPrice;\n\n }else if(paymentmethod === \"btc\"){\n myRate = btcPrice;\n\n }else if(paymentmethod === \"busd\"){\n \n myRate = busdPrice;\n\n }else if(paymentmethod === \"usdt\"){\n myRate = usdtPrice;\n }\n var cryptoAmount = (1/myRate) * amount;\n //set crypto amount\n setCryptoTopay(cryptoAmount.toFixed(4));\n //now set high token to receive\n var highrate = 1/usdtTohigh * amount;\n setHighAmount(highrate.toFixed(4)); \n \n\n } \n\n function buyButton(){\n \n if(paymentmethod === \"bnb\"){\n var newurl = url + \"?coin=714&address=\" + wallet + \"&amount=\" + cryptoTopay;\n window.location.href = newurl;\n }else if(paymentmethod === \"btc\"){\n var newurl = url + \"?coin=0&address=\" + wallet + \"&amount=\" + cryptoTopay;\n window.location.href = newurl;\n }else if(paymentmethod === \"busd\"){\n var newurl = url + \"?coin=20000714&address=\" + wallet + \"&amount=\" + cryptoTopay + \"&token_id=0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56\";\n window.location.href = newurl;\n \n }else if(paymentmethod === \"usdt\"){\n \n var newurl = url + \"?coin=20000714&address=\" + wallet + \"&amount=\" + cryptoTopay + \"&&token_id=0x55d398326f99059fF775485246999027B3197955\";\n window.location.href = newurl;\n \n }else{\n\n return false;\n }\n \n }\n \n return (\n <> \n \n \n
\n
\n \n
\n \n
\n
\n
\n

Buy PROS

\n \n
\n
\n
\n

Price

\n

\n 1 PROS =\n \n {usdtTohigh} \n \n USDT\n \n

\n
\n \n
\n \n

Pay with

\n
\n \n \n
\n \n
\n \n updateInputAmount(e.target.value)}\n required=\"\"\n id=\"pay-amount\"\n type=\"number\"\n className=\"form-control\"\n placeholder=\"Amount in USD\"\n style={{ height: 50, marginBottom: 40, display: 'block' }}\n /> \n \n
\n \n \n \n
\n
\n
\n

You Get

\n
\n
\n
\n

\n \n PROS\n \n

\n

\n {highAmount}\n

\n
\n
\n \n
\n
\n \n No Metamask (or other Web3 Provider) installed\n
\n
\n
\n {\n showButton ? <>\n buyButton()}\n style={{\n \n backgroundColor: \"#4782FC\",\n border: \"none\",\n \n padding: 10\n }}\n className=\"bt text-white rounded orange-cta-btn ata-secondary\"\n type=\"button\"\n id=\"pay-button\"\n >\n Buy \n   PROS\n \n : <>\n }\n \n
\n
\n \n
\n\n \n \n \n );\n};\nexport default Buy;\n","\nimport { Link } from \"react-router-dom\";\n \n \nconst Footer = () => {\n\n\n \n return (\n <> \n {/* Footer*/}\n
\n
\n \n Privacy policy      \n Term of Use      \n Rules      \n Cookies      \n
\n
© 2020 Prosper. All Rights Reserved
\n \n
\n
\n
\n \n \n );\n};\nexport default Footer;\n","import DisplayPane from \"../components/displayPane/DisplayPane\"; \nimport { Divider } from \"antd\";\nimport Nav from \"../template/Nav\"; \n//import mainJs from \"../components/script/mainJs\";\nimport { useWeb3React } from \"@web3-react/core\";\nimport Buy from \"./Buy\";\nimport Footer from \"../template/Footer\";\n\n\n\n \nconst Home = () => {\n\n const { isActive } = useWeb3React();\n \n \n return (\n <> \n